use crate::core::coords::PixelCoord;
use crate::core::scalar::Scalar;
#[derive(Debug, Clone, Copy)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct GradientSample {
pub position: PixelCoord,
pub gx: Scalar,
pub gy: Scalar,
pub radial_alignment: Scalar,
}
impl GradientSample {
#[inline]
pub fn magnitude(&self) -> Scalar {
(self.gx * self.gx + self.gy * self.gy).sqrt()
}
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SupportEvidence {
pub gradient_samples: Vec<GradientSample>,
pub angular_coverage: Scalar,
pub sample_count: usize,
pub mean_gradient_alignment: Scalar,
}