12.12.2011, 16:18
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Livanderiaamarum
|
а если нам нужно все абстрактно сделать)?
|
Вот абстракный вариант.
Цитата:
|
Проверка принадлежности точки полигону
Алгоритм несложный. Просматриваем все вершины. Теперь получим вектор от точки пересечения до текущей вершины: вычитаем вектор точки пересечения из вектора текущей вершины. Аналогично получим вектор от точки пересечения до следующей вершины. Затем находим угол между этими векторами и добавляем его к текущему углу Angle. Нетрудно доказать, что после просмотра всех вершин значение Angle будет равно 2*pi (360 градусов) только в том случае, если точка находится внутри полигона. В силу неточностей вычислений с плавающей точкой может быть, например, что угол будет равен (2*pi – 0.00001), поэтому проверяем, если угол больше либо равен 2*pi*const (константа близкая к единице), возвращаем true, точка находится внутри полигона, иначе возвращаем false.
|
http://www.gamedev.ru/articles/?id=30123
|