MeshLib Java Docs
Loading...
Searching...
No Matches
meshlib.PointToPlaneAligningTransform Class Reference
Inheritance diagram for meshlib.PointToPlaneAligningTransform:

Public Member Functions

 PointToPlaneAligningTransform (java.lang.foreign.MemorySegment ptr, boolean owned, java.lang.Object owner)
 PointToPlaneAligningTransform ()
 PointToPlaneAligningTransform (meshlib.PointToPlaneAligningTransform _other)
meshlib.PointToPlaneAligningTransform assignFromAnother (meshlib.PointToPlaneAligningTransform _other)
void add (meshlib.Vector3d p1, meshlib.Vector3d p2, meshlib.Vector3d normal2, java.lang.Double w)
void add (meshlib.Vector3f p1, meshlib.Vector3f p2, meshlib.Vector3f normal2, java.lang.Float w)
void prepare ()
void clear ()
void setStabilizer (double stabilizer)
double getStabilizer ()
meshlib.AffineXf3d findBestRigidXf ()
meshlib.AffineXf3d findBestRigidScaleXf ()
meshlib.AffineXf3d findBestRigidXfFixedRotationAxis (meshlib.Vector3d axis)
meshlib.AffineXf3d findBestRigidXfOrthogonalRotationAxis (meshlib.Vector3d ort)
meshlib.Vector3d findBestTranslation (meshlib.Vector3d rotAngles, java.lang.Double scale)
meshlib.RigidScaleXf3d calculateAmendment ()
meshlib.RigidScaleXf3d calculateAmendmentWithScale ()
meshlib.RigidScaleXf3d calculateFixedAxisAmendment (meshlib.Vector3d axis)
meshlib.RigidScaleXf3d calculateOrthogonalAxisAmendment (meshlib.Vector3d ort)
Public Member Functions inherited from meshlib.CppObject
final java.lang.foreign.MemorySegment rawPointer ()
final boolean isOwned ()
final void close ()
final java.lang.foreign.MemorySegment release ()

Additional Inherited Members

Protected Member Functions inherited from meshlib.CppObject
 CppObject (java.lang.foreign.MemorySegment ptr, java.util.function.Consumer< java.lang.foreign.MemorySegment > destroy, java.lang.Object owner)

Detailed Description

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.

Instances created here own their C++ objects, see CppObject.

Constructor & Destructor Documentation

◆ PointToPlaneAligningTransform() [1/3]

meshlib.PointToPlaneAligningTransform.PointToPlaneAligningTransform ( java.lang.foreign.MemorySegment ptr,
boolean owned,
java.lang.Object owner )

Wraps a pointer from the C bindings. If owned, the object is destroyed when the wrapper dies. owner is kept alive as long as this wrapper is. Not for normal use.

◆ PointToPlaneAligningTransform() [2/3]

meshlib.PointToPlaneAligningTransform.PointToPlaneAligningTransform ( )

Constructs an empty (default-constructed) instance.

Calls MR_PointToPlaneAligningTransform_DefaultConstruct().

◆ PointToPlaneAligningTransform() [3/3]

meshlib.PointToPlaneAligningTransform.PointToPlaneAligningTransform ( meshlib.PointToPlaneAligningTransform _other)

Generated from constructor MR::PointToPlaneAligningTransform::PointToPlaneAligningTransform. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object.

Calls MR_PointToPlaneAligningTransform_ConstructFromAnother().

Member Function Documentation

◆ add() [1/2]

void meshlib.PointToPlaneAligningTransform.add ( meshlib.Vector3d p1,
meshlib.Vector3d p2,
meshlib.Vector3d normal2,
java.lang.Double w )

Add a pair of corresponding points and the normal of the tangent plane at the second point Generated from method MR::PointToPlaneAligningTransform::add.

Calls MR_PointToPlaneAligningTransform_add_MR_Vector3d().

◆ add() [2/2]

void meshlib.PointToPlaneAligningTransform.add ( meshlib.Vector3f p1,
meshlib.Vector3f p2,
meshlib.Vector3f normal2,
java.lang.Float w )

Add a pair of corresponding points and the normal of the tangent plane at the second point Generated from method MR::PointToPlaneAligningTransform::add.

Calls MR_PointToPlaneAligningTransform_add_MR_Vector3f().

◆ assignFromAnother()

meshlib.PointToPlaneAligningTransform meshlib.PointToPlaneAligningTransform.assignFromAnother ( meshlib.PointToPlaneAligningTransform _other)

