use nalgebra::geometry::{Isometry3, Translation3, UnitQuaternion};
use transforms::geometry::{Quaternion, Transform, Vector3};
use transforms::time::Timestamp;
pub fn isometry_to_transform(
iso: &Isometry3<f64>,
parent: &str,
child: &str,
timestamp: Timestamp,
) -> Transform {
Transform {
translation: Vector3::new(iso.translation.x, iso.translation.y, iso.translation.z),
rotation: Quaternion {
w: iso.rotation.quaternion().w,
x: iso.rotation.quaternion().i,
y: iso.rotation.quaternion().j,
z: iso.rotation.quaternion().k,
},
timestamp,
parent: parent.to_string(),
child: child.to_string(),
}
}
pub fn transform_to_isometry(tf: &Transform) -> Isometry3<f64> {
Isometry3::from_parts(
Translation3::new(tf.translation.x, tf.translation.y, tf.translation.z),
UnitQuaternion::new_normalize(nalgebra::geometry::Quaternion::new(
tf.rotation.w,
tf.rotation.x,
tf.rotation.y,
tf.rotation.z,
)),
)
}