From fe9407cbb2d66c480aca966b8455650de113af55 Mon Sep 17 00:00:00 2001 From: Niklas Korz Date: Mon, 31 Mar 2025 21:05:21 +0200 Subject: [PATCH] Replace Voronoi diagram with Barycentric dual mesh --- src/main.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index d03fe54..076b549 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,7 @@ use bevy_vello::{ use fast_poisson::Poisson2D; use noise::{NoiseFn, Simplex}; use std::{ops::DerefMut, time::SystemTime}; -use voronator::VoronoiDiagram; +use voronator::CentroidDiagram; fn main() { App::new() @@ -27,27 +27,23 @@ fn draw_map(mut query_scene: Single<(&mut Transform, &mut VelloScene)>) { let (transform, scene) = query_scene.deref_mut(); scene.reset(); - let grid_size_x = 20.0; - let grid_size_y = 10.0; + let grid_size_x = 120.0; + let grid_size_y = 60.0; let points: Vec<_> = Poisson2D::new() - .with_dimensions([grid_size_x, grid_size_y], 0.2) + .with_dimensions([grid_size_x, grid_size_y], 1.0) .iter() .map(|[x, y]| (x, y)) .collect(); - let diagram = VoronoiDiagram::::from_tuple( - &(0.0, 0.0), - &(grid_size_x, grid_size_y), - &points, - ) - .unwrap(); + // Barycentric dual mesh + let mesh = CentroidDiagram::::from_tuple(&points).unwrap(); let seed = SystemTime::now() .duration_since(SystemTime::UNIX_EPOCH) .unwrap() .as_secs() as u32; let noise = Simplex::new(seed); - for cell in diagram.cells() { + for cell in &mesh.cells { let mut first = true; let mut path = Vec::new(); let mut center = Point::new(0.0, 0.0); @@ -85,7 +81,7 @@ fn draw_map(mut query_scene: Single<(&mut Transform, &mut VelloScene)>) { ); } - let scale = 60.0; + let scale = 10.0; transform.scale = Vec3::ONE * scale; transform.translation = Vec3::new(-(grid_size_x as f32 / 2.0), grid_size_y as f32 / 2.0, 0.0) * scale;