diff options
author | Jakob Odersky <jodersky@gmail.com> | 2011-04-12 17:42:39 +0000 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2011-04-12 17:42:39 +0000 |
commit | 38eee03034f777fbe05d8d0ca948375a4f5ab74c (patch) | |
tree | 96a40331832124bda373d8bb1b82bc2888786188 /src/main/Vector3D.h | |
parent | ae67598b211734f60a2e9f82622a84699eac4e45 (diff) | |
download | vhc-38eee03034f777fbe05d8d0ca948375a4f5ab74c.tar.gz vhc-38eee03034f777fbe05d8d0ca948375a4f5ab74c.tar.bz2 vhc-38eee03034f777fbe05d8d0ca948375a4f5ab74c.zip |
Debut de creation d'une classe scene pour la simulation graphique.
Diffstat (limited to 'src/main/Vector3D.h')
-rw-r--r-- | src/main/Vector3D.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main/Vector3D.h b/src/main/Vector3D.h index 5a836fd..a7764df 100644 --- a/src/main/Vector3D.h +++ b/src/main/Vector3D.h @@ -38,6 +38,9 @@ private: /** Composante z. */ double z; + /** Cache de norme. (-1 si pas encore calcule) */ + mutable double normCache; + public: /** Crée une nouvelle instance de <code>Vector3D</code>. @@ -45,7 +48,7 @@ public: * @param _y 2e composante * @param _z 3e composante */ - Vector3D(double _x, double _y, double _z) : x(_x), y(_y), z(_z) {}; + Vector3D(double _x, double _y, double _z) : x(_x), y(_y), z(_z), normCache(-1) {}; /** Retourne la composante x de ce vecteur. */ double getX() const {return x;}; @@ -95,7 +98,10 @@ public: Vector3D unit() const {return ~(*this);} /** Retourne la norme du vecteur. */ - double norm() const {return sqrt(dot(*this));} + double norm() const { + if (normCache == -1) normCache = sqrt(dot(*this)); + return normCache; + } /** Retourne la norme du vecteur au carre. */ double normSquare() const {return dot(*this);} |