24 MRMESH_API const Vector3f& getRefGridPointPosition(
const Vector3i& coordOfPointInGrid )
const;
29 MRMESH_API Vector3f applySinglePoint(
const Vector3f& point )
const;
31 MRMESH_API int getIndex(
const Vector3i& coordOfPointInGrid )
const;
33 MRMESH_API Vector3i getCoord(
int index )
const;
35 const std::vector<Vector3f>& getAllRefGridPositions()
const {
return refPointsGrid_; }
37 const Vector3i& getResolution()
const {
return resolution_; }
40 const VertBitSet& validPoints_;
41 std::vector<Vector3f> refPointsGrid_;
43 VertCoords normedCoords_;
46 Vector3f applyToNormedPoint_(
const Vector3f& normedPoint, std::vector<Vector3f>& xPlaneCache, std::vector<Vector3f>& yLineCache, std::vector<Vector3f>& tempPoints )
const;
56 MRMESH_API FreeFormBestFit(
const Box3d& box,
const Vector3i& resolution = Vector3i::diagonal( 2 ) );
59 MRMESH_API void addPair(
const Vector3d& src,
const Vector3d& tgt,
double w = 1.0 );
60 void addPair(
const Vector3f& src,
const Vector3f& tgt,
float w = 1.0f ) { addPair( Vector3d( src ), Vector3d( tgt ),
double( w ) ); }
63 MRMESH_API void addOther(
const FreeFormBestFit& other );
67 void setStabilizer(
double stabilizer ) { stabilizer_ = stabilizer; }
68 double getStabilizer()
const {
return stabilizer_; }
71 [[nodiscard]]
MRMESH_API std::vector<Vector3f> findBestDeformationReferenceGrid();
77 double sumWeight_{ 0.0 };
79 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> accumA_;
80 Eigen::Matrix<double, Eigen::Dynamic, 3> accumB_;
82 std::vector<int> pascalLineX_;
83 std::vector<int> pascalLineY_;
84 std::vector<int> pascalLineZ_;
86 Vector3d reverseDiagonal_;
88 double stabilizer_{ 0.1 };
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Definition MRCameraOrientationPlugin.h:8
MRMESH_API std::vector< Vector3f > findBestFreeformDeformation(const Box3f &box, const std::vector< Vector3f > &source, const std::vector< Vector3f > &target, const Vector3i &resolution=Vector3i::diagonal(2), const AffineXf3f *samplesToBox=nullptr)
MRMESH_API std::vector< Vector3f > makeFreeFormOriginGrid(const Box3f &box, const Vector3i &resolution)
Returns positions of grid points in given box with given resolution.
static MR.Vector3i diagonal(int a)