From 823f258672a2d918b96a661ae8bce429e331197c Mon Sep 17 00:00:00 2001 From: Spectre Date: Sun, 23 Feb 2025 12:43:56 +0100 Subject: [PATCH] Auto commit --- src/lib.rs | 16 +++++++++------- src/main.rs | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 453e9d0..9a2da68 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ -use noise::{NoiseFn, Perlin}; +use noise::{Fbm, MultiFractal, NoiseFn, Perlin}; -/// Generates a 16x16 noise map for a given chunk, based on a seed and chunk coordinates. +/// Generates a 16x16 noise map for a given chunk using fractal noise with multiple octaves +/// to avoid repetitive patterns. /// /// # Arguments /// - `seed`: A number influencing the noise generation (e.g., 42). @@ -16,7 +17,8 @@ pub fn generate_normalized_noise_map( chunk_z: i32, scale: f64, ) -> [[f64; 16]; 16] { - let perlin = Perlin::new(seed); + // Spécifier explicitement que Fbm utilise Perlin comme bruit de base + let fbm = Fbm::::new(seed).set_octaves(15); let mut noise_map = [[0.0; 16]; 16]; // Define normalization range @@ -29,8 +31,8 @@ pub fn generate_normalized_noise_map( let world_x = (chunk_x * 16 + x as i32) as f64 * scale; let world_z = (chunk_z * 16 + z as i32) as f64 * scale; - // Generate Perlin noise value (between -1 and 1) - let noise_value = perlin.get([world_x, world_z]); + // Generate fractal noise value (with multiple octaves) + let noise_value = fbm.get([world_x, world_z]); // Normalize noise from [-1,1] to [-64,324] let normalized_noise = (noise_value + 1.0) / 2.0 * (max_range - min_range) + min_range; @@ -44,14 +46,14 @@ pub fn generate_normalized_noise_map( #[cfg(test)] mod tests { - use crate::generate_normalized_noise_map; + use super::*; #[test] fn test_generate_normalized_noise_map() { let noise_map = generate_normalized_noise_map(456, 0, 0, 0.1); assert_eq!(noise_map.len(), 16); for row in noise_map.iter() { - assert_eq!(row.len(), 16) + assert_eq!(row.len(), 16); } } } diff --git a/src/main.rs b/src/main.rs index 56b5d50..00c2ec6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,7 @@ use worldgen::generate_normalized_noise_map; // Import rayon for parallel proces fn main() { // Define parameters - let radius = 320; + let radius = 300; let chunk_size = 16; let num_chunks = 2 * radius + 1; // number of chunks per dimension (65 here) let img_width = num_chunks * chunk_size; @@ -19,7 +19,7 @@ fn main() { let chunk_results: Vec<(i32, i32, [[f64; 16]; 16])> = chunk_coords .into_par_iter() .map(|(cx, cz)| { - let noise_map = generate_normalized_noise_map(42, cx, cz, 0.01); + let noise_map = generate_normalized_noise_map(42, cx, cz, 0.001); (cx, cz, noise_map) }) .collect();