前はトロコイド曲線を描いたんですが、今回は線を描いてみました。
線を描くためにはlineっていう関数を使って
始点と終点の座標を与えて直線をひくんですが、
その座標がpoint2ってので与えるんですけどそれがどうやってコード書くのか最初わからなくて(っていうかドキュメント読めよ)
ひとまずドキュメントを読むとVだってかいてあるんだよね。何それって思って
まぁ最終的に解決したのはvec2(x,y)ってやって渡せばいいらしいのでそんな感じで
use nannou::prelude::*;
fn main() {
nannou::sketch(view).run()
}
fn view(app: &App, frame: Frame) {
let draw = app.draw();
let f = frame.nth();
if f ==0 {
draw.background().color(BLACK);
}
let t = app.time;
let mod_number = f%4;
let slide;
match mod_number{
1=>slide = 4.0,
2=>slide =-2.3,
3=>slide = -PI,
_=>slide = PI,
}
let point1 = vec2(-100.0 + slide * 60.0 * t.cos(),60.0+200.0*(3.0*t).sin());
let point2 = vec2(20.0 + 100.0*t.cos()+(3.0*t).cos(),100.0*(t+PI).sin());
let c = t.cos()+t.sin();
println!("{}",f);
draw.line()
.stroke_weight(2.0)
.hsva(c, 1.0, 0.5, 0.5)
.points(point1,point2);
draw.to_frame(app, &frame).unwrap();
}
こんな感じの描画ができます。
単純に各座標を円の軌道を描くように動かしてるんですけど
let f = frame.nth();
これでフレーム数を取ってそのあと、4で割ったあまり(剰余演算)によって4分岐作ってそれを座標に組み込むことで、いろんな動きができるようにしてあります。
ここら辺のパラメーターを変えれば、また、動きも変わるわけです。
いろんな式を試してみましたが、
これは、動画にすると、まるで蝶々が羽ばたいているように見えます。
まだまだ、いろんな楽しみが待ってるね。
コメント