
Zitat von
SnuffMaster23:
Aber kann man bei dem Fraktal nicht irgendwie Oberfläche und "Füllung" auseinanderhalten? So nach der Art "Auf der einen Seite is was, auf der anderen nix => Oberfläche".
Nicht direkt. Das Problem ist nun, dass du ja über kein explizites Verfahren auf einen Punkt der "Oberfläche" kommst (die ja eigentlich nicht existiert...). Mein Raytracer macht es daher so:
- Einen Strahl schrittweise nach vorne abtasten
- Sobald ein Punkt auf einmal zu dem Fraktal gehört:
Einen halben Schritt zurück, und schauen obs da noch immer so ist.
- Wenn ja: Schritt nochmals halbieren, zurück, und testen
- Wenn nein: Schritt nochmals halbieren, vorwärts, und testen
- Bei einer beliebigen Genauigkeit aufhören, und so tun als sei der letzte getestete Punkt ein Punkt der Oberfläche.
Das Verfahren nennt sich Bisektion, und schließt sich an die sampleweise Tiefensuche zur Verfeinerung an. Dadurch lässt sich die Samplemenge erheblich reduzieren. Eine weitere Reduktion mache ich darüber, dass man nachdem man ein Punkt getestet hat,
abschätzen kann, wie nahe dieser dem Fraktal nun war. Je näher ich komme, desto enger mache ich die Samples. Somit werden Bereiche in denen der Strahl nichts trifft sehr schnell abgehandelt, und nur dort wo es nötig ist wird mit großer Genauigkeit gearbeitet.
Während all meiner Nachforschungen (die sich wie im Eingangsposting erwähnt in rund 4 Jahren abspielten) bin ich auf kein effizienteres Verfahren gestoßen, ohne dass man den genauen Typ des Fraktals im Vorfeld kennt (bzw. auch dann wären nur minimale Optimierungen möglich), und nicht erhebliche Teile des Fraktals "verpasst". (Das "Punkt-Ist-Nah-Dran"-Verfahren schreib ich mir hierbei sogar selbst auf die Fahne, die Bisektion macht POVRay genau so (aus deren Sourcen abgeschaut

)).
Explizite Oberflächenberechnung ist, Volumen hin oder her, leider nicht möglich. (Dann wäre das ganze Thema
imho auch ne ganze Ecke langweiliger ^^.)
Wenn du dich mal in das Thema Fraktale einliest, wirst du
imho schnell merken wo da der Hund begraben liegt
@Dax:

Joa, ich bin nach wie vor zur Zeit mit delphi-loser Uni und Arbeit so weit ausgefüllt, dass die Freizeitprogrammierung leider sehr wenig Raum hat

. Folglich müssen die
wirklich interessanten Themen, die ich bevorzugt mit Delphi angehe, warten
Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel