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) |
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).
None meshlib.mrmeshpy.PointToPlaneAligningTransform.__init__ | ( | self | ) |
Implicit default constructor.
None meshlib.mrmeshpy.PointToPlaneAligningTransform.__init__ | ( | self, | |
PointToPlaneAligningTransform | arg0 ) |
Implicit copy constructor.
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
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
RigidScaleXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.calculateAmendment | ( | self | ) |
Compute transformation relative to given approximation and return it as angles and shift (scale = 1)
RigidScaleXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.calculateAmendmentWithScale | ( | self | ) |
Compute transformation relative to given approximation and return it as scale, angles and shift
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
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
None meshlib.mrmeshpy.PointToPlaneAligningTransform.clear | ( | self | ) |
Clear points and normals data
AffineXf3d meshlib.mrmeshpy.PointToPlaneAligningTransform.findBestRigidScaleXf | ( | self | ) |
this version searches for best rigid body transformation with uniform scaling
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
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
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
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
None meshlib.mrmeshpy.PointToPlaneAligningTransform.prepare | ( | self | ) |
this method must be called after add() and before constant find...()/calculate...() to make the matrix symmetric