From 38eee03034f777fbe05d8d0ca948375a4f5ab74c Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 12 Apr 2011 17:42:39 +0000 Subject: Debut de creation d'une classe scene pour la simulation graphique. --- src/main/Vector3D.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/main/Vector3D.h') 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 Vector3D. @@ -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);} -- cgit v1.2.3