403
правки
Изменения
→Реализация
==Реализация==
Здесь будут рассмотрены некоторые основные моменты реализации
Это только идейные реализации идеи, в коде все выглядет пример выглядит примерно в 50 раз хуже.(по количеству строк)
===Класс "трапецоид"===
struct Trapezoid Trapezoid next Trapezoid up Trapezoid down Trapezoid end Segment top Segment bottom Point left Point right
===Построение трапецоидной карты===
TrapezoidMap(S - segments) Строим оболочку(просто находим крайние точки множества отрезков по четырем направлениям) Строим рандомную перестановку отрезков
for для всех
===Поиск трапецоидов, которых пересекает отрезок===
LookforTrapezoid(<tex>s_i</tex> - segment) Запоминаем левый и правый конец <tex>s_i</tex> Делаем запрос на левый конец в карте. j <tex>\leftarrow</tex> 0; while q <tex>\in</tex> правый от rightp(трапецоид_j) do if rightp(трапецоид_j) над <tex>s_i</tex> then ставим трапецоид_(j+1) нижним правым соседом трапецоид_j. else ставим трапецоид_(j+1) верхним правым соседом трапецоид_j. j <tex>\leftarrow</tex> j+1
==Ссылки==
[http://graphics.stanford.edu/courses/cs268-09-winter/ Lecture notes from stanford, Seidel]