rustのProcessingみたいなクレートnannouでトロコイド曲線を描いてみました。
今回は内トロコイド曲線ってやつですね。
ギアのついた定規でボールペンさしてグルグルって描くやつあったでしょう
スピログラフ(spinograph)というやつです。
小さいころ買ってもらえなくてすごくあこがれてたなんて言う思いでも
まぁそれはいいとして、これで描かれる内トロコイド曲線をrustを使って描いてみました。
use nannou::prelude::*;
fn main() {
nannou::sketch(view).run()
}
fn view(app: &App, frame: Frame) {
let draw = app.draw();
let r = (0.2*app.time).cos() + (0.2*app.time).sin();
let rc = 50.0;
let rm = 42.0;
let rd = 5.23;
let rcm = rc-rm;
let t = 3.0*app.time;
let x = rcm*t.cos()+rd*(t*rcm/rm).cos();
let y = rcm*t.sin()-rd*(t*rcm/rm).sin();
if t > 20.0 {
draw.ellipse()
.x(10.0*x)
.y(10.0*y)
.radius(5.0 as f32)
.hsl(1.0+r,0.5,0.5);
}
draw.to_frame(app, &frame).unwrap();
}
素直に内トロコイド曲線の媒介変数で計算してます。色はhslを使って、色が変化するようにしてるぐらいかな?
動きとしてはこんな風にグルグルグルと描いていく感じです。
パラメーターを変えれば、形も変化します。
コメント