/* Mathematiques de l'informatique graphique */ /* Rotation 3D */ /* */ /* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Octobre 2012 */ #include #include #include #include "TransformationGeometrique3D.h" #include "Rotation3D.h" #include "Direction3D.h" #ifndef M_PI #define M_PI 3.14159 #endif /* Constructeurs */ Rotation3D::Rotation3D(void):TransformationGeometrique3D() { } Rotation3D::Rotation3D(double angle,double ax,double ay,double az):TransformationGeometrique3D() { Direction3D v(ax,ay,az); v.normalisation(); double aa = angle/180.0*M_PI; float sn =(float) sin(aa); float cs =(float) cos(aa); c[0][0] = v.c[0]*v.c[0]+cs*(1-v.c[0]*v.c[0]); c[0][1] = v.c[0]*v.c[1]*(1-cs)-sn*v.c[2]; c[0][2] = v.c[0]*v.c[2]*(1-cs)+sn*v.c[1]; c[1][0] = v.c[0]*v.c[1]*(1-cs)+sn*v.c[2]; c[1][1] = v.c[1]*v.c[1]+cs*(1-v.c[1]*v.c[1]); c[1][2] = v.c[1]*v.c[2]*(1-cs)-sn*v.c[0]; c[2][0] = v.c[0]*v.c[2]*(1-cs)-sn*v.c[1]; c[2][1] = v.c[1]*v.c[2]*(1-cs)+sn*v.c[0]; c[2][2] = v.c[2]*v.c[2]+cs*(1-v.c[2]*v.c[2]); } /* Destructeur */ Rotation3D::~Rotation3D(void) { }