Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hi
Ich habe mal wieder ein Problem.
Und zwar geht es darum, dass ich einen Punkt auf einer Ebene brauche. Die Ebene ist auf höhe 0.0 und nicht gedreht, also verläuft auf der X und Z-Achse. Alle Informationen die ich habe sind die Matrizen, ein Punkt unterhalb der Ebene und der Y-Wert der Ebene, wie gesagt 0.0.
Ich möchte jetzt im prinzip den Abstand zwischen Ebene und "Auge" von dem Abstand zwischen "Auge" und Punkt subtrahieren, sodass ich den Abstand zwischen Ebene und Punkt auf dem Sichtvektor erhalte (ich hoffe, das war verständlich, ich hänge sicherheitshalber mal ne Skizze an).
Irgendjemand eine Idee, wie ich das machen kann?
Gruß Lord Horazont
Dateianhänge:
Dateikommentar: Der hellgrüne Pfeil stellt die Strecke dar, die ich errechnen will. Skizze 1.png [ 2.01 KiB | 3827-mal betrachtet ]
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Ja, das ist der richtige Weg um Nebel zu berechnen.
Der Betrachter soll sich auf der Position b befinden.
Die Gleichung des Strahles ist dann x(t) = b+ t * (gl_Vertex - b).
(gl_Vertex in Weltkoordinaten) (grüner Pfeil = gl_Vertex - b )
t=0 ist bei der Betracherposition, t=1 auf der Weltgeometrie.
Für die z-Koordiante gilt: x(t).z = b.z + t * (gl_Vertex.z - b.z)
Wenn man das auf 0 setzt, ergibt sicht
x(t).z = 0 = b.z + t * (gl_Vertex.z - b.z)
0 = b.z + t * (gl_Vertex.z - b.z)
-b.z = t * (gl_Vertex.z - b.z)
t = -b.z / (gl_Vertex.z - b.z)
t gibt den Anteil des grünen Pfeils vor der Ebene an. Falls t<0 ist oder der Betrachter sich auf Höhe der Ebene (gl_Vertex.z - b.z=0) befindet gibt es keinen sinnvollen Schnittpunkt.
Die Länge der Strecke (unter) der Ebene ist (1-t) * length(gl_Vertex -b)
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ok...
Und was ist b?
Der Punkt unter der Ebene ist ja jeweils gl_Vertex, aber wie komme ich auf b?
Muss ich desweiteren gl_Vertex schon mit der ModelViewProjectionMatrix multiplizieren oder nur mit ModelViewMatrix?
//Edit: achja, das ganze läuft in einer 3D-Szene ab, obwohl die skizze 2d ist.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: Bing [Bot] und 0 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.