Processingとnannouの違いについてのメモ(2)

Rectを頂点から定義する

前回書いたように、Rectは中心の座標と高さ、幅で定義できます。とはいえ、頂点の座標でやる方法もなんかあるのかな?と思っていたら、

let r = Rect::from_corners(pt1, pt2);

という感じで2つの頂点からつくることもできました。

あと、各頂点の座標を取るには、corners() とか corner_at_index() とかいうメソッドがあったので、ある四角形と隣接する四角形を描画するには、

// 左上が 0 でそこから時計回り
let pt1 = r1.corner_at_index(0);

// 四角形の辺の長さ
let w = 100.0;

let pt2 = pt1 + vec2(w, w);

let r2 = Rect::from_corners(pt1, pt2);

みたいな感じでも書けます。

キャンバスを回転縮小させる

Drawrotate()とかscale()みたいなメソッドが生えているので、

fn view(app: &App, model: &Model, frame: Frame) {
    let draw = app.draw().rotate(model.rotate).scale(model.scale);

    // ...snip...

    draw.to_frame(app, &frame).unwrap();
}

みたいな感じでやればいいみたいでした。ちなみに私はこの使い方を勘違いして、⇣で「動かない...」と悩んでいました(恥)

    let draw = app.draw();
    draw.rotate(model.rotate);
    draw.scale(model.scale);