Macierz 4 x 4
[Moduł Math]


Komponenty

struct  common::MATRIX
 Macierz 4 x 4. Więcej...

Funkcje

void common::MatrixToStr (tstring *Out, const MATRIX &m)
bool common::StrToMatrix (MATRIX *Out, const tstring &Str)
void common::swap (MATRIX &m1, MATRIX &m2)
bool common::MatrixEqual (const MATRIX &m1, const MATRIX &m2)
 Zwraca true, jeśli podane macierze są sobie mniej więcej równe.
void common::Minus (MATRIX *m)
 Negacja macierzy w miejscu.
void common::Add (MATRIX *Out, const MATRIX &m1, const MATRIX &m2)
 Dodawanie macierzy.
void common::Sub (MATRIX *Out, const MATRIX &m1, const MATRIX &m2)
 Odejmowanie macierzy.
void common::Mul (MATRIX *Out, const MATRIX &m1, const MATRIX &m2)
 Mnożenie macierzy.
void common::Mul (MATRIX *m, float s)
 Mnożenie macierzy przez skalar w miejscu.
void common::Div (MATRIX *m, float s)
 Dzielenie macierzy przez skalar w miejscu.
void common::Transform (VEC4 *Out, const VEC2 &v, const MATRIX &m)
 Mnożenie wektora 2D jako [x,y,0,1] przez macierz, wychodzi wektor 4D.
void common::Transform (VEC2 *Out, const VEC2 &v, const MATRIX &m)
 Mnożenie wektora 2D jako [x,y,0,1] przez macierz z olaniem wyjściowego W.
void common::TransformCoord (VEC2 *Out, const VEC2 &v, const MATRIX &m)
 Mnożenie wektora 2D jako [x,y,0,1] przez macierz i sprowadzenie z powrotem do 2D przez podzielenie przez W.
void common::TransformNormal (VEC2 *Out, const VEC2 &v, const MATRIX &m)
 Mnożenie wektora 2D jako [x,y,0,0] przez macierz.
void common::Transform (VEC4 *Out, const VEC3 &v, const MATRIX &m)
 Mnożenie wektora 3D jako [X,Y,Z,1] przez macierz, wychodzi wektor 4D.
void common::Transform (VEC3 *Out, const VEC3 &v, const MATRIX &m)
 Mnożenie wektora 3D jako [X,Y,Z,1] przez macierz z olaniem wyjściowego W.
void common::TransformCoord (VEC3 *Out, const VEC3 &v, const MATRIX &m)
 Mnożenie wektora 3D jako [X,Y,Z,1] przez macierz i sprowadzenie z powrotem do 3D przez podzielenie przez W.
void common::TransformNormal (VEC3 *Out, const VEC3 &v, const MATRIX &m)
 Mnożenie wektora 3D jako [X,Y,Z,0] przez macierz.
void common::TransformArray (VEC3 OutPoints[], const VEC3 InPoints[], size_t PointCount, const MATRIX &M)
 Przekształca na raz całą tablicę wektorów - w miejscu lub z tablicy wejściowej do wyjściowej.
void common::TransformArray (VEC3 InOutPoints[], size_t PointCount, const MATRIX &M)
void common::TransformNormalArray (VEC3 OutPoints[], const VEC3 InPoints[], size_t PointCount, const MATRIX &M)
void common::TransformNormalArray (VEC3 InOutPoints[], size_t PointCount, const MATRIX &M)
void common::TransformCoordArray (VEC3 OutPoints[], const VEC3 InPoints[], size_t PointCount, const MATRIX &M)
void common::TransformCoordArray (VEC3 InOutPoints[], size_t PointCount, const MATRIX &M)
void common::Transform (VEC4 *Out, const VEC4 &v, const MATRIX &m)
 Mnożenie wektora 4D przez macierz.
void common::Transform (PLANE *Out, const PLANE &p, const MATRIX &m)
 Przekształca płaszczyznę przez macierz.
void common::TransformRay (VEC3 *OutOrigin, VEC3 *OutDir, const VEC3 &RayOrigin, const VEC3 &RayDir, const MATRIX &m)
 Przekształca promień przez macierz.
void common::TransformBox (BOX *Out, const BOX &In, const MATRIX &M)
 Przekształca AABB przez podaną macierz i wylicza AABB tego co wyszło po przekształceniu.
void common::TransformBoxCoord (BOX *Out, const BOX &In, const MATRIX &M)
 Przekształca AABB przez podaną macierz i wylicza AABB tego co wyszło po przekształceniu.
