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). Generated from class MR.PointToPlaneAligningTransform. This is the non-const half of the class. More...
Public Member Functions | |
| unsafe | PointToPlaneAligningTransform () |
| Constructs an empty (default-constructed) instance. | |
| unsafe | PointToPlaneAligningTransform (MR.Const_PointToPlaneAligningTransform _other) |
| Generated from constructor MR.PointToPlaneAligningTransform.PointToPlaneAligningTransform. | |
| PointToPlaneAligningTransform (PointToPlaneAligningTransform _other) | |
| Generated from constructor MR.PointToPlaneAligningTransform.PointToPlaneAligningTransform. | |
| unsafe MR.PointToPlaneAligningTransform | assign (MR.Const_PointToPlaneAligningTransform _other) |
| Generated from method MR::PointToPlaneAligningTransform::operator=. | |
| unsafe void | add (in MR.Vector3d p1, in MR.Vector3d p2, in MR.Vector3d normal2, double? w=null) |
| Add a pair of corresponding points and the normal of the tangent plane at the second point Generated from method MR.PointToPlaneAligningTransform.add. Parameter w defaults to 1. | |
| unsafe void | add (in MR.Vector3f p1, in MR.Vector3f p2, in MR.Vector3f normal2, float? w=null) |
| Add a pair of corresponding points and the normal of the tangent plane at the second point Generated from method MR.PointToPlaneAligningTransform.add. Parameter w defaults to 1. | |
| unsafe void | prepare () |
| this method must be called after add() and before constant find...()/calculate...() to make the matrix symmetric Generated from method MR.PointToPlaneAligningTransform.prepare. | |
| unsafe void | clear () |
| Clear points and normals data Generated from method MR.PointToPlaneAligningTransform.clear. | |
| Public Member Functions inherited from MR.Const_PointToPlaneAligningTransform | |
| virtual void | Dispose () |
| unsafe | Const_PointToPlaneAligningTransform () |
| Constructs an empty (default-constructed) instance. | |
| unsafe | Const_PointToPlaneAligningTransform (MR.Const_PointToPlaneAligningTransform _other) |
| Generated from constructor MR.PointToPlaneAligningTransform.PointToPlaneAligningTransform. | |
| Const_PointToPlaneAligningTransform (PointToPlaneAligningTransform _other) | |
| Generated from constructor MR.PointToPlaneAligningTransform.PointToPlaneAligningTransform. | |
| unsafe MR.AffineXf3d | findBestRigidXf () |
| Compute transformation as the solution to a least squares optimization problem: xf( p1_i ) = p2_i this version searches for best rigid body transformation Generated from method MR.PointToPlaneAligningTransform.findBestRigidXf. | |
| unsafe MR.AffineXf3d | findBestRigidScaleXf () |
| this version searches for best rigid body transformation with uniform scaling Generated from method MR.PointToPlaneAligningTransform.findBestRigidScaleXf. | |
| unsafe MR.AffineXf3d | findBestRigidXfFixedRotationAxis (in MR.Vector3d axis) |
| this version searches for best transformation where rotation is allowed only around given axis and with arbitrary translation Generated from method MR.PointToPlaneAligningTransform.findBestRigidXfFixedRotationAxis. | |
| unsafe MR.AffineXf3d | findBestRigidXfOrthogonalRotationAxis (in MR.Vector3d ort) |
| this version searches for best transformation where rotation is allowed only around axes orthogonal to given one Generated from method MR.PointToPlaneAligningTransform.findBestRigidXfOrthogonalRotationAxis. | |
| unsafe MR.Vector3d | findBestTranslation (MR._InOpt_Vector3d rotAngles=default, double? scale=null) |
| this version searches for best translational part of affine transformation with given linear part Generated from method MR.PointToPlaneAligningTransform.findBestTranslation. Parameter rotAngles defaults to {}. Parameter scale defaults to 1. | |
| unsafe MR.RigidScaleXf3d | calculateAmendment () |
| Compute transformation relative to given approximation and return it as angles and shift (scale = 1) Generated from method MR.PointToPlaneAligningTransform.calculateAmendment. | |
| unsafe MR.RigidScaleXf3d | calculateAmendmentWithScale () |
| Compute transformation relative to given approximation and return it as scale, angles and shift Generated from method MR.PointToPlaneAligningTransform.calculateAmendmentWithScale. | |
| unsafe MR.RigidScaleXf3d | calculateFixedAxisAmendment (in MR.Vector3d axis) |
| this version searches for best transformation where rotation is allowed only around given axis and with arbitrary translation Generated from method MR.PointToPlaneAligningTransform.calculateFixedAxisAmendment. | |
| unsafe MR.RigidScaleXf3d | calculateOrthogonalAxisAmendment (in MR.Vector3d ort) |
| this version searches for best transformation where rotation is allowed only around axes orthogonal to given one Generated from method MR.PointToPlaneAligningTransform.calculateOrthogonalAxisAmendment. | |
Additional Inherited Members | |
| Protected Member Functions inherited from MR.Const_PointToPlaneAligningTransform | |
| virtual unsafe void | Dispose (bool disposing) |
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). Generated from class MR.PointToPlaneAligningTransform. This is the non-const half of the class.
|
inline |
Constructs an empty (default-constructed) instance.
|
inline |
Generated from constructor MR.PointToPlaneAligningTransform.PointToPlaneAligningTransform.
|
inline |
Generated from constructor MR.PointToPlaneAligningTransform.PointToPlaneAligningTransform.
|
inline |
Add a pair of corresponding points and the normal of the tangent plane at the second point Generated from method MR.PointToPlaneAligningTransform.add. Parameter w defaults to 1.
|
inline |
Add a pair of corresponding points and the normal of the tangent plane at the second point Generated from method MR.PointToPlaneAligningTransform.add. Parameter w defaults to 1.
|
inline |
Generated from method MR::PointToPlaneAligningTransform::operator=.
|
inline |
Clear points and normals data Generated from method MR.PointToPlaneAligningTransform.clear.
|
inline |
this method must be called after add() and before constant find...()/calculate...() to make the matrix symmetric Generated from method MR.PointToPlaneAligningTransform.prepare.