Основы построения 3-х мерных сцен с использованием библиотеки DirectX. Макушкина Л.А - 16 стр.

UptoLike

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