자바 스크립트를 사용하여 두 좌표의 구면 거리를 찾아야합니다. 저는이 프로젝트에 Wolfram을 많이 사용하고 있으며,이 수식이 다음과 같은 것을 발견했습니다 : cos^(- 1) (P · Q) [http://mathworld.wolfram.com/SphericalDistance.html]. 그래서 P · Q는 문제의 두 좌표의 내적입니다. 이것은 내가 DotProduct = (x1 * x2 + y1 * y2 + z1 * z2) [http://en.wikipedia.org/wiki/Dot_product]로 찾은 내적을 찾는 결과를 낳습니다. 그래서 다음 메소드를 조합하여 매번 NaN (Not a Number)을 얻습니다.자바 스크립트의 구면 거리
function ThreeDimensionalDistance(x1,y1,z1,x2,y2,z2){
return Math.acos(x1*x2 + y1*y2 + z1*z2);
}
여기는 두 세트의 샘플 데이터를 사용하고 있는데 왜 NaN을 얻는 지 알 수 없습니다. 작은 것을 놓친 건가요? 아크 코사인과 작업하기 위해 제 번호를 뭔가 변환해야합니까? 사전에 도움을 주셔서 감사합니다.
샘플 1 X : -1.7769265970284516, Y : -5.129885707200497, Z : -2.554761143401265 X : -0.8336414256732807, Y : -1.9876462173033347, Z : 5.599491449072957 거리 : NaN이 샘플 2 X : -0.8336414256732807, Y : -1.9876462173033347, Z : 5.599491449072957 X : 0.8447772905770565, Y : 4.252407300473133, Z : 4.147696165367961 거리 : NaN이
이 질문은 실제로 여기에 속하지 않습니다. (실제로 수학 문제입니다.)하지만 여기에 문제가 있습니다. 벡터를 ** 단위 ** 구로 정규화하지 않았습니다 (일명 P와 Q 점이 단위에 없습니다). 구체). – mc10