Составители:
Рубрика:
18
ЛАБОРАТОРНАЯ РАБОТА №2
ТЕМА: «ПРОСТРАНСТВЕННЫЕ ГЕОМЕТРИЧЕСКИЕ
ПРЕОБРАЗОВАНИЯ В DirectX»
Цель лабораторной работы: получить навыки реализации основных видовых
преобразований с помощью команд DirectX.
Теоретическая часть.
В предыдущей лабораторной была рассмотрена матрица отображения
Direct3D.
typedef struct _d3dmatrix { union {
struct {
float _11, _12, _13, _14;
float _21, _22, _23, _24;
float _31, _32, _33, _34;
float _41, _42, _43, _44;
};
float m[4][4];
};
} D3DMATRIX;
Если необходимо повернуть сцену на угол b по часовой стрелке вокруг оси Z,
то нужно установить следующую матрицу:
D3DMATRIX View = {
cos{b), -sin(b), 0, 0,
sin(b), cos(b), 0, 0,
0, 0, 1, 0,
X, Y, Z, 1,
};
Обратите внимание, что в одной матрице мы устанавливаем угол поворота и
положение объекта. Если необходимо произвести поворот против часовой
стрелки, то возьмите отрицательное значение угла.
Если же нужно повернуть сцену вокруг оси X, то используем матрицу
следующего вида:
D3DMATRIX View = {
1, 0, 0, 0,
0, cos(b), -sin(b),0,
0, sin(b), cos(b), 0,
X, Y, Z, 1,
};
Для поворота вокруг оси Y используем матрицу:
D3DMATRIX View = {
cos(b), 0, -sin(b),0,
0, 1, 0, 0,
sin(b), 0, cos(b), 0,
X, Y, Z, 1,
} ;
Если необходимо просто масштабировать сцену, то используем следующую
матрицу:
D3DMATRIX View = {
ЛАБОРАТОРНАЯ РАБОТА №2
ТЕМА: «ПРОСТРАНСТВЕННЫЕ ГЕОМЕТРИЧЕСКИЕ
ПРЕОБРАЗОВАНИЯ В DirectX»
Цель лабораторной работы: получить навыки реализации основных видовых
преобразований с помощью команд DirectX.
Теоретическая часть.
В предыдущей лабораторной была рассмотрена матрица отображения
Direct3D.
typedef struct _d3dmatrix { union {
struct {
float _11, _12, _13, _14;
float _21, _22, _23, _24;
float _31, _32, _33, _34;
float _41, _42, _43, _44;
};
float m[4][4];
};
} D3DMATRIX;
Если необходимо повернуть сцену на угол b по часовой стрелке вокруг оси Z,
то нужно установить следующую матрицу:
D3DMATRIX View = {
cos{b), -sin(b), 0, 0,
sin(b), cos(b), 0, 0,
0, 0, 1, 0,
X, Y, Z, 1,
};
Обратите внимание, что в одной матрице мы устанавливаем угол поворота и
положение объекта. Если необходимо произвести поворот против часовой
стрелки, то возьмите отрицательное значение угла.
Если же нужно повернуть сцену вокруг оси X, то используем матрицу
следующего вида:
D3DMATRIX View = {
1, 0, 0, 0,
0, cos(b), -sin(b),0,
0, sin(b), cos(b), 0,
X, Y, Z, 1,
};
Для поворота вокруг оси Y используем матрицу:
D3DMATRIX View = {
cos(b), 0, -sin(b),0,
0, 1, 0, 0,
sin(b), 0, cos(b), 0,
X, Y, Z, 1,
} ;
Если необходимо просто масштабировать сцену, то используем следующую
матрицу:
D3DMATRIX View = {
18
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »
