線を描くrust nannou draw line

rust

前はトロコイド曲線を描いたんですが、今回は線を描いてみました。

線を描くためには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();    
}
nannouによるラインアート

こんな感じの描画ができます。

単純に各座標を円の軌道を描くように動かしてるんですけど

let f = frame.nth();
これでフレーム数を取ってそのあと、4で割ったあまり(剰余演算)によって4分岐作ってそれを座標に組み込むことで、いろんな動きができるようにしてあります。

ここら辺のパラメーターを変えれば、また、動きも変わるわけです。

いろんな式を試してみましたが、
これは、動画にすると、まるで蝶々が羽ばたいているように見えます。

まだまだ、いろんな楽しみが待ってるね。

コメント

タイトルとURLをコピーしました