Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 20, 2025 19:02

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Jul 12, 2007 19:13 
Offline
DGL Member
Benutzeravatar

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
Skizze 1.png [ 2.01 KiB | 3823-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 networkmy 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
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 12, 2007 20:22 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
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)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 13, 2007 06:02 
Offline
DGL Member
Benutzeravatar

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 networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.017s | 19 Queries | GZIP : On ]