Найти третью точку - PullRequest
       12

Найти третью точку

5 голосов
/ 25 ноября 2010

У меня 2 балла P1 и P2.Мне нужно найти P3, чтобы

  • все точки были на одной линии;
  • P3 должно быть на расстоянии d от P2 (от P1)

Я запустил сложную систему, по-видимому, с трудом поддающуюся решению ...
alt text

PS.

Векторные ответы - это круто, но я использую C # и не знаю, как добавить туда векторы.

Ответы [ 2 ]

5 голосов
/ 25 ноября 2010
P3 = P2 + d * ±(P2 - P1) / |P2 - P1|

EDIT:

Потому что делать покупки легко:

mag = sqrt((P2x - P1x) ** 2 + (P2y - P1y) ** 2)
P3x = P2x + d * (P2x - P1x) / mag
P3y = P2y + d * (P2y - P1y) / mag
2 голосов
/ 16 октября 2011

Я перевел код в цель 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);
...