Also habe ich gerade einen kleinen Ausschnitt geschrieben, um das Mandelbrot-Fraktal zu erzeugen, und stelle mir meine Überraschung vor, als sie hässlich und schief herauskam (wie Sie unten sehen können). Ich würde einen Punkt in der Richtung schätzen, warum das überhaupt passieren würde. Es ist eine Lernerfahrung und ich suche niemanden, der es für mich tut, aber ich bin irgendwie in einer Sackgasse, die es austesten kann. Der verursachende Generierungscode ist:
%Vor%Und der Bildcode (dem ich ziemlich sicher bin) ist:
%Vor%
Nun, das Bild ist verzerrt, weil die Dimensionen falsch sind, aber das ist offensichtlich. Sie geben die Bildgröße an und spucken dann eine Liste von Pixeln aus, aber mit einer falschen Anzahl von Pixeln pro Zeile.
Beachten Sie, dass das Bild fast genau einmal umgebrochen wird: Mit anderen Worten skew per line * height of the image = width of the image
. Da das Bild quadratisch ist, bedeutet das, dass Sie ein zusätzliches Pixel pro Zeile erzeugen - einen guten, alten Fehler nach dem anderen.
Der naheliegendste Ort dafür ist, wenn Sie die Koordinaten erzeugen, um zu iterieren. Lass uns ein kleines Set ausprobieren und sehen, was es uns gibt:
%Vor%Und so. Ich vermute, dass der Fehler darin besteht, dass Sie das Inkrement als reale Entfernung dividiert durch die Pixelgröße berechnen, die die korrekte Anzahl von Intervallen erzeugt, aber einen zusätzlichen Punkt. Betrachten Sie das Intervall von 0.0 bis 1.0. Mit Ihrer Berechnung mit einer Breite von 4 erhalten wir:
%Vor%Um die richtige Anzahl an Punkten zu erhalten, reduzieren Sie einfach die Größe um 1, wenn Sie die Koordinaten erzeugen.
Es ist eine Lernerfahrung, und ich suche niemanden, der es für mich tut, aber ich bin irgendwie in einer Sackgasse, es zu debuggen
Ich weiß, dass camccann dein Problem bereits gelöst hat, aber er hat dir "den Fisch gegeben", während "dir das Fischen beizubringen" nützlicher sein könnte.
Ich werde also teilen, was meiner Meinung nach ein nützlicher Weg sein könnte, die Lösung zu erreichen.
Ihr Mandelbrot-Bild ist also verzerrt. Einige mögliche Ursachen:
Sie könnten ein Experiment machen, um weiter zu lernen, wenn eine der obigen Erklärungen relevant ist oder nicht. Ein solches Experiment könnte zum Beispiel triviale Bilder von etwa horizontalen und vertikalen Linien zeichnen.
Nachdem du dieses Experiment gemacht hast, wirst du sehen, dass deine vertikalen Linien nicht so vertikal sind. Zurück zu den wahrscheinlichen möglichen Ursachen, ist es klar, dass Sie einen Fehler beim Darstellen / Speichern Ihres Bildes haben, und das erklärt alles. Möglicherweise haben Sie immer noch einen Fehler in Ihrer Mandelbrot-Formel, aber wahrscheinlich nicht, und das ist für das vorliegende Problem nicht relevant.
Nun sollten Sie darüber nachdenken, welche Art von Bildspeicherfehler vertikale Linien diagonal verursacht. Wenn keine Idee auftaucht, können Sie Ihr einfaches Beispiel immer kleiner machen, bis das PPM-Ergebnis klein genug ist, dass Sie es von Hand untersuchen können. Dann werden Sie sicherlich den Fehler fangen.
Tags und Links haskell image mandelbrot