Abstract class for fast approximate computation of generalized winding number for a mesh (using its AABB tree)
More...
#include <MRFastWindingNumber.h>

virtual  ~IFastWindingNumber ()=default 

virtual void  calcFromVector (std::vector< float > &res, const std::vector< Vector3f > &points, float beta, FaceId skipFace={})=0 
 calculates winding numbers in the points from given vector


virtual bool  calcSelfIntersections (FaceBitSet &res, float beta, ProgressCallback cb={})=0 
 calculates winding numbers for all centers of mesh's triangles. if winding number is less than 0 or greater then 1, that face is marked as selfintersected


virtual VoidOrErrStr  calcFromGrid (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, float beta, ProgressCallback cb={})=0 
 calculates winding numbers in each point from a threedimensional grid


virtual VoidOrErrStr  calcFromGridWithDistances (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, float windingNumberThreshold, float beta, float maxDistSq, float minDistSq, ProgressCallback cb)=0 
 calculates distances with the sign obtained from winding number in each point from a threedimensional grid


Abstract class for fast approximate computation of generalized winding number for a mesh (using its AABB tree)
◆ ~IFastWindingNumber()
virtual MR::IFastWindingNumber::~IFastWindingNumber 
( 
 ) 


virtualdefault 
◆ calcFromGrid()
calculates winding numbers in each point from a threedimensional grid
 Parameters

res  resulting winding numbers, will be resized automatically 
dims  dimensions of the grid 
gridToMeshXf  transform from integer grid locations to voxel's centers in mesh reference frame 
beta  determines the precision of the approximation: the more the better, recommended value 2 or more 
Implemented in MR::Cuda::FastWindingNumber, and MR::FastWindingNumber.
◆ calcFromGridWithDistances()
virtual VoidOrErrStr MR::IFastWindingNumber::calcFromGridWithDistances 
( 
std::vector< float > &  res, 


const Vector3i &  dims, 


const AffineXf3f &  gridToMeshXf, 


float  windingNumberThreshold, 


float  beta, 


float  maxDistSq, 


float  minDistSq, 


ProgressCallback  cb ) 

pure virtual 
calculates distances with the sign obtained from winding number in each point from a threedimensional grid
 Parameters

res  resulting signed distances, will be resized automatically 
dims  dimensions of the grid 
gridToMeshXf  transform from integer grid locations to voxel's centers in mesh reference frame 
windingNumberThreshold  positive distance if winding number below or equal this threshold 
beta  determines the precision of the approximation: the more the better, recommended value 2 or more 
Implemented in MR::Cuda::FastWindingNumber, and MR::FastWindingNumber.
◆ calcFromVector()
virtual void MR::IFastWindingNumber::calcFromVector 
( 
std::vector< float > &  res, 


const std::vector< Vector3f > &  points, 


float  beta, 


FaceId  skipFace = {} ) 

pure virtual 
calculates winding numbers in the points from given vector
 Parameters

res  resulting winding numbers, will be resized automatically 
points  incoming points 
beta  determines the precision of the approximation: the more the better, recommended value 2 or more 
skipFace  this triangle (if it is close to q ) will be skipped from summation 
Implemented in MR::Cuda::FastWindingNumber, and MR::FastWindingNumber.
◆ calcSelfIntersections()
calculates winding numbers for all centers of mesh's triangles. if winding number is less than 0 or greater then 1, that face is marked as selfintersected
 Parameters

res  resulting bit set 
beta  determines the precision of the approximation: the more the better, recommended value 2 or more 
 Returns
 false if the operation was canceled by the user
Implemented in MR::Cuda::FastWindingNumber, and MR::FastWindingNumber.
The documentation for this class was generated from the following file: