Лекция 9 Виды проектирования



Скачать 100,5 Kb.
Дата23.10.2016
Размер100,5 Kb.
ТипЛекция
ЛЕКЦИЯ 9
Виды проектирования
К основным видам проектирования в машинной графике относятся:

–параллельные;

–центральные (перспективные);

Каждый из основных видов разбивается на несколько подвидов.



Параллельные проекции: Перспективные

(центральные проекции):

–ортографическая; –одноточечные;

–аксонометрическая; –двухточечные;

–кабинетная; –трёх точечные;

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

Линия горизонта и точка схода являются особенностью изображения и реально не существуют в трёхмерном пространстве. Однако наша задача получить картину трёхмерного изображения, т.е. двухмерную твердую копию (на экране, на бумаге).

Очевидно, что картина будет зависеть от положения глаза.


E


Т.е., большое значение имеет расстояние между глазом и объектом.



Е–точка наблюдения;

О–центральная точка объекта (приблизительно центр

объекта);



ОЕ–линия наблюдения

–Чем больше по сравнению с размером объекта, получается параллельная проекция, часто применяющаяся на практике.

–При  будет преувеличен эффект перспективы

(–предмет может выглядеть совершенно не естественно)



P`







E


–Точка в двухмерном пространстве и трёхмерном представляется соответственно координатами (x, y) и (x, y, z).

При необходимости получения проекции задается большое количество точек P (x, y, z), принадлежащих объекту, для которых предстоит вычислить координаты точек изображения P`(x, y) на картине.

Для этого нужно преобразовать координаты точки P из мировых координат (x, y, z) в экранные (X,Y).

Это отображение удобно выполнить в два этапа:

– точка P остается на своем месте, но система мировых

координат переходит в систему видовых координат–видовое преобразование;

– преобразование точки Р в точку Р`, объединенное с переходом из системы трёхмерных видовых координат в систему двухмерных экранных координат.

Мировые координаты (xw , yw, zw)



Видовое преобразование

Видовые координаты (хe, ye, ze)



Перспективное преобразование

Экранные координаты (X,Y)


Видовое преобразование


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

Система мировых координат должна быть, желательно,

правой и удобно, чтобы начало ёё координат располагалось вблизи центра объекта, поскольку объект наблюдается в направлении

от Е к О.

Пусть точка Е задана в сферических координатах ,Y по отношению к мировым координатам.

ze zw





O ye

yw

 xe




xw

Мировые координаты могут быть вычислены:

xe=sincos

ye=sincos

ze=cos

Нашей конечной задачей будет вычисление экранных координат X,Y, для которых X и Y лежат в плоскости экрана, расположенной между точками Е и О и перпендикулярной направлению наблюдения ЕО.

Начало системы видовых координат располагается

в точке Е–точка наблюдения.

ye

zw

E

xe

ze




O




yw

xw

рис.1
При направлении взгляда из Е в О положительная полуось Хе направлена вправо, Ye –вверх. В дальнейшем экранные оси определим в том же направлении.

Направление оси Ze выбирается так, чтобы значения координат увеличивались по мере удаления от точки наблюдения (Е), хотя система координат получается левосторонней. Видовое преобразование может быть записано в форме:

[xe,ye,ze,1]=[xw,yw,zw,1] *V,

V–матрица видового преобразования, размером 4*4.

Матрица V получается путем переумножения 4-х матриц.

{если преобразование изменяет координаты, значит, определяется матрицей, обратной матрице, соответствующей преобразованию точек}


  1. Перенос из О в Е. z

Точка Е становится новым началом координат.

zw

1 0 0 0

0 1 0 0

Т= 0 0 1 0 y



-xe -ye -ze 1 x


yw

xw

2. Поворот координатной системы вокруг оси Z на угол ( в отрицательном направлении.

z

cos(sin0 sin cos 0

Rz= -sin(cos 0 = -cos sin 0 



0 0 1 0 0 1 

x

Совместим ось Y с горизонтальной составляющей отрезка ОЕ, тогда ось Х перпендикулярна отрезку ОЕ.



  1. Поворот системы координат вокруг оси Х на угол (

Поскольку новая ось Z должна совпадать по направлению с отрезком ЕО, повернем систему координат вокруг оси X на угол ( в положительном направлении, что соответствует повороту точки на угол –(1 0 0

y Rx= 0 cos( sin()

0sin(cos(



10 0

Rx=0 -cos-sin

zx 0 sin-cos
4.Изменение направления оси X, Z и Y имеют правильную ориентацию, а ось Х должна быть направлена в противоположную сторону.

-1 0 0

Myz= 0 1 0

0 0 1

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

Вычислим матрицу отображения V как матричное произведение:

V=T*RzRxMxy

Матричное произведение не коммутативно, т.е. в общем случае RzRx= RxRz не ассоциативно, поэтому выражение можно получить:

V=T(RzRxMxy)



sin cos0 1 0 0

RzRx= -cossin0 0 -cossin

0 0 1 0 sin-cos

sin-coscos -cossin-1 0 0

RzRx= -cos -sincos-sinsin0 1 0

0 sin -cos0 0 1


-sin-coscos-cossin

RzRxMyx= cos-sincos-sinsin

0 sin -cos
a=cos; V41=bcd–bcd=0

b=sin; V42=abc2 + abd2 – ab=(ab(c2 + d2)–b)=(abab)=0

c=cos; V43=b2c2 + b2d2 + a2=b2(c2 + d2)+a2)=(b2 +a2)=

d=sin;

-sin-coscos -cossin0

cos -cossin-sinsin0


V= 0 sin -cos0 * x y z


0 0 

Т.е. получим видовые координаты по сферическим координатам:

[xe ye ze 1]=[xw yw zw 1] * V

Для получения ортогональной проекции можно использовать координаты xe и ye без ze.


Перспективные преобразования


Для простоты работы видовые координаты (xe, ye, ze) будем обозначать как (x, y, z), так как мировые координаты здесь уже не будут фигурировать.

Y

y

d Q



P` X








