MeshLib C++ Docs
Loading...
Searching...
No Matches
MRFastWindingNumber.h
Go to the documentation of this file.
1#pragma once
2
4#include "MRExpected.h"
5#include "MRId.h"
6
7namespace MR
8{
9
11class IFastWindingNumber
12{
13public:
14 virtual ~IFastWindingNumber() = default;
15
23 virtual Expected<void> calcFromVector( std::vector<float>& res, const std::vector<Vector3f>& points, float beta, FaceId skipFace = {}, const ProgressCallback& cb = {} ) = 0;
24
30 virtual Expected<void> calcSelfIntersections( FaceBitSet& res, float beta, const ProgressCallback& cb = {} ) = 0;
31
39 virtual Expected<void> calcFromGrid( std::vector<float>& res, const Vector3i& dims, const AffineXf3f& gridToMeshXf, float beta, const ProgressCallback& cb = {} ) = 0;
40
47 virtual Expected<void> calcFromGridWithDistances( std::vector<float>& res, const Vector3i& dims, const AffineXf3f& gridToMeshXf, const DistanceToMeshOptions& options, const ProgressCallback& cb ) = 0;
48};
49
54class MRMESH_CLASS FastWindingNumber : public IFastWindingNumber
55{
56public:
59 [[nodiscard]] MRMESH_API FastWindingNumber( const Mesh & mesh );
60
61 // see methods' descriptions in IFastWindingNumber
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;
67
68private:
69 [[nodiscard]] float calc_( const Vector3f & q, float beta, FaceId skipFace = {} ) const;
70
71 const Mesh & mesh_;
72 const AABBTree & tree_;
73 const Dipoles & dipoles_;
74};
75
77class IFastWindingNumberByParts
78{
79public:
80 virtual ~IFastWindingNumberByParts() = default;
81
86 using GridByPartsFunc = std::function<Expected<void> ( std::vector<float>&& data, const Vector3i& dims, int zOffset )>;
87
96 virtual Expected<void> calcFromGridByParts( GridByPartsFunc resFunc, const Vector3i& dims,
97 const AffineXf3f& gridToMeshXf, float beta, int layerOverlap, const ProgressCallback& cb ) = 0;
98
107 virtual Expected<void> calcFromGridWithDistancesByParts( GridByPartsFunc resFunc, const Vector3i& dims,
108 const AffineXf3f& gridToMeshXf, const DistanceToMeshOptions& options, int layerOverlap, const ProgressCallback& cb ) = 0;
109};
110
111} // namespace MR
#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