void common::AxesToMatrix (MATRIX *Out, const VEC3 &AxisX, const VEC3 &AxisY, const VEC3 &AxisZ)
 Tworzy macierz przekształcającą do lokalnego układu współrzędnych wyznaczonego przez podane 3 osie.
void common::AxesToMatrixTranslation (MATRIX *Out, const VEC3 &Origin, const VEC3 &AxisX, const VEC3 &AxisY, const VEC3 &AxisZ)
 Tworzy macierz przekształcającą do lokalnego układu współrzędnych wyznaczonego przez podane 3 osie i pozycję początku tego układu.
void common::LookAtLH (MATRIX *Out, const VEC3 &Eye, const VEC3 &Forward, const VEC3 &Up)
 Macierz kamery.
void common::LookAtRH (MATRIX *Out, const VEC3 &Eye, const VEC3 &Forward, const VEC3 &Up)
void common::Identity (MATRIX *Out)
 Tworzy macierz identycznościową.
void common::Translation (MATRIX *Out, float x, float y, float z)
 Tworzy macierz translacji (przesuwania).
void common::Translation (MATRIX *Out, const VEC3 &v)
void common::Scaling (MATRIX *Out, float sx, float sy, float sz)
 Tworzy macierz skalowania (powiększania, pomniejszania, rozciągania).
void common::Scaling (MATRIX *Out, const VEC3 &sv)
void common::Scaling (MATRIX *Out, float s)
void common::ScalingAxis (MATRIX *Out, const VEC3 &n, float k)
 Tworzy macierz skalowania wzdłuż podanego kierunku.
void common::Rotation2D (MATRIX *Out, float Angle)
 Macierz obrotu 2D.
void common::RotationX (MATRIX *Out, float Angle)
 Macierz obrotu wokół osi X.
void common::RotationY (MATRIX *Out, float Angle)
 Macierz obrotu wokół osi Y.
void common::RotationZ (MATRIX *Out, float Angle)
 Macierz obrotu wokół osi Z.
void common::RotationAxisLH (MATRIX *Out, const VEC3 &Axis, float Angle)
void common::RotationAxisRH (MATRIX *Out, const VEC3 &Axis, float Angle)
void common::RotationYawPitchRoll (MATRIX *Out, float Yaw, float Pitch, float Roll)
 Macierz obrotu wokół trzech osi w kolejności Yaw-Pitch-Roll (ZXY) - tzw. kąty Eulera.
void common::RotationYawPitchRoll (MATRIX *Out, const VEC3 &EulerAngles)
void common::RotationYawPitchRollInv (MATRIX *Out, float Yaw, float Pitch, float Roll)
 Przekształca ze wsp. świata do obiektu (interial -> object space).
void common::RotationYawPitchRollInv (MATRIX *Out, const VEC3 &EulerAngles)
void common::OrthoLH (MATRIX *Out, float Width, float Height, float ZNear, float ZFar)
 Tworzy macierz rzutowania ortogonalnego.
void common::OrthoRH (MATRIX *Out, float Width, float Height, float ZNear, float ZFar)
void common::OrthoOffCenterLH (MATRIX *Out, float Left, float Right, float Bottom, float Top, float ZNear, float ZFar)
void common::OrthoOffCenterRH (MATRIX *Out, float Left, float Right, float Bottom, float Top, float ZNear, float ZFar)
void common::PerspectiveLH (MATRIX *Out, float Width, float Height, float ZNear, float ZFar)
 Tworzy macierz rzutowania perspektywicznego.
void common::PerspectiveRH (MATRIX *Out, float Width, float Height, float ZNear, float ZFar)
void common::PerspectiveFovLH (MATRIX *Out, float FovY, float Aspect, float ZNear, float ZFar)
void common::PerspectiveFovRH (MATRIX *Out, float FovY, float Aspect, float ZNear, float ZFar)
void common::PerspectiveOffCenterLH (MATRIX *Out, float Left, float Right, float Bottom, float Top, float ZNear, float ZFar)
void common::PerspectiveOffCenterRH (MATRIX *Out, float Left, float Right, float Bottom, float Top, float ZNear, float ZFar)
void common::PerspectiveFovLH_Inf (MATRIX *Out, float FovY, float Aspect, float ZNear)
 Wersja tworząca macierz z Z-Far = INFINITY.
void common::MatrixShadow (MATRIX *Out, const VEC4 &Light, const PLANE &Plane)
 Tworzy macierz spłaszczającą geometrię na podaną płaszczyznę w podanym kierunku padania światła.
