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

Aktuelle Zeit: Fr Jul 18, 2025 08:02

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Weltkoordinatenabstand in Pixel?
BeitragVerfasst: Do Sep 16, 2010 21:40 
Offline
DGL Member

Registriert: Mo Sep 13, 2010 10:27
Beiträge: 10
Hallo Leute

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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Weltkoordinatenabstand in Pixel?
BeitragVerfasst: Do Sep 16, 2010 21:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
gluProject ist eigentlich der richtige Weg. Du projizierst beide Punkte in den Screen-Space und berechnest den Abstand. Zeig doch mal deinen Quellcode. :)

P.S. Willkommen bei DelphiGL :)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Weltkoordinatenabstand in Pixel?
BeitragVerfasst: Fr Sep 17, 2010 15:33 
Offline
DGL Member

Registriert: Mo Sep 13, 2010 10:27
Beiträge: 10
Coolcat hat geschrieben:
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];
       
        gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0);
        gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0);
        gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projmatrix, 0);
       
        glu.gluProject(p.getX(),p.getY(),p.getZ(),mvmatrix,0,projmatrix,0,viewport,0,win,0);
       
        return new Point(win[0],win[1],win[2],1);


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 :D

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... :oops:

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.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Weltkoordinatenabstand in Pixel?
BeitragVerfasst: Fr Sep 17, 2010 15:37 
Offline
DGL Member
Benutzeravatar

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.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Weltkoordinatenabstand in Pixel?
BeitragVerfasst: Fr Sep 17, 2010 15:53 
Offline
DGL Member

Registriert: Mo Sep 13, 2010 10:27
Beiträge: 10
Sascha Willems hat geschrieben:
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Weltkoordinatenabstand in Pixel?
BeitragVerfasst: Fr Sep 17, 2010 16:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Und das obwohl ich mit Delphi nichts am Hut habe.

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. :)

_________________
Yeah! :mrgreen:


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


Wer ist online?

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.

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