1use nalgebra::{Matrix3, Matrix4, Scalar, Vector3};
2#[cfg(feature = "nifti_images")]
3use nifti::NiftiHeader;
4
5#[cfg(feature = "nifti_images")]
6use crate::{Affine4, CHeader};
7
8pub fn get_affine_and_translation<T>(affine: &Matrix4<T>) -> (Matrix3<T>, Vector3<T>)
9where
10 T: Copy + Scalar,
11{
12 let translation = Vector3::<T>::new(affine[12], affine[13], affine[14]);
13 let affine = affine.fixed_view::<3, 3>(0, 0).into_owned();
14 (affine, translation)
15}
16
17#[cfg(feature = "nifti_images")]
18pub fn rasmm_to_trackvis(h: &NiftiHeader) -> Affine4 {
19 trackvis_to_rasmm(h).try_inverse().unwrap()
20}
21
22#[cfg(feature = "nifti_images")]
23pub fn trackvis_to_rasmm(h: &NiftiHeader) -> Affine4 {
24 let c_header = CHeader::from_nifti(h.dim, h.pixdim, h.srow_x, h.srow_y, h.srow_z);
25 c_header.get_affine_to_rasmm()
26}