MeshLib C++ Docs
Loading...
Searching...
No Matches
MR::PointToPointAligningTransform Class Reference

#include <MRMesh/MRPointToPointAligningTransform.h>

Public Member Functions

void add (const Vector3d &p1, const Vector3d &p2, double w=1)
 Add one pair of points in the set.
void add (const Vector3f &p1, const Vector3f &p2, float w=1)
 Add one pair of points in the set.
void add (const PointToPointAligningTransform &other)
 Add another two sets of points.
void clear ()
 Clear sets.
Vector3d centroid1 () const
 returns weighted centroid of points p1 accumulated so far
Vector3d centroid2 () const
 returns weighted centroid of points p2 accumulated so far
double totalWeight () const
 returns summed weight of points accumulated so far
AffineXf3d findBestRigidXf () const
AffineXf3d findBestRigidScaleXf () const
 this version searches for best rigid body transformation with uniform scaling
AffineXf3d findBestRigidXfFixedRotationAxis (const Vector3d &axis) const
 this version searches for best transformation where rotation is allowed only around given axis and with arbitrary translation
AffineXf3d findBestRigidXfOrthogonalRotationAxis (const Vector3d &ort) const
 this version searches for best transformation where rotation is allowed only around axes orthogonal to given one
Vector3d findBestTranslation () const
 Simplified solution for translational part only.

Detailed Description

This class and its main method can be used to solve the problem well-known as the absolute orientation problem. It means computing the transformation that aligns two sets of points for which correspondence is known.

Member Function Documentation

◆ add() [1/3]

void MR::PointToPointAligningTransform::add ( const PointToPointAligningTransform & other)

Add another two sets of points.

◆ add() [2/3]

void MR::PointToPointAligningTransform::add ( const Vector3d & p1,
const Vector3d & p2,
double w = 1 )

Add one pair of points in the set.

◆ add() [3/3]

void MR::PointToPointAligningTransform::add ( const Vector3f & p1,
const Vector3f & p2,
float w = 1 )
inline

Add one pair of points in the set.

◆ centroid1()

Vector3d MR::PointToPointAligningTransform::centroid1 ( ) const
inlinenodiscard

returns weighted centroid of points p1 accumulated so far

◆ centroid2()

Vector3d MR::PointToPointAligningTransform::centroid2 ( ) const
inlinenodiscard

returns weighted centroid of points p2 accumulated so far

◆ clear()

void MR::PointToPointAligningTransform::clear ( )
inline

Clear sets.

◆ findBestRigidScaleXf()

AffineXf3d MR::PointToPointAligningTransform::findBestRigidScaleXf ( ) const
nodiscard

this version searches for best rigid body transformation with uniform scaling

◆ findBestRigidXf()

AffineXf3d MR::PointToPointAligningTransform::findBestRigidXf ( ) const
nodiscard

Compute transformation as the solution to a least squares formulation of the problem: xf( p1_i ) = p2_i this version searches for best rigid body transformation

◆ findBestRigidXfFixedRotationAxis()

AffineXf3d MR::PointToPointAligningTransform::findBestRigidXfFixedRotationAxis ( const Vector3d & axis) const
nodiscard

this version searches for best transformation where rotation is allowed only around given axis and with arbitrary translation

◆ findBestRigidXfOrthogonalRotationAxis()

AffineXf3d MR::PointToPointAligningTransform::findBestRigidXfOrthogonalRotationAxis ( const Vector3d & ort) const
nodiscard

this version searches for best transformation where rotation is allowed only around axes orthogonal to given one

◆ findBestTranslation()

Vector3d MR::PointToPointAligningTransform::findBestTranslation ( ) const
nodiscard

Simplified solution for translational part only.

◆ totalWeight()

double MR::PointToPointAligningTransform::totalWeight ( ) const
inlinenodiscard

returns summed weight of points accumulated so far


The documentation for this class was generated from the following file: