es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema con el ruido Simplex 1-D sin juntas

Normalmente, al generar ruido Simplex sin costura, la estrategia es pasar a 4 dimensiones (una estrategia que me ha funcionado bien en el pasado al usar Simplex 2D), sin embargo, estoy intentando generar un loop GIF sin costura usando ruido Simplex 1D (solo interesado en el ruido que especifica el valor Y en un gráfico de línea).

Me pregunto si estoy entendiendo mal cómo hacer que las cosas sean sin costuras en 1D o si posiblemente tengo un error lógico aquí. Básicamente, estoy generando una matriz 2D, donde la primera dimensión es el eje Z y la segunda dimensión es una lista de los puntos (valores X-Y) para ese Z. Itero sobre cada z y simplemente trazo cada vértice a su vez.

Lo que noto es que, cuando llego a mi valor máximo de Z, hay un salto claro que indica que estoy haciendo algo mal (no sin costuras).

Estoy usando la biblioteca “fast-simplex-noise” (me gusta más que la función “noise” incorporada en P5) y lo especifico de la siguiente manera:

“`function setup() {
let freq = 0.005;
let octaves = 14;
_noise = new FastSimplexNoise({ frequency: freq, octaves: octaves });

<p>// especifica los puntos:
points = [];</p>

<p>step = 0;
maxSteps = 150;
let r = 1.0;</p>

<p>for (let z = 0; z < maxSteps; z++) {
let t = (1.0 * z) / maxSteps;</p>

<pre><code>points[z] = [];

for (let x = o + 10; x < width – o – 10; x++) {
let _n = _noise.get4DNoise(x, z, r*cos(TWO_PI*t), r*sin(TWO_PI*t));
let _y = height/2 + 250*_n;
points[i].push({ x: x, y: _y });
}
</code></pre>

<p>}
}
“`

En la función “draw”, simplemente itero sobre cada vértice en la lista “points” y llevo un registro del valor actual de “z” por iteración de dibujo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El ruido Simplex sin costuras se genera típicamente en 4 dimensiones, por lo que se espera una discontinuidad al generar un bucle sin costuras en 1 dimensión. Sin embargo, todavía existen formas de hacer que el ruido 1-D aparezca sin costuras.

    Un posible problema con el código proporcionado es que se está utilizando la misma semilla aleatoria para cada iteración de la función draw, lo que puede generar saltos visibles entre los fotogramas. Para hacer que el bucle parezca sin costuras, se debería usar una semilla aleatoria diferente para cada fotograma.

    Otro enfoque es generar múltiples copias del ruido y mezclarlas juntas para crear un bucle sin costuras. Esto se puede hacer desplazando las coordenadas de entrada por una fracción de la longitud del bucle para cada copia del ruido y mezclando los valores resultantes juntos.

    En general, aunque generar un ruido Simplex 1-D sin costuras puede ser desafiante, todavía existen métodos que se pueden utilizar para crear el efecto deseado.

Comments are closed.