Rust에서 Generative Art에 도전
15053 단어 Rustgenerativearttech
그때 나는 Rust의 창의적인 인코딩 라이브러리nannou가 있다는 것을 알고 만졌다.
Generative Art는 처음이지만 아주 간단한 구성으로 이렇게 복잡한 그림을 만들 수 있어요.
Rust도 접할 수 있고 Generative Art도 배울 수 있어서 정말 좋아요!
나는 꾸준하게 해 나가고 싶다.
다음은 코드를 불러옵니다!
use nannou::prelude::*;
struct Model {}
fn draw_circle(draw:&Draw, p:Vector2, r:f32) {
let points = (0..=360).map(|i| {
let radian = deg_to_rad(i as f32);
let x = radian.sin() * r;
let y = radian.cos() * r;
(pt2(x, y), BLACK)
});
draw.polyline()
.xy(p)
.weight(1.)
.points_colored(points);
}
fn render(draw:&Draw, p:Vector2, r:f32, level:u32) {
if level <= 0 {return ;}
draw_circle(draw, p, r);
let r = r / 2.;
for i in (0..=360).step_by(45) {
let radian = deg_to_rad(i as f32);
let p = p + vec2(radian.sin() * r, radian.cos() * r);
render(draw, p, r, level - 1);
}
}
fn main() {
nannou::app(model)
.event(event)
.simple_window(view)
.run();
}
fn model(_app: &App) -> Model {
Model {}
}
fn event(_app: &App, _model: &mut Model, _event: Event) {
}
fn view(app: &App, _model: &Model, frame: Frame) {
let draw = app.draw();
draw.background().color(WHITE);
render(&draw, vec2(0., 0.), 300., 4);
draw.to_frame(app, &frame).unwrap();
app.main_window().capture_frame(captured_frame_path(app));
}
fn captured_frame_path(app: &App) -> std::path::PathBuf {
app.project_path()
.expect("failed to locate `project_path`")
.join("capture")
.with_extension("png")
}
Reference
이 문제에 관하여(Rust에서 Generative Art에 도전), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nuco/articles/f74867a7e8c4a5a479d9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)