void common::MatrixReflect (MATRIX *Out, const PLANE &p)
 Tworzy macierz odbijającą geometrię względem podanej płaszczyzny.
void common::Transpose (MATRIX *m)
 Transpozycja macierzy na miejscu.
void common::Lerp (MATRIX *Out, const MATRIX &m1, const MATRIX &m2, float t)
 Interpolacja liniowa macierzy.
float common::Det (const MATRIX &m)
 Wyznacznik macierzy.
bool common::Inverse (MATRIX *Out, const MATRIX &m)
 Odwrotność macierzy.

Zmienne

const MATRIX common::MATRIX_ZERO
const MATRIX common::MATRIX_IDENTITY

Opis szczegółowy


Dokumentacja funkcji

void common::Add ( MATRIX *  Out,
const MATRIX &  m1,
const MATRIX &  m2 
)

Dodawanie macierzy.

void common::AxesToMatrix ( MATRIX *  Out,
const VEC3 &  AxisX,
const VEC3 &  AxisY,
const VEC3 &  AxisZ 
)

Tworzy macierz przekształcającą do lokalnego układu współrzędnych wyznaczonego przez podane 3 osie.

Nastąpi obrót, a jeśli nie są znormalizowane to i skalowanie.

void common::AxesToMatrixTranslation ( MATRIX *  Out,
const VEC3 &  Origin,
const VEC3 &  AxisX,
const VEC3 &  AxisY,
const VEC3 &  AxisZ 
)

Tworzy macierz przekształcającą do lokalnego układu współrzędnych wyznaczonego przez podane 3 osie i pozycję początku tego układu.

Nastąpi obrót, a jeśli osie są znormalizowane to i skalowanie.

float common::Det ( const MATRIX &  m  ) 

Wyznacznik macierzy.

void common::Div ( MATRIX *  m,
float  s 
)

Dzielenie macierzy przez skalar w miejscu.

void common::Identity ( MATRIX *  Out  ) 

Tworzy macierz identycznościową.

bool common::Inverse ( MATRIX *  Out,
const MATRIX &  m 
)

Odwrotność macierzy.

void common::Lerp ( MATRIX *  Out,
const MATRIX &  m1,
const MATRIX &  m2,
float  t 
)

Interpolacja liniowa macierzy.

void common::LookAtLH ( MATRIX *  Out,
const VEC3 &  Eye,
const VEC3 &  Forward,
const VEC3 &  Up 
)

Macierz kamery.

Eye to punkt, Forward i Up to wektory.

void common::LookAtRH ( MATRIX *  Out,
const VEC3 &  Eye,
const VEC3 &  Forward,
const VEC3 &  Up 
)

bool common::MatrixEqual ( const MATRIX &  m1,
const MATRIX &  m2 
)

Zwraca true, jeśli podane macierze są sobie mniej więcej równe.

void common::MatrixReflect ( MATRIX *  Out,
const PLANE &  p 
)

Tworzy macierz odbijającą geometrię względem podanej płaszczyzny.

Płaszczyzna musi być znormalizowana.

void common::MatrixShadow ( MATRIX *  Out,
const VEC4 &  Light,
const PLANE &  Plane 
)

Tworzy macierz spłaszczającą geometrię na podaną płaszczyznę w podanym kierunku padania światła.

Płaszczyzna musi być znormalizowana.

void common::MatrixToStr ( tstring *  Out,
const MATRIX &  m 
)

void common::Minus ( MATRIX *  m  ) 

Negacja macierzy w miejscu.

void common::Mul ( MATRIX *  m,
float  s 
)

Mnożenie macierzy przez skalar w miejscu.

void common::Mul ( MATRIX *  Out,
const MATRIX &  m1,
const MATRIX &  m2 
)

Mnożenie macierzy.

void common::OrthoLH ( MATRIX *  Out,
float  Width,
float  Height,
float  ZNear,
float  ZFar 
)

Tworzy macierz rzutowania ortogonalnego.

Dane są w układzie kamery.

void common::OrthoOffCenterLH ( MATRIX *  Out,
float  Left,
float  Right,
float  Bottom,
float  Top,
float  ZNear,
float  ZFar 
)

void common::OrthoOffCenterRH ( MATRIX *  Out,
float  Left,
float  Right,
float  Bottom,
float  Top,
float  ZNear,
float  ZFar 
)

void common::OrthoRH ( MATRIX *  Out,
float  Width,
float  Height,
float  ZNear,
float  ZFar 
)

