Точка внутри многоугольника или на ребреC#

Место общения программистов C#
Anonymous
Точка внутри многоугольника или на ребре

Сообщение Anonymous »

Мне нужно проверить, находится ли предоставленный список координат внутри контура пластины, на одном из краев или углов. Я использовал реализацию точки в полигональном алгоритме, который видел на образце. Это работает очень хорошо, за исключением того, что возвращает false, когда координата находится на ребре или вершине.
Как изменить код, чтобы учесть этот случай, когда координата находится на ребре или вершине? На картинке показаны образцы некоторых планшетов, на которых необходимо провести тест.
Эту реализацию не я создавал, и очень благодарен человеку, который ее выложил, к сожалению не записал ни название, ни сайт, откуда взял

Код: Выделить всё

// Check if the ray from the test point crosses the edge

if (((p1.Y  pt.Y) || (p2.Y  pt.Y)) &&
(pt.X < (p2.X - p1.X) * (pt.Y - p1.Y) / (p2.Y - p1.Y) + p1.X))
{
inside = !inside;
}
Планеты для проверки
Изображение


Подробнее здесь: https://stackoverflow.com/questions/798 ... on-an-edge

Вернуться в «C#»