Generate random points

This commit is contained in:
Niklas Korz 2025-03-30 16:10:16 +02:00
parent ff438eae2c
commit 5cb9409723
3 changed files with 117 additions and 33 deletions

91
Cargo.lock generated
View file

@ -75,7 +75,7 @@ checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"const-random", "const-random",
"getrandom", "getrandom 0.2.15",
"once_cell", "once_cell",
"version_check", "version_check",
"zerocopy 0.7.35", "zerocopy 0.7.35",
@ -790,7 +790,7 @@ dependencies = [
"derive_more", "derive_more",
"glam", "glam",
"itertools", "itertools",
"rand", "rand 0.8.5",
"rand_distr", "rand_distr",
"serde", "serde",
"smallvec", "smallvec",
@ -1168,7 +1168,7 @@ checksum = "63c2174d43a0de99f863c98a472370047a2bfa7d1e5cec8d9d647fb500905d9d"
dependencies = [ dependencies = [
"ahash", "ahash",
"bevy_utils_proc_macros", "bevy_utils_proc_macros",
"getrandom", "getrandom 0.2.15",
"hashbrown 0.14.5", "hashbrown 0.14.5",
"thread_local", "thread_local",
"tracing", "tracing",
@ -1544,7 +1544,7 @@ version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
dependencies = [ dependencies = [
"getrandom", "getrandom 0.2.15",
"once_cell", "once_cell",
"tiny-keccak", "tiny-keccak",
] ]
@ -2148,10 +2148,22 @@ dependencies = [
"cfg-if", "cfg-if",
"js-sys", "js-sys",
"libc", "libc",
"wasi", "wasi 0.11.0+wasi-snapshot-preview1",
"wasm-bindgen", "wasm-bindgen",
] ]
[[package]]
name = "getrandom"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
dependencies = [
"cfg-if",
"libc",
"r-efi",
"wasi 0.14.2+wasi-0.2.4",
]
[[package]] [[package]]
name = "gif" name = "gif"
version = "0.13.1" version = "0.13.1"
@ -2214,7 +2226,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc46dd3ec48fdd8e693a98d2b8bafae273a2d54c1de02a2a7e3d57d501f39677" checksum = "dc46dd3ec48fdd8e693a98d2b8bafae273a2d54c1de02a2a7e3d57d501f39677"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"rand", "rand 0.8.5",
"serde", "serde",
] ]
@ -2877,6 +2889,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"bevy", "bevy",
"bevy_vello", "bevy_vello",
"rand 0.9.0",
] ]
[[package]] [[package]]
@ -3444,6 +3457,12 @@ dependencies = [
"proc-macro2", "proc-macro2",
] ]
[[package]]
name = "r-efi"
version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
[[package]] [[package]]
name = "radsort" name = "radsort"
version = "0.1.1" version = "0.1.1"
@ -3457,8 +3476,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [ dependencies = [
"libc", "libc",
"rand_chacha", "rand_chacha 0.3.1",
"rand_core", "rand_core 0.6.4",
]
[[package]]
name = "rand"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
dependencies = [
"rand_chacha 0.9.0",
"rand_core 0.9.3",
"zerocopy 0.8.24",
] ]
[[package]] [[package]]
@ -3468,7 +3498,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [ dependencies = [
"ppv-lite86", "ppv-lite86",
"rand_core", "rand_core 0.6.4",
]
[[package]]
name = "rand_chacha"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
"rand_core 0.9.3",
] ]
[[package]] [[package]]
@ -3477,7 +3517,16 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [ dependencies = [
"getrandom", "getrandom 0.2.15",
]
[[package]]
name = "rand_core"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
dependencies = [
"getrandom 0.3.2",
] ]
[[package]] [[package]]
@ -3487,7 +3536,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
dependencies = [ dependencies = [
"num-traits", "num-traits",
"rand", "rand 0.8.5",
] ]
[[package]] [[package]]
@ -4354,7 +4403,7 @@ version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b"
dependencies = [ dependencies = [
"getrandom", "getrandom 0.2.15",
"serde", "serde",
] ]
@ -4463,6 +4512,15 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasi"
version = "0.14.2+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
dependencies = [
"wit-bindgen-rt",
]
[[package]] [[package]]
name = "wasm-bindgen" name = "wasm-bindgen"
version = "0.2.100" version = "0.2.100"
@ -5193,6 +5251,15 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "wit-bindgen-rt"
version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
"bitflags 2.9.0",
]
[[package]] [[package]]
name = "x11-dl" name = "x11-dl"
version = "2.21.0" version = "2.21.0"

