Skip to content

Commit

Permalink
noise: add fractal noise example
Browse files Browse the repository at this point in the history
  • Loading branch information
PottierLoic committed Jul 23, 2024
1 parent c8f94bf commit 53c91c0
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 3 deletions.
16 changes: 16 additions & 0 deletions examples/noise_fractal_2d/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Example - plot_bar 📘

This example demonstrates the usage of the V Scientific Library for generating pink noise.

## Instructions

1. Ensure you have the V compiler installed. You can download it from [here](https://vlang.io).
2. Ensure you have the VSL installed. You can do it following the [installation guide](https://github.com/vlang/vsl?tab=readme-ov-file#-installation)!
3. Navigate to this directory.
4. Run the example using the following command:

```sh
v run main.v
```

Enjoy exploring the capabilities of the V Scientific Library! 😊
54 changes: 54 additions & 0 deletions examples/noise_fractal_2d/main.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
module main

import rand
import vsl.noise
import vsl.plot

fn main() {
// Creation of the noise generator.
// Other noise functions and dimensions count are available.
rand.seed([u32(3155200429), u32(3208395956)])
mut generator := noise.Generator.new()
generator.randomize()

mut x := []f64{}
mut y := []f64{}
mut z := []f64{}

// 5 layers of simplex noise
octaves := 5
persistence := 0.5

for xx in 0 .. 200 {
for yy in 0 .. 200 {
mut total := 0.0
mut frequency := 1.0
mut amplitude := 1.0
mut max_value := 0.0

for _ in 0..octaves {
total += generator.simplex_2d(0.03 * xx * frequency, 0.03 * yy * frequency) * amplitude
max_value += amplitude
amplitude *= persistence
frequency *= 2.0
}

// Normalize to [-1, 1]
total /= max_value
x << xx
y << yy
z << total
}
}

mut plt := plot.Plot.new()
plt.heatmap(
x: x
y: y
z: z
)
plt.layout(
title: 'Pink `fractal` noise 2d example'
)
plt.show()!
}
6 changes: 3 additions & 3 deletions examples/noise_simplex_2d/main.v
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ fn main() {
mut generator := noise.Generator.new()
generator.randomize()

mut x := []f64{cap: 1600}
mut y := []f64{cap: 1600}
mut z := []f64{cap: 1600}
mut x := []f64{}
mut y := []f64{}
mut z := []f64{}

for xx in 0 .. 40 {
for yy in 0 .. 40 {
Expand Down

0 comments on commit 53c91c0

Please sign in to comment.