Взаимное расположение точки и прямой

Данная статья посвящена алгоритму определения местоположения точки относительно прямой: лежит ли точка на прямой, в верхней или нижней полуплоскости (в левой или правой полуплоскости - если прямая вертикальна).

Пусть данная точка - P0, прямая задана двумя точками: P1 и P2, не умаляя общности будем считать, что т. P1 лежит левее P2, или, если прямая вертикальна, P1 - ниже P2.
Для определения местоположения точки рассмотрим косое (векторное) произведение двух векторов:

• с началом в точке P1 и концом в точке P2,

• с началом в точке P1 и концом в точке P0.


Если косое произведение:

• больше нуля, то угол между векторами больше нуля, т.е. поворот от первого вектора ко второму идет против часовой стрелки, значит точка лежит выше (левее) прямой;

• равно нулю, то угол между векторами 0 или 180 градусов, т.е. векторы коллинеарны, значит точка лежит на прямой;

• отрицательно, то угол между векторами меньше нуля, т.е. поворот от первого вектора ко второму идет по часовой стрелке, значит точка лежит ниже (правее) прямой.

Заметить эту зависимость можно посмотрев на формулу косого произведения векторов, где a, b - векторы, α - угол между векторами: $$[\overline{a}, \overline{b}] = |\overline{a}||\overline{b}|sinα$$

• Синус меньше 0 только при отрицательном угле

• Больше 0 - при положительном

• Равен нулю при угле в 180 или 0 градусов