pub mod calibrate;
pub mod fit;
pub mod polynomial;
pub mod radial;
pub use calibrate::{calibrate_camera, CalibrateConfig, CalibrateResult};
pub use polynomial::PolynomialDistortion;
pub use radial::RadialDistortion;
#[derive(Debug, Clone, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
pub enum Distortion {
None,
Radial(RadialDistortion),
Polynomial(PolynomialDistortion),
}
impl Distortion {
pub fn undistort(&self, x: f64, y: f64) -> (f64, f64) {
match self {
Distortion::None => (x, y),
Distortion::Radial(r) => r.undistort(x, y),
Distortion::Polynomial(p) => p.undistort(x, y),
}
}
pub fn distort(&self, x: f64, y: f64) -> (f64, f64) {
match self {
Distortion::None => (x, y),
Distortion::Radial(r) => r.distort(x, y),
Distortion::Polynomial(p) => p.distort(x, y),
}
}
pub fn is_none(&self) -> bool {
matches!(self, Distortion::None)
}
}
impl Default for Distortion {
fn default() -> Self {
Distortion::None
}
}