23 MRMESH_API void init(
const Vector3i& resolution = Vector3i::diagonal( 2 ),
const Box3f& initialBox = Box3f() );
43 const VertBitSet& validPoints_;
44 std::vector<Vector3f> refPointsGrid_;
46 VertCoords normedCoords_;
49 Vector3f applyToNormedPoint_(
const Vector3f& normedPoint, std::vector<Vector3f>& xPlaneCache, std::vector<Vector3f>& yLineCache, std::vector<Vector3f>& tempPoints )
const;
63 void addPair(
const Vector3f& src,
const Vector3f& tgt,
float w = 1.0f ) {
addPair( Vector3d( src ), Vector3d( tgt ),
double( w ) ); }
80 double sumWeight_{ 0.0 };
82 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> accumA_;
83 Eigen::Matrix<double, Eigen::Dynamic, 3> accumB_;
85 std::vector<int> pascalLineX_;
86 std::vector<int> pascalLineY_;
87 std::vector<int> pascalLineZ_;
89 Vector3d reverseDiagonal_;
91 double stabilizer_{ 0.1 };
103 const Vector3i& resolution = Vector3i::diagonal( 2 ),
const AffineXf3f* samplesToBox =
nullptr );
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Vector3f applySinglePoint(const Vector3f &point) const
Apply updated grid to given point.
void addOther(const FreeFormBestFit &other)
adds other instance of FreeFormBestFit if it has same ref grid
FreeFormDeformer(Mesh &mesh, const VertBitSet *region=nullptr)
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)
FreeFormDeformer(VertCoords &coords, const VertBitSet &valid)
Only set mesh ref.
const Vector3i & getResolution() const
Definition MRFreeFormDeformer.h:40
FreeFormBestFit(const Box3d &box, const Vector3i &resolution=Vector3i::diagonal(2))
initialize the class, compute cached values and reserve space for matrices
void addPair(const Vector3f &src, const Vector3f &tgt, float w=1.0f)
Definition MRFreeFormDeformer.h:63
void addPair(const Vector3d &src, const Vector3d &tgt, double w=1.0)
add pair of source and target point to accumulator
std::vector< Vector3f > makeFreeFormOriginGrid(const Box3f &box, const Vector3i &resolution)
Returns positions of grid points in given box with given resolution.
void init(const Vector3i &resolution=Vector3i::diagonal(2), const Box3f &initialBox=Box3f())
double getStabilizer() const
Definition MRFreeFormDeformer.h:71
void setStabilizer(double stabilizer)
Definition MRFreeFormDeformer.h:70
int getIndex(const Vector3i &coordOfPointInGrid) const
Get one dimension index by grid coord.
void setAllRefGridPositions(const std::vector< Vector3f > &refPoints)
Definition MRFreeFormDeformer.h:39
const std::vector< Vector3f > & getAllRefGridPositions() const
Definition MRFreeFormDeformer.h:38
Vector3i getCoord(int index) const
Get grid coord by index.
void setRefGridPointPosition(const Vector3i &coordOfPointInGrid, const Vector3f &newPos)
Updates ref grid point position.
std::vector< Vector3f > findBestDeformationReferenceGrid()
finds best grid points positions to align source points to target points
const Vector3f & getRefGridPointPosition(const Vector3i &coordOfPointInGrid) const
Gets ref grid point position.
@ other
Angle, normally float. Measure in radians.
Definition MRFeatureObject.h:27
only for bindings generation
Definition MRCameraOrientationPlugin.h:8