use crate::rkyv_numeris::AsMatrix2Array;
use crate::Matrix2;
use crate::Vector3;
#[derive(Debug, Clone, PartialEq, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
pub struct Centroid {
pub x: f32,
pub y: f32,
pub mass: Option<f32>,
#[rkyv(with = rkyv::with::Map<AsMatrix2Array>)]
pub cov: Option<Matrix2>,
}
impl Centroid {
pub fn uvec(&self, pixel_scale: f32) -> Vector3 {
let x = self.x * pixel_scale;
let y = self.y * pixel_scale;
let z = 1.0;
let norm = (x * x + y * y + z * z).sqrt();
Vector3::from_array([x / norm, y / norm, z / norm])
}
}