Домашние задания: Другие предметы

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

Егор Гергерт
Егор Гергерт
4 813
Через скалярное произведение, наверное, не получится. Неясно, какие нужно составлять векторы, и что нам даст угол, найденный через скалярное произведение.

Узнать можно так. Нужно знать уравнения прямых, содержащих стороны многоугольника. Уравнение прямой - это алгебраическое уравнение первой степени Ax + By + C = 0. Каждая такая прямая делит плоскость на две области. Если в уравнение прямой вместо знака равенства подставить знак строгого неравенства, то точка будет лежать в одной из этих областей (в какой конкретно - нужно подставлять координаты произвольно взятой точки и смотреть, какой знак у неравенства. Все точки, лежащие в этой области соответствуют именно этому знаку неравенства и наоборот. А дальше смотреть, какой области принадлежит интересующая нас точка.

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

Например, прямые x = -1, x = 1, y = -1, y = 1 задают квадрат. Все точки, лежащие внутри этого квадрата удовлетворяют условию x > -1, x < 1, y > -1, y < 1 (знак системы) . Обратно, каждая точка, координаты которой удовлетворяют этой системе, лежит внутри квадрата.

В общем случае нужно для каждой стороны выбрать пробную точку (абсолютно любую) внутри многоугольника, подставить её координаты в левую часть уравнения прямой, содержащей эту сторону (записанного в общем виде) и посмотреть какой будет знак у полученного числа. Затем подставить ту точку, которая дана в это же уравнение, если получится другой знак - она не лежит внутри многоугольника, если такой же - проверяем следующую сторону и т. д. Область, соответствующая внутренней области многоугольника относительно стороны определяется в большинстве случаев элементарно.

Это относится к любым многоугольникам, не только к выпуклым.
Николай Кузнецов
Николай Кузнецов
51 251
Лучший ответ
Через косое произведение.
Сергей Карунов
Сергей Карунов
57 858
Егор Гергерт Спасибо. Ваш ответ очень помог разобраться с поставленной проблемой.

Похожие вопросы