0
포인트가 구의 특정 거리 내에 있는지 테스트하고 싶습니다. 그래서 당신은 이러한 변수가포인트를 구형으로 테스트 최적화
...
이는 내부 DIST가 긍정적 인 경우 DIST가 음수 인 경우는, 반경 밖에
Point3F spherePnt;
F32 sphereRadius;
Point3F testPnt;
내가 할 수있는
...
F32 dist = (spherePnt - testPnt).len() - sphereRadius;
반지름. 처음 눈에 때문에 만들지 만, 분명히 자신이 실제로주고처럼이 보이는
또는 LEN 내부의 제곱근을 피하기 위해 최적화() 당신이 시도 할 수있는 기능 등
...F32 dist = (spherePnt - testPnt).lenSquared() - (sphereRadius * sphereRadius);
확인 나 부정확 한 결과. 예를 들어
, 주어진 변수는 수학적으로,이 사실, 잘못 꽤 분명하다
F32 dist = (spherePnt - testPnt).len() - sphereRadius;
F32 dist2 = mSqrt((spherePnt - testPnt).lenSquared() - (sphereRadius * sphereRadius));
dist = 0.7320508075688772935274463415059;
dist2 = 0.4142135623730950488016887242097;
...
SpherePnt(0, 0, 0)
SphereRadius(1)
testPnt(1, 1, 1)
이 결과를 가지고 ...이 같은 설정이다 . 그것은 2의 제곱근이 3의 제곱근과 같아지기를 기대하기 때문에 ... 질문은 생각합니다 ...
이 테스트를 수행하고 싶다면 "포인트 p 영역의 범위 r "내에서 제곱근을 피하면서이를 수행하는 방법이 있습니까?
정확히. 반경의 제곱과 중심점까지의 거리의 제곱을 비교하십시오. –
. 그리고 이것이 당신의 모든 시간을 사용하는 "내부 루프"라면, 한 번에^2 개의 축 하나를 추가하여 속도를 높일 수 있습니다. > R^2를 얻 자마자 멈출 수 있습니다. –
@ 좋은 생각, 좋은 생각, 얼마나 많은 시간을 절약 할 수 있을지 궁금해. (점의 분포에 따라 - 점이 구와 멀리 떨어져 있으면 아주 중요 할 수 있습니다.) –