0032137: Coding Rules - merge redundant .lxx files into header files within Package gp
[occt.git] / src / gp / gp_Pnt.hxx
index 5f6e396..a80f5db 100644 (file)
 #include <Standard.hxx>
 #include <Standard_DefineAlloc.hxx>
 #include <Standard_Handle.hxx>
-
 #include <gp_XYZ.hxx>
 #include <Standard_Real.hxx>
 #include <Standard_Integer.hxx>
 #include <Standard_Boolean.hxx>
-class Standard_OutOfRange;
+
 class gp_XYZ;
+class Standard_OutOfRange;
 class gp_Ax1;
 class gp_Ax2;
 class gp_Trsf;
 class gp_Vec;
 
-
 //! Defines a 3D cartesian point.
 class gp_Pnt 
 {
@@ -38,168 +37,259 @@ public:
 
   DEFINE_STANDARD_ALLOC
 
-  
   //! Creates a point with zero coordinates.
-    gp_Pnt();
-  
+  gp_Pnt() {}
+
   //! Creates a point from a XYZ object.
-    gp_Pnt(const gp_XYZ& Coord);
-  
-
-  //! Creates a  point with its 3 cartesian's coordinates : Xp, Yp, Zp.
-    gp_Pnt(const Standard_Real Xp, const Standard_Real Yp, const Standard_Real Zp);
-  
-
-  //! Changes the coordinate of range Index :
-  //! Index = 1 => X is modified
-  //! Index = 2 => Y is modified
-  //! Index = 3 => Z is modified
-  //! Raised if Index != {1, 2, 3}.
-    void SetCoord (const Standard_Integer Index, const Standard_Real Xi);
-  
-  //! For this point, assigns  the values Xp, Yp and Zp to its three coordinates.
-    void SetCoord (const Standard_Real Xp, const Standard_Real Yp, const Standard_Real Zp);
-  
+  gp_Pnt (const gp_XYZ& theCoord)
+  : coord (theCoord)
+  {}
+
+  //! Creates a  point with its 3 cartesian's coordinates : theXp, theYp, theZp.
+  gp_Pnt (const Standard_Real theXp, const Standard_Real theYp, const Standard_Real theZp)
+  : coord (theXp, theYp, theZp)
+  {}
+
+  //! Changes the coordinate of range theIndex :
+  //! theIndex = 1 => X is modified
+  //! theIndex = 2 => Y is modified
+  //! theIndex = 3 => Z is modified
+  //! Raised if theIndex != {1, 2, 3}.
+  void SetCoord (const Standard_Integer theIndex, const Standard_Real theXi)
+  {
+    coord.SetCoord (theIndex, theXi);
+  }
+
+  //! For this point, assigns  the values theXp, theYp and theZp to its three coordinates.
+  void SetCoord (const Standard_Real theXp, const Standard_Real theYp, const Standard_Real theZp)
+  {
+    coord.SetCoord (theXp, theYp, theZp);
+  }
+
   //! Assigns the given value to the X coordinate of this point.
-    void SetX (const Standard_Real X);
-  
+  void SetX (const Standard_Real theX) { coord.SetX (theX); }
+
   //! Assigns the given value to the Y coordinate of this point.
-    void SetY (const Standard_Real Y);
-  
+  void SetY (const Standard_Real theY) { coord.SetY (theY); }
+
   //! Assigns the given value to the Z coordinate of this point.
-    void SetZ (const Standard_Real Z);
-  
-  //! Assigns the three coordinates of Coord to this point.
-    void SetXYZ (const gp_XYZ& Coord);
-  
-
-  //! Returns the coordinate of corresponding to the value of  Index :
-  //! Index = 1 => X is returned
-  //! Index = 2 => Y is returned
-  //! Index = 3 => Z is returned
-  //! Raises OutOfRange if Index != {1, 2, 3}.
-  //! Raised if Index != {1, 2, 3}.
-    Standard_Real Coord (const Standard_Integer Index) const;
-  
-  //! For this point gives its three coordinates Xp, Yp and Zp.
-    void Coord (Standard_Real& Xp, Standard_Real& Yp, Standard_Real& Zp) const;
-  
+  void SetZ (const Standard_Real theZ) { coord.SetZ (theZ); }
+
+  //! Assigns the three coordinates of theCoord to this point.
+  void SetXYZ (const gp_XYZ& theCoord) { coord = theCoord; }
+
+  //! Returns the coordinate of corresponding to the value of theIndex :
+  //! theIndex = 1 => X is returned
+  //! theIndex = 2 => Y is returned
+  //! theIndex = 3 => Z is returned
+  //! Raises OutOfRange if theIndex != {1, 2, 3}.
+  //! Raised if theIndex != {1, 2, 3}.
+  Standard_Real Coord (const Standard_Integer theIndex) const { return coord.Coord (theIndex); }
+
+  //! For this point gives its three coordinates theXp, theYp and theZp.
+  void Coord (Standard_Real& theXp, Standard_Real& theYp, Standard_Real& theZp) const
+  {
+    coord.Coord (theXp, theYp, theZp);
+  }
+
   //! For this point, returns its X coordinate.
-    Standard_Real X() const;
-  
+  Standard_Real X() const { return coord.X(); }
+
   //! For this point, returns its Y coordinate.
-    Standard_Real Y() const;
-  
+  Standard_Real Y() const { return coord.Y(); }
+
   //! For this point, returns its Z coordinate.
-    Standard_Real Z() const;
-  
+  Standard_Real Z() const { return coord.Z(); }
+
   //! For this point, returns its three coordinates as a XYZ object.
-    const gp_XYZ& XYZ() const;
-  
+  const gp_XYZ& XYZ() const { return coord; }
+
   //! For this point, returns its three coordinates as a XYZ object.
-    const gp_XYZ& Coord() const;
-  
+  const gp_XYZ& Coord() const { return coord; }
 
   //! Returns the coordinates of this point.
   //! Note: This syntax allows direct modification of the returned value.
-    gp_XYZ& ChangeCoord();
-  
+  gp_XYZ& ChangeCoord() { return coord; }
+
   //! Assigns the result of the following expression to this point
-  //! (Alpha*this + Beta*P) / (Alpha + Beta)
-    void BaryCenter (const Standard_Real Alpha, const gp_Pnt& P, const Standard_Real Beta);
-  
+  //! (theAlpha*this + theBeta*theP) / (theAlpha + theBeta)
+  void BaryCenter (const Standard_Real theAlpha, const gp_Pnt& theP, const Standard_Real theBeta)
+  {
+    coord.SetLinearForm (theAlpha, coord, theBeta, theP.coord);
+    coord.Divide (theAlpha + theBeta);
+  }
+
   //! Comparison
   //! Returns True if the distance between the two points is
-  //! lower or equal to LinearTolerance.
-    Standard_Boolean IsEqual (const gp_Pnt& Other, const Standard_Real LinearTolerance) const;
-  
+  //! lower or equal to theLinearTolerance.
+  Standard_Boolean IsEqual (const gp_Pnt& theOther, const Standard_Real theLinearTolerance) const
+  {
+    return Distance (theOther) <= theLinearTolerance;
+  }
+
   //! Computes the distance between two points.
-    Standard_Real Distance (const gp_Pnt& Other) const;
-  
+  Standard_Real Distance (const gp_Pnt& theOther) const;
+
   //! Computes the square distance between two points.
-    Standard_Real SquareDistance (const gp_Pnt& Other) const;
-  
+  Standard_Real SquareDistance (const gp_Pnt& theOther) const;
 
   //! Performs the symmetrical transformation of a point
-  //! with respect to the point P which is the center of
+  //! with respect to the point theP which is the center of
   //! the  symmetry.
-  Standard_EXPORT void Mirror (const gp_Pnt& P);
-  
+  Standard_EXPORT void Mirror (const gp_Pnt& theP);
 
   //! Performs the symmetrical transformation of a point
   //! with respect to an axis placement which is the axis
   //! of the symmetry.
-  Standard_NODISCARD Standard_EXPORT gp_Pnt Mirrored (const gp_Pnt& P) const;
-  
-  Standard_EXPORT void Mirror (const gp_Ax1& A1);
-  
+  Standard_NODISCARD Standard_EXPORT gp_Pnt Mirrored (const gp_Pnt& theP) const;
+
+  Standard_EXPORT void Mirror (const gp_Ax1& theA1);
 
   //! Performs the symmetrical transformation of a point
-  //! with respect to a plane. The axis placement A2 locates
+  //! with respect to a plane. The axis placement theA2 locates
   //! the plane of the symmetry : (Location, XDirection, YDirection).
-  Standard_NODISCARD Standard_EXPORT gp_Pnt Mirrored (const gp_Ax1& A1) const;
-  
-  Standard_EXPORT void Mirror (const gp_Ax2& A2);
-  
-
-  //! Rotates a point. A1 is the axis of the rotation.
-  //! Ang is the angular value of the rotation in radians.
-  Standard_NODISCARD Standard_EXPORT gp_Pnt Mirrored (const gp_Ax2& A2) const;
-  
-    void Rotate (const gp_Ax1& A1, const Standard_Real Ang);
-  
-  //! Scales a point. S is the scaling value.
-    Standard_NODISCARD gp_Pnt Rotated (const gp_Ax1& A1, const Standard_Real Ang) const;
-  
-    void Scale (const gp_Pnt& P, const Standard_Real S);
-  
-  //! Transforms a point with the transformation T.
-    Standard_NODISCARD gp_Pnt Scaled (const gp_Pnt& P, const Standard_Real S) const;
-  
-  Standard_EXPORT void Transform (const gp_Trsf& T);
-  
-
-  //! Translates a point in the direction of the vector V.
-  //! The magnitude of the translation is the vector's magnitude.
-  Standard_NODISCARD gp_Pnt Transformed (const gp_Trsf& T) const;
-  
-    void Translate (const gp_Vec& V);
-  
+  Standard_NODISCARD Standard_EXPORT gp_Pnt Mirrored (const gp_Ax1& theA1) const;
 
-  //! Translates a point from the point P1 to the point P2.
-    Standard_NODISCARD gp_Pnt Translated (const gp_Vec& V) const;
-  
-    void Translate (const gp_Pnt& P1, const gp_Pnt& P2);
-  
-    Standard_NODISCARD gp_Pnt Translated (const gp_Pnt& P1, const gp_Pnt& P2) const;
+  Standard_EXPORT void Mirror (const gp_Ax2& theA2);
 
+  //! Rotates a point. theA1 is the axis of the rotation.
+  //! theAng is the angular value of the rotation in radians.
+  Standard_NODISCARD Standard_EXPORT gp_Pnt Mirrored (const gp_Ax2& theA2) const;
 
-  //! Dumps the content of me into the stream
-  Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
+  void Rotate (const gp_Ax1& theA1, const Standard_Real theAng);
 
-  //! Inits the content of me from the stream
-  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
-
-protected:
+  Standard_NODISCARD gp_Pnt Rotated (const gp_Ax1& theA1, const Standard_Real theAng) const
+  {
+    gp_Pnt aP = *this;
+    aP.Rotate (theA1, theAng);
+    return aP;
+  }
 
+  //! Scales a point. theS is the scaling value.
+  void Scale (const gp_Pnt& theP, const Standard_Real theS);
 
+  Standard_NODISCARD gp_Pnt Scaled (const gp_Pnt& theP, const Standard_Real theS) const
+  {
+    gp_Pnt aPres = *this;
+    aPres.Scale (theP, theS);
+    return aPres;
+  }
 
+  //! Transforms a point with the transformation T.
+  Standard_EXPORT void Transform (const gp_Trsf& theT);
 
+  Standard_NODISCARD gp_Pnt Transformed (const gp_Trsf& theT) const
+  {
+    gp_Pnt aP = *this;
+    aP.Transform (theT);
+    return aP;
+  }
 
-private:
-
+  //! Translates a point in the direction of the vector theV.
+  //! The magnitude of the translation is the vector's magnitude.
+  void Translate (const gp_Vec& theV);
 
+  Standard_NODISCARD gp_Pnt Translated (const gp_Vec& theV) const;
 
-  gp_XYZ coord;
+  //! Translates a point from the point theP1 to the point theP2.
+  void Translate (const gp_Pnt& theP1, const gp_Pnt& theP2)
+  {
+    coord.Add (theP2.coord);
+    coord.Subtract (theP1.coord);
+  }
 
+  Standard_NODISCARD gp_Pnt Translated (const gp_Pnt& theP1, const gp_Pnt& theP2) const
+  {
+    gp_Pnt aP = *this;
+    aP.Translate (theP1, theP2);
+    return aP;
+  }
 
-};
+  //! Dumps the content of me into the stream
+  Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
+  //! Inits the content of me from the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
 
