1#![allow(non_upper_case_globals)]
2#![allow(mixed_script_confusables)]
3#![deny(missing_docs)]
4#![deny(missing_debug_implementations)]
5#![doc = include_str!("../readme.md")]
6
7mod circle;
8mod ellipse;
9mod extension;
10mod line;
11mod point;
12
13pub use crate::float::{π, Float};
14#[cfg(feature = "serde")]
15use serde::{Deserialize, Serialize};
16
17#[derive(Clone, Copy, Debug, PartialEq)]
19#[cfg_attr(feature = "serde", repr(C), derive(Serialize, Deserialize))]
20pub struct Ellipse {
21 a: Float,
22 b: Float,
23 c: Float,
24 d: Float,
25 e: Float,
26 f: Float,
27}
28
29#[derive(Clone, Copy, Debug, PartialEq)]
31#[cfg_attr(feature = "serde", repr(C), derive(Serialize, Deserialize))]
32pub struct Circle {
33 pub center: Point,
35 pub radius: Float,
37}
38
39#[derive(Clone, Copy, Debug, PartialEq)]
41#[cfg_attr(feature = "serde", repr(C), derive(Serialize, Deserialize))]
42pub struct Line {
43 pub start: Point,
45 pub end: Point,
47}
48
49#[derive(Clone, Copy, Debug, PartialEq)]
51#[cfg_attr(feature = "serde", repr(C), derive(Serialize, Deserialize))]
52pub struct Point {
53 pub x: Float,
55 pub y: Float,
57}
58
59#[cfg(feature = "f32")]
61mod float {
62 pub type Float = f32;
64
65 pub const π: Float = std::f32::consts::PI;
67}
68
69#[cfg(feature = "f64")]
71mod float {
72 pub type Float = f64;
74
75 pub const Pi: Float = std::f64::consts::PI;
77}