E x
Плоскость z=d определяет экран, она перпендикулярна оси Z и проходит через точку Q.

Для каждой точки объекта Р точка изображения P` определяется как точка пересечения линии РЕ и экрана. Для простоты примем координаты точки Р (x, 0, r) – т.е. нулевую координату “Y”.

EPR и EP`Q подобны

Значит, P`Q PR

EQ ER

Отсюда x=d*x/z

Аналогично y=d*y/z

В начале лекции мы определили, что точка О– начало мировых координат приблизительно совпадает с центром объекта. Так как ось видовой системы координат совпадает с прямой ЕО, которая пересекает экран в точке Q, то начало Q системы экранных координат будет находиться в центре изображения.



Для переноса экранных координат по экрану используется выражение:

X=d*x/z+c1;

Y=d*y/z+c2; P



P`



d
Q`

Q

Размер картинки размер объекта



d 
tgразмер объекта)/


Программа получения проволочной модели куба


z

G






y
C


x

A B



Алгоритм вращения проволочной модели


1). Задание проволочной модели.

Type


Ver=record

x, y, z:real;

end;

Rbr=record



r,k : integer;

end;


Var

SV:array[1..8] of Ver; {список вершин}

SR:array[1..12] of Rbr; {список ребер}

2). Пересчет мировых координат вершин фигуры в экранные координаты:

Var w:array[1..4,1..4] of real; {матрица проектирования}

w11=-sinth; w12= –cf*ct; w13= –sf*ct;

w21=ct; w22= –cf*st; w23= –sf*st;

w32=sinf; w33= –cf;

w43=

С помощью матрицы проектирования получаем видовые координаты xe, ye, ze:

xe=w11*cv[i].x + w21*sv[i].y;

ye=w12*sv[i].x + w22*sv[i].y + w33*sv[i].z;

ze=w13*sv[i].x + w23*sv[i].y + w33*sv[i].z + w43;

и экранные координаты каждой вершины:

pv:array[1..8] of ver;

pv[i].x=round(d * xe/ze); {+c1}

pv[i].y=round(d * ye/ze); {+c2}

3). Рисуем фигуру.

line(x1, y1, x2, y2);

x1,y1–координаты начала ребра;

x2,y2–координаты конца ребра;

4). Поворот фигуры.

Поворачивает фигуру на угол вокруг оси, проходящей через точку С – центр вращения – параллельно и по направлению вектора V.

Type


Rot=record

Cx,Cy,Cz,

Vx,Vy,Vz:real;

Var


C:Rot;

Задаем Cz,Cy,Cz –координаты центра вращения;

Vx,Vy,Vz–направляющий векторж

4.1 Подсчитываем сферические координаты Vm,

Vm= Vx2 +Vy2 +Vz2



Vx=0, Vy>=0, 



Vx=0, Vy<0, =

arccos(v3/или f=arctan(sinf/cos)



4.2 Вычислим матрицу поворота

r[4*4]



4.3 Получаем новые координаты вершин и пересчитываем их в видовые и экранные.

4.4 Рисуем повернутую фигуру

Процедуры:

DemoF {для текста}

DrawF {рисование фигуры}

InitF {задание фигуры}

InitF {пересчет координат}



InitR {поворот фигуры}


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©grazit.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал