MeshLib Rust Docs
Loading...
Searching...
No Matches
meshlib::PointToPlaneAligningTransform Struct Reference
Inheritance diagram for meshlib::PointToPlaneAligningTransform:

Public Member Functions

auto assign_from_another (_other:&meshlib::PointToPlaneAligningTransform) -> &mut meshlib::PointToPlaneAligningTransform
void add_mr_vector3d (p1:&meshlib::Vector3d, p2:&meshlib::Vector3d, normal2:&meshlib::Vector3d, w:Option< f64 >)
void add_mr_vector3f (p1:&meshlib::Vector3f, p2:&meshlib::Vector3f, normal2:&meshlib::Vector3f, w:Option< f32 >)
void prepare ()
void clear ()
void set_stabilizer (stabilizer:f64)
auto get_stabilizer () const -> f64
auto find_best_rigid_xf () const -> meshlib::AffineXf3d
auto find_best_rigid_scale_xf () const -> meshlib::AffineXf3d
auto find_best_rigid_xf_fixed_rotation_axis (axis:&meshlib::Vector3d) const -> meshlib::AffineXf3d
auto find_best_rigid_xf_orthogonal_rotation_axis (ort:&meshlib::Vector3d) const -> meshlib::AffineXf3d
auto find_best_translation (rotAngles:Option<&meshlib::Vector3d >, scale:Option< f64 >) const -> meshlib::Vector3d
auto calculate_amendment () const -> meshlib::Owned< meshlib::RigidScaleXf3d >
auto calculate_amendment_with_scale () const -> meshlib::Owned< meshlib::RigidScaleXf3d >
auto calculate_fixed_axis_amendment (axis:&meshlib::Vector3d) const -> meshlib::Owned< meshlib::RigidScaleXf3d >
auto calculate_orthogonal_axis_amendment (ort:&meshlib::Vector3d) const -> meshlib::Owned< meshlib::RigidScaleXf3d >

Static Public Member Functions

static auto new () -> meshlib::Owned< meshlib::PointToPlaneAligningTransform >
static auto construct_from_another (_other:&meshlib::PointToPlaneAligningTransform) -> meshlib::Owned< meshlib::PointToPlaneAligningTransform >
Static Public Member Functions inherited from meshlib::CppClass
static void destroy (ptr:*mut Self)
Static Public Member Functions inherited from meshlib::CppCopy
static auto copy (ptr:*const Self) -> *mut Self

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.

Generated from class MR::PointToPlaneAligningTransform. Heap-allocated instances are held in Owned<PointToPlaneAligningTransform>.

Member Function Documentation

◆ add_mr_vector3d()

void meshlib::PointToPlaneAligningTransform::add_mr_vector3d ( p1:&meshlib::Vector3d ,
p2:&meshlib::Vector3d ,
normal2:&meshlib::Vector3d ,
w:Option< f64 >  )

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_mr_vector3f()

void meshlib::PointToPlaneAligningTransform::add_mr_vector3f ( p1:&meshlib::Vector3f ,
p2:&meshlib::Vector3f ,
normal2:&meshlib::Vector3f ,
w:Option< f32 >  )

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().

◆ assign_from_another()

auto meshlib::PointToPlaneAligningTransform::assign_from_another ( _other:&meshlib::PointToPlaneAligningTransform ) -> &mut meshlib::PointToPlaneAligningTransform

Generated from method MR::PointToPlaneAligningTransform::operator=.

Calls MR_PointToPlaneAligningTransform_AssignFromAnother(). The reference to things referred to by the parameter _other (if any) might be preserved in this object.

◆ calculate_amendment()

auto meshlib::PointToPlaneAligningTransform::calculate_amendment ( ) const -> meshlib::Owned< meshlib::RigidScaleXf3d >

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().

◆ calculate_amendment_with_scale()

auto meshlib::PointToPlaneAligningTransform::calculate_amendment_with_scale ( ) const -> meshlib::Owned< meshlib::RigidScaleXf3d >

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

Calls MR_PointToPlaneAligningTransform_calculateAmendmentWithScale().

◆ calculate_fixed_axis_amendment()

auto meshlib::PointToPlaneAligningTransform::calculate_fixed_axis_amendment ( axis:&meshlib::Vector3d ) const -> meshlib::Owned< meshlib::RigidScaleXf3d >

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().

◆ calculate_orthogonal_axis_amendment()

auto meshlib::PointToPlaneAligningTransform::calculate_orthogonal_axis_amendment ( ort:&meshlib::Vector3d ) const -> meshlib::Owned< meshlib::RigidScaleXf3d >

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().

◆ construct_from_another()

auto meshlib::PointToPlaneAligningTransform::construct_from_another ( _other:&meshlib::PointToPlaneAligningTransform ) -> meshlib::Owned< meshlib::PointToPlaneAligningTransform >
static

Generated from constructor MR::PointToPlaneAligningTransform::PointToPlaneAligningTransform.

Calls MR_PointToPlaneAligningTransform_ConstructFromAnother(). The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object.

◆ find_best_rigid_scale_xf()

auto meshlib::PointToPlaneAligningTransform::find_best_rigid_scale_xf ( ) const -> meshlib::AffineXf3d

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

Calls MR_PointToPlaneAligningTransform_findBestRigidScaleXf().

◆ find_best_rigid_xf()

auto meshlib::PointToPlaneAligningTransform::find_best_rigid_xf ( ) const -> meshlib::AffineXf3d

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().

◆ find_best_rigid_xf_fixed_rotation_axis()

auto meshlib::PointToPlaneAligningTransform::find_best_rigid_xf_fixed_rotation_axis ( axis:&meshlib::Vector3d ) const -> meshlib::AffineXf3d

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().

◆ find_best_rigid_xf_orthogonal_rotation_axis()

auto meshlib::PointToPlaneAligningTransform::find_best_rigid_xf_orthogonal_rotation_axis ( ort:&meshlib::Vector3d ) const -> meshlib::AffineXf3d

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().

◆ find_best_translation()

auto meshlib::PointToPlaneAligningTransform::find_best_translation ( rotAngles:Option<&meshlib::Vector3d > ,
scale:Option< f64 >  ) const -> meshlib::Vector3d

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

Calls MR_PointToPlaneAligningTransform_findBestTranslation().

◆ get_stabilizer()

auto meshlib::PointToPlaneAligningTransform::get_stabilizer ( ) const -> f64

Generated from method MR::PointToPlaneAligningTransform::getStabilizer.

Calls MR_PointToPlaneAligningTransform_getStabilizer().

◆ new()

auto meshlib::PointToPlaneAligningTransform::new ( ) -> meshlib::Owned< meshlib::PointToPlaneAligningTransform >
static

Constructs an empty (default-constructed) instance.

Calls MR_PointToPlaneAligningTransform_DefaultConstruct().

◆ 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().

◆ set_stabilizer()

void meshlib::PointToPlaneAligningTransform::set_stabilizer ( stabilizer:f64 )

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 struct was generated from the following file: