ivanstudent

Путь к Файлу: /Введение в компьютерную графику / 15 / 91-96.DOC

Ознакомиться или скачать весь учебный материал данного пользователя
Скачиваний:   0
Пользователь:   ivanstudent
Добавлен:   24.12.2014
Размер:   61.0 КБ
СКАЧАТЬ

6. ДОПОЛНИТЕЛЬНЫЕ ВОПРОСЫ

КОМПЬЮТЕРНОЙ ГРАФИКИ

 

6.1. Алгоритм определения точки пересечения

      произвольного луча с геометрическими объектами

 

Для исключения лишней работы при анализе сцены желательно  определить лучи, идущие из центра проектирования на картинную плоскость, которые вообще не пересекаются с объектами. Это означает, что в соответствующих точках картинной плоскости будет  изображен фон.

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

Только после этого для оставшихся лучей имеет смысл проводить более детальный анализ.

 

1. Пересечение со сферой

 

Пусть луч выходит из точки О,  радиус вектор которой R0 (x0,           y0, z0), в направлении, определяемом вектором L (l, m, n) ¹ 0. Здесь l, m, n – косинусы углов, которые образует вектор, направленный вдоль луча, с осями декартовой системы координат, или, что то же самое, проекции соответствующего единичного вектора на эти оси.

Параметрическое уравнение такого луча можно записать в виде

 

                     R(t) = R0 + L* t,          t > 0,

или

      x(t) = x0 + l*t, y(t) = y0 + m*t, z(t) = z0 + n*t.             (*)

 

Если направляющий вектор единичный (l2 + m2 + n2 = 1),  то смысл параметра t - расстояние от начала луча до текущей точки.

Пусть имеется сфера радиуса r, центр которой расположен в точке с координатами хс, yc, zc.  Ее уравнение тогда можно записать:

 

                 (x - xс )2 + (y - yс )2 + (z - zс )2  = r2.

 

Точки пересечения луча со сферой будут,  если x, y, z одновременно принадлежат лучу и сфере,  т.е. удовлетворяют соответственно уравнениям луча и сферы одновременно.

Подставим (*) в уравнение сферы; тогда получим

 

                at + 2bt + c = 0.                                     (**)

 

Здесь a = l2 + m2 + n2 = 1 (для единичного L);

           b = l*(x0 - xс ) + m*(y0 - yс ) + n*(z0 - zс );

         c = (x0 - xс ) + (y0 - yс ) + (z0 - zс ) - r .

Если существуют значения t,  при которых выполняется (**), это и есть точки пересечения.

91-96 Корни уравнения (**)      t = - b ± Ö  b2 – c.

Если b2 – c < 0, решения нет, и это означает, что луч идет мимо сферы;

        b2 – c = 0 - одно решение –  луч касается сферы;

         b2 –c > 0 - два решения –  луч «протыкает» сферу.

Поскольку мы принимали t > 0, то ближайшая точка пересечения отвечает меньшему положительному корню (**); обозначим ее через t1. Тогда точка пересечения определяется координатами

 

           x =x0 + lt1,  y =y0 + mt1,  z =z0 + nt1.

 

Нормаль к сфере - единичный вектор - определится тогда соотношением

 

           N=(x -xс , y -yс , z -z с) / r.

 

Таким образом, весь алгоритм включает в себя расчет:

1) a, b, c из (*);

2) b2 - c;

3) tmin    и  tmax   ;

4) t1 , выбираемое из tmin    и  tmax  ; определяется точка пересечения;

5) расчет N.

 

2. Пересечение с плоскостью

 

Пусть уравнение плоскости

                   ax + by + cz + d = 0;

тогда N(a, b, c) - вектор нормали к ней. Если при этом N - единичный вектор (a2 + b2 + c2 =1),  то d в уравнении плоскости означает расстояние от начала координат до плоскости.

Пересечение луча с плоскостью будет, если вместо x, y, z в уравнение плоскости подставим (*):

 

              а*(x + lt) + b*(y + mt) + c*(z + nt) + d = 0.

 

Решение этого уравнения

 

                                91-96      

 

Если знаменатель в этом выражении равен нулю, то t1 ® ¥, а  это означает, что луч параллелен плоскости и ее не пересекает.

Если t1  < 0 - пересечения луча с плоскостью нет;

если t1  > 0 - есть пересечение в точке, координаты которой определяются из соотношений

 

                       x = x + lt1 ,  y =y + mt1 , z = z + nt1 .

 

При определении  пересечения  луча с многогранником определяется возможность его пересечения с каждой гранью - многоугольником.

Для этого определяется:

1) пересекает ли луч плоскость многоугольника;

2) попадает ли точка пересечения внутрь многоугольника.

О первом вопросе – о пересечении луча с плоскостью – речь уже шла выше. Для решения второго вопроса и многоугольник, и точка пересечения проектируются на какую-либо координатную плоскость,  например,  z=0. Если проекция точки пересечения находится внутри проекции  многоугольника,  то  и сама точка – внутри многоугольника.

Один из приемов заключается в следующем. Система координат  передвигается так,  чтобы точка пересечения x, y оказалась в начале координат.  После этого есть ряд способов определить, находится  ли этот центр внутри многоугольника.  Например, если все х > 0 или все x <0 одновременно,  то центр (0, 0) находится вне многоугольника, и анализ прекращается. В противном случае анализ продолжается с использованием более сложных рассуждений.

 

6.2. Основы методов устранения ступенчатости

 

Причины возникновения  «лестничного» эффекта и многих других искажений:

 

1. В  использовании дискретных растровых устройств для рисования непрерывных линий. Об этом уже шла речь при обсуждении алгоритма Брезенхема.

