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}