/* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Novembre 2005 */ /* Test de classes de representation */ /* de vecteurs et de transformations */ /* geometriques en coordonnees homogenes */ #include #include #include "TransformationT.h" #include "VecteurT.h" int main(int argc,char **argv) { VecteurT *v1 = new VecteurT( 0.0F, 0.0F, 0.0F, 1.0F); VecteurT *v2 = new VecteurT( 1.0F, 1.0F, 1.0F, 0.0F); VecteurT *v3 = new VecteurT( 2.0F, -4.0F, 3.0F, -6.0F); float cs =(float) cos(1.0); float sn =(float) sin(1.0); float m1[4][4] = { { cs, -sn, 0.0F, 0.0F }, { sn, cs, 0.0F, 0.0F }, { 0.0F, 0.0F, 1.0F, 0.0F }, { 0.0F, 0.0F, 0.0F, 1.0F } }; float m2[4][4] = { { 1.0F, 0.0F, 0.0F, -3.0F }, { 0.0F, 1.0F, 0.0F, 2.0F }, { 0.0F, 0.0F, 1.0F, 5.0F }, { 0.0F, 0.0F, 0.0F, 1.0F } }; float m3[4][4] = { { 1.0F, 2.0F,-3.0F, -1.0F }, { -2.0F, 3.0F, 1.0F, 4.0F }, { -1.0F,-1.0F, 4.0F, 7.0F }, { 0.0F, 0.0F, 0.0F, 1.0F } }; TransformationT *t1 = new TransformationT(m1); TransformationT *t2 = new TransformationT(m2); TransformationT *t3 = new TransformationT(m3); printf("V1 (Position de l'origine)\n"); v1->print(); printf("V2 (Direction (1.0,1.0,1.0))\n"); v2->print(); printf("V3 (Vecteur arbitraire)\n"); v3->print(); printf("T1 (Rotation de 1 radian autour de Oz)\n"); t1->print(); printf("T2 (Translation de (-3.0, 2.0, 5.0))\n"); t2->print(); printf("T3 (Transformation arbitraire)\n"); t3->print(); printf("\n"); printf("T1.V1\n"); t1->compose(v1); v1->print(); printf("T1.V2\n"); t1->compose(v2); v2->print(); delete(v1); delete(v2); printf("\n"); v1 = new VecteurT( 0.0F, 0.0F, 0.0F, 1.0F); v2 = new VecteurT( 1.0F, 1.0F, 1.0F, 0.0F); printf("T2.V1\n"); t2->compose(v1); v1->print(); printf("T2.V2\n"); t2->compose(v2); v2->print(); delete(v1); delete(v2); printf("\n"); printf("T3.V3\n"); t3->compose(v3); v3->print(); printf("\n"); v1 = new VecteurT( 0.0F, 0.0F, 0.0F, 1.0F); v2 = new VecteurT( 1.0F, 1.0F, 1.0F, 0.0F); { TransformationT *t = new TransformationT(); t->compose(t1); t->compose(t2); printf("T = T1.T2\n"); t->print(); printf("T.V1\n"); t->compose(v1); v1->print(); printf("T.V2\n"); t->compose(v2); v2->print(); delete(t); } delete(v1); delete(v2); printf("\n"); v1 = new VecteurT( 0.0F, 0.0F, 0.0F, 1.0F); v2 = new VecteurT( 1.0F, 1.0F, 1.0F, 0.0F); { TransformationT *t = new TransformationT(); t->compose(t2); t->compose(t1); printf("T = T2.T1\n"); t->print(); printf("T.V1\n"); t->compose(v1); v1->print(); printf("T.V2\n"); t->compose(v2); v2->print(); delete(t); } delete(v1); delete(v2); delete(v3); delete(t1); delete(t2); delete(t3); return(0); }