Computergrafik
Transformationsbeispiel
← Skalierung | ● | OpenGL Komponenten →
Wir drücken die folgenden 2D Transformationen durch eine entsprechende homogene 3×3 Matrix aus:
- Rotation R um 90 Grad entgegen dem Uhrzeigersinn
- Translation T um den Vektor (1,0)T
R=(0−10100001)
T=(101010001)
Wir berechnen die zusammengesetzte affine Transformationsmatrix:
M=TR=
=(101010001)⋅(0−10100001)
=(0−11100001)
Und abschließend transformieren wir den Punkt p=(2,0)T mit der zusammengesetzten Matrix M:
p′=M⋅p
Wir überprüfen zeichnerisch, dass der resultierende Punkt p′=(1,2)T ist und z.B. nicht (0,3)T!
Wir überprüfen das Ergebis programmiertechnisch mit GLM bzw. GLSLmath (für 4×4 Matrizen):
#include <glslmath.h>
int main()
{
mat4 M = mat4::translate(1,0,0) * mat4::rotate(90, 0,0,1);
glslmath::print(M);
vec4 p(2,0,0,1);
vec4 pt = M*p;
glslmath::print(pt);
return(0);
}
int main()
{
mat4 M = mat4::translate(1,0,0) * mat4::rotate(90, 0,0,1);
glslmath::print(M);
vec4 p(2,0,0,1);
vec4 pt = M*p;
glslmath::print(pt);
return(0);
}
Live Demo
← Skalierung | ● | OpenGL Komponenten →