1 个不稳定版本

0.1.0 2023 年 6 月 28 日

#20#生成式


micrrou 中使用

MIT 许可证

8KB
102

概述

micrrou 是一个 Rust crate,旨在封装和简化 nannou。虽然 nannou 本身就有很好的接口,但 micrrou 旨在将常见用例结合起来,以减少样板代码。

micrrou 的另一个目标是提供一些算法,希望能帮助通过代码生成艺术。

示例

示例在 examples 目录中提供。

以下是一个创建空白画布的示例。

use std::slice::Iter;

use micrrou::prelude::*;

struct MyModel {
    drawings: Vec<Box<dyn Drawable>>,
    frame_count: usize,
}

impl Model for MyModel {
    fn create() -> Self {
        Self {
            drawings: Vec::new(),
            frame_count: 0,
        }
    }

    fn get_drawings<'a>(&'a self) -> Iter<'a, Box<dyn Drawable>> {
        self.drawings.iter()
    }

    fn update(&mut self) {
        self.frame_count += 1;
        println!("frame count: {}", self.frame_count);
    }
}

pub fn main() {
    nannou_app::launch::<MyModel, 900, 900>();
}

在此,我们使用 nannou_app::launch 函数,使用 MyModel 作为模型,创建一个 900x900 像素的空白画布。

macrrou

maccrou 是一个可选的过程宏,用于设置 nannou_app

use std::slice::Iter;

use micrrou::launch_nannou_app;
use micrrou::{nannou_app::Model, prelude::Drawable};

struct ModelData {
    drawings: Vec<Box<dyn Drawable>>,
}

impl Default for ModelData {
    fn default() -> Self {
        Self {
            drawings: Vec::new(),
        }
    }
}

impl Model for ModelData {
    fn create() -> Self {
        Self::default()
    }

    fn get_drawings(&self) -> Iter<'_, Box<dyn Drawable>> {
        self.drawings.iter()
    }

    fn update(&mut self) {}
}

pub fn main() {
    launch_nannou_app!(for ModelData, canvas(width=900, height=900));
}

在此,我们使用 launch_nannou_app! 宏,使用 ModelData 作为 Model,创建一个 900x900 像素的画布。

依赖项

~0.4–11MB
~72K SLoC