Kollision Gerade und Fläche

colblake

Erfahrenes Mitglied
Hallo
ich versuche mich gerade an einem einfachen RayTracer zu bauen der mit einfachen geometrischen Körpern funktioniert. Und beim einfachstem Objekt , dem Quader bzw Würfel, scheiterts schon.
Beim Raytracer verfolgt man ja einen gedachten "Blickstrahl" in die 3D-Scene hinein und behandelt jene Objekte auf die der Strahl trifft. Nun besteht der Körper ja aus 6 Flächen. Mittels Vektorrechnung kann man zwar den Schnittpunkt zwischen Strahl und Ebene berechen, der kann aber außerhalb der Fläche liegen.

Nun zur Frage:
Wie kann ich jetzt berechnen ob der Strahl mit der Fläche kollidiert, um im zweiten Schritt den Schnittpunktberechnung mittels Vektorrechnung zu bestimmen?

Gruß
ColBlake
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    7,4 KB · Aufrufe: 81
Zuletzt bearbeitet:
Hallo,

muß es nicht umgekeht laufen?
Du mußt den Schnittpunkt mit der Ebene berechenen und errechnen, ob er in der Fläche liegt.

Gruß
 
Naja, wenn du die Geradengleichung und die Ebenengleichung (die Fläche ist auch eine Ebene) hast, setzt du sie gleich.
Die Lösungsmenge ist der Schnittpunkt. Die Ebene und der Strahl treffen sich aber immer,
es sei denn sie sind parallel. Das kann man leicht prüfen. Leider hab ich nicht mehr im Kopf
wie :)
 
Zuletzt bearbeitet:
hi FrankBooth,

Das Ermitteln des Schnittpunktes mit der Ebene ist auch nicht mein Problem. Sondern berechnen ob er in der Fläche liegt.

Sorry, falls ich mich missverständlich ausgedrückt haben sollte.

Gruß
ColBlake
 
Ja aber das ist doch eigentlich das Gleiche. Die Fläche ist ne Ebenen.

Hast du denn die Flächengleichung oder nur die Eckpunkte oder gar nichts?
 
Ich bin mir nicht sicher ob ich Dich verstehe. Ich habe alle 4 Eckpunkte der rechteckigen Fläche. Die Fläche ist ein Teil der Ebene.
Bitte mach mal ein Beispiel, wie Du berechen willst, dass der Schnittpunkt in der Fläche liegt.


gruß
ColBlake
 
Berechnen ob er in der Ebene geschieht über die Parametergleichung der Ebene. Die Ebene wird bekanntlich durch 2 (eigentlich 3 aber uns interessieren primär die Spannvektoren und nicht der Stützvektor) Vektoren aufgespannt. Nehmen wir also an die Fläche trägt die Bezeichnung ABCD, So nutzen wir A als Stützvektor und die Vektoren AB und ADals Stützvektoren. Nun setzen wir den Durchstechpunkt in diese Gleichung ein. Sind beide Parameter größergleich 0 und kleinergleich 1 liegt der Punkt innerhalb der Fläche, die von den Vektoren ABund ADumschlossen wird.
Wichtig ist hierbei auch die Richtung der beiden Vektoren damit sie auch die richtige Fläche umschließen.
 
Also eine normale Ebenengleichung sieht so aus:

v1 + x*v2 + y*v3

v1 ist ein Vektor,
v2 ist ein Vektor,
und v3 auch.

x und y sind skalare.

Jetzt hast du 4 Punkte.
Jetzt stellst du eine Ebenengleichung mit 3 Punkten auf
so geht es:
http://www.matheboard.de/archive/376576/thread.html

(!) (!) (!) (!) Achtung die richtigen Punkte nehmen. Nicht dem vom Aufpunkt diagonal gegenüber nehmen (!) (!) (!) (!)

Jetzt bekommst du etwas, das in etwa so aussieht:

v1 + v2 + v3
z.B.:
(1,2,3) + x(4,5,6) + y(7,8,9)

Hier sind aber x und y = 1

also:
(1,2,3)+(4,5,6)+(7,8,9)
Gerade = Ebene

(123) + x(1,2,3) = (1,2,3)+(4,5,6)+(7,8,9)

---> 1+ 1*x1 = 1+4+5
--> x1 = 11

---> 2+ 2*x2 = 2+5+8
--> x2 = 17/2

---> 3 + 3*x3 = 3+6+9
--> x3 = 7


Schnittpunkt (11,8,19/3)

... wenn ich mich nicht vertan habe :)

Sorry war gerade etwas essen hat deshalb länger gedauert
 
Zuletzt bearbeitet:
Achtung Fehler!!

Das was ich gemacht habe ist am Ende falsch.

(123) + x(1,2,3) = (1,2,3)+(4,5,6)+(7,8,9)

Du musste ein x finden das für alle Gleichungen gilt.
Geht hier nicht also nicht in der Fläche!

---> 1+ 1*x1 = 1+4+5
--> x = 11

---> 2+ 2*11 = 2+5+8
--> keine Lösung
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück