MedicalVisualization

Homogene Matrizen

Rechenaufwand | | Skalierung

Homogene Identitätsmatrix:

$ I = \left( \begin{array}{c c c c} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right) $

Mit GLM bzw. GLSLmath:

  • mat4 I;

Homogene Translationsmatrix:

$ M_T(\vec{t}) = \left( \begin{array}{c c c c} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{array} \right) $

Mit GLM bzw. GLSLmath:

  1. mat4 T = mat4::translate(tx, ty, tz);
  2. vec4 v(tx, ty, tz); mat4 T = mat4::translate(v);

Homogene Rotationsmatrix:

$ M_R = \left( \begin{array}{c c c c} R_{00} & R_{10} & R_{20} & 0 \\ R_{01} & R_{11} & R_{21} & 0 \\ R_{02} & R_{12} & R_{22} & 0 \\ 0 & 0 & 0 & 1 \end{array} \right) $

Mit GLM bzw. GLSLmath:

  1. mat4 R = mat4::rotate(angle, ax, ay, az);
  2. vec3 a(ax, ay, az); mat4 R = mat4::rotate(angle, a);

Homogene Starrkörper-Transformation ist zusammengesetzte Transformation:

$ M = M_T \cdot M_R $

Mit GLM bzw. GLSLmath:

  1. mat4 M = mat4::translate(tx, ty, tz) * mat4::rotate(angle, ax, ay, az);
  2. mat4 M = mat4::rigid(angle, vec3(ax, ay, az), vec3(tx, ty, tz));

Beliebige lineare Transformations-Matrix:

$M = \left( \begin{array}{cccc}a & b & c & d \\e & f & g & h \\i & j & k & l \\m & n & o & p \end{array} \right)$

Mit GLM bzw. GLSLmath:

mat4 m(a, b, c, d,
       e, f, g, h,
       i, j, k, l,
       m, n, o, p);

Rotation um Punkt P ist zusammengesetzte Transformation:

$M = M_T(\vec{P}) M_R M_T(-\vec{P})$

Mit GLM bzw. GLSLmath:

  1. mat4 M = T * R * T.invert();
  2. mat4 M = T * R * mat4::invert(T);


Rechenaufwand | | Skalierung

Options: