2017-11-16 6 views
-5

두 점 사이의 거리 (p1 = (x1, y1) 및 p2 = (x2, y2))를 반환해야하지만 p2의 값이 p1보다 작 으면 음의 거리를 반환해야합니다.두 점 사이의 거리/변위 얻기

그래서 본 실시 예에 해당하는 것으로 : 거리 제외 할 수 없으므로 https://i.imgur.com/ZbN8CkG.png

√ ((X1-X2) ² + (Y1-Y2)는 ²) 항상 양의 값을 리턴한다. 그러나 내가 필요한 것은 변위와 더 유사합니다.

아무도 도와 줄 수 있습니까?

+2

수학에 관한 것이기 때문에 주제를 오프 토픽으로 닫으려고합니다. –

+0

그래서 공식에 해당하는 거리를 얻은 다음 "p2의 값이 p1보다 작 으면"을 빼십시오. 당신. – Blorgbeard

+0

"p2 값이 [pic] p1보다 작 으면"은 무엇을 의미합니까? 두 값 모두? 그 중 한 명? 이것이 거리 계산과는 별도로 검사 할 수있는 것이라면 (그런데'Math.hypot'을 사용해야합니다), 그렇게하십시오. –

답변

0

정말 벡터가 필요한 것처럼 들립니다. 크기는 입니다. 크기는 두 점 사이의 거리입니다. 방향은 벡터를 시작점에서 끝점까지 그려서 결정됩니다. 선택은 임의적입니다.

(0,0)에서 (5,0)까지의 벡터는 (5,0)에서 (0.0)까지의 길이와 같습니다. 둘 다 길이가 5입니다. 그러나 양의 x 방향 ; 다른 점은 음의 x 방향입니다. 벡터 아이디어가 더 일반적입니다.

2D 직각 좌표에서 점 p1 = (p1x, p1y) 및 p2 = (p2x, p2y)를가집니다.

P1에서 P2 벡터는 다음

p = (p2x-p1x)*i + (p2y-p1y)*j 

여기서 I = X-단위 벡터 및 J = Y 단위 벡터. (P)과 동일한 방향으로

p(unit) = (p2x-p1x)*i/pmag + (p2y-p1y)*j/pmag 

대한 Punit 점 :

(P)의 크기는 그 크기가 벡터 (P)로 나누어 가지게 될 수 P1에서 P2

pmag = sqrt((p2x-p1x)^2 + (p2y-p1y)^2) 

단위 벡터이다 그러나 크기 1을가집니다 (따라서 "단위 벡터"라는 이름).

0

첫 번째 점의 x 값이 더 크면 음수 여야 만합니다. 그러면 x1이 x2보다 큰지 여부를 확인할 수 있습니다. 그렇다면 결과에 -1을 곱합니다. 내가 뭔가를 놓치지 않으면 그렇지 않습니다.