11class IFastWindingNumber
14 virtual ~IFastWindingNumber() =
default;
23 virtual Expected<void>
calcFromVector( std::vector<float>& res,
const std::vector<Vector3f>& points,
float beta, FaceId skipFace = {},
const ProgressCallback& cb = {} ) = 0;
30 virtual Expected<void>
calcSelfIntersections( FaceBitSet& res,
float beta,
const ProgressCallback& cb = {} ) = 0;
39 virtual Expected<void>
calcFromGrid( std::vector<float>& res,
const Vector3i& dims,
const AffineXf3f& gridToMeshXf,
float beta,
const ProgressCallback& cb = {} ) = 0;
47 virtual Expected<void>
calcFromGridWithDistances( std::vector<float>& res,
const Vector3i& dims,
const AffineXf3f& gridToMeshXf,
const DistanceToMeshOptions& options,
const ProgressCallback& cb ) = 0;
54class MRMESH_CLASS FastWindingNumber :
public IFastWindingNumber
59 [[nodiscard]]
MRMESH_API FastWindingNumber(
const Mesh & mesh );
62 MRMESH_API Expected<void> calcFromVector( std::vector<float>& res,
const std::vector<Vector3f>& points,
float beta, FaceId skipFace,
const ProgressCallback& cb )
override;
63 MRMESH_API Expected<void> calcSelfIntersections( FaceBitSet& res,
float beta,
const ProgressCallback& cb )
override;
64 MRMESH_API Expected<void> calcFromGrid( std::vector<float>& res,
const Vector3i& dims,
const AffineXf3f& gridToMeshXf,
float beta,
const ProgressCallback& cb )
override;
65 MRMESH_API float calcWithDistances(
const Vector3f& p,
const DistanceToMeshOptions& options );
66 MRMESH_API Expected<void> calcFromGridWithDistances( std::vector<float>& res,
const Vector3i& dims,
const AffineXf3f& gridToMeshXf,
const DistanceToMeshOptions& options,
const ProgressCallback& cb )
override;
69 [[nodiscard]]
float calc_(
const Vector3f & q,
float beta, FaceId skipFace = {} )
const;
72 const AABBTree & tree_;
73 const Dipoles & dipoles_;
77class IFastWindingNumberByParts
80 virtual ~IFastWindingNumberByParts() =
default;
86 using GridByPartsFunc = std::function<Expected<void> ( std::vector<float>&& data,
const Vector3i& dims,
int zOffset )>;
97 const AffineXf3f& gridToMeshXf,
float beta,
int layerOverlap,
const ProgressCallback& cb ) = 0;
108 const AffineXf3f& gridToMeshXf,
const DistanceToMeshOptions& options,
int layerOverlap,
const ProgressCallback& cb ) = 0;
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
unsafe void calcFromGridByParts(MR.Std._ByValue_Function_ExpectedVoidStdStringFuncFromStdVectorFloatRvalueRefConstMRVector3iRefInt resFunc, in MR.Vector3i dims, in MR.AffineXf3f gridToMeshXf, float beta, int layerOverlap, MR.Std.Const_Function_BoolFuncFromFloat cb)
unsafe void calcFromGridWithDistancesByParts(MR.Std._ByValue_Function_ExpectedVoidStdStringFuncFromStdVectorFloatRvalueRefConstMRVector3iRefInt resFunc, in MR.Vector3i dims, in MR.AffineXf3f gridToMeshXf, MR.Const_DistanceToMeshOptions options, int layerOverlap, MR.Std.Const_Function_BoolFuncFromFloat cb)
unsafe void calcSelfIntersections(MR.FaceBitSet res, float beta, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
unsafe void calcFromGrid(MR.Std.Vector_Float res, in MR.Vector3i dims, in MR.AffineXf3f gridToMeshXf, float beta, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
unsafe void calcFromGridWithDistances(MR.Std.Vector_Float res, in MR.Vector3i dims, in MR.AffineXf3f gridToMeshXf, MR.Const_DistanceToMeshOptions options, MR.Std.Const_Function_BoolFuncFromFloat cb)
unsafe void calcFromVector(MR.Std.Vector_Float res, MR.Std.Const_Vector_MRVector3f points, float beta, MR._InOpt_FaceId skipFace=default, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
Definition MRCameraOrientationPlugin.h:8