/* Objets geometriques modelises par facettes   */
/*  - Cube                                      */
/*  - Cylindre                                  */
/*                                              */
/* Auteur: Nicolas JANEY                        */
/* nicolas.janey@univ-fcomte.fr                 */
/* Fevrier 2023                                 */

#ifndef __OBJETS_GEOMETRIQUES__
#define __OBJETS_GEOMETRIQUES__

typedef enum {
  NOMBRE_VERTICES = 1,
  NOMBRE_TOTAL_FACETTES = 2,
  NOMBRE_FACETTES_TRIANGULAIRES = 3,
  NOMBRE_FACETTES_QUADRANGULAIRES = 4 } typeInfo;

/* Modelisation geometrique d'un cube :         */
/*  - de côte ct                                */
/*  - centre sur l'origine du repere            */
/*  - avec chaque face facettisee               */
/*    en n x n facettes carrees elementaires    */
void mySolidCube(double ct,int n);

/* Modelisation geometrique d'une sphere :      */
/*  - de rayon rayon                            */
/*  - centre sur l'origine du repere            */
/*  - avec ns facettes en decomposition         */
/*    longitudinale                             */
/*  - avec nl facettes en decomposition axiale  */
void mySolidSphere(double rayon,int ns,int nl);

/* Modelisation geometrique d'un cylindre       */
/* sans bases :                                 */
/*  - de hauteur hauteur                        */
/*  - de rayon rayon                            */
/*  - oriente selon l'axe y                     */
/*  - centre sur l'origine du repere            */
/*  - avec ns facettes en decomposition         */
/*    longitudinale                             */
/*  - avec nl facettes en decomposition axiale  */
void mySolidCylindre(double hauteur,double rayon,int ns,int nl);

/* Modelisation geometrique d'un cylindre       */
/* avec ou sans bases :                         */
/*  - de hauteur hauteur                        */
/*  - de rayon rayon                            */
/*  - oriente selon l'axe y                     */
/*  - centre sur l'origine du repere            */
/*  - avec ns facettes en decomposition         */
/*    longitudinale                             */
/*  - avec nl facettes en decomposition axiale  */
/*  - avec bases si bases != 0                  */
void mySolidCylindre(double hauteur,double rayon,int ns,int nl,int bases);

/* Informations relatives a un cube :           */
/*  - de côte ct                                */
/*  - avec chaque face facettisee               */
/*    en n x n facettes carrees elementaires    */
/* Retour fonction de la valeur de type :       */
/*  - NOMBRE_VERTICES : nombre de sommets       */
/*  - NOMBRE_TOTAL_FACETTES : nombre total      */
/*    de facettes                               */
/*  - NOMBRE_FACETTES_TRIANGULAIRES :           */
/*    nombre de facettes triangulaires          */
/*  - NOMBRE_FACETTES_QUADRANGULAIRES :         */
/*    nombre de facttes quadrangualire          */
/*  - n : nombre de facttes d'arite n           */
int informationSolidCube(double ct,int n,typeInfo type);

/* Informations relatives a une sphere :        */
/*  - de rayon rayon                            */
/*  - avec ns facettes en decomposition         */
/*    longitudinale                             */
/*  - avec nl facettes en decomposition axiale  */
/* Retour fonction de la valeur de type :       */
/*  - NOMBRE_VERTICES : nombre de sommets       */
/*  - NOMBRE_TOTAL_FACETTES : nombre total      */
/*    de facettes                               */
/*  - NOMBRE_FACETTES_TRIANGULAIRES :           */
/*    nombre de facettes triangulaires          */
/*  - NOMBRE_FACETTES_QUADRANGULAIRES :         */
/*    nombre de facttes quadrangualire          */
/*  - n : nombre de facttes d'arite n           */
int informationSolidSphere(double rayon,int ns,int nl,typeInfo type);

/* Informations relatives a un cylindre         */
/* sans bases :                                 */
/*  - de hauteur hauteur                        */
/*  - de rayon rayon                            */
/*  - oriente selon l'axe y                     */
/*  - avec ns facettes en decomposition         */
/*    longitudinale                             */
/*  - avec nl facettes en decomposition axiale  */
/* Retour fonction de la valeur de type :       */
/*  - NOMBRE_VERTICES : nombre de sommets       */
/*  - NOMBRE_TOTAL_FACETTES : nombre total      */
/*    de facettes                               */
/*  - NOMBRE_FACETTES_TRIANGULAIRES :           */
/*    nombre de facettes triangulaires          */
/*  - NOMBRE_FACETTES_QUADRANGULAIRES :         */
/*    nombre de facttes quadrangualire          */
/*  - n : nombre de facttes d'arite n           */
int informationSolidCylindre(double hauteur,double rayon,int ns,int nl,typeInfo type);

/* Informations relatives a un cylindre         */
/* avec ou sans bases :                         */
/*  - de hauteur hauteur                        */
/*  - de rayon rayon                            */
/*  - oriente selon l'axe y                     */
/*  - avec ns facettes en decomposition         */
/*    longitudinale                             */
/*  - avec nl facettes en decomposition axiale  */
/*  - avec bases si bases != 0                  */
/* Retour fonction de la valeur de type :       */
/*  - NOMBRE_VERTICES : nombre de sommets       */
/*  - NOMBRE_TOTAL_FACETTES : nombre total      */
/*    de facettes                               */
/*  - NOMBRE_FACETTES_TRIANGULAIRES :           */
/*    nombre de facettes triangulaires          */
/*  - NOMBRE_FACETTES_QUADRANGULAIRES :         */
/*    nombre de facttes quadrangualire          */
/*  - n : nombre de facttes d'arite n           */
int informationSolidCylindre(double hauteur,double rayon,int ns,int nl,int bases,typeInfo type);

#endif
