1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
use super::scalar::Scalar;
use super::Point;

#[derive(Debug, Clone, Copy)]
pub struct Ellipse<S: Scalar> {
  pub c: Point<S>,
  pub a: S,
  pub b: S,
}

unsafe impl<S: Scalar> Send for Ellipse<S> {}

impl<S: Scalar> Ellipse<S> {
  pub fn new(c: Point<S>, a: S, b: S) -> Self {
    Ellipse { c, a, b }
  }
  pub fn circle(c: Point<S>, r: S) -> Self {
    Ellipse { c, a: r, b: r }
  }
}