void common::PerspectiveFovLH ( MATRIX *  Out,
float  FovY,
float  Aspect,
float  ZNear,
float  ZFar 
)

void common::PerspectiveFovLH_Inf ( MATRIX *  Out,
float  FovY,
float  Aspect,
float  ZNear 
)

Wersja tworząca macierz z Z-Far = INFINITY.

void common::PerspectiveFovRH ( MATRIX *  Out,
float  FovY,
float  Aspect,
float  ZNear,
float  ZFar 
)

void common::PerspectiveLH ( MATRIX *  Out,
float  Width,
float  Height,
float  ZNear,
float  ZFar 
)

Tworzy macierz rzutowania perspektywicznego.

Width i Height są wymiarami na płaszczyźnie bliskiej (near). Left, Top, Right, Bottom prawdopodobnie też. Tworzone macierze są "W-Friendly" - wektor przemnożony przez taką macierz ma w składowej W komponent Z.

void common::PerspectiveOffCenterLH ( MATRIX *  Out,
float  Left,
float  Right,
float  Bottom,
float  Top,
float  ZNear,
float  ZFar 
)

void common::PerspectiveOffCenterRH ( MATRIX *  Out,
float  Left,
float  Right,
float  Bottom,
float  Top,
float  ZNear,
float  ZFar 
)

void common::PerspectiveRH ( MATRIX *  Out,
float  Width,
float  Height,
float  ZNear,
float  ZFar 
)

void common::Rotation2D ( MATRIX *  Out,
float  Angle 
)

Macierz obrotu 2D.

void common::RotationAxisLH ( MATRIX *  Out,
const VEC3 &  Axis,
float  Angle 
)

Axis musi być znormalizowany.

void common::RotationAxisRH ( MATRIX *  Out,
const VEC3 &  Axis,
float  Angle 
) [inline]

void common::RotationX ( MATRIX *  Out,
float  Angle 
)

Macierz obrotu wokół osi X.

void common::RotationY ( MATRIX *  Out,
float  Angle 
)

Macierz obrotu wokół osi Y.

void common::RotationYawPitchRoll ( MATRIX *  Out,
const VEC3 &  EulerAngles 
)

void common::RotationYawPitchRoll ( MATRIX *  Out,
float  Yaw,
float  Pitch,
float  Roll 
)

Macierz obrotu wokół trzech osi w kolejności Yaw-Pitch-Roll (ZXY) - tzw. kąty Eulera.

W przypadku wektora składowe odpowiadają obrotom wokół poszczególnych osi, czyli: X = Pitch, Y = Yaw, Z = Roll Przekształca ze wsp. obiektu do świata (object -> interial space). Czyli tak naprawdę robi ZXY.

Parametry:
Yaw jest wokół osi Y.
Pitch jest wokół osi X.
Roll jest wokół osi Z.

void common::RotationYawPitchRollInv ( MATRIX *  Out,
const VEC3 &  EulerAngles 
)

void common::RotationYawPitchRollInv ( MATRIX *  Out,
float  Yaw,
float  Pitch,
float  Roll 
)

Przekształca ze wsp. świata do obiektu (interial -> object space).

Czyli tworzy macierz dokładnie odwrotną do tej z RotationYawPitchRoll.

void common::RotationZ ( MATRIX *  Out,
float  Angle 
)

Macierz obrotu wokół osi Z.

void common::Scaling ( MATRIX *  Out,
float  s 
)

void common::Scaling ( MATRIX *  Out,
const VEC3 &  sv 
)

void common::Scaling ( MATRIX *  Out,
float  sx,
float  sy,
float  sz 
)

Tworzy macierz skalowania (powiększania, pomniejszania, rozciągania).

void common::ScalingAxis ( MATRIX *  Out,
const VEC3 &  n,
float  k 
)

Tworzy macierz skalowania wzdłuż podanego kierunku.

Parametry:
k współczynnik skalowania
n wektor kierunku, musi być znormalizowany

bool common::StrToMatrix ( MATRIX *  Out,
const tstring &  Str 
)

void common::Sub ( MATRIX *  Out,
const MATRIX &  m1,
const MATRIX &  m2 
)

Odejmowanie macierzy.

void common::swap ( MATRIX &  m1,
MATRIX &  m2 
) [inline]

void common::Transform ( PLANE *  Out,
const PLANE &  p,
const MATRIX &  m 
)

Przekształca płaszczyznę przez macierz.

Parametry:
p Płaszczyzna ma być znormalizowana.
m Macierz ma być odwrotna i transponowana względem normalnej macierzy.

