Delaunay3DInterface Class Reference

#include <delaunay3d.h>

Public Member Functions

MAXON_METHOD Result< void > CopyFrom (const Delaunay3DInterface *src, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE)
 
MAXON_METHOD Result< void > Init (const Range< Vector > &workSpace)
 
MAXON_METHOD Result< void > CalculateDelaunayTetrahedralization ()
 
MAXON_METHOD Bool IsInitialized ()
 
MAXON_METHOD Result< void > AddPointsIntoTetrahedralization (const BaseArray< Vector > &newPointsIn)
 
MAXON_METHOD Result< void > AddPointIntoTetrahedralization (const Vector &newPointIn)
 
MAXON_METHOD const BaseArray< Tetrahedron > & GetTetrahedrons (Int &arrayCount, Int &pointCount) const
 
MAXON_METHOD const BaseArray< Tetrahedron > & GetTetrahedrons () const
 
MAXON_METHOD const BaseArray< Int32 > & GetPointsToTetConnections () const
 
MAXON_METHOD const BaseArray< Vector > & GetPoints () const
 
MAXON_METHOD ResultRef< BaseArray< Vector > > GetPointsWrite ()
 
Result< void > GetTetrahedronCopy (BaseArray< Tetrahedron > &arrayIn, Int &tetCount, Int &pointCount) const
 
MAXON_METHOD Int GetTetrahedronCount () const
 
MAXON_METHOD Int GetPointCount () const
 
MAXON_METHOD Result< void > Reset ()
 
MAXON_METHOD void Flush ()
 
MAXON_METHOD Result< BoolFindTetIndexContainingPoint (const Vector &point, Int32 &foundTetIndex, Int32 &onFace1, Int32 &onFace2) const
 
MAXON_METHOD Result< BoolFindTetContainingPoint (const Vector &point, Int32 &foundTetIndex) const
 

Static Public Member Functions

static MAXON_METHOD Delaunay3DInterfaceAlloc (MAXON_SOURCE_LOCATION_DECLARATION)
 
static MAXON_METHOD Float OrientDet (const Vector &planePointA, const Vector &planePointB, const Vector &planePointC, const Vector &testPoint)
 

Private Member Functions

 MAXON_INTERFACE_NONVIRTUAL (Delaunay3DInterface, MAXON_REFERENCE_NORMAL, "net.maxon.interface.delaunay3d")
 

Member Function Documentation

◆ MAXON_INTERFACE_NONVIRTUAL()

MAXON_INTERFACE_NONVIRTUAL ( Delaunay3DInterface  ,
MAXON_REFERENCE_NORMAL  ,
"net.maxon.interface.delaunay3d"   
)
private

◆ Alloc()

◆ CopyFrom()

Copies the content of another Delaunay3D Object into this one (copy and assign is not allowed)

Parameters
[in]srcThe Delaunay3D Object to copy from.
[in]resizeFlagsResize flag for internal list copies. recommended is default.
Returns
OK on success.

◆ Init()

MAXON_METHOD Result<void> Init ( const Range< Vector > &  workSpace)

The Initialization function for Delaunay3D. Needs to be called before points can be added into the tetrahedralization.

Parameters
[in]workSpaceThe space in which the input points will be in. Should not be too big for numeric reasons.
Returns
OK on success.

◆ CalculateDelaunayTetrahedralization()

MAXON_METHOD Result<void> CalculateDelaunayTetrahedralization ( )

Updates the Tetrahedralization if new points have been added. This triggers the final calculation or update of the tetrahedralization.

Returns
OK on success.

◆ IsInitialized()

MAXON_METHOD Bool IsInitialized ( )

Checks if Init() has been called. THREADSAFE.

Returns
true if Init() has beed called, false otherwise.

◆ AddPointsIntoTetrahedralization()

MAXON_METHOD Result<void> AddPointsIntoTetrahedralization ( const BaseArray< Vector > &  newPointsIn)

Adds a BaseArray of points into the tetrahedralization. CalculateDelaunayTetrahedralization() needs to be called afterwards to calculate the insertion.

Parameters
[in]newPointsInThe list of points, that will be added into the tetrahedralization.
Returns
OK on success.

◆ AddPointIntoTetrahedralization()

MAXON_METHOD Result<void> AddPointIntoTetrahedralization ( const Vector newPointIn)

Adds a single point into the tetrahedralization. CalculateDelaunayTetrahedralization() needs to be called afterwards to calculate the insertion.

Parameters
[in]newPointInThe point that will be added into the tetrahedralization.
Returns
OK on success.

◆ GetTetrahedrons() [1/2]

MAXON_METHOD const BaseArray<Tetrahedron>& GetTetrahedrons ( Int arrayCount,
Int pointCount 
) const

