Lib_Vector
Une petite librairie pour le calcul vectoriel 2D et 3D http://dev.virtual-loup-de-mer.org/vlmtools/browser/lib_vector
Structures disponibles
Deux structures disponible pour optimiser les calculs.
- Type vector2D
typedef struct { double x; double y; } vector2D;
- Type vector3D
typedef struct { double x; double y; double z; } vector3D;
Fonctions disponibles
- vector2D Vector_Init2D(double x, double y); / vector3D Vector_Init3D(double x, double y, double z);
Création d'un vecteur à partir de ses composantes
- double Vector_Dot2D(vector2D u, vector2D v); / double Vector_Dot3D(vector3D u, vector3D v);
Calcul du produit scalaire (u . v)
- vector3D Vector_Cross2D(vector2D u, vector2D v); / vector3D Vector_Cross3D(vector3D u, vector3D v);
Calcul du produit vectoriel (u x v)
Attention: retourne un vecteur 3D
- double Vector_Norm2D(vector2D u); / double Vector_Norm3D(vector3D u);
Calcul de la norme du vecteur u
- double Vector_Ang2D(vector2D u, vector2D v); / double Vector_Ang3D(vector3D u, vector3D v);
Calcul de l'angle entre deux vecteurs
- vector2D Vector_Unit2D(vector2D u); / vector3D Vector_Unit3D(vector3D u);
Normalise le vecteur u (norme =1)
- vector2D Vector_Add2D(vector2D u, vector2D v); / vector3D Vector_Add3D(vector3D u, vector3D v);
Addition de deux vecteurs (u + v)
- vector2D Vector_Sub2D(vector2D u, vector2D v); / vector3D Vector_Sub3D(vector3D u, vector3D v);
Soustraction de deux vecteurs (u - v)
- vector2D Vector_Sca2D(vector2D u, double s); / vector3D Vector_Sca3D(vector3D u, double s);
Multipliction d'un vecteur par un scalaire (u x s)
- vector2D Vector_Slerp2D(vector2D u, vector2D v, double t); / vector3D Vector_Slerp3D(vector3D u, vector3D v, double t);
Interpolation sphérique linéaire
Calcul du vecteur interpolé entre les vecteurs u et v en fonction de t(0-1)
http://www.plunk.org/~hatch/rightway.php
- double Vector_NormInterpol(double a, double b, double t);
Calcul de l'interpolation entre deux valeurs a et b en fonction de t(0-1)
- void Vector_Print2D(char *s, vector2D u); / void Vector_Print3D(char *s, vector3D u);
Ecriture du vecteur u
- vector2D Vector_Nul2D(void); / vector3D Vector_Nul3D(void);
Création d'un vecteur nul
- vector2D Vector_Opp2D(vector2D u); / vector3D Vector_Opp3D(vector3D u);
Création d'un vecteur opposé au vecteur u
- double Vector_SinOverX(double x);
Calcul de sin(x)/x de manière optimisée
http://www.plunk.org/~hatch/rightway.php