void common::Transform ( VEC4 *  Out,
const VEC4 &  v,
const MATRIX &  m 
)

Mnożenie wektora 4D przez macierz.

Czyli przekształcenie wektora we współrzędnych jednorodnych przez tą macierz.

void common::Transform ( VEC3 *  Out,
const VEC3 &  v,
const MATRIX &  m 
)

Mnożenie wektora 3D jako [X,Y,Z,1] przez macierz z olaniem wyjściowego W.

Dobre do przekształcania wektorów 3D jeśli macierz reprezentuje przekształcenie liniowe.

void common::Transform ( VEC4 *  Out,
const VEC3 &  v,
const MATRIX &  m 
)

Mnożenie wektora 3D jako [X,Y,Z,1] przez macierz, wychodzi wektor 4D.

void common::Transform ( VEC2 *  Out,
const VEC2 &  v,
const MATRIX &  m 
)

Mnożenie wektora 2D jako [x,y,0,1] przez macierz z olaniem wyjściowego W.

void common::Transform ( VEC4 *  Out,
const VEC2 &  v,
const MATRIX &  m 
)

Mnożenie wektora 2D jako [x,y,0,1] przez macierz, wychodzi wektor 4D.

void common::TransformArray ( VEC3  InOutPoints[],
size_t  PointCount,
const MATRIX &  M 
)

void common::TransformArray ( VEC3  OutPoints[],
const VEC3  InPoints[],
size_t  PointCount,
const MATRIX &  M 
)

Przekształca na raz całą tablicę wektorów - w miejscu lub z tablicy wejściowej do wyjściowej.

void common::TransformBox ( BOX *  Out,
const BOX &  In,
const MATRIX &  M 
)

Przekształca AABB przez podaną macierz i wylicza AABB tego co wyszło po przekształceniu.

void common::TransformBoxCoord ( BOX *  Out,
const BOX &  In,
const MATRIX &  M 
)

Przekształca AABB przez podaną macierz i wylicza AABB tego co wyszło po przekształceniu.

Wersja dzieląca przez W - można stosować też do macierzy projekcji.

void common::TransformCoord ( VEC3 *  Out,
const VEC3 &  v,
const MATRIX &  m 
)

Mnożenie wektora 3D jako [X,Y,Z,1] przez macierz i sprowadzenie z powrotem do 3D przez podzielenie przez W.

Dobre do niezawodnego przekształcania wektorów 3D przez dowolną macierz np. rzutowania.

void common::TransformCoord ( VEC2 *  Out,
const VEC2 &  v,
const MATRIX &  m 
)

Mnożenie wektora 2D jako [x,y,0,1] przez macierz i sprowadzenie z powrotem do 2D przez podzielenie przez W.

void common::TransformCoordArray ( VEC3  InOutPoints[],
size_t  PointCount,
const MATRIX &  M 
)

void common::TransformCoordArray ( VEC3  OutPoints[],
const VEC3  InPoints[],
size_t  PointCount,
const MATRIX &  M 
)

void common::TransformNormal ( VEC3 *  Out,
const VEC3 &  v,
const MATRIX &  m 
)

Mnożenie wektora 3D jako [X,Y,Z,0] przez macierz.

Dobre do przekształcania wektorów (np. normalnych), nie punktów, bo nie robi translacji.

void common::TransformNormal ( VEC2 *  Out,
const VEC2 &  v,
const MATRIX &  m 
)

Mnożenie wektora 2D jako [x,y,0,0] przez macierz.

void common::TransformNormalArray ( VEC3  InOutPoints[],
size_t  PointCount,
const MATRIX &  M 
)

void common::TransformNormalArray ( VEC3  OutPoints[],
const VEC3  InPoints[],
size_t  PointCount,
const MATRIX &  M 
)

void common::TransformRay ( VEC3 *  OutOrigin,
VEC3 *  OutDir,
const VEC3 &  RayOrigin,
const VEC3 &  RayDir,
const MATRIX &  m 
)

Przekształca promień przez macierz.

void common::Translation ( MATRIX *  Out,
const VEC3 &  v 
)

void common::Translation ( MATRIX *  Out,
float  x,
float  y,
float  z 
)

Tworzy macierz translacji (przesuwania).

void common::Transpose ( MATRIX *  m  ) 

Transpozycja macierzy na miejscu.


Dokumentacja zmiennych

const MATRIX common::MATRIX_ZERO


Wygenerowano Sat Mar 29 18:17:00 2008 dla CommonLib programem  doxygen 1.5.5