Gets a constant reference to the tetrahedrons list. THREADSAFE.

Parameters
[out]arrayCountWill be filled with the amount of tetrahedrons in the array reference.
[out]pointCountWill be filled with the amount of points inserted into the teterahedralization.
Returns
A constant reference to a BaseArray<Tetrahedron> with the tetrahedrons, that make up the tetrahedralization.

◆ GetTetrahedrons() [2/2]

MAXON_METHOD const BaseArray<Tetrahedron>& GetTetrahedrons ( ) const

Gets a constant reference to the tetrahedrons list. THREADSAFE.

Returns
A constant reference to a BaseArray<Tetrahedron> with the tetrahedrons, that make up the tetrahedralization.

◆ GetPointsToTetConnections()

MAXON_METHOD const BaseArray<Int32>& GetPointsToTetConnections ( ) const

Gets a constant reference to the connection of one of the points to an arbitrary adjacent tetrahedron. This can be used to greatly increase the calculation speed of a Voronoi conversion. THREADSAFE.

Returns
A constant reference to a BaseArray<Int32> with the tetrahedron index to the point at the same array position as added.

◆ GetPoints()

MAXON_METHOD const BaseArray<Vector>& GetPoints ( ) const

Gets a constant reference to the list of points, that are set for the Delaunay tetrahedralization. THREADSAFE.

Returns
A constant reference to a BaseArray<Vector> with the points of the tetrahedralization.

◆ GetPointsWrite()

MAXON_METHOD ResultRef<BaseArray<Vector> > GetPointsWrite ( )

Gets a reference to the list of points, that are set for the Delaunay tetrahedralization (writable). THREADSAFE.

Returns
A reference to a BaseArray<Vector> with the points of the tetrahedralization.

◆ GetTetrahedronCopy()

Result<void> GetTetrahedronCopy ( BaseArray< Tetrahedron > &  arrayIn,
Int tetCount,
Int pointCount 
) const

Gets a copy of the tetrahedrons making up the tetrahedralization. THREADSAFE.

Parameters
[out]arrayInWill be filled with the tetrahedron information.
[out]tetCountWill be filled with the amount of tetrahedrons.
[out]pointCountWill be filled with the amount of points.
Returns
OK on success.

◆ GetTetrahedronCount()

MAXON_METHOD Int GetTetrahedronCount ( ) const

Gets the current amount of tetrahedrons. THREADSAFE.

Returns
Amount of tetrahedrons.

◆ GetPointCount()

MAXON_METHOD Int GetPointCount ( ) const

Gets the current amount of points THREADSAFE.

Returns
Amount of points that were added.

◆ Reset()

MAXON_METHOD Result<void> Reset ( )

Resets the Delaunay object for a reuse with the same initialization.

Returns
OK on success.

◆ OrientDet()

static MAXON_METHOD Float OrientDet ( const Vector planePointA,
const Vector planePointB,
const Vector planePointC,
const Vector testPoint 
)
static

Static helper method to calculate the precise orientation of a point, in reference to a plane. the plane is spanned by planePointA, planePointB and planePointC. the tested point is testPoint. THREADSAFE.

Parameters
[in]planePointAPoint one of plane.
[in]planePointBPoint two of plane.
[in]planePointCPoint three of plane.
[in]testPointPoint to test for.
Returns
The determinant of the calculation. The sign of the result gives information about the side the point was is on.

◆ Flush()

MAXON_METHOD void Flush ( )

Resets all data structures for a new calculation. Needs to be reinitialized before its reused.

◆ FindTetIndexContainingPoint()

MAXON_METHOD Result<Bool> FindTetIndexContainingPoint ( const Vector point,
Int32 foundTetIndex,
Int32 onFace1,
Int32 onFace2 
) const

Returns the index of the tetrahedron the input point is in. THREADSAFE.

Parameters
[in]pointThe point position to search the tetrahedron index for.
[out]foundTetIndexThe index of the tetrahedron that the point was in.
[out]onFace1Is set if the point is on one of the tetrahedrons faces.
[out]onFace2Is set if the point is on one of the tetrahedron edges (there for on two faces).
Returns
True if the point was inside a tetrahedron, false otherwise or on error.

◆ FindTetContainingPoint()

MAXON_METHOD Result<Bool> FindTetContainingPoint ( const Vector point,
Int32 foundTetIndex 
) const

Returns the index of the tetrahedron the input point is in. THREADSAFE.

Parameters
[in]pointThe point position to search the tetrahedron index for.
[out]foundTetIndexThe index of the tetrahedron that the point was in.
Returns
True if the point was inside a tetrahedron, false otherwise or on error.