Trait mapping_algorithms::types::AbstractIsometry

source ·
pub trait AbstractIsometry<T: RealField, const N: usize> {
    type RotType: AbstractRotation<T, N> + Copy;

    // Required method
    fn update_transform(
        old_transform: &Isometry<T, Self::RotType, N>,
        mean_a: Point<T, N>,
        mean_b: Point<T, N>,
        rot_mat: &Matrix<T, Const<N>, Const<N>, ArrayStorage<T, N, N>>,
    ) -> Isometry<T, Self::RotType, N>;
}
Expand description

This trait acts as an abstraction for the process of creating an Isometry matrix from a NxN SVD, without having to constrain every function by a million traits.

Required Associated Types§

source

type RotType: AbstractRotation<T, N> + Copy

This type is a placeholder for either UnitComplex or UnitQuaternion depending on number of dimensions.

Required Methods§

source

fn update_transform( old_transform: &Isometry<T, Self::RotType, N>, mean_a: Point<T, N>, mean_b: Point<T, N>, rot_mat: &Matrix<T, Const<N>, Const<N>, ArrayStorage<T, N, N>>, ) -> Isometry<T, Self::RotType, N>

This function receives the old transform, the centeroids of both point clouds, and the covariance rotation mat It then performs SVD on the covariance matrix, and uses the resulting matrics and the translation between the two points to construct a new transform. This transform is multiplied by the old transform, and the result is returned

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T> AbstractIsometry<T, 2> for IsometryAbstractor<T, 2>
where T: Copy + RealField,

source§

impl<T> AbstractIsometry<T, 3> for IsometryAbstractor<T, 3>
where T: Copy + RealField,