MeshLib Python Docs
Loading...
Searching...
No Matches
meshlib.mrmeshpy.PointToPlaneAligningTransform Class Reference

Public Member Functions

None __init__ (self)
 
None __init__ (self, PointToPlaneAligningTransform arg0)
 
None add (self, Vector3d p1, Vector3d p2, Vector3d normal2, float w=1)
 
None add (self, Vector3f p1, Vector3f p2, Vector3f normal2, float w=1)
 
RigidScaleXf3d calculateAmendment (self)
 
RigidScaleXf3d calculateAmendmentWithScale (self)
 
RigidScaleXf3d calculateFixedAxisAmendment (self, Vector3d axis)
 
RigidScaleXf3d calculateOrthogonalAxisAmendment (self, Vector3d ort)
 
None clear (self)
 
AffineXf3d findBestRigidScaleXf (self)
 
AffineXf3d findBestRigidXf (self)
 
AffineXf3d findBestRigidXfFixedRotationAxis (self, Vector3d axis)
 
AffineXf3d findBestRigidXfOrthogonalRotationAxis (self, Vector3d ort)
 
Vector3d findBestTranslation (self, Vector3d rotAngles='MR::Vector3d{}', float scale=1)
 
None prepare (self)
 

Detailed Description

Generated from:  MR::PointToPlaneAligningTransform

This class and its main method can be used to solve the problem of 3D shape alignment.
This algorithm uses a point-to-plane error metric in which the object of minimization is the sum of
the squared distance between a point and the tangent plane at its correspondence point.
To use this technique it's need to have small rotation angles. So there is an approximate solution.
The result of this algorithm is the transformation of first points (p1) which aligns it to the second ones (p2).

Constructor & Destructor Documentation

◆ __init__() [1/2]

None meshlib.mrmeshpy.PointToPlaneAligningTransform.__init__ ( self)
Implicit default constructor.

◆ __init__() [2/2]

None meshlib.mrmeshpy.PointToPlaneAligningTransform.__init__ ( self,
PointToPlaneAligningTransform arg0 )
Implicit copy constructor.

Member Function Documentation

◆ add() [1/2]

None meshlib.mrmeshpy.PointToPlaneAligningTransform.add ( self,
Vector3d p1,
Vector3d p2,
Vector3d normal2,
float w = 1 )
Add a pair of corresponding points and the normal of the tangent plane at the second point

◆ add() [2/2]

None meshlib.mrmeshpy.PointToPlaneAligningTransform.add ( self,
Vector3f p1,
Vector3f p2,
Vector3f normal2,
float w = 1 )
Add a pair of corresponding points and the normal of the tangent plane at the second point

◆ calculateAmendment()

RigidScaleXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.calculateAmendment ( self)
Compute transformation relative to given approximation and return it as angles and shift (scale = 1)

◆ calculateAmendmentWithScale()

RigidScaleXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.calculateAmendmentWithScale ( self)
Compute transformation relative to given approximation and return it as scale, angles and shift

◆ calculateFixedAxisAmendment()

RigidScaleXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.calculateFixedAxisAmendment ( self,
Vector3d axis )
this version searches for best transformation where rotation is allowed only around given axis and with arbitrary translation

◆ calculateOrthogonalAxisAmendment()

RigidScaleXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.calculateOrthogonalAxisAmendment ( self,
Vector3d ort )
this version searches for best transformation where rotation is allowed only around axes orthogonal to given one

◆ clear()

None meshlib.mrmeshpy.PointToPlaneAligningTransform.clear ( self)
Clear points and normals data

◆ findBestRigidScaleXf()

AffineXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.findBestRigidScaleXf ( self)
this version searches for best rigid body transformation with uniform scaling

◆ findBestRigidXf()

AffineXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.findBestRigidXf ( self)
Compute transformation as the solution to a least squares optimization problem:
xf( p1_i ) = p2_i
this version searches for best rigid body transformation

◆ findBestRigidXfFixedRotationAxis()

AffineXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.findBestRigidXfFixedRotationAxis ( self,
Vector3d axis )
this version searches for best transformation where rotation is allowed only around given axis and with arbitrary translation

◆ findBestRigidXfOrthogonalRotationAxis()

AffineXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.findBestRigidXfOrthogonalRotationAxis ( self,
Vector3d ort )
this version searches for best transformation where rotation is allowed only around axes orthogonal to given one

◆ findBestTranslation()

Vector3d meshlib.mrmeshpy.PointToPlaneAligningTransform.findBestTranslation ( self,
Vector3d rotAngles = 'MR::Vector3d{}',
float scale = 1 )
this version searches for best translational part of affine transformation with given linear part

◆ prepare()

None meshlib.mrmeshpy.PointToPlaneAligningTransform.prepare ( self)
this method must be called after add() and before constant find...()/calculate...() to make the matrix symmetric

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