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

Я прохожу курс компьютерной графики. В 3D у меня есть точка и многоугольник, и я хочу определить, находится ли эта точка над или под моим многоугольником. Заранее спасибо за ваши ответы.

Ответы [ 2 ]

1 голос
/ 05 марта 2011

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

Чтобы проверить, действительно ли оно «выше» или «ниже» в смысле того, что оно находится прямо над или под ним (т. Е. Где-то не в стороне), затем задайте точку в многоугольнике, проецируя все это на 2d вдоль нормальный, а затем расстояние вдоль нормального теста.

0 голосов
/ 05 марта 2011

Это зависит от вашего определения выше и ниже, позвольте мне сначала поговорить о простом случае:

  • Если вы думаете о выше / ниже в терминах глобального направления (обычно это ось yили оси z), просто сравните значения на этой оси.

Хорошо, теперь более сложная интерпретация: на какой стороне многоугольника находится точка.

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

  • Для треугольника вы можете решить, находится ли точка над или под ней (в 3D) сначала вычислите перекрестное произведение двух векторов, составляющих стороны треугольника;это определит направление (= определение «выше» и «ниже»), это зависит от порядка, в котором вы используете эти 2 вектора, поэтому будьте осторожны.Затем вычислите скалярное произведение нового вектора (который называется перпендикуляром этого треугольника) и разностный вектор тестируемой точки и основания треугольника.

...