Учитывая две 2D точки (p1 и p2), мне нужно найти точку (p3), которая (с точки зрения p1) находится на другой стороне p2, и в то же время ей нужно иметь заданное расстояние до p2.
Это может выглядеть так с большим заданным расстоянием:
^
|
| p1
| p2
|
| p3
<-|---------------------------->
v
Или как с меньшим заданным расстоянием:
^
|
|
| p3
| p2
|p1
<-|---------------------------->
v
Как я могу рассчитать этоpoint (p3)?
Мой язык выбора - JavaScript, но я не строго прошу об ответе JavaScript.Если вы можете объяснить это способом, который можно перевести в код, или если вы напишите псевдокод, это было бы просто замечательно.
Это была моя последняя попытка (очевидно, это не сработало):
calculate_point_on_other_side_of_p2(p1, p2, distance_p2_to_p3) {
deltaX = p1.x-p2.x
deltaY = p1.y-p2.y
distance_p1_to_p2 = sqrt(deltaX*deltaX + deltaY*deltaY)
if (deltaX < 0)
p3.x = p2.x+distance_p2_to_p3
else
p3.x = p1.x-distance_p2_to_p3
if (deltaY < 0)
p3.y = p2.y+distance_p2_to_p3
else
p3.y = p1.y-distance_p2_to_p3
return p3
}