Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Автоматизация конструкторского проектирования.doc
Скачиваний:
62
Добавлен:
02.05.2014
Размер:
128 Кб
Скачать

Геометрические модели

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

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

  • модель есть список ребер, для каждого ребра заданы инцидентные вершины и грани.

Каждая из вышеописанных моделей имеет недостатки:

  • аппроксимация при больших размерах полигональной сетки дает заметные искажения формы;

  • аппроксимация при малых размерах сетки требует значительных затрат вычислительных ресурсов.

Поэтому для неплоских поверхностей чаще применяют описания в форме Безье или В-сплайнов. Суть таких моделей в том, что сегменты аппроксимируемой кривой описываются кубическими уравнениями:

(1)

где - параметр (это параметрическое задание кривой).

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

Ниже на рисунке представлена кривая Безье с концевыми точками и, точкиилежат на касательных к кривой в концевых точках.

Для формы Безье получаются следующие

уравнения:

(2)

Здесь =(вектор-строка, матрица М представлена в таблице 1,- векторы координатx, y и z точек ,,и.

Следует отметить, что в случае В-сплайнов выбирают другие точки для аппроксимации, но участок кривой между выбранными точками представляется уравнениями, аналогичными формы Безье (2), только матрица М имеет несколько иной вид, представленный таблицей 2.

Таблица 1 Таблица 2

1

3

-3

1

-1/6

1/2

-1/2

1/6

3

-6

3

0

1/2

-1

1/2

0

-3

3

0

0

-1/2

0

1/2

0

1

0

0

0

1/6

2/3

1/6

0

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

Преобразования графических объектов представляются в единой матричной форме

, (3)

где Т - преобразующая матрица, Р - старое положение точки, С - новое положение точки, причем указание положения имеет следующую особенность: кроме координат точки в векторах-строках С и Р указывается масштабный множитель W. Например, перенос точки для двумерного представления будет выражаться в виде (3) и матрица Т задается таблицей 3, а операция масштабирования – тем же выражением (3) с матрицей М, заданной таблицей 4. Операция поворота задается таблицей 5.

Таблица 3 Таблица 4 Таблица 5

1

0

0

0

0

0

0

1

0

0

0

-

0

1

0

0

1

0

0

1

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

,

где T=, - матрица сдвига, - матрица поворота.

Представление графических элементов в растровой форме требуется для отображения этих элементов на битовую карту растровой видеосистемы.

Пусть требуется развернуть отрезок АВ прямой y=ax+b. Обозначим А=(xa,ya), B=(xb,yb). За величину дискрета (пиксела) примем 1. В алгоритме развертки номера строк и столбцов карты, на пересечении которых должны находиться точки отрезка, определяются следующим образом:

1) х:=xb-xa;

y:=yb-ya;

x:=xa;

y:=ya;

2) d:=2*y-x;

3) если , то {y:=y+1; d:=d+2*(y-x)};

иначе d:=d+2*y;

4) x:=x+1;

5) переход к пункту 3, пока не достигнута точка В.

Экономичность этого алгоритма обусловлена отсутствием длинных арифметических операций умножения (увеличение в 2 раза выполняется путем сдвига влево на 1 бит).

Выделение окна требуется при определении той части изображения, которая должна быть выведена на экран дисплея. Пусть окно ограничено линиями x=x1, x=x2, y=y1, y=y2 и требуется отобразить многоугольник ABCD (рис. 2).

Е B

y1 G H

A

C

D F

y2

x1 x2

Рисунок 2.

Поочередно для каждого многоугольника проверяется расположение его вершин и ребер относительно границ окна. Так, для многоугольника ABCDпри отсечении по границе х=х2 просматривается множество вершин в порядке обхода по часовой стрелке. Возможны следующие ситуации для двух последовательных вершинpиr:

1) Xp>x2 иXr>x2 – означает, что обе вершины и инцидентное им ребро находятся вне окна и исключаются из дальнейшего анализа;

2) , что означает, что обе вершины и инцидентное им ребро остаются для дальнейшего анализа;

3) , вершинаростается в списке вершин для отображения, а вершинаrзаменяется новой вершиной с координатамиx=x2,y=Yp+(Yr-Yp)*(x2-Xp)/(Xr-Xp) (в нашем примере это будет вершина Е вместо В);

4) , то вершинарзаменяется новой вершиной с координатамиx=x2,y=Yr+(Yp-Yr)*(x2-Xr)/(Xp-Xr), а вершинаrостается в списке вершин, в нашем примере новой вершиной будетFвместо С.

После окончания просмотра применительно ко всем границам в окне оказываются оставшиеся в списке вершины. Применительно к нашему примеру после отсечения по правой границе х=х2 и по верхней границе y=y1 получаем многоугольникAGFD. Однако правильным результатом является многоугольникAGHFD. Этот правильный результат мы получим при двойном обходе вершин сначала по часовой стрелке, затем – против часовой стрелки. В результирующий список вершин необходимо включать все новые вершины, появляющиеся при обходах.

Для удаления скрытых линийприменяют разные алгоритмы, среди которых чаще всего в ПО ГМиМГ реализуется алгоритмz-буфера.Z-буфер – это область памяти, в которой число ячеек равно числу пикселов в окне вывода. Предполагается, что осьzнаправлена по нормали к видовой поверхности и наблюдатель расположен в точкеz=0. Для каждой точки плоскости окна (x,y) определяются координатыzвсех граней, проходящих над этой точкой. В ячейкуSz-буфера заносится точка с наименьшим значением координатыz. После применения алгоритма ко всей плоскости окнаz-буфер будет содержать пикселы граней, наиболее близких к наблюдателю.

Алгоритмы построения проекцийпреобразуют трехмерные изображения в двумерные. Обычно эти преобразования связаны с пересчетом координатx,y, поворотами изображения и удалением скрытых линий.

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