axiolid_curve/
conic.rs

1//! Exact conic curve data.
2
3use axiolid_core::{Frame2, Frame3, Scalar};
4
5/// Circle in a two-dimensional frame.
6#[derive(Debug, Clone, Copy, PartialEq)]
7pub struct Circle2 {
8    /// Local frame.
9    pub frame: Frame2,
10    /// Radius. Validation rejects non-positive values.
11    pub radius: Scalar,
12}
13
14/// Circle in a three-dimensional plane frame.
15#[derive(Debug, Clone, Copy, PartialEq)]
16pub struct Circle3 {
17    /// Local frame; `z` is the plane normal.
18    pub frame: Frame3,
19    /// Radius. Validation rejects non-positive values.
20    pub radius: Scalar,
21}
22
23/// Ellipse in a two-dimensional frame.
24#[derive(Debug, Clone, Copy, PartialEq)]
25pub struct Ellipse2 {
26    /// Local frame.
27    pub frame: Frame2,
28    /// Semi-axis along local x.
29    pub semi_axis_x: Scalar,
30    /// Semi-axis along local y.
31    pub semi_axis_y: Scalar,
32}
33
34/// Ellipse in a three-dimensional plane frame.
35#[derive(Debug, Clone, Copy, PartialEq)]
36pub struct Ellipse3 {
37    /// Local frame; `z` is the plane normal.
38    pub frame: Frame3,
39    /// Semi-axis along local x.
40    pub semi_axis_x: Scalar,
41    /// Semi-axis along local y.
42    pub semi_axis_y: Scalar,
43}