/* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Octobre 2005 */ /* Classe de gestion de facettes triangulaires */ #include #include #include #include #include #include "ModuleFleche.h" #include "Triangle.h" Triangle::Triangle(void) { this->p1 = NULL; this->p2 = NULL; this->p3 = NULL; this->d1 = NULL; this->d2 = NULL; } Triangle::Triangle(Position *p1,Position *p2,Position *p3){ this->p1 = p1; this->p2 = p2; this->p3 = p3; this->d1 = new Direction(p1,p2); this->d2 = new Direction(p1,p3); } Triangle::Triangle(Position *p1,Direction *d1,Direction *d2){ this->p1 = p1; this->d1 = d1; this->d2 = d2; this->p2 = new Position(p1->x+d1->x,p1->y+d1->y,p1->z+d1->z); this->p3 = new Position(p1->x+d2->x,p1->y+d2->y,p1->z+d2->z); } Triangle::~Triangle(void){ } Direction* Triangle::normale(void){ Direction *d = new Direction(); d->produitVectoriel(d1,d2); d->normalise(); return(d); } int Triangle::estParallele(Triangle *t) { Direction *d = new Direction(); d->produitVectoriel(d1,d2); { float ps = d->produitScalaire(t->d1); if ( fabs(ps) > 0.000001F ) return(0); } { float ps = d->produitScalaire(t->d2); if ( fabs(ps) > 0.000001F ) return(0); } return(1); } void Triangle::dessine() { p1->dessine(); glPushMatrix(); glTranslatef(p1->x,p1->y,p1->z); flecheEnVolume(d1->x,d1->y,d1->z,0.1F,0.5F,0.025F); flecheEnVolume(d2->x,d2->y,d2->z,0.1F,0.5F,0.025F); Direction *n = normale(); glBegin(GL_POLYGON); glNormal3f(n->x,n->y,n->z); glVertex3f(0.0F,0.0F,0.0F); glVertex3f(d1->x,d1->y,d1->z); glVertex3f(d2->x,d2->y,d2->z); glEnd(); glPopMatrix(); }