Разбор вариантов решения задачи о целых точках
Задача: Многоугольник (не обязательно выпуклый) на плоскости задан координатами своих вершин. Требуется подсчитать количество точек с целочисленными координатами, лежащих внутри него (но не на его границе).
— тема по Linux
— необязательная тема
- Решение «в лоб»: выяснение, какие целые точки из описанного прямоугольника принадлежат многоугольнику:
- Проверка принадлежности точки многоугольнику
- Сложность манипуляций с полуплоскостями и проекциями
- Подсчёт суммы углов (для внешней точки 0, для внутренней 2*Pi)
- Разбиение на треугольники (доказательство того, что от невыпуклого многоугольника всегда можно отрезать полный треугольник)
- Подсчёт количества пересечений со сторонами многоугольника при выходе за его границы (для внутренних точек -- нечётное, для внешних -- чётное)
- Проверка принадлежности точки многоугольнику
- Логарифмическое разбиение, обсчёт границ, ...
Домашнее задание
— теоретическое задание
— новая тема
- Решить задачу «в лоб»
Решение методом «сумма углов» celyetoch.py (вспомогательные функции: celyetochG.py