Generated from method MR::PointToPlaneAligningTransform::operator=. The reference to things referred to by the parameter _other (if any) might be preserved in this object.

Calls MR_PointToPlaneAligningTransform_AssignFromAnother().

◆ calculateAmendment()

meshlib.RigidScaleXf3d meshlib.PointToPlaneAligningTransform.calculateAmendment ( )

Compute transformation relative to given approximation and return it as angles and shift (scale = 1) Generated from method MR::PointToPlaneAligningTransform::calculateAmendment.

Calls MR_PointToPlaneAligningTransform_calculateAmendment().

◆ calculateAmendmentWithScale()

meshlib.RigidScaleXf3d meshlib.PointToPlaneAligningTransform.calculateAmendmentWithScale ( )

Compute transformation relative to given approximation and return it as scale, angles and shift Generated from method MR::PointToPlaneAligningTransform::calculateAmendmentWithScale.

Calls MR_PointToPlaneAligningTransform_calculateAmendmentWithScale().

◆ calculateFixedAxisAmendment()

meshlib.RigidScaleXf3d meshlib.PointToPlaneAligningTransform.calculateFixedAxisAmendment ( meshlib.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.

Calls MR_PointToPlaneAligningTransform_calculateFixedAxisAmendment().

◆ calculateOrthogonalAxisAmendment()

meshlib.RigidScaleXf3d meshlib.PointToPlaneAligningTransform.calculateOrthogonalAxisAmendment ( meshlib.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.

Calls MR_PointToPlaneAligningTransform_calculateOrthogonalAxisAmendment().

◆ clear()

void meshlib.PointToPlaneAligningTransform.clear ( )

Clear points and normals data Generated from method MR::PointToPlaneAligningTransform::clear.

Calls MR_PointToPlaneAligningTransform_clear().

◆ findBestRigidScaleXf()

meshlib.AffineXf3d meshlib.PointToPlaneAligningTransform.findBestRigidScaleXf ( )

this version searches for best rigid body transformation with uniform scaling Generated from method MR::PointToPlaneAligningTransform::findBestRigidScaleXf.

Calls MR_PointToPlaneAligningTransform_findBestRigidScaleXf().

◆ findBestRigidXf()

meshlib.AffineXf3d meshlib.PointToPlaneAligningTransform.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.

Calls MR_PointToPlaneAligningTransform_findBestRigidXf().

◆ findBestRigidXfFixedRotationAxis()

meshlib.AffineXf3d meshlib.PointToPlaneAligningTransform.findBestRigidXfFixedRotationAxis ( meshlib.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.

Calls MR_PointToPlaneAligningTransform_findBestRigidXfFixedRotationAxis().

◆ findBestRigidXfOrthogonalRotationAxis()

meshlib.AffineXf3d meshlib.PointToPlaneAligningTransform.findBestRigidXfOrthogonalRotationAxis ( meshlib.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.

Calls MR_PointToPlaneAligningTransform_findBestRigidXfOrthogonalRotationAxis().

◆ findBestTranslation()

meshlib.Vector3d meshlib.PointToPlaneAligningTransform.findBestTranslation ( meshlib.Vector3d rotAngles,
java.lang.Double scale )

this version searches for best translational part of affine transformation with given linear part Generated from method MR::PointToPlaneAligningTransform::findBestTranslation.

Calls MR_PointToPlaneAligningTransform_findBestTranslation().

◆ getStabilizer()

double meshlib.PointToPlaneAligningTransform.getStabilizer ( )

Generated from method MR::PointToPlaneAligningTransform::getStabilizer.

Calls MR_PointToPlaneAligningTransform_getStabilizer().

◆ prepare()

void meshlib.PointToPlaneAligningTransform.prepare ( )

this method must be called after add() and before constant find...()/calculate...() to make the matrix symmetric Generated from method MR::PointToPlaneAligningTransform::prepare.

Calls MR_PointToPlaneAligningTransform_prepare().

◆ setStabilizer()

void meshlib.PointToPlaneAligningTransform.setStabilizer ( double stabilizer)

sets relative regularization: this fraction of the mean diagonal element of the rotation block and of the translation block of the linear system is added to the diagonal of the same block; it suppresses huge motions along the directions poorly constrained by the planes (e.g. sliding along parallel planes) Generated from method MR::PointToPlaneAligningTransform::setStabilizer.

Calls MR_PointToPlaneAligningTransform_setStabilizer().


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