AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Fraktal-Raytracer, mein Lebenswerk :)

Fraktal-Raytracer, mein Lebenswerk :)

Ein Thema von dizzy · begonnen am 1. Jul 2005 · letzter Beitrag vom 9. Aug 2007
Antwort Antwort
Benutzerbild von dizzy
dizzy

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

Re: Fraktal-Raytracer, mein Lebenswerk :)

  Alt 30. Apr 2006, 22:05
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:
  1. Einen Strahl schrittweise nach vorne abtasten
  2. 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
  3. 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
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz