#define _Poly_Triangulation_HeaderFile
#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
+#include <Standard_DefineHandle.hxx>
#include <Standard_Real.hxx>
#include <Standard_Integer.hxx>
#include <TColgp_Array1OfPnt.hxx>
public:
-
+ DEFINE_STANDARD_RTTIEXT(Poly_Triangulation, MMgt_TShared)
+
//! Constructs a triangulation from a set of triangles. The
//! triangulation is initialized without a triangle or a node, but capable of
//! containing nbNodes nodes, and nbTriangles
//! 2D nodes will be associated with 3D ones, (i.e. to
//! enable a 2D representation).
Standard_EXPORT Poly_Triangulation(const Standard_Integer nbNodes, const Standard_Integer nbTriangles, const Standard_Boolean UVNodes);
-
+
//! Constructs a triangulation from a set of triangles. The
//! triangulation is initialized with 3D points from Nodes and triangles
//! from Triangles.
Standard_EXPORT Poly_Triangulation(const TColgp_Array1OfPnt& Nodes, const Poly_Array1OfTriangle& Triangles);
-
+
//! Constructs a triangulation from a set of triangles. The
//! triangulation is initialized with 3D points from Nodes, 2D points from
//! UVNodes and triangles from Triangles, where
//! from Nodes on the surface approximated by the
//! constructed triangulation.
Standard_EXPORT Poly_Triangulation(const TColgp_Array1OfPnt& Nodes, const TColgp_Array1OfPnt2d& UVNodes, const Poly_Array1OfTriangle& Triangles);
-
+
//! Creates full copy of current triangulation
Standard_EXPORT virtual Handle(Poly_Triangulation) Copy() const;
-
+
+ //! Copy constructor for triangulation.
+ Standard_EXPORT Poly_Triangulation (const Handle(Poly_Triangulation)& theTriangulation);
+
//! Returns the deflection of this triangulation.
Standard_EXPORT Standard_Real Deflection() const;
-
- //! Sets the deflection of this triangulation to D.
+
+ //! Sets the deflection of this triangulation to theDeflection.
//! See more on deflection in Polygon2D
- Standard_EXPORT void Deflection (const Standard_Real D);
-
+ Standard_EXPORT void Deflection (const Standard_Real theDeflection);
+
//! Deallocates the UV nodes.
Standard_EXPORT void RemoveUVNodes();
-
+
//! Returns the number of nodes for this triangulation.
- //! Null if the nodes are not yet defined.
- Standard_Integer NbNodes() const;
-
+ Standard_Integer NbNodes() const { return myNbNodes; }
+
//! Returns the number of triangles for this triangulation.
- //! Null if the Triangles are not yet defined.
- Standard_Integer NbTriangles() const;
-
- //! Returns true if 2D nodes are associated with 3D nodes for
- //! this triangulation.
- Standard_Boolean HasUVNodes() const;
-
+ Standard_Integer NbTriangles() const { return myNbTriangles; }
+
+ //! Returns Standard_True if 2D nodes are associated with 3D nodes for this triangulation.
+ Standard_Boolean HasUVNodes() const { return !myUVNodes.IsNull(); }
+
//! Returns the table of 3D nodes (3D points) for this triangulation.
Standard_EXPORT const TColgp_Array1OfPnt& Nodes() const;
-
+
//! Returns the table of 3D nodes (3D points) for this triangulation.
//! The returned array is
//! shared. Therefore if the table is selected by reference, you
//! can, by simply modifying it, directly modify the data
//! structure of this triangulation.
Standard_EXPORT TColgp_Array1OfPnt& ChangeNodes();
-
+
+ //! Returns node at the given index.
+ //! Raises Standard_OutOfRange exception if theIndex is less than 1 or greater than NbNodes.
+ Standard_EXPORT const gp_Pnt& Node (const Standard_Integer theIndex) const;
+
+ //! Give access to the node at the given index.
+ //! Raises Standard_OutOfRange exception if theIndex is less than 1 or greater than NbNodes.
+ Standard_EXPORT gp_Pnt& ChangeNode (const Standard_Integer theIndex);
+
//! Returns the table of 2D nodes (2D points) associated with
//! each 3D node of this triangulation.
//! The function HasUVNodes checks if 2D nodes
//! are associated with the 3D nodes of this triangulation.
//! Const reference on the 2d nodes values.
Standard_EXPORT const TColgp_Array1OfPnt2d& UVNodes() const;
-
+
//! Returns the table of 2D nodes (2D points) associated with
//! each 3D node of this triangulation.
//! Function ChangeUVNodes shares the returned array.
//! you can, by simply modifying it, directly modify the data
//! structure of this triangulation.
Standard_EXPORT TColgp_Array1OfPnt2d& ChangeUVNodes();
-
+
+ //! Returns UVNode at the given index.
+ //! Raises Standard_OutOfRange exception if theIndex is less than 1 or greater than NbNodes.
+ Standard_EXPORT const gp_Pnt2d& UVNode (const Standard_Integer theIndex) const;
+
+ //! Give access to the UVNode at the given index.
+ //! Raises Standard_OutOfRange exception if theIndex is less than 1 or greater than NbNodes.
+ Standard_EXPORT gp_Pnt2d& ChangeUVNode (const Standard_Integer theIndex);
+
//! Returns the table of triangles for this triangulation.
Standard_EXPORT const Poly_Array1OfTriangle& Triangles() const;
-
+
//! Returns the table of triangles for this triangulation.
//! Function ChangeUVNodes shares the returned array.
//! Therefore if the table is selected by reference,
//! you can, by simply modifying it, directly modify the data
//! structure of this triangulation.
Standard_EXPORT Poly_Array1OfTriangle& ChangeTriangles();
-
+
+ //! Returns triangle at the given index.
+ //! Raises Standard_OutOfRange exception if theIndex is less than 1 or greater than NbTriangles.
+ Standard_EXPORT const Poly_Triangle& Triangle (const Standard_Integer theIndex) const;
+
+ //! Give access to the triangle at the given index.
+ //! Raises Standard_OutOfRange exception if theIndex is less than 1 or greater than NbTriangles.
+ Standard_EXPORT Poly_Triangle& ChangeTriangle (const Standard_Integer theIndex);
+
//! Sets the table of node normals.
//! raises exception if length of theNormals != 3*NbNodes
Standard_EXPORT void SetNormals (const Handle(TShort_HArray1OfShortReal)& theNormals);
-
+
+ //! Returns the table of node normals.
Standard_EXPORT const TShort_Array1OfShortReal& Normals() const;
-
- Standard_EXPORT TShort_Array1OfShortReal& ChangeNormals();
-
- Standard_EXPORT Standard_Boolean HasNormals() const;
+ //! Gives access to the table of node normals.
+ Standard_EXPORT TShort_Array1OfShortReal& ChangeNormals();
+ //! Returns Standard_True if nodal normals are defined.
+ Standard_EXPORT Standard_Boolean HasNormals() const;
+ //! @return normal at the given index.
+ //! Raises Standard_OutOfRange exception.
+ Standard_EXPORT const gp_Dir Normal (const Standard_Integer theIndex) const;
- DEFINE_STANDARD_RTTIEXT(Poly_Triangulation,MMgt_TShared)
+ //! Changes normal at the given index.
+ //! Raises Standard_OutOfRange exception.
+ Standard_EXPORT void SetNormal (const Standard_Integer theIndex,
+ const gp_Dir& theNormal);
protected:
-
-
-
-private:
-
-
- Standard_Real myDeflection;
- Standard_Integer myNbNodes;
- Standard_Integer myNbTriangles;
- TColgp_Array1OfPnt myNodes;
- Handle(TColgp_HArray1OfPnt2d) myUVNodes;
- Poly_Array1OfTriangle myTriangles;
- Handle(TShort_HArray1OfShortReal) myNormals;
-
+ Standard_Real myDeflection;
+ Standard_Integer myNbNodes;
+ Standard_Integer myNbTriangles;
+ TColgp_Array1OfPnt myNodes;
+ Handle(TColgp_HArray1OfPnt2d) myUVNodes;
+ Poly_Array1OfTriangle myTriangles;
+ Handle(TShort_HArray1OfShortReal) myNormals;
};
-
-#include <Poly_Triangulation.lxx>
-
-
-
-
-
#endif // _Poly_Triangulation_HeaderFile