Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uchebnik_po_kursu_GIO_2007_ispravlenny_s_risunk...doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
13 Мб
Скачать
☆

14.5. Алгоритм Варнака

Алгоритм Варнака является еще одним примером алгоритма, основанного на разбиении картинной плоскости на части, для каждой из которых исходная задача может быть решена достаточно просто.     Разобьем видимую часть картинной плоскости на четыре равные части и рассмотрим, каким образом могут соотноситься между собой проекции граней и получившиеся части картинной плоскости.

Возможны 4 различных случая:

1. Проекция грани полностью накрывает область (рис. 14.5.1, а); 2. Проекция грани пересекает область, но не содержится в ней полностью (рис. 14.5.1, б);

3. Проекция грани целиком содержится внутри области (рис. 14.5.1, в); 4. Проекция грани не имеет общих внутренних точек с рассматриваемой областью (рис. 14.5.1, г).

Рис. 14.5.1. Случаи пересечений проекций граней и картинной плоскости.

Очевидно, что в последнем случае грань вообще никак не влияет на то, что видно в данной области.

Сравнивая область с проекциями всех граней, можно выделить случаи, когда изображение, получающееся в рассматриваемой области, определяется сразу:

• проекция ни одной грани не попадает в область;    • проекция только одной грани содержится в области или пересекает область; в этом случае грань разбивает всю область на две части, одна из которых соответствует этой грани;

• существует грань, проекция которой полностью накрывает данную область, и эта грань расположена к картинной плоскости ближе, чем все остальные грани, проекции которых пересекают данную область; в этом случае вся область соответствует этой грани.

Если ни один из рассмотренных трех случаев не имеет места, то снова разбиваем область на 4 равные части и проверяем выполнение этих условий для каждой из частей. Те части, для которых видимость таким образом определить не удалось, разбиваем снова и т. д. (рис. 14.5.2).

Рис. 14.5.2. Пример определения видимости грани методом Варнака.

Естественно возникает вопрос о критерии, на основании которого прекращать разбиение (иначе оно может продолжаться до бесконечности).

В качестве очевидного критерия можно взять размер области: как только размер области станет не больше размера 1 пиксела, то производить дальнейшее разбиение не имеет смысла и для данной области ближайшая к ней грань определяется явно.

     

  1. Геометрические сплайны

Историю сплайнов принято отсчитывать от момента появления первой работы Шенберга в 1946 году. Сначала сплайны рассматривались как удобный инструмент в теории и практике приближения функций. Однако довольно скоро область их применения начала быстро расширяться и обнаружилось, что существует очень много сплайнов самых разных типов. Сплайны стали активно использоваться в численных методах, в системах автоматического проектирования и автоматизации научных исследований, во многих других областях человеческой деятельности и, конечно, в компьютерной графике.

Сам термин «сплайн» происходит от английского spline. Именно так называется гибкая стальная полоска, при помощи которой чертежники проводили через заданные точки плавные кривые. В былые времена подобный способ построения плавных обводов различных тел, таких, как, например, корпус корабля, кузов автомобиля, а потом фюзеляж или крыло самолета, был довольно широко распространен в практике машиностроения. В результате форма тела задавалась при помощи набора очень точно изготовленных сечений – плазов. Появление компьютеров позволило перейти от этого, плазово-шаблонного, метода к более эффективному способу задания поверхности обтекаемого тела. В основе этого подхода к описанию поверхностей лежит использование сравнительно несложных формул, позволяющих восстанавливать облик изделия с необходимой точностью. Ясно, что для большинства тел, встречающихся на практике, вряд ли возможно отыскание простых универсальных формул, которые описывали бы соответствующую поверхность глобально, то есть, как принято говорить, в целом. Это означает, что при решении задачи построения достаточно произвольной поверхности обойтись небольшим количеством формул, как правило, не удается.     Вместе с тем аналитическое описание (описание посредством формул) внешних обводов изделия, то есть задание в трехмерном пространстве двумерной поверхности, должно быть достаточно экономным. Это особенно важно, когда речь идет об обработке изделий на станках с числовым программным управлением. Обычно поступают следующим образом: задают координаты сравнительно небольшого числа опорных точек, лежащих на искомой поверхности, и через эти точки проводят плавные поверхности. Именно так поступает конструктор при проектировании кузова автомобиля (ясно, что на этой стадии процесс проектирования сложного объекта содержит явную неформальную составляющую). На следующем шаге конструктор должен получить аналитическое представление для придуманных кривых или поверхностей. Вот для таких задач и используются сплайны.

Средства компьютерной графики, особенно визуализация, существенно помогают при проектировании, показывая конструктору, что может получиться в результате, и, давая ему многовариантную возможность сравнить это с тем, что сложилось у него в голове.

Достаточно типичной является следующая задача: по заданному массиву точек на плоскости (2D) или в пространстве (3D) построить кривую либо проходящую через все эти точки (задача интерполяции), либо проходящую вблизи от этих точек (задача сглаживания).

Совершенно естественно возникают вопросы:

1) в каком классе кривых искать решение поставленной задачи?

2) как искать?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]