나는 1 차원의 거더를 가지고 있습니다. 그 간격은 부동 소수점입니다. 나는 부동 소수점 좌표와 포인트가 있습니다. 가장 가까운 격자 점까지의 거리를 찾아야합니다. 예를 들어
: 가장 가까운 지점이 뒤에 있기 때문에점을 그리드에서 가장 가까운 점 얻기
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;
그것은 작동하지만 당신은 단지 숫자의 둘레에이 사용한다
간격은 선형입니까? – GWW
그의 예에서는 선형입니다. – GWW
@MooingDuck : 그것의 선형, 다만 일정하지 않음 (그것의 매개 변수) – Dani