LINUX.ORG.RU

История изменений

Исправление t184256, (текущая версия) :

Даже и не знаю, как тут можно поподробнее, но постараюсь.

Вот у тебя на плоскости многоугольник ABCDEF и точка X. Считаешь векторное произведение [ABxAX]. Оно либо в одну сторону торчит, либо в другую. Фиксируем какое-либо из направлений, смотрим знак проекции на него. Пусть будет, допустим, +.

Теперь повторяем то же самое для [BCxBX], [CDxCX] ... [FA,FX]. Если все знаки одинаковые (все + или все -), то точка внутри.

Подвох прост: чтобы это работало, нужна выпуклость.

Исходная версия t184256, :

Даже и не знаю, как тут можно поподробнее, но постараюсь.

Вот у тебя на плоскости многоугольник ABCDEF и точка X. Считаешь векторное произведение [ABxAX]. Оно либо в одну сторону торчит, либо в другую. Фиксируем какое-либо из направлений, смотрим знак проекции на него. Пусть будет, допустим, +.

Теперь повторяем то же самое для [BCxBX], [CDxCX] ... [FA,FX]. Если все знаки одинаковые, то точка внутри.

Подвох прост: чтобы это работало, нужна выпуклость.