Provides a triangulation for a surface, a set of surfaces, or more generally a shape.
More...
|
| | Poly_Triangulation () |
| | Constructs an empty triangulation.
|
| |
| | Poly_Triangulation (const int theNbNodes, const int theNbTriangles, const bool theHasUVNodes, const bool theHasNormals=false) |
| | Constructs a triangulation from a set of triangles. The triangulation is initialized without a triangle or a node, but capable of containing specified number of nodes and triangles.
|
| |
| | Poly_Triangulation (const NCollection_Array1< gp_Pnt > &Nodes, const NCollection_Array1< Poly_Triangle > &Triangles) |
| | Constructs a triangulation from a set of triangles. The triangulation is initialized with 3D points from Nodes and triangles from Triangles.
|
| |
| | Poly_Triangulation (const NCollection_Array1< gp_Pnt > &Nodes, const NCollection_Array1< gp_Pnt2d > &UVNodes, const NCollection_Array1< Poly_Triangle > &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 coordinates of a 2D point from UVNodes are the (u, v) parameters of the corresponding 3D point from Nodes on the surface approximated by the constructed triangulation.
|
| |
| | ~Poly_Triangulation () override |
| | Destructor.
|
| |
| virtual occ::handle< Poly_Triangulation > | Copy () const |
| | Creates full copy of current triangulation.
|
| |
| | Poly_Triangulation (const occ::handle< Poly_Triangulation > &theTriangulation) |
| | Copy constructor for triangulation.
|
| |
| double | Deflection () const |
| | Returns the deflection of this triangulation.
|
| |
| void | Deflection (const double theDeflection) |
| | Sets the deflection of this triangulation to theDeflection. See more on deflection in Polygon2D.
|
| |
| const occ::handle< Poly_TriangulationParameters > & | Parameters () const |
| | Returns initial set of parameters used to generate this triangulation.
|
| |
| void | Parameters (const occ::handle< Poly_TriangulationParameters > &theParams) |
| | Updates initial set of parameters used to generate this triangulation.
|
| |
| virtual void | Clear () |
| | Clears internal arrays of nodes and all attributes.
|
| |
| virtual bool | HasGeometry () const |
| | Returns TRUE if triangulation has some geometry.
|
| |
| int | NbNodes () const |
| | Returns the number of nodes for this triangulation.
|
| |
| int | NbTriangles () const |
| | Returns the number of triangles for this triangulation.
|
| |
| bool | HasUVNodes () const |
| | Returns true if 2D nodes are associated with 3D nodes for this triangulation.
|
| |
| bool | HasNormals () const |
| | Returns true if nodal normals are defined.
|
| |
| gp_Pnt | Node (int theIndex) const |
| | Returns a node at the given index.
|
| |
| void | SetNode (int theIndex, const gp_Pnt &thePnt) |
| | Sets a node coordinates.
|
| |
| gp_Pnt2d | UVNode (int theIndex) const |
| | Returns UV-node at the given index.
|
| |
| void | SetUVNode (int theIndex, const gp_Pnt2d &thePnt) |
| | Sets an UV-node coordinates.
|
| |
| const Poly_Triangle & | Triangle (int theIndex) const |
| | Returns triangle at the given index.
|
| |
| void | SetTriangle (int theIndex, const Poly_Triangle &theTriangle) |
| | Sets a triangle.
|
| |
| gp_Dir | Normal (int theIndex) const |
| | Returns normal at the given index.
|
| |
| void | Normal (int theIndex, NCollection_Vec3< float > &theVec3) const |
| | Returns normal at the given index.
|
| |
| void | SetNormal (const int theIndex, const NCollection_Vec3< float > &theNormal) |
| | Changes normal at the given index.
|
| |
| void | SetNormal (const int theIndex, const gp_Dir &theNormal) |
| | Changes normal at the given index.
|
| |
| Poly_MeshPurpose | MeshPurpose () const |
| | Returns mesh purpose bits.
|
| |
| void | SetMeshPurpose (const Poly_MeshPurpose thePurpose) |
| | Sets mesh purpose bits.
|
| |
| const Bnd_Box & | CachedMinMax () const |
| | Returns cached min - max range of triangulation data, which is VOID by default (e.g, no cached information).
|
| |
| void | SetCachedMinMax (const Bnd_Box &theBox) |
| | Sets a cached min - max range of this triangulation. The bounding box should exactly match actual range of triangulation data without a gap or transformation, or otherwise undefined behavior will be observed. Passing a VOID range invalidates the cache.
|
| |
| bool | HasCachedMinMax () const |
| | Returns TRUE if there is some cached min - max range of this triangulation.
|
| |
| void | UpdateCachedMinMax () |
| | Updates cached min - max range of this triangulation with bounding box of nodal data.
|
| |
| bool | MinMax (Bnd_Box &theBox, const gp_Trsf &theTrsf, const bool theIsAccurate=false) const |
| | Extends the passed box with bounding box of this triangulation. Uses cached min - max range when available and:
|
| |
| virtual void | DumpJson (Standard_OStream &theOStream, int theDepth=-1) const |
| | Dumps the content of me into the stream.
|
| |
| bool | IsDoublePrecision () const |
| | Returns TRUE if node positions are defined with double precision; TRUE by default.
|
| |
| void | SetDoublePrecision (bool theIsDouble) |
| | Set if node positions should be defined with double or single precision for 3D and UV nodes. Raises exception if data was already allocated.
|
| |
| void | ResizeNodes (int theNbNodes, bool theToCopyOld) |
| | Method resizing internal arrays of nodes (synchronously for all attributes).
|
| |
| void | ResizeTriangles (int theNbTriangles, bool theToCopyOld) |
| | Method resizing an internal array of triangles.
|
| |
| void | AddUVNodes () |
| | If an array for UV coordinates is not allocated yet, do it now.
|
| |
| void | RemoveUVNodes () |
| | Deallocates the UV nodes array.
|
| |
| void | AddNormals () |
| | If an array for normals is not allocated yet, do it now.
|
| |
| void | RemoveNormals () |
| | Deallocates the normals array.
|
| |
| void | ComputeNormals () |
| | Compute smooth normals by averaging triangle normals.
|
| |
| occ::handle< NCollection_HArray1< gp_Pnt > > | MapNodeArray () const |
| | Returns the table of 3D points for read-only access or NULL if nodes array is undefined. Poly_Triangulation::Node() should be used instead when possible. Returned object should not be used after Poly_Triangulation destruction.
|
| |
| occ::handle< NCollection_HArray1< Poly_Triangle > > | MapTriangleArray () const |
| | Returns the triangle array for read-only access or NULL if triangle array is undefined. Poly_Triangulation::Triangle() should be used instead when possible. Returned object should not be used after Poly_Triangulation destruction.
|
| |
| occ::handle< NCollection_HArray1< gp_Pnt2d > > | MapUVNodeArray () const |
| | Returns the table of 2D nodes for read-only access or NULL if UV nodes array is undefined. Poly_Triangulation::UVNode() should be used instead when possible. Returned object should not be used after Poly_Triangulation destruction.
|
| |
| occ::handle< NCollection_HArray1< float > > | MapNormalArray () const |
| | Returns the table of per-vertex normals for read-only access or NULL if normals array is undefined. Poly_Triangulation::Normal() should be used instead when possible. Returned object should not be used after Poly_Triangulation destruction.
|
| |
| NCollection_Array1< Poly_Triangle > & | InternalTriangles () |
| | Returns an internal array of triangles. Triangle()/SetTriangle() should be used instead in portable code.
|
| |
| Poly_ArrayOfNodes & | InternalNodes () |
| | Returns an internal array of nodes. Node()/SetNode() should be used instead in portable code.
|
| |
| Poly_ArrayOfUVNodes & | InternalUVNodes () |
| | Returns an internal array of UV nodes. UBNode()/SetUVNode() should be used instead in portable code.
|
| |
| NCollection_Array1< NCollection_Vec3< float > > & | InternalNormals () |
| | Return an internal array of normals. Normal()/SetNormal() should be used instead in portable code.
|
| |
| void | SetNormals (const occ::handle< NCollection_HArray1< float > > &theNormals) |
| |
| const NCollection_Array1< Poly_Triangle > & | Triangles () const |
| |
| NCollection_Array1< Poly_Triangle > & | ChangeTriangles () |
| |
| Poly_Triangle & | ChangeTriangle (const int theIndex) |
| |
Public Member Functions inherited from Standard_Transient |
| | Standard_Transient () |
| | Empty constructor.
|
| |
| | Standard_Transient (const Standard_Transient &) |
| | Copy constructor – does nothing.
|
| |
| Standard_Transient & | operator= (const Standard_Transient &) |
| | Assignment operator, needed to avoid copying reference counter.
|
| |
| virtual | ~Standard_Transient ()=default |
| | Destructor must be virtual.
|
| |
| virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
| | Returns a type descriptor about this object.
|
| |
| bool | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
| | Returns a true value if this is an instance of Type.
|
| |
| bool | IsInstance (const char *const theTypeName) const |
| | Returns a true value if this is an instance of TypeName.
|
| |
| bool | IsKind (const opencascade::handle< Standard_Type > &theType) const |
| | Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
| |
| bool | IsKind (const char *const theTypeName) const |
| | Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
| |
| Standard_Transient * | This () const |
| | Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
|
| |
| int | GetRefCount () const noexcept |
| | Get the reference counter of this object.
|
| |
| void | IncrementRefCounter () noexcept |
| | Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
|
| |
| int | DecrementRefCounter () noexcept |
| | Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
|
| |
| virtual void | Delete () const |
| | Memory deallocator for transient classes.
|
| |
|
Returns number of deferred nodes that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values. Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| std::atomic< Bnd_Box * > | myCachedMinMax {nullptr} |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| std::shared_mutex | myCachedMinMaxMutex |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| double | myDeflection |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| Poly_ArrayOfNodes | myNodes |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| NCollection_Array1< Poly_Triangle > | myTriangles |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| Poly_ArrayOfUVNodes | myUVNodes |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| NCollection_Array1< NCollection_Vec3< float > > | myNormals |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| Poly_MeshPurpose | myPurpose |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| occ::handle< Poly_TriangulationParameters > | myParams |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| virtual int | NbDeferredNodes () const |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| virtual int | NbDeferredTriangles () const |
| | Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
|
| |
| virtual bool | HasDeferredData () const |
| | Returns TRUE if there is some triangulation data that can be loaded using LoadDeferredData().
|
| |
| virtual bool | LoadDeferredData (const occ::handle< OSD_FileSystem > &theFileSystem=occ::handle< OSD_FileSystem >()) |
| | Loads triangulation data into itself from some deferred storage using specified shared input file system.
|
| |
| virtual occ::handle< Poly_Triangulation > | DetachedLoadDeferredData (const occ::handle< OSD_FileSystem > &theFileSystem=occ::handle< OSD_FileSystem >()) const |
| | Loads triangulation data into new Poly_Triangulation object from some deferred storage using specified shared input file system.
|
| |
| virtual bool | UnloadDeferredData () |
| | Releases triangulation data if it has connected deferred storage.
|
| |
| virtual occ::handle< Poly_Triangulation > | createNewEntity () const |
| | Creates new triangulation object (can be inheritor of Poly_Triangulation).
|
| |
| virtual bool | loadDeferredData (const occ::handle< OSD_FileSystem > &theFileSystem, const occ::handle< Poly_Triangulation > &theDestTriangulation) const |
| | Load triangulation data from deferred storage using specified shared input file system.
|
| |
| void | unsetCachedMinMax () |
| | Clears cached min - max range saved previously.
|
| |
| virtual Bnd_Box | computeBoundingBox (const gp_Trsf &theTrsf) const |
| | Calculates bounding box of nodal data.
|
| |
Provides a triangulation for a surface, a set of surfaces, or more generally a shape.
A triangulation consists of an approximate representation of the actual shape, using a collection of points and triangles. The points are located on the surface. The edges of the triangles connect adjacent points with a straight line that approximates the true curve on the surface.
A triangulation comprises:
- A table of 3D nodes (3D points on the surface).
- A table of triangles. Each triangle (Poly_Triangle object) comprises a triplet of indices in the table of 3D nodes specific to the triangulation.
- An optional table of 2D nodes (2D points), parallel to the table of 3D nodes. 2D point are the (u, v) parameters of the corresponding 3D point on the surface approximated by the triangulation.
- An optional table of 3D vectors, parallel to the table of 3D nodes, defining normals to the surface at specified 3D point.
- An optional deflection, which maximizes the distance from a point on the surface to the corresponding point on its approximate triangulation.
In many cases, algorithms do not need to work with the exact representation of a surface. A triangular representation induces simpler and more robust adjusting, faster performances, and the results are as good.