/* Ligne polygonale 3D                           */
/*                                               */
/* Auteur: Nicolas JANEY                         */
/* nicolas.janey@univ-fcomte.fr                  */
/* Mars 2020                                     */

#ifndef ____LIGNEPOLYGONALE3D____
#define ____LIGNEPOLYGONALE3D____

#include <GL/gl.h>

#include "Pos3D.h"

class MatriceDeBase;

class LignePolygonale3D {

  public :
    /* Nombre de sommets                         */
    int nbPoints;
    /* Tableau des sommets                       */
    Pos3D **tPos;
    /* Stack pointer */
    int sp;

  public :

    /* Constructeur "vide"                       */
    /* (nbPoints=0, tPos = NULL)                 */

    LignePolygonale3D(void);

    /* Constructeur pour une ligne polygonale    */
    /* de n sommets                              */

    LignePolygonale3D(int n);

    /* Constructeur pour une ligne polygonale    */
    /* de n sommets initialisee avec le contenu  */
    /* du tableau tPos                           */

    LignePolygonale3D(int n,Pos3D **tPos);

    /* Constructeur de clonage                   */

    LignePolygonale3D(LignePolygonale3D *lp);

    /* Constructeur pour une ligne polygonale    */
    /* de n sommets lissee par B-Spline          */
    /* a partir de la ligne polygonale lp        */
    /* en utilisant la matrice de base m         */

    LignePolygonale3D(int n,LignePolygonale3D *lp,const MatriceDeBase *m);

    /* Constructeur pour une ligne polygonale    */
    /* de n sommets lissee par Bezier            */
    /* a partir de la ligne polygonale lp        */

    LignePolygonale3D(int n,LignePolygonale3D *lp);

    /* Destructeur                               */
    ~LignePolygonale3D(void);

    void add(Pos3D *p);
    void setPosition(int pos,Pos3D *p);
    void print(void);
    void drawOpenGL(GLenum typePrimitive);
};

#endif
