#include <MRCudaFastWindingNumber.h>
Public Member Functions | |
MRCUDA_API | FastWindingNumber (const Mesh &mesh) |
constructs this from AABB tree of given mesh; | |
MRCUDA_API void | calcFromVector (std::vector< float > &res, const std::vector< Vector3f > &points, float beta, FaceId skipFace={}) override |
calculates winding numbers in the points from given vector | |
MRCUDA_API bool | calcSelfIntersections (FaceBitSet &res, float beta, ProgressCallback cb) override |
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 self-intersected | |
MRCUDA_API VoidOrErrStr | calcFromGrid (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, float beta, ProgressCallback cb) override |
calculates winding numbers in each point from a three-dimensional grid | |
MRCUDA_API float | calcWithDistances (const Vector3f &p, float windingNumberThreshold, float beta, float maxDistSq, float minDistSq) |
MRCUDA_API VoidOrErrStr | calcFromGridWithDistances (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, float windingNumberThreshold, float beta, float maxDistSq, float minDistSq, ProgressCallback cb) override |
calculates distances with the sign obtained from winding number in each point from a three-dimensional grid | |
Public Member Functions inherited from MR::IFastWindingNumber | |
virtual | ~IFastWindingNumber ()=default |
the class for fast approximate computation of winding number for a mesh (using its AABB tree)
MRCUDA_API MR::Cuda::FastWindingNumber::FastWindingNumber | ( | const Mesh & | mesh | ) |
constructs this from AABB tree of given mesh;
|
overridevirtual |
calculates winding numbers in each point from a three-dimensional grid
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 |
Implements MR::IFastWindingNumber.
|
overridevirtual |
calculates distances with the sign obtained from winding number in each point from a three-dimensional grid
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 |
Implements MR::IFastWindingNumber.
|
overridevirtual |
calculates winding numbers in the points from given vector
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 |
Implements MR::IFastWindingNumber.
|
overridevirtual |
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 self-intersected
res | resulting bit set |
beta | determines the precision of the approximation: the more the better, recommended value 2 or more |
Implements MR::IFastWindingNumber.
MRCUDA_API float MR::Cuda::FastWindingNumber::calcWithDistances | ( | const Vector3f & | p, |
float | windingNumberThreshold, | ||
float | beta, | ||
float | maxDistSq, | ||
float | minDistSq ) |