-#include <gp_Pnt.lxx>
+private:
 
+  gp_XYZ coord;
 
+};
 
+#include <gp_Trsf.hxx>
+#include <gp_Vec.hxx>
+#include <gp_XYZ.hxx>
 
+//=======================================================================
+//function : Distance
+// purpose :
+//=======================================================================
+inline Standard_Real gp_Pnt::Distance (const gp_Pnt& theOther) const
+{
+  Standard_Real aD=0,aDD;
+  const gp_XYZ& aXYZ = theOther.coord;
+  aDD = coord.X(); aDD -= aXYZ.X(); aDD *= aDD; aD += aDD;
+  aDD = coord.Y(); aDD -= aXYZ.Y(); aDD *= aDD; aD += aDD;
+  aDD = coord.Z(); aDD -= aXYZ.Z(); aDD *= aDD; aD += aDD;
+  return sqrt (aD);
+}
+
+//=======================================================================
+//function : SquareDistance
+// purpose :
+//=======================================================================
+inline Standard_Real gp_Pnt::SquareDistance (const gp_Pnt& theOther) const
+{
+  Standard_Real aD=0, aDD;
+  const gp_XYZ& XYZ = theOther.coord;
+  aDD = coord.X(); aDD -= XYZ.X(); aDD *= aDD; aD += aDD;
+  aDD = coord.Y(); aDD -= XYZ.Y(); aDD *= aDD; aD += aDD;
+  aDD = coord.Z(); aDD -= XYZ.Z(); aDD *= aDD; aD += aDD;
+  return aD;
+}
+
+//=======================================================================
+//function : Rotate
+// purpose :
+//=======================================================================
+inline void gp_Pnt::Rotate (const gp_Ax1& theA1, const Standard_Real theAng)
+{
+  gp_Trsf aT;
+  aT.SetRotation (theA1, theAng);
+  aT.Transforms (coord);
+}
+
+//=======================================================================
+//function : Scale
+// purpose :
+//=======================================================================
+inline void gp_Pnt::Scale (const gp_Pnt& theP, const Standard_Real theS)
+{
+  gp_XYZ aXYZ = theP.coord;
+  aXYZ.Multiply (1.0 - theS);
+  coord.Multiply (theS);
+  coord.Add (aXYZ);
+}
+
+//=======================================================================
+//function : Translate
+// purpose :
+//=======================================================================
+inline void gp_Pnt::Translate(const gp_Vec& theV)
+{
+  coord.Add (theV.XYZ());
+}
+
+//=======================================================================
+//function : Translated
+// purpose :
+//=======================================================================
+inline gp_Pnt gp_Pnt::Translated (const gp_Vec& theV) const
+{
+  gp_Pnt aP = *this;
+  aP.coord.Add (theV.XYZ());
+  return aP;
+}
 
 #endif // _gp_Pnt_HeaderFile