Как определить лежит ли точка внутри треугольника или снаружи.

Калькулятор поможет определить находится ли заданная точка внутри заданного треугольника. Точка и треугольник задаются декартовыми координатами на плоскости. Детально описан алгоритм вычисления.

Эта страница существует благодаря следующим персонам

Anton

Создан: 2019-02-18 05:47:35, Последнее изменение: 2020-11-03 14:19:36
Creative Commons Attribution/Share-Alike License 3.0 (Unported)

Этот материал распространяется на условиях лицензии Creative Commons Attribution/Share-Alike License 3.0 (Unported). Это означает, что вы можете размещать этот контент на своем сайте или создавать на его основе собственный (в том числе и в коммерческих целях), при условии сохранения оригинального лицензионного соглашения. Кроме того, Вы должны отметить автора этой работы, путем размещения HTML ссылки на оригинал работы https://planetcalc.ru/8108/. Пожалуйста оставьте без изменения все ссылки на других авторов данной работы или работы, на основе которой создана данная работа (если таковые имеются в спроводительном тексте).

Этот калькулятор определит где находится заданная точка внутри 2-мерного треугольника или вовне. Калькулятор использует простой алгоритм, основанный на свойствах векторного произведения. Описание этого алгоритма можно найти сразу за калькулятором.

PLANETCALC, Точка в треугольнике

Точка в треугольнике

Знаков после запятой: 2
Точка вниутри треугольника?
 

Векторное произведение ( z - координата )

AB x AP
 
BC x BP
 
CA x CP
 

Точка внутри треугольника. Описание алгоритма.

Векторное произведение векторов a и b, заданного декартовыми координатами в пространстве для 3-х мерного правого ортонормального базиса можно выразить так:
 \mathbf {a} \times \mathbf {b} =(a_{y}b_{z}-a_{z}b_{y},\;a_{z}b_{x}-a_{x}b_{z},\;a_{x}b_{y}-a_{y}b_{x}) [1].
Векторное произведение обладает свойством антикоммутативности:
 \mathbf {a} \times \mathbf {b} =-\mathbf {b} \times \mathbf {a}
Это важное свойство мы будем использовать для решения нашей задачи.

Попарное векторное произведение векторов-сторон треугольника и вектора из вершины в точку
Попарное векторное произведение векторов-сторон треугольника и вектора из вершины в точку



Для того чтобы определить лежит ли точка P внутри треугольника ABC мы вычислим 3 векторных произведения: ABxAP, BCxBP and CAxCP. Так как наш треугольник и точка в 2-мерном пространстве на плоскости, третья координата z для трехмерного пространства равна нулю. Согласно формуле [1] мы можем не вычислять координаты x и y для векторного произведения, если координата z векторов-множителей равна нулю - координаты x и y результата в этом случае всегда равны нулю (результирующий псевдо-вектор перпендикулярен плоскости треугольника). Знак результата произведения для оставшейся координаты (z) зависит от относительного положения умножаемых векторов. Если первый вектор (в нашем случае это сторона треугольника) находится правее второго вектора (вектор из вершины в точку P), то координата z результата будет положительна, если первый вектор будет левее второго - отрицательна, и в противном случае, если оба вектора идут в одном и том же направлении, результат будет равен нулю.
Получив результаты по трем векторным произведениям, нам остается их проанализировать, чтобы понять лежит ли точка внутри треугольника:
Если мы имеем и положительные и отрицательные результаты, точка лежит вне треугольника, если результаты только положительные или только отрицательные, точка - внутри.
Таблица далее иллюстрирует все возможные варианты результатов векторного произведения:

Рисунок Описание

atriangle_c_negative.png

atriangle_c_positive.png

Все результаты положительные или все результаты отрицательные.
Точка - внутри треугольника.

atriangle_c_zero1.png

Один результат равен нулю, остальные все либо положительны, либо все отрицательны.
Точка лежит на стороне треугольника.
Если два результата равны нулю, точка совпадает с вершиной треугольника.

atriangle_c_outside.png

Если имеются и положительные и отрицательные результаты.
Точка лежит вне треугольника.
Ссылка скопирована в буфер обмена
PLANETCALC, Как определить лежит ли точка внутри треугольника или снаружи.

Комментарии