- •Введение
- •Отображение просранства пользователя и машинного носителя
- •Расчет пользовательских и машинных координат
- •Алгоритмы генерирования линий.
- •Генерирование отрезка прямой. Алгоритм Брезенхема
- •Формирование дуги окружности.
- •Кривые Безье.
- •Двумерное отсечение
- •Отсечение прямоугольным окном. Алгоритм Сазерленда-Коуэна.
- •Отсечение выпуклым многоугольным окном. Алгоритм Кируса-Бэка
- •Определение выпуклости многоугольника.
- •Отсечение невыпуклым многоугольником.
- •Заливка областей.
- •Заливка с сортировкой
- •Заливка по ребрам.
- •Cписок активных ребер.
- •Заливка с затравкой.
- •Преобразование координат
- •Преобразования координат в двумерной системе.
- •Преобразования в трех мерной системе координат
- •Двумерные проекции
- •Виды проекций
- •Перспективные проекции
- •Определение координат точки на плоскости проекции
- •Xэ, Yэ - оси системы координат на плоскости проекции (на экране).
- •Точки и линии схода
- •Косоугольные проекции
- •Аксонометрическая проекция
- •Построение проекций трехмерных объектов
- •Затенение отрезка плоскостью при перспективной проекции
- •Удаление затеняемых ребер в аксонометрической проекции
- •Алгоритмы параллельной обработки графической информации
- •Построение сечения объекта.
Удаление затеняемых ребер в аксонометрической проекции
Рассмотрим процедуру удаления невидимых ребер при аксонометрической проекции для конкретного объекта, приведенного на Рис. 6.8 -77.
Рис. 6.8‑77
На рисунке приняты следующие обозначения:
Z – координатная ось видовой системы;
лп – направленность линий проецирования (параллельно оси Z);
О1,О2 - ось конической поверхности;
цифрами обозначены все узловые точки, определяющие объект проецирования.
Сначала строится проволочная модель проецируемого объекта, которая будет иметь вид, приведенный на Рис. 6.8 -78.
На рисунке отсутствуют очерки конической проекции, так как ее ось параллельна линиям проецирования. В результате коническая поверхность на плоскости проекции оказалось представлена только своими ребрами, которыми являются две окружности.
Далее по выше описанной методике определяются явно невидимые ребра.
Для заданного объекта единственным явно невидимым ребром будет ребро, определяемое узловыми точками 13, 15.
Рис. 6.8‑78
После его удаления проволочная модель примет вид, приведенный на а).
Для оставшихся ребер необходимо решить задачу их затенения гранями переднего плана. Один из подходов при решении этой задачи, основан на использовании принципа конкурирующих точек.
Проекция объекта, полученная после отбрасывания всех явно невидимых ребер, рассматривается как граф. Вершинами этого графа являются узловые точки, отображенные на проекции. Кроме того, в качестве вершин графа также используются точки пересечения ребер на проекции. В качестве дуг графа рассматриваются проекции ребер или их частей.
Очевидно, что дуга графа видима на плоскости проекции, если видима хотя бы одна ее внутренняя точка.
При определении видимости дуги используется принцип конкурирующих точек, который заключается в следующем.
Для определения видимости некоторой точки, в видовой системе координат через нее проводится линия, параллельная оси Zв, и находятся точки пересечения этой линии со всеми гранями проецируемого объекта. Если хотя бы одна из найденных точек пересечения будет иметь координату Zв, меньшую, чем у анализируемой точки, то это означает, что анализируемая точка на плоскости проекции затенена соответствующей гранью, а, следовательно, она не видна. В противном случае, анализируемая точка имеет минимальную координату по оси Zв и ребро, которой она принадлежит, затеняет все другие точки, т.е. анализируемая точка видима.
Для рассматриваемого объекта граф будет иметь вид, приведенный на b). Помимо вершин, соответствующих проекциям узловых точек, дополнительно присутствует вершина f, соответствующая пересечению проекций ребер.
Для приведенного графа определим видимость дуги fd. С этой целью возьмем одну из ее внутренних точек mп, в видовой системе координат найдем ей соответствующую точку m и проведем через нее линию m1 m,
a
b
c
d
mп
e
f h
nп
а)
i k
b)
a) b)
Рис. 6.8‑79
параллельную координатной оси Zв (Рис. 6.8 -77). Прямая m1 m2 пересекает три грани исходного объекта, заданные узловыми точками 1,3,4,2; 5,6,8,7; 13,10,11,15. Среди полученных точек пересечения этих граней с линией m1m2 точка пересечения с гранью, заданной узловыми точками 1,3,4,2, будет иметь координату по оси Zв меньшую, чем анализируемая точка, а следовательно, точка m затенена этой гранью, а, следовательно, ребро fd на плоскости проекции не видимо.
Определим видимость дуги fk графа b). Для этого возьмем одну из ее внутренних точек nп, в видовой системе координат найдем ей соответствующую точку «n» и проведем через нее линию п1 n, параллельную координатной оси Zв (Рис. 6.8 -77). Прямая n1 n не пересекает ни одной грани, а следовательно точка n ничем не затеняется, поэтому она видна, а, следовательно, дуга f k должна быть отображена на плоскости проекции.
1,12 13
2,11
5
, 9
6,10
3,7
4,8
14 15
Рис. 6.8‑80
Аналогичные действия выполняются для всех дуг графа. В результате для заданного объекта будет получена проекция, приведенная на Error: Reference source not found.