+cassini-anti-astroid
This commit is contained in:
parent
30efb5bc20
commit
8a06df925f
2 changed files with 16 additions and 1 deletions
|
@ -153,6 +153,15 @@ pub fn cassini_astroid(ca: f64, cc: f64, aa: f64) -> impl Fn(f64) -> [f64; 2] {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn cassini_anti_astroid(ca: f64, cc: f64, aa: f64) -> impl Fn(f64) -> [f64; 2] {
|
||||
let cassini = cassini_oval(ca, cc);
|
||||
move |t: f64| {
|
||||
let ap = astroid_pedal(t, aa);
|
||||
let cs = cassini(t);
|
||||
[cs[0] - ap[0], cs[1] - ap[1]]
|
||||
}
|
||||
}
|
||||
|
||||
pub fn spiral(k: u32) -> impl Fn(f64) -> [f64; 2] {
|
||||
let x2pi = (k as f64) * core::f64::consts::TAU;
|
||||
move |t: f64| {
|
||||
|
|
|
@ -11,6 +11,7 @@ pub enum SelectExample {
|
|||
CassiniOval { a: f64, c: f64 },
|
||||
|
||||
CassiniAstroid { ca: f64, cc: f64, aa: f64 },
|
||||
CassiniAntiAstroid { ca: f64, cc: f64, aa: f64 },
|
||||
CassiniAstroidTsq { ca: f64, cc: f64, aa: f64 },
|
||||
|
||||
Ellipse { a: f64, b: f64 },
|
||||
|
@ -34,7 +35,9 @@ impl SelectExample {
|
|||
*a += l;
|
||||
*c += l;
|
||||
}
|
||||
Self::CassiniAstroid { ca, cc, aa } | Self::CassiniAstroidTsq { ca, cc, aa } => {
|
||||
Self::CassiniAstroid { ca, cc, aa }
|
||||
| Self::CassiniAntiAstroid { ca, cc, aa }
|
||||
| Self::CassiniAstroidTsq { ca, cc, aa } => {
|
||||
*ca += l;
|
||||
*cc += l;
|
||||
*aa += l;
|
||||
|
@ -62,6 +65,9 @@ impl SelectExample {
|
|||
Self::AstroidPedal { a } => Box::new(move |t: f64| ex::astroid_pedal(t, a)),
|
||||
Self::CassiniOval { a, c } => Box::new(ex::cassini_oval(a, c)),
|
||||
Self::CassiniAstroid { ca, cc, aa } => Box::new(ex::cassini_astroid(ca, cc, aa)),
|
||||
Self::CassiniAntiAstroid { ca, cc, aa } => {
|
||||
Box::new(ex::cassini_anti_astroid(ca, cc, aa))
|
||||
}
|
||||
Self::CassiniAstroidTsq { ca, cc, aa } => {
|
||||
let x = ex::cassini_astroid(ca, cc, aa);
|
||||
Box::new(move |t: f64| x(t * t))
|
||||
|
|
Loading…
Reference in a new issue