Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа2

.doc
Скачиваний:
27
Добавлен:
23.03.2015
Размер:
53.25 Кб
Скачать

Лабораторная работа № 2

Тема. Визуализация процесса движения каркасной модели тела в пространстве

Постановка задачи.

В пространстве задана каркасная модель тела. Обеспечить:

  1. Поворот на заданный угол и вращение тела вокруг осей OX, OY, OZ .

  2. Масштабирование тела по осям OX, OY, OZ.

  3. Перенос тела в точку с указанными координатами.

  4. Отражение тела относительно плоскостей XOY, YOZ, XOZ.

  5. Движение тела по пространственной кривой.

Требования к выполнению лабораторной работы:

1. Первоначальные координаты вершин тела и порядок их соединения хранить в файле.

2. Отображать на экране координатные оси.

3. Предусмотреть отдельный элемент управления для каждого вида преобразования.

4. Не допускать выхода тела за пределы экрана.

Методические материалы для выполнения лабораторной работы.

Преобразование мировых координат в экранные производится по алгоритму:

1)задаём точку наблюдения сферическими координатами ρ,φ,θ.

Мировые вычисляются по формулам:

xE=ρsinφcosθ,

yE=ρsinφsinθ,

zE=ρcosφ,

Сферические координаты вычисляются по формулам:

=√xE2+yE2+zE2

φ=arccos(zE/ρ),

arctan(yE/xE) xE>0,

π+arctan(yE/xE) xE 0,

θ= π/2 xE =0, yE ≥0

3/2π xE =0, yE <0

2)Координаты любой точки преобразуются из мировых в видовые по правилу:

(x’y’z’1)=(x y z 1)V, где

-sinθ –cosφcosθ –sinφcosθ 0

V= cosθ –cosφsinθ –sinφsinθ 0

0 sinφ -cosφ 0

0 0 ρ 1

Матрица V получается как произведение матриц V=T(RzRХMyz),где Т-матрица переноса начала координат в точку наблюдения, Rz-матрица поворота вокруг оси OX на угол θ, RХ-матрица поворота вокруг оси OX, Myz-матрица изменения направления оси OX на противоположное ,результирующая матрица V. Система мировых координат переходит в систему видовых.

3)Переход от видовых координат (x’,y’,z’) к экранным (X,Y) осуществляется различными видами проектирования. Наиболее употребимые параллельное и центральное.

а)Точка наблюдения удалена в бесконечность (ортогональная проекция)

X=x’,Y=y’,

б)точка наблюдения имеет координаты (0,0,­z0) (центральная проекция)

X=x’/(1-(z/z0)), Y=y’/(1-(z/z0)).

Матрица центрального проектирования

1 0 0 0

0 1 0 0

Q= 0 0 0 -1/z0

0 0 0 1

Если точка наблюдения имеет координаты (а,в,с) то матрица θ имеет вид

1 0 0 -1/a

0 1 0 -1/b

Q= 0 0 0 -1/c

0 0 0 1

Здесь и далее для описания всех без исключения преобразований, проектирований используются матрицы четвёртого порядка. Для этого в компьютерной графике вводятся однородные координаты- точке Р(x,y) на плоскости ставится точка P’(x,y,1);

точке Р(x,y,z) в пространстве ставится в соответствие точка Р’(x,y,z,1).

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

Матрицы этих преобразований следующие.

Вращение вокруг оси абсцисс на угол φ

1 0 0 0

0 cosφ sinφ 0

Rx = 0 –sinφ cosφ 0

0 0 0 1

Вращение вокруг оси ординат на угол φ

cosφ 0 -sinφ 0

0 1 0 0

Ry = sinφ 0 cosφ 0

0 0 0 1

Вращение вокруг оси аппликат на угол φ

cosφ sinφ 0 0

-sinφ cosφ 0 0

Rz = 0 0 1 0

0 0 0 1

Растяжение (сжатия)

α 0 0 0

0 β 0 0

D= 0 0 γ 0

0 0 0 1

где

α>0 –коэффициент растяжения (сжатия) вдоль оси абсцисс,

β>0 –коэффициент растяжения (сжатия) вдоль оси ординат,

γ>0 –коэффициент растяжения (сжатия) вдоль оси аппликат.

Если коэффициент больше 1, то имеем растяжение, меньше 1 – сжатие.

Перенос (сдвиг) вдоль координатных осей

1 0 0 0

0 1 0 0

T= 0 0 1 0

Δx Δy Δz 1

Отражение относительно плоскости XOY

1 0 0 0

0 1 0 0

Mz = 0 0 -1 0

0 0 0 1

Отражение относительно плоскости YOZ

-1 0 0 0

0 1 0 0

Mx = 0 0 1 0

0 0 0 1

Отражение относительно плоскости XOZ

1 0 0 0

0 -1 0 0

My = 0 0 1 0

0 0 0 1

Пример. Построить матрицу поворота вокруг точки А(a,b,c) на угол φ вокруг оси OZ. 1-й шаг. Перенос на вектор А(-a,-b,-c) для совмещения центра поворота с началом координат .Mатрица соответствующего преобразования:

1 0 0 0

0 1 0 0

T-A = 0 0 1 0

-a -b -c 1

2-й шаг. Поворот на угол φ вокруг оси OZ

cosφ sinφ 0 0

-sinφ cosφ 0 0

Rz = 0 0 1 0

0 0 0 1

3-й шаг. Перенос на вектор А(a,b,c) для возвращения центра поворота в прежнее положение

1 0 0 0

0 1 0 0

TA = 0 0 1 0

a b c 1

Искомое преобразование в матричной форме выглядит следующим образом

[x1 y1 z1 1]=[x y z 1] T-ARzTA

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

x1 x

y1 = T’AR’zT’-A y

z1 z

1 1