Помогите понять струкутру матрицы для transformation DirectX 11 C++
Представим что на текущей стадии у нас есть результат в виде хексагона:
для того, чтобы совершить ротацию для данной фигуры, необходимо создать струкутуру данных Constant Buffer и непосредственно привязать это к пайплайну. Объявление матрицы для transformation:
struct ConstantBuffer
{
struct
{
float element[4][4];
} transformation;
};
Затем создаётся объект данной структуры в виде:
const ConstantBuffer ConstBuff =
{
{ std::cos(angle), std::sin(angle), 0.f, 0.f,
-std::sin(angle), std::cos(angle), 0.f, 0.f,
0.f, 0.f, 1.f, 0.f,
0.f, 0.f, 0.f, 1.f,
}
}
angle - это параметр который передаётся методу внутри которого и создаётся ConstBuffer и этот метод вызывается каждый фрейм с разными значениями angle.
Каким образом работает трансформация фигуры в данном случае и зачем на первые два элемента первого и второго ряда матрицы идёт применение cos и sin функций для angle, при этом одна из них "отрицается" (negate) используя '-'.