|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Yura Schapov 2:5012/28.18 13 Jun 2001 01:27:18 To : Oleg Shmidt Subject : Алгоритм разделения горизонтальных линий полигоном ? --------------------------------------------------------------------------------
Мои бортовые системы запеленговали, что в Пятница Июнь 08 2001 23:41, Oleg
Shmidt писал All:
OS> Есть двумерный полигон. Может быть невыпуклым, но без самопересечений.
OS> Может иметь отверстия, тоже могут быть невыпуклыми.
[skip]
Это самое и ищи: Concave Polygon Scan Conversion...
Смотри примеры к Graphics Gems 1-5 на http://www.neutralzone.org/home/faqsys
Как я сам это представляю:
Пусть полигон задан anticlockwize векторами. Т.е. слева от вектора
полуплоскость принадлежит полигону (+), если он (вектор) смотрит вверх. (+^-)
Определяем верхнюю и нижнюю границы по Y. В цикле 0..MaxY
определяем точки пересечения горизонтальной линии Y, с линиями,
образующими полигон (scan conversion), и смотрим знаки, например:
(-+) (+-) (-+) (+-)
Линии соединяют положительные полуплоскости:
(-+)--(+-) (-+)--(+-)
Вот, примерно, так. Единственная проблема - если полигон задан неправильно =(
Встречная просьба к all: посоветуйте где поискать алгоритм быстрой триангуляции
таких полигонов... =)
C уважением, Yura Schapov.
--- [Team Proxium]
* Origin: :nigirO * (2:5012/28.18)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/33543b26c1a7.html, оценка из 5, голосов 10
|