Eine Übung in Shiffman Nature of Code fragt mich, Perlin Noise mit Processing noise() Funktion zu erstellen. Hier ist mein Code habe ich Perlin NoiseWarum ist dieses Perlin Noise-Bild weicher als das andere?
float xSpace = 0; // Signifies "space" between noise() values on the x coordinate.
float ySpace = 0; // Signifies "space" between noise() values on the y coordinate.
void setup(){
size(500,500);
background(0);
loadPixels();
for(int x = 0; x < width; x++) {
for(int y = 0; y < height; y++) {
float bright = map(noise(xSpace,ySpace),0,1,0,255);
pixels[(y * width) + x] = color(bright);
//Each pixel in the pixels[] array is a color element.
ySpace = ySpace + 0.01;
}
xSpace = xSpace + 0.01 ;
}
updatePixels();
}
Und zu erstellen, wenn ich meinen Code ausführen, erstellt es ein Bild wie dieses
ich an der Lösung in dem Lehrbuch aussehen. Die Lösung des Lehrbuchs und meine Lösung sind fast identisch, außer dass das Lehrbuch bei jeder Iteration der äußeren Schleife ySpace
zurück auf 0
reinitialisiert.
// Textbook's solution
for(int x = 0; x < width; x++) {
ySpace = 0;
for(int y = 0; y < height; y++) {
float bright = map(noise(xSpace,ySpace),0,1,0,255);
pixels[(y * width) + x] = color(bright);
ySpace = ySpace + 0.01;
}
xSpace = xSpace + 0.01 ;
}
Allerdings, wenn ich das Lehrbuch des Code ausführen, erstellt der Code eine viel glattere Bild wie dieses
Warum, wenn ySpace
in der äußeren Schleife neu initialisiert wird, wird das Bild kommen viel glatter als das, wenn es nicht ist? Mit anderen Worten, warum erstellt der Code des Lehrbuchs ein viel glatteres Bild als mein Code?
Ich bemerkte, dass die ySpace
in meinem Code deutlich größer als die ySpace
im Code des Lehrbuchs ist, sobald die for-Schleife abgeschlossen ist. Aber ich bin mir nicht sicher, ob das der Grund dafür ist, dass das Bild meines Codes nicht so glatt ist. Aus meinem Verständnis erzeugt Rauschen (x, y) 2d Perlin Noise. Wenn das Pixel auf ein Pixel angewendet wird, sollte es eine ähnliche Farbe wie die umgebenden Pixel haben, aber es sieht nicht so aus, als würde es in meinem Code vorkommen.
Nicht sicher, was die Frage hier ist. Sie haben einen grundlegenden Parameter des Algorithmus geändert und sind überrascht, wenn die Ergebnisse nicht mit dem unmodifizierten Algorithmus übereinstimmen. Beachten Sie, dass der Buchcode "ySpace" nicht innerhalb der ersten Schleife "initialisiert" - it *** re *** initialisiert den Wert auf Null bei jeder Iteration der äußeren Schleife. –
Ok, ich habe meinen Beitrag bearbeitet, um meinen Fehler zu korrigieren. Ist die Reinitialisierung von "ySpace" der Grund, warum das Bild des Lehrbuchs viel glatter ist als meines? –