#![allow(non_upper_case_globals)]
#![allow(mixed_script_confusables)]
#![deny(missing_docs)]
#![deny(missing_debug_implementations)]
#![doc = include_str!("../readme.md")]
mod circle;
mod ellipse;
mod extension;
mod line;
mod point;
pub use crate::float::{π, Float};
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq)]
#[cfg_attr(feature = "serde", repr(C), derive(Serialize, Deserialize))]
pub struct Ellipse {
a: Float,
b: Float,
c: Float,
d: Float,
e: Float,
f: Float,
}
#[derive(Clone, Copy, Debug, PartialEq)]
#[cfg_attr(feature = "serde", repr(C), derive(Serialize, Deserialize))]
pub struct Circle {
pub center: Point,
pub radius: Float,
}
#[derive(Clone, Copy, Debug, PartialEq)]
#[cfg_attr(feature = "serde", repr(C), derive(Serialize, Deserialize))]
pub struct Line {
pub start: Point,
pub end: Point,
}
#[derive(Clone, Copy, Debug, PartialEq)]
#[cfg_attr(feature = "serde", repr(C), derive(Serialize, Deserialize))]
pub struct Point {
pub x: Float,
pub y: Float,
}
#[cfg(feature = "f32")]
mod float {
pub type Float = f32;
pub const π: Float = std::f32::consts::PI;
}
#[cfg(feature = "f64")]
mod float {
pub type Float = f64;
pub const Pi: Float = std::f64::consts::PI;
}