我有一个一维网格,其间距是一个浮点数。我有一个带有浮点坐标的点。我需要找到它到最近网格点的距离。
例如:
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;
这个方法可行,但我相信有一种不需要循环的方式。