Ближайшая точка сетки к точке

У меня одномерный пояс. его интервал - это плавающая точка. У меня тоже есть точка с координатой с плавающей запятой. Мне нужно найти расстояние до ближайшей точки сетки.
Например:

            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;

Это работает, но я уверен, что есть способ без циклов

6
задан Phil Miller 1 December 2011 в 20:25
поделиться