2. В низкой частоте несущего сигнала. Например,  если вести выборку значений разных сигналов с одной и той же частотой, как это показано на  рис. 20 и рис. 21,

91-96 91-96
 

 

 

 

 

 


                Рис. 20                                                       Рис. 21

 

то его изображение по дискретным значениям будет  одним  и  тем  же,  как, например, показано на рис. 22.

91-96
 

 


               

 

 

                                                      Рис. 22

 

Для предотвращения таких искажений необходимо  вести  выборку  с чаcтотой как минимум вдвое большей, чем максимальная частота сигнала.

3. В наличии многих объектов в изображении; при этом если объект не попадает в пиксел (а), то он игнорируется и не изображается; если же попадает (б),  то меняет атрибут пиксела целиком.  В итоге мелкие объекты либо теряются совсем и не изображаются на экране монитора вообще, как для случая на рис. 23,  либо слишком выделяются, как на рис. 24.

Простое мельчение выборки (на современных средствах до 2000 пикселов в строке) проблемы не решает.

 

 

91-96
91-96
 


91-9691-9691-96                              

91-96
 

 


              Рис. 23                   Рис. 24

Возможные пути решения:

1. Вычисляется растр с высоким разрешением (это так называемый математический растр), а изображается на реальном (техническом) растре с более низким.  При этом на реальном растре  проводится усреднение - равномерное (на рис. 25 математический растр 3*3, на рис. 26 - 4*4) или с весами (рис. 27). В последнем случае «вес» означает, что изображение в соответствующей части математического растра вносит в определение атрибута пиксела, пропорциональную 1, 2 или 4. Разумеется, эти «веса» можно изменять.

 

+

+

+

+

+

+

+

+

+

                                                               Рис.6

Рис. 25. Растр 3´3, когда ячейки имеют одинаковые «веса»

 

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

 

Рис. 26. Растр 4´4, когда ячейки имеют одинаковые «веса»

                                              

1

2

1

2

4

2

1

2

1

 

Рис. 27. Растр 3´3, когда ячейки имеют различные веса в соответствии

с цифрами внутри ячеек

 

Попутно можно заметить, что размер пиксела в математическом растре может быть не меньше, а больше, чем технический пиксел. Тогда осреднение – с постоянными или переменными весами – приведет к тому, что вместо привычного изображения на экране мы увидим «размытую» картину. Такой прием часто используется в телевидении, когда по каким-либо соображениям не хотят, чтобы герой репортажа был узнаваем – на его лицо и накладывается так называемая «маска», представляющая собой техническую реализацию такого «грубого» математического растра.

2. Технический пиксел трактуется не как точка, а как некоторая область  конечных размеров.  В  этом  случае интенсивность закрашивания пиксела определяется размерами части области, занятой изображением.  Относительная величина  этой части и определяет  интенсивность  цвета (и/или освещенности) в реальных дисплеях.

Для определения  атрибута  пиксела  используется  так называемая операция свертки сигнала (т.е. изображения) с некоторым ядром свертки.

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

Обычно ядро свертки (функция, определяющая, какой «вес» имеет тот или иной участок области в зависимости от ее положения внутри всей области, занимаемой пикселом) определяется в виде треугольника или Гауссова распределения. Тем самым определяется, что участки, расположенные ближе к центру области, вносят больший вклад в цвет и/или освещенность элемента технического растра, нежели расположенные на его периферии.

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

 

6.3. Полутоновые изображения

 

Полутоновые изображения изобретены Стефаном Хагеном в 1880 г. для печати изображений в полиграфии.

Полутоновая печать - решеточный или  клеточный  процесс.  Размер клетки зависит от зернистости решетки.  Для газетных изображений это обычно 50...90 точек/дюйм, для журнальных - 100...300. Когда рекламируют возможности современных принтеров, один из параметров, указывающих на четкость получаемого изображения, и означает число точек на дюйм (dpi – dot per inch).

В полутоновой печати варьируются и размеры клеток.

Размеры клеток фиксируются, а внутри их могут быть несколько пикселов. Если, например, в клетке 4 пиксела, то возможны 5 полутонов. Они получаются по следующей схеме: когда из четырех клеток ни одна не закрашена, это минимальная интенсивность; следующая степень закрашивания отвечает одной закрашенной клетке из четырех, и т.д. Понятно, что при наличии 9 пикселов есть возможность получения 10 полутонов, и т.д.

Не используются, как правило, конфигурации с горизонтальным или вертикальным расположением закрашиваемых клеток внутри пиксела, т.к. это приводит к появлению на изображении горизонтальных или вертикальных «паразитных» линий.

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

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

Наверх страницы

Внимание! Не забудьте ознакомиться с остальными документами данного пользователя!

Соседние файлы в текущем каталоге:

На сайте уже 21970 файлов общим размером 9.9 ГБ.

Наш сайт представляет собой Сервис, где студенты самых различных специальностей могут делиться своей учебой. Для удобства организован онлайн просмотр содержимого самых разных форматов файлов с возможностью их скачивания. У нас можно найти курсовые и лабораторные работы, дипломные работы и диссертации, лекции и шпаргалки, учебники, чертежи, инструкции, пособия и методички - можно найти любые учебные материалы. Наш полезный сервис предназначен прежде всего для помощи студентам в учёбе, ведь разобраться с любым предметом всегда быстрее когда можно посмотреть примеры, ознакомится более углубленно по той или иной теме. Все материалы на сайте представлены для ознакомления и загружены самими пользователями. Учитесь с нами, учитесь на пятерки и становитесь самыми грамотными специалистами своей профессии.

Не нашли нужный документ? Воспользуйтесь поиском по содержимому всех файлов сайта:



Каждый день, проснувшись по утру, заходи на obmendoc.ru

Товарищ, не ленись - делись файлами и новому учись!

Яндекс.Метрика