
//=============================================
// 
// Mercredi 12 decembre 2001
//  
// Arash Habibi
// 
// Plan.h
//
//============================================


#ifndef _PLAN_H_
#define _PLAN_H_

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#include "Vecteur.h"
#include "Rayon.h"

typedef struct
{
  vecteur_t point; 
  vecteur_t normal; 
} plan_t; 


void P_Check(plan_t p, char *commentaire); 

// le plan defini par un point et un vecteur normal. 
void P_Set1(plan_t *p, vecteur_t point, vecteur_t normal); 

// le plan defini par les 4 coefficients de son equation
void P_Set2(plan_t *p, double a, double b, double c, double d); 

// le plan defini par trois points. 
void P_Set3(plan_t *p, vecteur_t A, vecteur_t B, vecteur_t C); 

// a partir d'un plan donne son equation. 
void P_Equation(plan_t p, double *a, double *b, double *c, double *d);

// a partir d'un plan donne son equation. 
int P_Comprend(plan_t p, vecteur_t M); 

// a partir d'un plan donne P_X, P_Y ou P_Z
// qui represente l'axe auquel le plan est le plus 
// perpendiculaire. 
int P_OrientationGlobale(plan_t p); 

void P_IntersectRayon (plan_t p, rayon_t rayon, int *nb_points, vecteur_t *M, vecteur_t *normal); 
void P_IntersectRayon2(plan_t p, rayon_t rayon, int *nb_points, vecteur_t *M); 

#endif
