Computergrafik

Linmath-Spezielle Matrizen

Entsprechende alte hier angegebene OpenGL-Befehle googlen, die man-Pages enthalten eine Menge nützlicher Informationen!

Transformationen / Modellierung

  • Translation:
    Multipliziert Translationsmatrix rechts an m_left
    (es gibt auch mat4x4_translate(), die erstellt lediglich eine Translationsmatrix, aber verknüpft sie nicht mit einer bereits bestehenden)
    Siehe auch glTranslate()
    mat4x4_trans (m_res, m_left, x, y, z);
  • Allgemeine Rotation:
    Multipliziere Rotation-Matrix rechts an m_left
    Winkel in Radiant, d.h. M_PI*.5 entspricht $90^\circ$
    Siehe auch glRotate()
    mat4x4_rotate (m_res, m_left, x, y, z, winkel);
  • Rotation um X (ditto für Y, Z):
    mat4x4_rotate_X (m_res, m_left, winkel);
  • Skalierung:
    Multipliziert Skalierungsmatrix rechts an m_left
    (Achtung: die auch nutzbare Funktion mat4x4_scale() multipliziert alle Elemente mit dem Faktor, ist daher meist nicht zu gebrauchen)
    Siehe auch glScale()
    mat4x4_scale_aniso (m_res, m_left, x, y, z);

View-Transformation

  • Kamera-Transformation:
    Siehe auch gluLookAt()
    mat4x4_look_at (m_res, vec3 eye, vec3 center, vec3 up);

    eye, center und up sind 3D-Vektoren (vec3)!

Projektionen

  • Frustum für eine orthographische Projektion (ohne perspektivische Verkürzung):
    Siehe auch glOrtho()
    mat4x4_ortho   (m_res, l, r, b, t, n, f);
  • Frustum gemäß Projektionsmatrix:
    Siehe auch glFrustum()
    mat4x4_frustum (m_res, l, r, b, t, n, f);
  • Frustum entsprechend den alternativen Parametern (beschrieben in ViewKamera):
    Siehe auch gluPerspective() (Achtung: hier fovy in Radiant, nicht Grad)
    mat4x4_perspective (m_res, fovy, aspect, n, f);

Hilfsfunktionen / Daten

  • Matrix-Ausgabe:
    mat4x4_print (string, m_res);
  • Identitäts-Matrix:
    mat4x4_id


Options: