Формулу вращения вокруг произвольной оси
Формулу вращения вокруг произвольной оси, имея Угол и Вектор, все это надо представить в матричном виде, вот что я написал:
-> float Angle, const YVECTOR3 & V, YMATRIX & M
Матрица 4x4, Вектор 3х мерный
Вот формула:
float nx2 = V.x * V.x;
float ny2 = V.y * V.y;
float nz2 = V.z * V.z;
float nxy = V.x * V.y;
float nxz = V.x * V.z;
float nyz = V.y * V.z;
float nxs = V.x * sin(Angle);
float nys = V.y * sin(Angle);
float nzs = V.z * sin(Angle);
float oca = 1 - cos(Angle);
M = YMATRIX(nx2 + (1 - nx2) * cos(Angle), nxy * oca * nzs, nxz * oca + nys, 0.0f,
nxy * oca + nzs, ny2 * (1 - ny2) * cos(Angle), nyz * oca - nxs, 0.0f,
nxz * oca - nyz, nyz * oca + nxs, nz2 + (1 - nz2) * cos(Angle), 0.0f,
0.0f, 0.0f, 0.0f, 1.0f);
Мне этой вещи не хватает, чтобы камеру поворачивать вверх и вниз
Последний раз редактировалось Atomikc, 18.10.2008 в 18:11.
|