\documentclass[a4paper,12pt]{article}

\usepackage[french]{babel}
\usepackage[T1]{fontenc} 
\usepackage[latin1]{inputenc}
%\usepackage{amsmath}

\author{Rémi Synave, Stefka Gueorguieva, Pascal Desbarats}
\title{Manuel de la bibliothèque VERTEX}
\date{}

\begin{document}
\maketitle

\section{Utilisation}
Cette bibliothèque implémente les structures de données nécessaires au stockage des sommets d'un maillage ainsi que des fonctions pour manipuler ceux-ci.\\
Deux strucutres de données sont disponibles : \textit{vf\_vertex} pour le stockage des maillages \textit{vf\_model} et \textit{vef\_vertex} pour le stockage des maillages \textit{vef\_model}.

\section{Structures de données}

La structure \textit{vf\_vertex} est utilisé par la structure \textit{vf\_model} pour stocker les coordonnées des sommets d'un maillage. Cette structure est donc composée de trois rééls qui sont les trois composantes X,Y et Z du sommet ainsi qu'une liste d'index \textit{incidentvertices} de sommets en relation direct, reliés par une arête, avec ce sommet.\\
\begin{verbatim}
typedef struct
{
  double x;
  double y;
  double z;
  int *incidentvertices;
  int nbincidentvertices;
}vf_vertex;
\end{verbatim}


La structure \textit{vef\_vertex} est utilisé par la structure \textit{vef\_model} pour stocker les coordonnées des sommets d'un maillage. Cette structure est donc composée de trois rééls qui sont les trois composantes X,Y et Z du sommet ainsi qu'une liste d'index \textit{sharededges} d'arêtes partant ce sommet.\\
\begin{verbatim}
typedef struct
{
  double x;
  double y;
  double z;
  int *sharededges;
  int nbsharededges;
}vef_vertex;
\end{verbatim}

\section{Fonctions}

\subsection{Fonctions utilisant \textit{vf\_vertex}}


\textbullet void vf\_vertex\_display(vf\_vertex v)\\
Affichage d'un \textit{vf\_vertex}.\\


\textbullet void vf\_vertex\_translate(vf\_vertex *v, vector3d delta)\\
Translation d'un vecteur passé en paramètre.\\
Les composantes \textit{dx,dy,dz} sont ajoutés aux coordonnées du \textit{vf\_vertex}.\\


\textbullet void vf\_vertex\_rotateX\_radian(vf\_vertex *v, double angle)\\
Rotation suivant l'axe X d'un angle en radian.\\


\textbullet void vf\_vertex\_rotateX\_degre(vf\_vertex *v, double angle)\\
Rotation suivant l'axe X d'un angle en degre.\\


\textbullet void vf\_vertex\_rotateX\_center\_radian(vf\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe X d'un angle en radian et autour du \textit{point3d centre}.\\


\textbullet void vf\_vertex\_rotateX\_center\_degre(vf\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe X d'un angle en degre et autour du \textit{point3d centre}.\\


\textbullet void vf\_vertex\_rotateY\_radian(vf\_vertex *v, double angle)\\
Rotation suivant l'axe Y d'un angle en radian.\\


\textbullet void vf\_vertex\_rotateY\_degre(vf\_vertex *v, double angle)\\
Rotation suivant l'axe Y d'un angle en degre.\\


\textbullet void vf\_vertex\_rotateY\_center\_radian(vf\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe Y d'un angle en radian et autour du \textit{point3d centre}.\\


\textbullet void vf\_vertex\_rotateY\_center\_degre(vf\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe Y d'un angle en degre et autour du \textit{point3d centre}.\\


\textbullet void vf\_vertex\_rotateZ\_radian(vf\_vertex *v, double angle)\\
Rotation suivant l'axe Z d'un angle en radian.\\


\textbullet void vf\_vertex\_rotateZ\_degre(vf\_vertex *v, double angle)\\
Rotation suivant l'axe Z d'un angle en degre.\\


\textbullet void vf\_vertex\_rotateZ\_center\_radian(vf\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe Z d'un angle en radian et autour du \textit{point3d centre}.\\


\textbullet void vf\_vertex\_rotateZ\_center\_degre(vf\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe Z d'un angle en degre et autour du \textit{point3d centre}.\\



\subsection{Fonctions utilisant \textit{vef\_vertex}}

\textbullet void vef\_vertex\_display(vef\_vertex v)\\
Affichage d'un \textit{vef\_vertex}.\\


\textbullet void vef\_vertex\_translate(vef\_vertex *v, vector3d delta)\\
Translation d'un vecteur passé en paramètre.\\
Les composantes \textit{dx,dy,dz} sont ajoutés aux coordonnées du \textit{vef\_vertex}.\\


\textbullet void vef\_vertex\_rotateX\_radian(vef\_vertex *v, double angle)\\
Rotation suivant l'axe X d'un angle en radian.\\


\textbullet void vef\_vertex\_rotateX\_degre(vef\_vertex *v, double angle)\\
Rotation suivant l'axe X d'un angle en degre.\\


\textbullet void vef\_vertex\_rotateX\_center\_radian(vef\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe X d'un angle en radian et autour du \textit{point3d centre}.\\


\textbullet void vef\_vertex\_rotateX\_center\_degre(vef\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe X d'un angle en degre et autour du \textit{point3d centre}.\\


\textbullet void vef\_vertex\_rotateY\_radian(vef\_vertex *v, double angle)\\
Rotation suivant l'axe Y d'un angle en radian.\\


\textbullet void vef\_vertex\_rotateY\_degre(vef\_vertex *v, double angle)\\
Rotation suivant l'axe Y d'un angle en degre.\\


\textbullet void vef\_vertex\_rotateY\_center\_radian(vef\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe Y d'un angle en radian et autour du \textit{point3d centre}.\\


\textbullet void vef\_vertex\_rotateY\_center\_degre(vef\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe Y d'un angle en degre et autour du \textit{point3d centre}.\\


\textbullet void vef\_vertex\_rotateZ\_radian(vef\_vertex *v, double angle)\\
Rotation suivant l'axe Z d'un angle en radian.\\


\textbullet void vef\_vertex\_rotateZ\_degre(vef\_vertex *v, double angle)\\
Rotation suivant l'axe Z d'un angle en degre.\\


\textbullet void vef\_vertex\_rotateZ\_center\_radian(vef\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe Z d'un angle en radian et autour du \textit{point3d centre}.\\


\textbullet void vef\_vertex\_rotateZ\_center\_degre(vef\_vertex *v, double angle, point3d centre)\\
Rotation suivant l'axe Z d'un angle en degre et autour du \textit{point3d centre}.\\

\end{document}
