Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемГригорий Бузовлев
1 Компьютерная геометрия и графика. Лекция 7
2 План занятия: Задача удаления невидимых линий. Алгоритм плавающего горизонта.
3 Существует два различных способа изображения трехмерных тел: каркасное (рисуются только ребра) и сплошное (рисуются закрашенные грани). Возникает два типа задач - удаление невидимых линий (ребер для каркасных изображений) и удаление невидимых поверхностей (граней для сплошных изображений)
4 Если не удалять невидимые линии, то изображение будет запутанным и непонятным, как, например, изображение этого кубика: Если же решить задачу удаления невидимых линий, то визуально объект будет лучше восприниматься. На этих рисунках невидимые линии выделены пунктиром:
5 Алгоритм плавающего горизонта.
6 Рассмотрим задачу построения графика функции двух переменных z=f(x,y) Удаление невидимых линий - основная часть этого алгоритма. Без нее очень изображение графика трудно распознаваемо.
7 Что такое ПЛАВАЮЩИЙ ГОРИЗОНТ? Нижняя (верхняя) огибающая тех точек, которые в данный момент находятся на экране называется нижним (верхним) плавающим горизонтом. Пусть, например, на экране нарисованы отрезки: Тогда нижним горизонтом будет следующая огибающая (выделена красным):
8 Плавающий горизонт обычно задается массивом, то есть если по горизонтали 640 точек, то массив будет Каждый из горизонтов (верхний и нижний) - отдельный массив. В начале работы алгоритма в массив верхнего горизонта записываем максимальные значения, а в массив нижнего горизонта минимальные. То есть в начале горизонты фактически поменялись местами. Верхний горизонт внизу, а нижний вверху.
9 Точка видима, если она окажется выше верхнего или ниже нижнего горизонта. Основное правило:
10 Рисуем первую линию графика: Считаем, что она является верхним и нижним горизонтом. Записываем соответствующие значения в массивы.
11 Рисуем вторую линию графика: Обе эти линии видимы, теперь появляется верхний и нижний горизонт. Появляется также область между горизонтами, та в которую уже нельзя ставить точки.
12 Рисуем третью линию графика: Верхний и нижний горизонты заново пересчитываются, те точки графика которые попали между верхним и нижним горизонтом считаются невидимыми и не изображаются на экране.
13 И так далее: Постепенно строится изображение.
14 Процесс лучше начинать с линии, которая расположена ближе всего к нам. Как ее найти? ?
15 Нарисуем сетку области определения. Нарисуем над сеткой поверхность. Берем 4 крайние точки области определения. Находим 4 точки, которые расположены над ними в пространстве и которые принадлежат поверхности. Определяем самую ближнюю к нам (максимум по Х и по Y). Линии проходящие через эту точку и есть начальные, то есть те, с которых надо начинать построение.
16 Недостатки метода:
17 Чтобы линии, изображаемые на экране, были сплошными, необходимо разбивать их на фрагменты, причем фрагментов должно быть не менее 640 штук. Для повышения качества изображения советуется разбивать линию на 1000 кусков. Так как храним информацию о каждом куске в массиве - это занимает много места в памяти. ! !
18 Не очень качественное изображение - еще один недостаток этого метода. Причина в том, что горизонты - разрывные линии. Если разрывы возникают в области, где поверхность само пересекается, то этот эффект так просто не устранить. Например:
19 Сложный случай: рисовать точку А или нет? А Ведь она лежит как бы внутри нижнего горизонта, на границе области определения. Один из способов борьбы с этой сложностью - расширить границы области определения. На рисунке это показано зелеными линиями. Рисовать на экран эти участки не будем, но большую часть проблем на границах устраним. А
20 Если в строящемся объекте больше вертикальных линий, чем горизонтальных, тогда вместо верхнего и нижнего горизонта можно ввести правый и левый горизонты.
21 Как определять, какие горизонты рассматривать? Берем крайние точки области определения. Смотрим, каких линий через них проходит больше - вертикальных или горизонтальных (вычисляем для каждой угол наклона). Процесс инициализации горизонта делается дважды: перед рисованием горизонтальных линий и перед рисованием вертикальных линий. ?
22 Конец.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.