mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
28 lines
875 B
C++
28 lines
875 B
C++
//---------------------------------------------------------------------------
|
|
|
|
#include <vcl.h>
|
|
#pragma hdrstop
|
|
|
|
#include "float3d.h"
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
#pragma package(smart_init)
|
|
|
|
void float4x4::Quaternion(float4 *q)
|
|
{ // konwersja kwaternionu obrotu na macierz obrotu
|
|
float xx = q->x * q->x, yy = q->y * q->y, zz = q->z * q->z;
|
|
float xy = q->x * q->y, xz = q->x * q->z, yz = q->y * q->z;
|
|
float wx = q->w * q->x, wy = q->w * q->y, wz = q->w * q->z;
|
|
e[0] = 1.0f - yy - yy - zz - zz;
|
|
e[1] = xy + xy + wz + wz;
|
|
e[2] = xz + xz - wy - wy;
|
|
e[4] = xy + xy - wz - wz;
|
|
e[5] = 1.0f - xx - xx - zz - zz;
|
|
e[6] = yz + yz + wx + wx;
|
|
e[8] = xz + xz + wy + wy;
|
|
e[9] = yz + yz - wx - wx;
|
|
e[10] = 1.0f - xx - xx - yy - yy;
|
|
// czwartej kolumny i czwartego wiersza nie ruszamy
|
|
};
|