View file

@ -14,3 +14,4 @@ opt-level = 3
[dependencies] [dependencies]
bevy = "0.15.3" bevy = "0.15.3"
bevy_vello = "0.7.1" bevy_vello = "0.7.1"
rand = "0.9.0"

View file

@ -1,7 +1,15 @@
use bevy::prelude::*; use bevy::prelude::*;
use bevy_vello::{VelloPlugin, prelude::*}; use bevy_vello::{VelloPlugin, prelude::*, vello::kurbo::Point};
use rand::Rng;
use std::ops::DerefMut; use std::ops::DerefMut;
const JITTER: f64 = 0.5;
#[derive(Component)]
struct Grid {
points: Vec<Point>,
}
fn main() { fn main() {
App::new() App::new()
.add_plugins(DefaultPlugins) .add_plugins(DefaultPlugins)
@ -14,31 +22,39 @@ fn main() {
fn setup_vector_graphics(mut commands: Commands) { fn setup_vector_graphics(mut commands: Commands) {
commands.spawn((Camera2d, VelloView)); commands.spawn((Camera2d, VelloView));
commands.spawn(VelloScene::new()); commands.spawn(VelloScene::new());
let mut rng = rand::rng();
let mut points = Vec::new();
for x in -20..=20 {
for y in -10..=10 {
points.push(Point::new(
(x as f64) + rng.random_range(-JITTER..=JITTER),
(y as f64) + rng.random_range(-JITTER..=JITTER),
));
}
}
commands.spawn(Grid { points });
} }
fn simple_animation(mut query_scene: Single<(&mut Transform, &mut VelloScene)>, time: Res<Time>) { fn simple_animation(
let sin_time = time.elapsed_secs().sin().mul_add(0.5, 0.5); mut query_scene: Single<(&mut Transform, &mut VelloScene)>,
query_grid: Query<&Grid>,
) {
let (transform, scene) = query_scene.deref_mut(); let (transform, scene) = query_scene.deref_mut();
// Reset scene every frame // Reset scene every frame
scene.reset(); scene.reset();
// Animate color green to blue for point in &query_grid.single().points {
let c = Vec3::lerp(
Vec3::new(-1.0, 1.0, -1.0),
Vec3::new(-1.0, 1.0, 1.0),
sin_time + 0.5,
);
// Animate the corner radius
scene.fill( scene.fill(
peniko::Fill::NonZero, peniko::Fill::NonZero,
kurbo::Affine::default(), kurbo::Affine::default(),
peniko::Color::new([c.x, c.y, c.z, 1.]), peniko::Color::WHITE,
None, None,
&kurbo::RoundedRect::new(-50.0, -50.0, 50.0, 50.0, (sin_time as f64) * 50.0), &kurbo::Circle::new(*point, 0.1),
); );
}
transform.scale = Vec3::lerp(Vec3::ONE * 0.5, Vec3::ONE * 1.0, sin_time);
transform.translation = Vec3::lerp(Vec3::X * -100.0, Vec3::X * 100.0, sin_time); transform.scale = Vec3::ONE * 25.0;
transform.rotation = Quat::from_rotation_z(-std::f32::consts::TAU * sin_time); //transform.translation = Vec3::lerp(Vec3::X * -100.0, Vec3::X * 100.0, sin_time);
//transform.rotation = Quat::from_rotation_z(-std::f32::consts::TAU * sin_time);
} }