+cassini-anti-astroid

This commit is contained in:
Alain Emilia Anna Zscheile 2023-12-28 14:57:20 +01:00
parent 30efb5bc20
commit 8a06df925f
2 changed files with 16 additions and 1 deletions

View file

@ -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| {

View file

@ -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))