๐Ÿ”ฎ :: Perlin Line Deformation 2

BamgasiJMยท2025๋…„ 9์›” 17์ผ

Nannou <Generative Art>

๋ชฉ๋ก ๋ณด๊ธฐ
13/55
post-thumbnail

๐Ÿ“ Rust Code

use nannou::noise::{NoiseFn, Perlin};
use nannou::prelude::*;

struct Model {
    perlin: Perlin,
    time: f64,
}

fn main() {
    nannou::app(model).update(update).run();
}

fn model(app: &App) -> Model {
    app.new_window()
        .size(800, 800)
        .view(view)
        .build()
        .unwrap();

    Model {
        perlin: Perlin::new(),
        time: 0.0,
    }
}

fn update(_app: &App, model: &mut Model, _update: Update) {
    // ์• ๋‹ˆ๋ฉ”์ด์…˜ ์†๋„๋ฅผ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ฒŒ
    model.time += 0.01;
}

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

    draw.background().color(BLACK);

    let win = app.window_rect();

    // ๊ฒฉ์ž ํ•ด์ƒ๋„
    let cols = 100;
    let rows = 100;

    for row in 0..=rows {
        let mut points = Vec::new();
        for col in 0..=cols {
            // ๊ธฐ๋ณธ ์ขŒํ‘œ
            let x = map_range(col, 0, cols, win.left(), win.right());
            let y = map_range(row, 0, rows, win.bottom(), win.top());

            // Perlin noise ๊ณ„์‚ฐ
            let n = model.perlin.get([
                x as f64 * 0.005,
                y as f64 * 0.005,
                model.time,
            ]);

            // ๋” ํฐ ๋ฒ”์œ„๋กœ ํ”๋“ค๊ธฐ
            let offset_x = map_range(n, -1.0, 1.0, -80.0, 80.0);

            // ๋‘ ๋ฒˆ์งธ noise๋กœ Y์ถ• ํ”๋“ค๊ธฐ
            let n2 = model.perlin.get([
                x as f64 * 0.003 + 100.0, // ์‹œํ”„ํŠธ๊ฐ’์„ ์ค˜์„œ ๋‹ค๋ฅธ ํŒจํ„ด ์ƒ์„ฑ
                y as f64 * 0.003,
                model.time,
            ]);
            let offset_y = map_range(n2, -1.0, 1.0, -60.0, 60.0);

            let distorted = pt2(x + offset_x as f32, y + offset_y as f32);

            points.push(distorted);
        }

        draw.polyline()
            .weight(1.5)
            .points(points)
            .color(WHITE);
    }

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

profile
Coding Art with Blender / oF / Processing / p5.js / nannou

0๊ฐœ์˜ ๋Œ“๊ธ€