Основы САПР (CAD,CAM,CAE) - (Кунву Ли)(2004) (951262), страница 16
Текст из файла (страница 16)
После разделения тра' ни вдоль силуэтной линии знак М ° Х будет постоянным на каждой из частей.-- грани. Процедура может показаться легкой, но рассчитать силуэтну>о линию очень сложно, а из-за этого теряется главное преимущество алгоритма удаления .:-:;... невидимых граней — простота реализации. Объект называется ною>утым, если по крайней мере лне его грани смыкаются под внут"-.,' . ренним углом, большим 180'. Если эсе грани смыкаются с ннутренннмн углами, меныня- -' ' лш 180', объект называется ныцуклыл>.
> Такой объект вообще представляет собой достаточно сложную проблему, о чем будет,"; рассказано н главе 5. Рис. 3.23. Пример нагнутого объекта После того как все грани классифицируются как видимые или невидимые, на экран выводятся ребра видимых граней, в результате чего получается рисунок без невидимых линий. Если же нужно получить рисунок без невидимых поверхностей, видимые поверхности заливаются выбранными цветами. Рмс. 3.24. Объект с неоднозначно определенным вектором внешиеи нормали 3.8.2. Алгоритм художника Основной принцип алгоритма сортировки по глубине, или алгоритма художника (дергй-гог11пй, ра1пгегз афонгйт), можно представить следующим образом.
Поверхности объектов сортируются по удаленности от наблюдателя и заполняются соответствующими цветами, начиная с самой дальней. В результате закрашивания поверхностей в данной последовательности дальние поверхности автоматически скрываются ближними, если они проецируются в одну и ту же область экрана. Таким образом, алгоритм художника работает как алгоритм удаления не- видимых поверхностей.
Расстояние от поверхности до наблюдателя определяется г-координатами точек иа этой поверхности в наблюдательской системе координат. Точка с большей координатой Ек считается находящейся ближе к наблюдателю'. Здесь и далее г-координата в наблюдательской системе координат будет обозначаться Ук. Значит, остается только сравнить координаты Ек всех поверхностей и отобразить их, начиная с поверхности с наименьшим значением У,.
1 В О С1. Точи рев точки с большими у„находится дальше от наблюдателя, поскольку зтз биб- ' на на левосторонней наблюдательской системе координат ЛИОтика,оснокана на Легко сРавнивать кооРдинаты 2к повеРхностей, если максимальное значение Щ.: . одной иэ них меньше минимального значения г.„другой.
Однако в большинстве,'.-", случаев диапазон значений У,, точек одной поверхности перекрывается с диапа-,,. :— зоном Ук другой поверхности. Неоднозначности можно избежать, разбивая все,;",,:" поверхности на отдельные части до тех пор, пока диапазоны У,, не перестанут пЕ-': .,") рекрываться. Есть и другой, более простой в реализации способ решения про-',.-',':: блемы. Все поверхности преобразуются в наборы небольших треугольников ', таким образом, чтобы диапазоны У„разных треугольников не перекрынзлись друг с другом, после чего треугольники окрашиваются в соответствующие цвета ': в нужной последовательности. Чем меньше размер треугольников, тем меныпе .:: шансов, что их диапазоны 2, перекроются.
Такое приближение поверхности обък .. екта называется трио>ггуллцией (Гпапйи!айоп) или фасетираваниель 3.8.3. Алгоритм удаления невидимых линий Алгоритм сортировки по глубине используется для удаления невидимых по-: -' верхностей. Алгоритм невидимых граней позволяет построить рисунок со скрытыми линиями„но имеет множество ограничений в общем случае. При примене-,:,,' нии алгоритма невидимых граней к множеству объектов удалено будет лишь,'~,,": около 50% невидимых линий.
Нам нужен алгоритм, который удалял бы все не-.,:", видимые линии независимо от количества объектов, их выпуклости и наличий' ' ...'::, криволинейных поверхностей. Один из таких алгоритмов действует следующим образом. Для каждого ребра!; ':: каждого обьекта производится проверка, не закрыто ли оно гранямиг каких-либо -",;. объектов. Закрытые части ребер последовательно исключаются до тех пор, пока;,;: не останется непроверенных поверхностей. Оставшиеся части всех ребер выво; дятся на экран. Реализация алгоритма включает несколько этапов. 1. Поверхности, направленные к наблюдателю, выделяются из всех остальньпг,:.: в отдельную группу при помощи алгоритма невидимых граней.
Выделенныеу поверхности сохраняются в массив ГАСЕ-ТАВ1.Е. Грани, направленные от. ';, наблюдателя, учитывать не требуется, поскольку они сами по себе скрыты,' а гютому не скрывают ребра других граней. Для каждой грани сохраняется.'. максимальное и минимальное значение Уи Криволинейные поверхгюсти раэ-,г . деляются по силуэтным линиям (как в алгоритме невидимых граней), а видймые части этих поверхностей также сохраняются в массиве ГАСЕ-ТАВ1.Е: вместе с плоскими гранями.
2. Ребра граней из массива ГАСЕ-ТАВ1.Е выделяются из всех прочих ребер '..: и собираются в отдельный список. Ребра других граней, не входящих в ГАСЕ- '":. ТАВ1 Е, можно не рассматривать, посколъку они невидимы. Затем для кэждФ„: го ребра из списка производится проверка, не закрывается ли это ребро гра-" .,' нью из ГАСЕ-ТАВ1.Е. ' Ребром объекта называется кривая пересечения соседних поверхностей, ограничиааФ":; щих внутренний объем объекта. Гранями называются поверхности, ограничивающие объем объекга.
Площадь любой г)гй,":-, ~; ни конечна, потому что все грани ограиичивюотся ребрами. нью ью Пвр гранью За грань ПеРед гранью За грань кции Пиксвл имеет тот же цвет что и бвюкайшав поверхность Рис. 3.27. Основы методаз-буфера Рис. 3.26. Разбиение ребра 3. Скрытие ребра 3»ревью, можно обйаружить„сравнивая диапазоны значений У, ребра и грани. 'Возможны три случая (рнс. 3.25). В случае рис. 3.25, а все значения 2к ребра меньше минимального значения Уь грани, то есть грань находится перед ребром.
В случае рис. 3.25, б значения 2г ребра больше максимального значения Уг грани, то есть грань нахолится за ребром. В случае рпс. 3.25, в диапазоны значений 2, грани и ребра перекрываются, то есть часть ребра находится за гранью, а другая часть — перед ней. Если ребро находится перед проверяемой гранью, из массива ГАСЕ-ТАВЕЕ выбирается следующая грань и ребро сравнивается уже с ней. Если ребро оказывается за гранью, или проходит ее насквозь, приходится выполнять дополнительное действие. 4, Ребро и грань проецируются на экран, после чего производится проверка перекрытия проекций.
Если перекрытия нет, из этого следует, что ребро не закрывает проверяемую грань. Из массива ГАСЕ-ТАВЕЕ выбирается следующая грань и проверяется согласно пункту 3. Если проекции перекргввюотся, ребро делится на две части в той точке, где она проходит сквозь проверяелгую грань (рис. 3.26). Закрытая часть ребра отбрасывается, а видимые части добавляются в список. Затем пункт 3 повторяется лля новых элементов списка. Исходное ребро из списка удаляется. 5. Ребра. прошедшие проверку со всеми гранями из ГАСЕ-ТАВ).Е, считаются видимыми и выводятся на экран.
в б в Рис. 3.23. Три возможных поиожения грани и ребра 3.8.4. Мю'йлд 2-буфЕра Метод г-б д -буфера основан на том же принципе, что и алгоритм сортировки по глу- бине: нал б юбом участке экрана оказывается проекция элемента, расположенного ближе всех прочих к наблюдателю. Здесь под элементами понимаются точки, кривыс или поверхности. данный метод требует использования области памяти, называемой г-буфером. В этом буфере для каждого пиксела хранится значение коорлинаты 2, ы 2, того элемента, проекция которого изображается данным пиксе,лом.
Как ж у е говорилость значение 2„ (то есть координата г в наблюдательской , системе) е ) есть мера удаленности объекта от набл1одателя. Объем г-буфера опре- ется количеством пикселов. лля каждого из которы~ требуется 'сохрани†вещественное число. Грани, векторы нормали которых направлены от наблюдателя, невидимы дтлв.:;:: него, поэтому на экран проецируются только те грани, векторы нормали которцх " направлены к наблюлателю.
Однако в отличие от метода сортировки по глубггйег . в данном случае порядок проецирования значения не имеет. Причина стане» . очевидной, как только вы прочитаете приведенное ниже описание алгоритыа,:,:»;: Сначала проецируется произвольно выбранная поверхность, и в ячейки памяти',: г-буфера, соответствующие пнкселам проекции поверхности, записываются зиа'-.,'- юния координат Уг точек поверхности, явлшощихся пргюбразами данных пиксе-; . лов. Пикселы окрашиваются в цвет первой поверхности. Затем проецируетея;, следующая поверхность, и все неокрашенные пикселы, относящиеся к ее проед'-,, ции, окрашиваются в цвет второй поверхности. Если пикселы уже были окраше'-, ны, соответствующие илг значения 7„. сравниваются со значениями 7,.
точек тек~-... щей поверхности. Если сохраненное значение Ук какого-то пиксела оказывается:,'' больше текущего (то есть точка на предыдущей поверхности ближе к наблюдателю, чем точка на текущей поверхности), цвет пиксела не меняется. В противном: случае пиксел окрашивается в цвет текущей поверхности. Изначально а-буфер', инициализируется координатами 2„сгютветствующими дальней гиоскостй::. (см.
рис. 3.11), поэтому ппкселы проекции первой поверхности автоматияесклг:: окрашиваются в ее цвет. Повторяя эту процедуру для всех имеющихся плоско',: „ стей, мы окрасим все пикселы экрана в цвета ближайших поверхностей (рис. 3»2Т): х Как следует из предшествугощего описания, метод г-буфера предназначен 'глав..."- ным образом для удаления скрытых поверхностей, как и метод сортировки:по» глубине. Однако метод г-буфера с небольшими изменениями позволяет реЖФ"-',"" зовать и построение рисунков со скрытыми линиями.
Сначала все поверхнорта»: проецируются на экран, причем ппкселы окрашиваются в цвет фона (на эхрй~- ничсго не появляется). При этом г-буфер заполняется правильными значенияма»ь Ук. Затем на экран проецируются ребра поверхностей. При этом значении вь',ре:;,. беР сРавниваютсЯ со значениЯми Ль ближайших к наблюдателго повеРхнОск'"гйгг). уже найденными на предыдущем этапе. Окрашиваются только те пикселы,',»Ртк»л, которых новые значения У„больше исходных. Таким образом, участки рев~»ь скрытые поверхносгяын, иа,экране не появляются.