Loading LrPoint.cpp +39 −23 Original line number Diff line number Diff line Loading @@ -15,52 +15,53 @@ #if defined HAVE_CONFIG_H #include "config.h" #endif #include "LrPoint.h" #include "LrVector.h" const LrPoint LrPoint::ZERO (0.0,0.0,0.0); const LrPoint LrPoint::I (1.0,0.0,0.0); const LrPoint LrPoint::J (0.0,1.0,0.0); const LrPoint LrPoint::K (0.0,0.0,1.0); // ############################################################################ /*---------------------------------------------------------------------------* * constructors and destructor * *---------------------------------------------------------------------------*/ LrPoint::LrPoint() : x(0), y(0), z(0) { } // ############################################################################ LrPoint::LrPoint(const LrPoint &source) : x(source.x), y(source.y), z(source.z) { } // ############################################################################ LrPoint::LrPoint(Real x, Real y, Real z) : x(x), y(y), z(z) { } // ############################################################################ LrPoint::~LrPoint() { } // ############################################################################ void LrPoint::translate(const LrVector &v) { x+=v.x; y+=v.y; z+=v.z; } /*---------------------------------------------------------------------------* * assignement operator(s) * *---------------------------------------------------------------------------*/ // ############################################################################ LrPoint & LrPoint::operator = (const LrPoint &source) { if(this == &source) return (*this); Loading @@ -70,33 +71,42 @@ LrPoint & LrPoint::operator = (const LrPoint &source) return (*this); } /*---------------------------------------------------------------------------* * comparison operator(s) * *---------------------------------------------------------------------------*/ // ############################################################################ bool operator == (const LrPoint &lhs, const LrPoint &rhs) { return ((lhs.x == rhs.x) && (lhs.y == rhs.y) && (lhs.z == rhs.z)); } // ############################################################################ bool operator != (const LrPoint &lhs, const LrPoint &rhs) { return !(lhs == rhs); } /*---------------------------------------------------------------------------* * methodes de classe * *---------------------------------------------------------------------------*/ // ############################################################################ Real LrPoint::distance(const LrPoint &p1, const LrPoint &p2) { return sqrt(((p2.x - p1.x)*(p2.x - p1.x)) + ((p2.y - p1.y)*(p2.y - p1.y)) + ((p2.z - p1.z)*(p2.z - p1.z))) ; return sqrt(((p2.x - p1.x)*(p2.x - p1.x)) + ((p2.y - p1.y)*(p2.y - p1.y)) + ((p2.z - p1.z)*(p2.z - p1.z))) ; } // ############################################################################ Real LrPoint::distanceCarre(const LrPoint &p1, const LrPoint &p2) { return (((p2.x - p1.x)*(p2.x - p1.x)) + ((p2.y - p1.y)*(p2.y - p1.y)) + ((p2.z - p1.z)*(p2.z - p1.z))); return (((p2.x - p1.x)*(p2.x - p1.x)) + ((p2.y - p1.y)*(p2.y - p1.y)) + ((p2.z - p1.z)*(p2.z - p1.z))); } // ############################################################################ LrPoint LrPoint::middle(const LrPoint &p1, const LrPoint &p2) { LrPoint point((p2.x + p1.x)/2.0, Loading @@ -105,6 +115,8 @@ LrPoint LrPoint::middle(const LrPoint &p1, const LrPoint &p2) return point; } // ############################################################################ LrPoint LrPoint::interpolate(Real t, const LrPoint &p1, const LrPoint &p2) { return LrPoint(p1.x + t * (p2.x - p1.x), Loading @@ -112,6 +124,8 @@ LrPoint LrPoint::interpolate(Real t, const LrPoint &p1, const LrPoint &p2) p1.z + t * (p2.z - p1.z)); } // ############################################################################ LrPoint LrPoint::translate(const LrPoint &p, const LrVector &v) { LrPoint point; Loading @@ -120,3 +134,5 @@ LrPoint LrPoint::translate(const LrPoint &p, const LrVector &v) point.z = p.z + v.z; return point; } // ############################################################################ LrPoint.h +136 −37 Original line number Diff line number Diff line /** * @brief OBJET : un point 3D * @brief Classe pour la gestion d'point 3D * @file LrPoint.h * @date Vendredi 7 mars 2008 * @note Loading @@ -19,72 +19,171 @@ class LrVector; /** * @brief OBJET : un point 3D * * Ce fichier contient la classe qui gère la creation d'un point 3D */ class LrPoint { public: // constants // ********* ///@brief POINT ZERO static const LrPoint ZERO; ///@brief POINT I static const LrPoint I; ///@brief POINT J static const LrPoint J; ///@brief POINT K static const LrPoint K; // constructors and destructor // *************************** //NB : exceptionnellement les membres sont public ///@brief Composante x du point Real x; ///@brief Composante y du point Real y; ///@brief Composante z du point Real z; /** * @brief LrPoint constructor */ LrPoint(); /** * @brief LrPoint copy constructor * @param source LrPoint object reference */ LrPoint(const LrPoint &source); /** * @brief LrPoint personnal constructor * @param x composante x du point (Real) * @param y composante y du point (Real) * @param z composante z du point (Real) */ LrPoint(Real x, Real y, Real z); /** * @brief LrColor destructor */ virtual ~LrPoint(); // assignement operator(s) // *********************** LrPoint & operator = (const LrPoint &source); // comparison operator(s) // ********************** friend bool operator == (const LrPoint &lhs, const LrPoint &rhs); friend bool operator != (const LrPoint &lhs, const LrPoint &rhs); // accessors // ********* /** * @brief Accesseur pour obtenir la composante x du point * @return Real la valeur de la composante x */ Real getX() const; /** * @brief Methode pour modifier la composante x du point * @param x la composante (Real) */ void setX(Real x); /** * @brief Accesseur pour obtenir la composante y du point * @return Real la valeur de la composante y */ Real getY() const; /** * @brief Methode pour modifier la composante y du point * @param y la composante (Real) */ void setY(Real y); /** * @brief Accesseur pour obtenir la composante z du point * @return Real la valeur de la composante z */ Real getZ() const; /** * @brief Methode pour modifier la composante z du point * @param z la composante (Real) */ void setZ(Real z); /** * @brief Methode pour modifier les comosantes (x,y,z) du point * @param x la composante (Real) * @param y la composante (Real) * @param z la composante (Real) */ void setXYZ(Real x, Real y, Real z); // miscellaneous functions // *********************** /** * @brief Opérateur d'affectation * @param source LrPoint modèle * @return Retourne un nouveau LrPoint */ LrPoint & operator = (const LrPoint &source); /** * @brief Opérateur d'égalité * @param lhs Opérande gauche de type LrPoint * @param rhs Opérande droite de type LrPoint * @return Retourne vrai si lhs et rhs sont égaux */ friend bool operator == (const LrPoint &lhs, const LrPoint &rhs); /** * @brief Opérateur d'égalité * @param lhs Opérande gauche de type LrPoint * @param rhs Opérande droite de type LrPoint * @return Retourne vrai si lhs et rhs sont différents */ friend bool operator != (const LrPoint &lhs, const LrPoint &rhs); /** * @brief Methode permettant de connaitre la distance entre 2 points * @param p1 Opérande gauche de type LrPoint * @param p2 Opérande droite de type LrPoint * @return Retourne un Real contenant la distance entre p1 et p2 */ static Real distance(const LrPoint &p1, const LrPoint &p2); static Real distanceCarre(const LrPoint &p1, const LrPoint &p2); static LrPoint middle(const LrPoint &p1, const LrPoint &p2); static LrPoint interpolate(Real t, const LrPoint &p1, const LrPoint &p2); static LrPoint translate(const LrPoint &p, const LrVector &v); void translate(const LrVector &v); /** * @brief Methode permettant de connaitre la distance² entre 2 points * @param p1 Opérande gauche de type LrPoint * @param p2 Opérande droite de type LrPoint * @return Retourne un Real contenant la distance² entre p1 et p2 */ static Real distanceCarre(const LrPoint &p1, const LrPoint &p2); // data // **** /** * @brief Methode permettant de connaitre le point qui se trouve entre * @brief 2 points * @param p1 Opérande gauche de type LrPoint * @param p2 Opérande droite de type LrPoint * @return Retourne un LrPoint qui est entre p1 et p2 */ static LrPoint middle(const LrPoint &p1, const LrPoint &p2); // public members EXCEPTIONNALY : to simplify use of this class Real x, y, z; /** * @brief Methode permettant de connaitre le point qui se trouve entre * @brief 2 points en fonction de la distance t * @param t la distance (Real) * @param p1 point de type LrPoint * @param p2 point de type LrPoint * @return Retourne un LrPoint qui est entre p1 et p2 */ static LrPoint interpolate(Real t, const LrPoint &p1, const LrPoint &p2); /** * @brief Methode qui translate un point à partir d'un vecteur * @param p point de type LrPoint * @param v vecteur de translation de type LrVector * @return Retourne un LrPoint */ static LrPoint translate(const LrPoint &p, const LrVector &v); private: /** * @brief Methode qui translate un point à partir d'un vecteur * @param v vecteur de translation de type LrVector */ void translate(const LrVector &v); }; Loading Loading
LrPoint.cpp +39 −23 Original line number Diff line number Diff line Loading @@ -15,52 +15,53 @@ #if defined HAVE_CONFIG_H #include "config.h" #endif #include "LrPoint.h" #include "LrVector.h" const LrPoint LrPoint::ZERO (0.0,0.0,0.0); const LrPoint LrPoint::I (1.0,0.0,0.0); const LrPoint LrPoint::J (0.0,1.0,0.0); const LrPoint LrPoint::K (0.0,0.0,1.0); // ############################################################################ /*---------------------------------------------------------------------------* * constructors and destructor * *---------------------------------------------------------------------------*/ LrPoint::LrPoint() : x(0), y(0), z(0) { } // ############################################################################ LrPoint::LrPoint(const LrPoint &source) : x(source.x), y(source.y), z(source.z) { } // ############################################################################ LrPoint::LrPoint(Real x, Real y, Real z) : x(x), y(y), z(z) { } // ############################################################################ LrPoint::~LrPoint() { } // ############################################################################ void LrPoint::translate(const LrVector &v) { x+=v.x; y+=v.y; z+=v.z; } /*---------------------------------------------------------------------------* * assignement operator(s) * *---------------------------------------------------------------------------*/ // ############################################################################ LrPoint & LrPoint::operator = (const LrPoint &source) { if(this == &source) return (*this); Loading @@ -70,33 +71,42 @@ LrPoint & LrPoint::operator = (const LrPoint &source) return (*this); } /*---------------------------------------------------------------------------* * comparison operator(s) * *---------------------------------------------------------------------------*/ // ############################################################################ bool operator == (const LrPoint &lhs, const LrPoint &rhs) { return ((lhs.x == rhs.x) && (lhs.y == rhs.y) && (lhs.z == rhs.z)); } // ############################################################################ bool operator != (const LrPoint &lhs, const LrPoint &rhs) { return !(lhs == rhs); } /*---------------------------------------------------------------------------* * methodes de classe * *---------------------------------------------------------------------------*/ // ############################################################################ Real LrPoint::distance(const LrPoint &p1, const LrPoint &p2) { return sqrt(((p2.x - p1.x)*(p2.x - p1.x)) + ((p2.y - p1.y)*(p2.y - p1.y)) + ((p2.z - p1.z)*(p2.z - p1.z))) ; return sqrt(((p2.x - p1.x)*(p2.x - p1.x)) + ((p2.y - p1.y)*(p2.y - p1.y)) + ((p2.z - p1.z)*(p2.z - p1.z))) ; } // ############################################################################ Real LrPoint::distanceCarre(const LrPoint &p1, const LrPoint &p2) { return (((p2.x - p1.x)*(p2.x - p1.x)) + ((p2.y - p1.y)*(p2.y - p1.y)) + ((p2.z - p1.z)*(p2.z - p1.z))); return (((p2.x - p1.x)*(p2.x - p1.x)) + ((p2.y - p1.y)*(p2.y - p1.y)) + ((p2.z - p1.z)*(p2.z - p1.z))); } // ############################################################################ LrPoint LrPoint::middle(const LrPoint &p1, const LrPoint &p2) { LrPoint point((p2.x + p1.x)/2.0, Loading @@ -105,6 +115,8 @@ LrPoint LrPoint::middle(const LrPoint &p1, const LrPoint &p2) return point; } // ############################################################################ LrPoint LrPoint::interpolate(Real t, const LrPoint &p1, const LrPoint &p2) { return LrPoint(p1.x + t * (p2.x - p1.x), Loading @@ -112,6 +124,8 @@ LrPoint LrPoint::interpolate(Real t, const LrPoint &p1, const LrPoint &p2) p1.z + t * (p2.z - p1.z)); } // ############################################################################ LrPoint LrPoint::translate(const LrPoint &p, const LrVector &v) { LrPoint point; Loading @@ -120,3 +134,5 @@ LrPoint LrPoint::translate(const LrPoint &p, const LrVector &v) point.z = p.z + v.z; return point; } // ############################################################################
LrPoint.h +136 −37 Original line number Diff line number Diff line /** * @brief OBJET : un point 3D * @brief Classe pour la gestion d'point 3D * @file LrPoint.h * @date Vendredi 7 mars 2008 * @note Loading @@ -19,72 +19,171 @@ class LrVector; /** * @brief OBJET : un point 3D * * Ce fichier contient la classe qui gère la creation d'un point 3D */ class LrPoint { public: // constants // ********* ///@brief POINT ZERO static const LrPoint ZERO; ///@brief POINT I static const LrPoint I; ///@brief POINT J static const LrPoint J; ///@brief POINT K static const LrPoint K; // constructors and destructor // *************************** //NB : exceptionnellement les membres sont public ///@brief Composante x du point Real x; ///@brief Composante y du point Real y; ///@brief Composante z du point Real z; /** * @brief LrPoint constructor */ LrPoint(); /** * @brief LrPoint copy constructor * @param source LrPoint object reference */ LrPoint(const LrPoint &source); /** * @brief LrPoint personnal constructor * @param x composante x du point (Real) * @param y composante y du point (Real) * @param z composante z du point (Real) */ LrPoint(Real x, Real y, Real z); /** * @brief LrColor destructor */ virtual ~LrPoint(); // assignement operator(s) // *********************** LrPoint & operator = (const LrPoint &source); // comparison operator(s) // ********************** friend bool operator == (const LrPoint &lhs, const LrPoint &rhs); friend bool operator != (const LrPoint &lhs, const LrPoint &rhs); // accessors // ********* /** * @brief Accesseur pour obtenir la composante x du point * @return Real la valeur de la composante x */ Real getX() const; /** * @brief Methode pour modifier la composante x du point * @param x la composante (Real) */ void setX(Real x); /** * @brief Accesseur pour obtenir la composante y du point * @return Real la valeur de la composante y */ Real getY() const; /** * @brief Methode pour modifier la composante y du point * @param y la composante (Real) */ void setY(Real y); /** * @brief Accesseur pour obtenir la composante z du point * @return Real la valeur de la composante z */ Real getZ() const; /** * @brief Methode pour modifier la composante z du point * @param z la composante (Real) */ void setZ(Real z); /** * @brief Methode pour modifier les comosantes (x,y,z) du point * @param x la composante (Real) * @param y la composante (Real) * @param z la composante (Real) */ void setXYZ(Real x, Real y, Real z); // miscellaneous functions // *********************** /** * @brief Opérateur d'affectation * @param source LrPoint modèle * @return Retourne un nouveau LrPoint */ LrPoint & operator = (const LrPoint &source); /** * @brief Opérateur d'égalité * @param lhs Opérande gauche de type LrPoint * @param rhs Opérande droite de type LrPoint * @return Retourne vrai si lhs et rhs sont égaux */ friend bool operator == (const LrPoint &lhs, const LrPoint &rhs); /** * @brief Opérateur d'égalité * @param lhs Opérande gauche de type LrPoint * @param rhs Opérande droite de type LrPoint * @return Retourne vrai si lhs et rhs sont différents */ friend bool operator != (const LrPoint &lhs, const LrPoint &rhs); /** * @brief Methode permettant de connaitre la distance entre 2 points * @param p1 Opérande gauche de type LrPoint * @param p2 Opérande droite de type LrPoint * @return Retourne un Real contenant la distance entre p1 et p2 */ static Real distance(const LrPoint &p1, const LrPoint &p2); static Real distanceCarre(const LrPoint &p1, const LrPoint &p2); static LrPoint middle(const LrPoint &p1, const LrPoint &p2); static LrPoint interpolate(Real t, const LrPoint &p1, const LrPoint &p2); static LrPoint translate(const LrPoint &p, const LrVector &v); void translate(const LrVector &v); /** * @brief Methode permettant de connaitre la distance² entre 2 points * @param p1 Opérande gauche de type LrPoint * @param p2 Opérande droite de type LrPoint * @return Retourne un Real contenant la distance² entre p1 et p2 */ static Real distanceCarre(const LrPoint &p1, const LrPoint &p2); // data // **** /** * @brief Methode permettant de connaitre le point qui se trouve entre * @brief 2 points * @param p1 Opérande gauche de type LrPoint * @param p2 Opérande droite de type LrPoint * @return Retourne un LrPoint qui est entre p1 et p2 */ static LrPoint middle(const LrPoint &p1, const LrPoint &p2); // public members EXCEPTIONNALY : to simplify use of this class Real x, y, z; /** * @brief Methode permettant de connaitre le point qui se trouve entre * @brief 2 points en fonction de la distance t * @param t la distance (Real) * @param p1 point de type LrPoint * @param p2 point de type LrPoint * @return Retourne un LrPoint qui est entre p1 et p2 */ static LrPoint interpolate(Real t, const LrPoint &p1, const LrPoint &p2); /** * @brief Methode qui translate un point à partir d'un vecteur * @param p point de type LrPoint * @param v vecteur de translation de type LrVector * @return Retourne un LrPoint */ static LrPoint translate(const LrPoint &p, const LrVector &v); private: /** * @brief Methode qui translate un point à partir d'un vecteur * @param v vecteur de translation de type LrVector */ void translate(const LrVector &v); }; Loading