Составители:
Рубрика:
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
- …
- следующая ›
- последняя »