Estoy tratando de descubrir cómo puedo, o al menos dónde puedo leer más al respecto, crear un gradiente de círculo/cuadrado y almacenar los datos en una matriz 2d.
Mi objetivo es usar el degradado con ruido símplex para crear una isla de procedimiento restando el degradado del ruido generado.
Aquí hay referencias de imágenes de los gradientes de los que estoy hablando y tratando de lograr:
El uso de un degradado con ruido se explica, por ejemplo, en una publicación de blog que encontré aquí: https://medium.com/@travall/procedural-2d-island-generation-noise-functions-13976bddeaf9
Pero solo menciona la creación del degradado sin ningún detalle sobre cómo se supone que debe hacerse. He intentado mirar alrededor pero no he podido encontrar lo que estoy buscando.
Agradecería cualquier consejo o sugerencia en la dirección correcta.
He estado tratando de hacer más o menos lo mismo. Para el cuadrado, puede encontrar la respuesta aquí: Generación de gradiente de matriz 2D en Unity
Y para el círculo uno: puede generarlo en función de la distancia de cada "píxel" desde el centro de la matriz.
este código está en C#, porque eso es lo que estoy usando, pero creo que es lo suficientemente básico como para convertirlo fácilmente.
int arrayWidth, arrayHeight; float[,] gradientArray = new var[arrayWidth, arrayHeight] int centerX = arrayWidth / 2 -1; //find center of the array int centerY = arrayHeight / 2 -1; //find center of the array for (int x = 0; x < arrayWidth; x++) { for (int y = 0; y < arrayHeight; y++) { float distanceX = (centerX - x) * (centerX - x); float distanceY = (centerY - y) * (centerY - y); //find distance from center float distanceToCenter = Mathf.Sqrt(distanceX + distanceY); //divide distance by one of the sides (width or height). //by messing with this line you can easily alter the gradient distanceToCenter = distanceToCenter / arrayHeight; gradientArray[x, y] = distanceToCenter; //set value } }