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


#ifndef _VECTEUR_H_
#define _VECTEUR_H_

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

#define V_X (0)
#define V_Y (1)
#define V_Z (2)

typedef struct
{
  double x, y, z; 
} vecteur_t; 

void V_Check(vecteur_t v, char *commentaire); 

vecteur_t V_Set(vecteur_t *v, double x, double y, double z); 

int V_EstNul(vecteur_t v); 

vecteur_t V_Addition2(vecteur_t v1, vecteur_t v2); 
vecteur_t V_Addition3(vecteur_t v1, vecteur_t v2, vecteur_t v3); 
vecteur_t V_Addition4(vecteur_t v1, vecteur_t v2, vecteur_t v3, vecteur_t v4); 

vecteur_t V_Difference(vecteur_t v1, vecteur_t v2); 
vecteur_t V_Homothetie(double lambda, vecteur_t v); 

// axe vaut V_X, V_Y ou V_Z
vecteur_t V_ProjectionOrtho(vecteur_t v, int axe); 

double    V_ProduitScalaire(vecteur_t v1, vecteur_t v2); 
double    V_Norme(vecteur_t v); 
double    V_Distance(vecteur_t v1, vecteur_t v2); 
vecteur_t V_Unitaire(vecteur_t v); 

vecteur_t V_ProduitVectoriel(vecteur_t v1, vecteur_t v2); 

double V_DistPointDroite(vecteur_t M, vecteur_t A, vecteur_t u); 

#endif
