Как определить, приближает ли точка расширение линии между двумя другими точками? - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть три точки (A, B, C), которые обозначают объекты, движущиеся в 2D-пространстве. Для каждого узла я знаю его положение и вектор скорости. Все три объекта движутся в одном направлении.

Я хотел бы знать, аппроксимирует ли точка C (x3, y3) «положительное» продолжение линии, образованной точками A (x1, y1) и B (x2, y2). То есть я хотел бы знать, находится ли точка C «впереди» точки B (т.е. «A-> B-> C», а не «C-> A-> B»).

Я знаю, что проверка коллинеарности точек A, B, C даст мне указание на то, что все три точки лежат на одной линии, однако я не могу понять, приближает ли точка C положительное продолжение линии.

Любое предложение будет высоко оценено.

1 Ответ

1 голос
/ 30 декабря 2011

Вы можете рассчитать скалярное произведение разностных векторов AB и BC.Если это положительно, то C - это то, что вы называете «перед B. Это может быть как слева, так и справа».

Скалярное произведение будет рассчитываться как

(b1-a1)x(c1-b1) + (b2-a2)x(c2-b2). 

, когда A = (a1, a2), B = (b1, b2), C = (c1, c2) - этоcos угла между двумя векторами, умноженного на длину векторов, и cos положительны для углов меньше 90 градусов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...