Ich hänge nun schon seit Stunden an einem Problem bei dem ich einfach nicht weiterkomme. Und zwar habe ich einen Abstand dessen Länge ich in Weltkoordinaten kenne. Nun möchte ich gerne wissen wie groß dieser Abstand in Pixel ist. Ich habe versucht das mit gluProject zu lösen, aber da bekomme ich immer falsche Werte heraus. Weiß vielleicht jemand wie ich das sonst noch machen könnte?
gluProject ist eigentlich der richtige Weg. Du projizierst beide Punkte in den Screen-Space und berechnest den Abstand. Zeig doch mal deinen Quellcode.
gluProject ist eigentlich der richtige Weg. Du projizierst beide Punkte in den Screen-Space und berechnest den Abstand. Zeig doch mal deinen Quellcode.
Hier ist mein Code. Ist zwar nicht in Delphi sondern in Java, aber die OpenGL Aufrufe sind ja gleich.
Code:
int viewport[] = new int[4]; double mvmatrix[] = new double[16]; double projmatrix[] = new double[16]; double win[]=new double[4];
Damit berechne ich die Bildschirmkoordinaten eines Punktes. Die Werte die ich dabe zurückbekomme stimmen aber nicht mit den Werten überein die ich bei einem Mausklick auf diesen Punkt aus dem Mouse Event auslese.
Zitat:
P.S. Willkommen bei DelphiGL
Danke
edit: Nachdem ich mich nun 2 Tage mit diesem Problem herumgeärgert habe, habe ich nun bemerkt dass die Werte doch stimmen. Ich habe sie nur mit den falschen verglichen...
edit2: Y Wert stimmte doch nicht. Danke für den Hinweis, Sascha.
Dann nutze ich die Gelegenheit euch zu eurem Forum und vor allem eurem Wiki zu gratulieren. Neben der offiziellen OpenGL Seite und den NeHe Tutorials ist eure Website meine liebste Anlaufstelle wenn es um OpenGL geht. Und das obwohl ich mit Delphi nichts am Hut habe.
Zuletzt geändert von Ladnaks am Fr Sep 17, 2010 15:55, insgesamt 2-mal geändert.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Der Ursprung liegt bei OpenGL unten/links, nicht wie bei Windows/Linux oben/links, du nutzt also einen "falschen" Positionswert für die Y-Achse. Daher einfach untere Viewportkante - Objekt.Y nehmen.
Der Ursprung liegt bei OpenGL unten/links, nicht wie bei Windows/Linux oben/links, du nutzt also einen "falschen" Positionswert für die Y-Achse. Daher einfach untere Viewportkante - Objekt.Y nehmen.
Mich interessiert eh nur der X-Wert, aber dennoch danke für den Hinweis. Könnte später noch nützlich sein. Ansonsten sollten die Werte aber korrekt berechnet werden. Siehe mein edit im letzten Beitrag.
Auch wenn die Mehrheit Delphi/FreePascal nutzt sind hier eine Menge Leute die C++, Java, Scala, WebGL und alles mögliche andere benutzen. Wenn du hier im Forum eine Frage stellst solltest du nur immer dabei sagen, dass es sich um Java/JOGL handelt.
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.