Проверка, что через 3 вектора можно провести ровную линию
Как можно определить/проверять, что через (допустим) 3 вектора можно провести ровную линию для использования способности на врагов.
Вот у меня есть 3 вражеских героя к примеру. Позиции каждого я могу получить Vector(x, y, z).

Вот как это выглядит, если получить позицию одного врага

Дальше мне нужно рассчитать, стоят ли враги в линию, для того, что бы использовать ультимативную способность.

Хотелось бы добавить, что если делать самому, т.е. мышкой навестись на определенную точку, то ее можно крутить по кругу. Сам центр, куда я ее зажал меняться не будет, но ее крайние точки -- да

Используется сама способность. Как можно видеть это стенка, координаты которой я тоже могу получить

Как я понимаю, для того, что бы поставить стенку и она задевала всех героев, я должен для начала рассчитать, а возможно ли это и стоят ли враги в линию. Как мне это можно сделать?
Ответы (1 шт):
Имея три точки P1, P2, P3, получаете два вектора
V1 = P2 - P1
V2 = P3 - P1
И считаете их векторное произведение (в 2D - кросс-продукт)
A = V1 x V2 = V1.X * V2.Y - V1.Y * V2.X
Для того, чтобы избавиться от погрешностей (надо полагать, что в ваших условиях маленький угол - всё равно, что нулевой), нормируйте на характерный размер
R = max(abs(V1.X), abs(V2.X), abs(V1.Y), abs(V2.Y))
И сравнение выполняйте
if (abs(A) < R * R * Eps)
значит - на одной прямой
где Eps - малая величина - например, 0.01 или 0.000001 - смотря как в вашей задаче требуется.