Vereinigung, Schnitt, Differenz |
|
So funktioniert Raytracing <- Basisobjekte -> Implizit definierte Oberflächen |
|
|
Allgemeines
Bei diesen drei Objekttypen (auch binäre Operationen genannt) stellt man sich die Objekte nicht nur noch als unendlich dünne Oberflächen
vor, sondern als richtig mit Material ausgefüllt. Neben der Schnittpunktberechnung, die die Oberfläche definiert, kommt daher noch eine
wichtige weitere Berechnung hinzu: Zu jedem Objekt muss es eine Funktion geben, die angibt, ob irgendein Punkt in dem Objekt drin liegt, oder
ob er außerhalb liegt. Ähnlich wie bei der Schnittpunktberechnung habe ich auch hier eine extra Routine, die sich zunächst um die
richtige Skalierung, Rotation und Position kümmert, und dann die eigentliche Funktion des Objekts aufruft. Damit wird die Berechnung, ob
ein Punkt im Objekt liegt, für alle Objekte so einfach, dass ich auf dieser Seite gar nicht häher darauf eingehe. Für die Kombinationsobjekte
selbst kann man sich diese Berechnung auch leicht überlegen. Damit kann man die Kombinationen also beliebig ineinander verschachteln! | |||
|
Zusammenfassung von Objekten Hier passiert noch gar nichts spektakuläres. Bei dieser Zusammenfassung ist das Resultat genau das gleiche, wie wenn man die Objekte alle einzeln definieren würde. Die Schnittpunktberechnung ist dann ebenso einfach: Man muss einfach die Schnittpunkte mit allen Unterobjekten berechnen, und dann den ersten davon herauspicken. Im Beispielbild sieht man auch, dass die beiden Objekte vollständig vorhanden sind. Diese einfache Zusammenfassung ist aber trotzdem nützlich: Man kann sie nämlich als Ganzes verschieben, skalieren und drehen. [nach oben] | ||
|
Vereinigung Die Vereinigung sieht auf den ersten Blick genau so aus, wie eine einfache Zusammenfassung. Bei genauerem Hinsehen wird man aber bemerken, dass die Objektoberflächen der Unterobjekte nicht im Inneren fortgesetzt werden. Was übrig bleibt, ist nur die "Außenhaut" der einzelnen Objekte, also alle die Punkte, die nicht im Inneren eines der beteiligten Objekte liegen. Damit ist auch klar, wie man die Schnittpunktberechnung machen muss: Suche alle Schnittpunkte mit allen Objekten. Verwirf dabei alle die Schnittpunkte, die im Inneren eines der anderen Objekte liegen. Nimm von den übrigen den nächsten. [nach oben] | ||
|
Schnitt Das Schnittobjekt enthält alle die Punkte, die im Inneren aller beteiligten Objekte liegen (im Sinne der Mengenlehre also die Schnittmenge aller inneren Punkte der Objekte). Die Schnittpunktberechnung geht ähnlich wie bei der Vereinigung: Suche alle Schnittpunkte mit allen Objekten. Verwirf dabei alle die Schnittpunkte, die außerhalb eines der anderen Objekte liegen. Nimm von den übrigen den nächsten. [nach oben] | ||
|
Differenz Hierbei schneidet man Objekte aus einem Grundobjekt heraus. Übrig bleiben die Punkte des Grundobjekt, die außerhalb von allen Objekten liegen, die "subtrahiert" werden. Die Schnittpunktberechnung geht dann so: Suche alle Schnittpunkte mit dem Grundobjekt. Verwirf dabei alle die Schnittpunkte, die im Inneren eines der zu subtrahierenden Objekte liegen. Suche dann alle Schnittpunkte mit zu subtrahierenden Objekten; verwirf alle die, die außerhalb vom Grundobjekt liegen. Von all diesen Schnittpunkten nimm den nächsten. [nach oben] | ||
|