- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# src/Math/Vector3D.hpp

Go to the documentation of this file.

    00001 #ifndef VECTOR_3D_HPP
    00002 #define VECTOR_3D_HPP
    00003
    00004 // Détection du système cible...
    00005 #include "usgeDetectSystem.h"
    00006
    00007 // Classe mère
    00008 #include "Math.hpp"
    00009
    00010 namespace USpeedGameEngine
    00011 {
    00012
    00013 class Math::Vector3D
    00014 {
    00015     /****************
    00016     * Les attributs *
    00017     ****************/
    00018     public :
    00019         float x;
    00020         float y;
    00021         float z;
    00022     protected :
    00023     private :
    00024
    00025     /***************
    00026     * Les méthodes *
    00027     ***************/
    00028     public :
    00029         // Constructeurs
    00030         Vector3D();
    00031         Vector3D(float pX, float pY, float pZ);
    00032         Vector3D(Math::Vector3D *vector);
    00033         Vector3D(const Math::Vector3D &vector);
    00034         // Destructeur par défaut
    00035         ~Vector3D();
    00036
    00037         // Vérifie si le vecteur est unitaire (longeur proche de 1.0f)
    00038         bool isUnit();
    00039         // Vérifie si le vecteur est poinctuel (longeur proche de 0.0f)
    00040         bool isZero();
    00041         // Accesseurs x, y et z
    00042         float getX();
    00043         float getY();
    00044         float getZ();
    00045         // Accesseur aux 3 composantes du vecteur
    00046         void getValues(float *pX, float *pY, float *pZ);
    00047         // Définition des 3 composantes du vecteur
    00048         void setValues(float pX, float pY, float pZ);
    00049
    00050         // Détermine si le vecteur courant est parallèle au vecteur fourni
    00051         bool isParallel(Math::Vector3D *vector);
    00052         // Calcul de la longueur du vecteur
    00053         double getLength();
    00054         // Normalisation du vecteur
    00055         double normalize();
    00056         // En dessous du seuil de précision, les composantes sont mise à zéro
    00057         void zeroClamp();
    00058         // Arrondissement des composantes à la précision par défaut de la classe Math
    00059         void round();
    00060         // Génération d'un point, produit de deux vecteurs
    00061         float dotProduct(Math::Vector3D *vector);
    00062         // Produit en croix de deux vecteurs fournis vers le vecteur courant
    00063         bool crossProduct(Math::Vector3D *vect1, Math::Vector3D *vect2);
    00064         // Retourne l'angle en degrés du vecteur avec celui fourni
    00065         float getAngleDeg(Math::Vector3D *vector);
    00066         // Retourne l'angle en radian du vecteur avec celui fourni
    00067         float getAngleRad(Math::Vector3D *vector);
    00068         // Modification de l'échelle du vecteur
    00069         void scale(float scale);
    00070         // Opposé des composantes du vecteur
    00071         void negate();
    00072
    00074         // Opérateurs //
    00076         Math::Vector3D operator*(const Math::Vector3D &v);
    00077         Math::Vector3D operator+(const Math::Vector3D &v) const;
    00078         Math::Vector3D operator-(const Math::Vector3D &v) const;
    00079         Math::Vector3D operator-() const;
    00080         Math::Vector3D& operator=(const Math::Vector3D &v);
    00081         Math::Vector3D& operator*=(const float scalar);
    00082         Math::Vector3D& operator+=(const Math::Vector3D &v);
    00083         Math::Vector3D& operator-=(const Math::Vector3D &v);
    00084         bool operator==(const Vector3D &v) const;
    00085         bool operator!=(const Vector3D &v) const;
    00086
    00087     protected :
    00088     private :
    00089     };
    00090 }        // Fin "namespace USpeedGameEngine"
    00091
    00092 #endif