1 个不稳定版本
0.1.0 | 2023 年 6 月 28 日 |
---|
#20 在 #生成式
在 micrrou 中使用
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