2010-11-25 6 views
5

나는 P1P2의 두 점을 가지고 있습니다. P3을 찾아야합니다.세 번째 점을 찾으십시오

  • 모든 점이 같은 줄에 있어야합니다.
  • P3
    alt text

    PS (P1에서 멀리)에 P2까지의 거리 d

내가 해결하기 위해 분명히 거의 복잡한 시스템을 시작하지에 있어야합니다.

벡터 답변은 멋지지만 C#을 사용하고 거기에 벡터를 추가하는 방법을 모르겠습니다.

+0

http://math.stackexchange.com/- 어쩌면 당신은 더 나은 답을 찾을 수 있습니다 ;-) – Svisstack

+0

당신은 똑 바른 li ne ** ** ** ** ** 거리에 있습니다! –

+0

@Svisstack : 아마도 내가이 질문을 거기서 옮겨야하지만, 어떻게하는지 모르겠습니다. – serhio

답변

5
P3 = P2 + d * ±(P2 - P1)/|P2 - P1| 

편집 : 쇼핑 쉽게

때문에 :

mag = sqrt((P2x - P1x) ** 2 + (P2y - P1y) ** 2) 
P3x = P2x + d * (P2x - P1x)/mag 
P3y = P2y + d * (P2y - P1y)/mag 
+0

정말 벡터 분열 ... 그리고 왜 + -? – serhio

+0

P2에서 두 개의 직선 상 점 d가 있기 때문에 : P1 '(긍정적), 하나는'P1' (부정)쪽으로. –

+0

감사합니다 :) 매력처럼 작동합니다 ... – serhio

2

내가 목표 C로 코드를 번역 한

float distanceFromPx2toP3 = 1300.0;  

float mag = sqrt(pow((px2.x - px1.x),2) + pow((px2.y - px1.y),2)); 
float P3x = px2.x + distanceFromPx2toP3 * (px2.x - px1.x)/mag; 
float P3y = px2.y + distanceFromPx2toP3 * (px2.y - px1.y)/mag; 

CGPoint P3 = CGPointMake(P3x, P3y); 
+0

감사합니다! 나를 위해 일했습니다. (다른 검색자를 위해이 답변을 찾으려고 노력한 키워드 Bresenham 라인 투영 3 포인트) –

관련 문제