У меня одномерный пояс. его интервал - это плавающая точка. У меня тоже есть точка с координатой с плавающей запятой. Мне нужно найти расстояние до ближайшей точки сетки.
Например:
0.12
|
*
|---------|---------|---------|---------|---------|
0 0.1 0.2 0.3 0.4 0.5
Результатом будет -0,02
, поскольку ближайшая точка находится за ним.
Однако, если это было
-0.66
|
*
|---------|---------|---------|---------|---------|
-1 -0.8 -0.6 -0.4 -0.2 0
, результат будет 0,06
. Как вы можете видеть, это число с плавающей запятой и может быть отрицательным.
Я пробовал следующее:
float spacing = ...;
float point = ...;
while(point >= spacing) point -= spacing;
while(point < 0) point += spacing;
if(std::abs(point - spacing) < point) point -= spacing;
Это работает, но я уверен, что есть способ без циклов