Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#104

Re: Fraktal-Raytracer, mein Lebenswerk :)

  Alt 29. Apr 2006, 19:16
Zitat von SnuffMaster23:
Kann man da nicht irgendwie mathematich den Schnittpunkt finden??? Ich bin bisher immer davon ausgegangen, dass man das so macht. Naja, wenn das bei den Fraktalen nicht wirklich geht solls mir auch Recht sein .
Vielen Dank für dein Lob

Für gewöhnlich macht man es tatsächlich so, dass man einen Schnittpunkt des Strahls mit der Oberfläche direkt errechnet. Das setzt allerdings voraus, dass überhaupt eine Oberfläche existiert! Streng genommen haben Fraktale eine solche nämlich garnicht. Das ist zunächst mal etwas verwirrend, da ja eine Fläche sichtbat ist, aber ein voll ausdefiniertes Fraktal (mit diskreter Mathematik überhaupt nicht möglich) verhält sich da schon sehr anders.
Am ehesten kann man ein Fraktal noch als skalares Feld erklären, bei denen eine explizite Flächenbestimmung auch nicht so ohne Weiteres möglch ist (-> Blobs/Metaballs sind ähnlich beim Raytracen). Bei Polygonobjekten gestaltet sich das erheblich einfacher: Du hast einfach Punkte, die schon fertige Flächen definieren. Damit zu schneiden ist einfach. Ebenfalls sind parametrische Figuren (Kugeln z.B. die nur als Formel angegeben werden) sehr einfach, da die Formeln die Oberfläche explizit, und in jedem Punkt vollständig beschreiben.
Bei einem Fraktal kannst du im Grunde nur so vorgehen: Ich nehme mal Punkt (x, y, z) und teste ob er zum Fraktal gehört*. Was nicht geht ist: Ich nehme Gerade G und schaue an welchem Punkt diese das Fraktal schneidet (abgesehen davon ist ein Fraktal volumetrisch - d.h. es ist "gefüllt" und nicht wie eine Kugel nur eine unendlich dünne Hülle. Man würde, wäre es möglich, also ohnehin oftmals unendlich viele Schnittpunkte erhalten).

*Selbst dieser Test ist nicht vollständig möglich, da dies über ein unendlich andauerndes iteratives Verfahren gemacht wird (was überhaupt erst das Wesen der Fraktale ausmacht). Man muss also bei einer beliebigen Genauigkeit abbrechen, und dann entscheiden ob der Punkt dazu gehört, oder nicht. (Diese Genauigkeit wird über die Eigenschaft "Iterationen" geregelt.)


Ich muss mal wieder Zeit und Muße finden in diese Richtung weiter zu machen

Schönen Gruß,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat