/* Quadrilatere en 2D */ /* */ /* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Novembre 2012 */ #ifndef ____QUADRILATERE2D____ #define ____QUADRILATERE2D____ class Position2D; class Segment2D; class Quadrilatere2D { public : Position2D *q1; Position2D *q2; Position2D *q3; Position2D *q4; private : double a[4]; double b[4]; double c[4]; public : /* Constructeurs */ Quadrilatere2D(void); Quadrilatere2D(Position2D *s1,Position2D *s2,Position2D *s3,Position2D *s4); Quadrilatere2D(Quadrilatere2D *q); /* Destructeur */ ~Quadrilatere2D(void); /* Dessin OpenGL */ void draw(int zoom); /* Dessin OpenGL */ void drawGL(void); /* Zoom */ void zoom(float zoom); /* Code de Cohen-Sutherland */ /* d'une Position2D */ int code(Position2D *p); /* Clipping de Cohen-Sutherland */ /* d'un Segment2D vis a vis */ /* d'un quadrilatere suppose convexe */ int clip(Segment2D *s); private : /* Affectation a une Position2D */ /* de la position de l'intersection */ /* entre un Segment2D */ /* et un cote du quadrilatere */ void affecteIntersection(Position2D *p,Segment2D *s,int cote); /* Determination de la position d'un point */ /* vis a vis d'un des 4 cotes */ /* du quadrilatere */ int position(Position2D *p,int cote); /* Mise a jour de a, b et c en fonction */ /* de q1, q2, q3 et q4 */ void update(void); }; #endif