#include "red.h"
#include "AUV.h"
#include "Unit1.h"
#include <math.h>

#include <fcntl.h>
#include <io.h>
#include <Sys/stat.h>

#if 1
#define AUV_Z_IS_DEPTH
#endif
//---------------------------------------------------------------------------
AUV::AUV()
{
   x=0; y=0; z=0;   phi=0;  theta=0; psi=0;

}

//---------------------------------------------------------------------------
/* Calcule les coordonnées du véhicule dans le repère TGL */
/* TGL: Trièdre Géographique Local */
/*      Origine: véhicule */
/*      Axe x: axe pointant vers le nord */
/*      Axe y: axe pointant vers l'est */
/*      Axe z: axe pointant vers le centre de la terre */


//---------------------------------------------------------------------------
void AUV::Draw()
/* Le repère véhicule: */
/*      axe X: axe longitudinal orienté vers l'avant */
/*      axe Y: axe transversal orienté vers tribord */
/*      axe Z: axe "vertical" orienté vers le bas */
/* Le repère openGL (pour dessiner le véhicule) */
/*      axe X: axe longitudinal orienté vers l'avant */
/*      axe Y: axe longitudinal orienté vers babord */
/*      axe Z: axe "vertical" orienté vers le haut */
/* XopenGl = Xauv */
/* YopenGl = -Yauv */
/* ZopenGl = -Zauv */
/* PhiOpenGl = PhiAuv */
/* ThetaOpenGl = -ThetaAuv */
/* PsiOpenGl = -PsiAuv */
{
        psi=psi; //+0.03;
        //phi1=phi;theta1=-theta;psi1=-psi;

        glPushMatrix();

        glLineWidth(5);
        glBegin(GL_LINES);
                glColor3f(1,0,0); glVertex3f(0,0,0);   glVertex3f(0,10,0);
        glEnd();
        glBegin(GL_LINES);
                glColor3f(1,0,0); glVertex3f(0,0,-0.2);glVertex3f(0,10,-0.1);
        glEnd();
        glBegin(GL_LINES);
                glColor3f(0,1,0); glVertex3f(0,0,0);   glVertex3f(10,0,0);
        glEnd();
        glBegin(GL_LINES);
                glColor3f(0,1,0); glVertex3f(0,0,-0.2);glVertex3f(10, 0,-0.1);
        glEnd();
        glBegin(GL_LINES);
                glColor3f(0,0,1); glVertex3f(0,0,-5);  glVertex3f(0,0,0);
        glEnd();

        /* tracé du véhicule */
        // le fichier de vertex inverse les axes y et z
        // on considère que le véhicule est symétrique selon x
        // on applique une rotation de pi/2 autour de x

        glTranslatef(y,x,-z);
        glRotatef(90,0,0,1);
	glRotatef(-psi*RadToDeg,0,0,1);
        glRotatef(-theta*RadToDeg,0,1,0);
        glRotatef(phi*RadToDeg,1,0,0);
        //glRotatef(90,1,0,0);
	aile_bd(); aile_fixe(); aile_td(); canard(); coque(); derive();	moteur();
        glPopMatrix();
}

/*int AUV::rotate(double r,double p,double h,double *x,double *y,double *z)
/* r: angle de roulis (roll) en radians */
/* p: angle de tangage (pitch) en radians */
/* h: angle de cap (heading) en radians */
/* Les rotations sont appliquée dans l'ordre suivant: */
/*      1: rotation autour de l'axe de roulis */
/*      2: rotation autour de l'axe de tangage */
/*      3: rotation autour de l'axe de lacet */
/*      {x,y,z} = Ch Cp Cr {x,y,z} */




