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

Aktuelle Zeit: Mi Jul 09, 2025 17:06

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 15:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
die sourcen habe ich geändert, jetzt bekomme ich auch für z eine richtigen wert, jetzt bin ich schon einen kleinen schritt weiter. Aber x,y und z sind nach meiner meinung nicht richtig!

Aufruf :
Code:
  1.  
  2.  
  3.   WinKoorToObjectKoor(100,10,2,x,y,z);
  4.  
  5.   caption := 'x: '+ floattostr(x)+'  y: '+floattostr(y)+'  z: '+floattostr(z);
  6.  
  7.  


Sourcen
Code:
  1.  
  2.  
  3. procedure WinKoorToObjectKoor(x, y, z: integer; var Ox, Oy,Oz: Double);
  4.  
  5. const
  6.  
  7.   GL_Double = $140A;
  8.  
  9. var
  10.  
  11.   a,b : array [0..15] of GLDouble;
  12.  
  13.   c : array [0..3] of GLint;
  14.  
  15.   x1,y1,z1 : GLDouble;
  16.  
  17. begin
  18.  
  19.   glGetDoublev(GL_MODELVIEW_MATRIX,@a[0]);
  20.  
  21.   glGetDoublev(GL_PROJECTION_MATRIX,@b[0]);
  22.  
  23.   glGetIntegerv(GL_VIEWPORT,@c[0]);
  24.  
  25.  
  26.  
  27.   glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_DOUBLE,@z);
  28.  
  29.   gluUnProject(x,y,z,@a[0],@b[0],@c[0],x1,y1,z1);
  30.  
  31.  
  32.  
  33.   Ox := Round(X1);
  34.  
  35.   Oy := Round(y1);
  36.  
  37.   Oz := Round(z1);
  38.  
  39. end;
  40.  
  41.  


Ergebnis :
<a href='http://hometown.aol.de/DelphiPic/Bild3.JPG' target='_blank'>http://hometown.aol.de/DelphiPic/Bild3.JPG</a>

das kann ja wohl nicht so schwer sein. Ist es bestimmt auch nicht nur bis man dahin gekommen ist, ist es ein langer weg!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 15:32 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Und nocheinmal:
Code:
  1.  
  2.  
  3. glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_DOUBLE,@z);
  4.  
  5. gluUnProject(x,y,z,@a[0],@b[0],@c[0],x1,y1,z1);

Warum liest du den Tiefenwert in z ein benutzt aber ein nicht initialisierten Wert bei gluUnProject? z <> z1!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Ich hab' in einem anderen OpenGL-Forum (bekenne mich schuldig. Bin fremdgegangen ;)) folgenden Code gefunden (original war in C. Hab' ihn einfach angepasst). Den könntest DU mal probieren:
Code:
  1.  
  2.  
  3. procedure WinKoorToObjectKoor(x, y: integer; var Ox, Oy,Oz: Double);var
  4.  
  5.  &nbsp;a,b : array [0..15] of GLDouble;
  6.  
  7.  &nbsp;c : array [0..3] of GLint;
  8.  
  9.  &nbsp;x1, y1, z1 : GLFloat; &nbsp;
  10.  
  11. begin
  12.  
  13.  &nbsp;glGetIntegerv(GL_VIEWPORT, @c[0]);
  14.  
  15.  
  16.  
  17.  &nbsp;y := viewport[2] - y;
  18.  
  19.  &nbsp;y1 := y;
  20.  
  21.  &nbsp;x1 := x;
  22.  
  23.  
  24.  
  25.  &nbsp;glGetDoublev(GL_MODELVIEW_MATRIX, @a[0]);
  26.  
  27.  &nbsp;glGetDoublev(GL_PROJECTION_MATRIX, @b[0]);
  28.  
  29.  &nbsp;glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, @z1);
  30.  
  31.  &nbsp;gluUnProject(x1,y1,z1, @a[0], @b[0], @c[0], ox, oy, oz);
  32.  
  33. end;
  34.  
  35.  

Keine Ahnung ob das Funktioniert und sicherlich kann man das Variablentechnisch optimieren. Hey, ich hab's nicht geschreiben sondern nur konvertiert und nicht getestet! Aber der, welcher es veröffentlicht hat, meinte, der Code würde auf das Bsp. 3-8 des OpenGL-RedBooks basieren. Notfalls da mal 'reinschaun.

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 16:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Zitat:
Ich hab' in einem anderen OpenGL-Forum (bekenne mich schuldig. Bin fremdgegangen ;)) folgenden Code gefunden (original war in C. Hab' ihn einfach angepasst). Den könntest DU mal probieren:
Code:
  1.  
  2.  
  3. procedure WinKoorToObjectKoor(x, y: integer; var Ox, Oy,Oz: Double);var
  4.  
  5.  &nbsp;a,b : array [0..15] of GLDouble;
  6.  
  7.  &nbsp;c : array [0..3] of GLint;
  8.  
  9.  &nbsp;x1, y1, z1 : GLFloat; &nbsp;
  10.  
  11. begin
  12.  
  13.  &nbsp;glGetIntegerv(GL_VIEWPORT, @c[0]);
  14.  
  15.  
  16.  
  17.  &nbsp;y := viewport[2] - y;
  18.  
  19.  &nbsp;y1 := y;
  20.  
  21.  &nbsp;x1 := x;
  22.  
  23.  
  24.  
  25.  &nbsp;glGetDoublev(GL_MODELVIEW_MATRIX, @a[0]);
  26.  
  27.  &nbsp;glGetDoublev(GL_PROJECTION_MATRIX, @b[0]);
  28.  
  29.  &nbsp;glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, @z1);
  30.  
  31.  &nbsp;gluUnProject(x1,y1,z1, @a[0], @b[0], @c[0], ox, oy, oz);
  32.  
  33. end;
  34.  
  35.  

Keine Ahnung ob das Funktioniert und sicherlich kann man das Variablentechnisch optimieren. Hey, ich hab's nicht geschreiben sondern nur konvertiert und nicht getestet! Aber der, welcher es veröffentlicht hat, meinte, der Code würde auf das Bsp. 3-8 des OpenGL-RedBooks basieren. Notfalls da mal 'reinschaun.

cool, danke erst mal das du dir die Mühe gemacht hast. Habe es mal ausprobiert und als Ergebnis habe ich volgendes bekommen :
<a href='http://hometown.aol.de/DelphiPic/Rundung.JPG' target='_blank'>http://hometown.aol.de/DelphiPic/Rundung.JPG</a>. Also noch nicht ganz richtig und im Reedbook habe ich auch nichts gefunden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 16:15 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Dan probier statt den glFloats nochmal die Double-Varianten. Y und Z scheinen ja ganz sinnvolle Werte zu haben, aber der X Wert sieht mir nach 'nem Überlauf aus...

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 16:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
funktioniert auch nicht :( .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 16:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Text von einer Internetseite :
Die Funktion liefert die zu den zweidimensionalen Fensterkoordinaten dazugehörigen Weltkoordinaten. Die benötigte ModelView- und Projektions-Matrix und die aktuellen Einstellungen des Viewport werden als Argumente übergeben


habe gerade was auf einer Seite gefunden. Kann es sein das wenn ich nicht im 2D Modus bin das dann so was raus kommen kann?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 16:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
ahhh Idee!! :)

Versuch mal die Matrizen die du in der Procedure Erstellst (dein A,B unc C) per glMultMatrix zu laden... :)

Au'revoir,
Aya


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 17:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
wie meinst du das?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 14, 2003 17:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

na ja... ich nehme mal an das gluUnProject schreibt in deine Varibale a und b (ModelView und Projetion Matrix) die neue - veränderte - Matrix.

Deswegen versuch mal mit glMultMatrix, bzw glLoadMatrix die neue Matrix zu laden... (wie genau.. müßt ich Delphi starten, aber keine Zeit mehr, muß gleich weg :) )

*winkt hastig*
Aya


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 17, 2003 16:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Zitat:
Hi,
...Deswegen versuch mal mit glMultMatrix, bzw glLoadMatrix die neue Matrix zu laden...

Das geht nicht mit glMultMatrix, bzw glLoadMatrix. Habe in der Hilfe nach geschaut und habe gesehen das glMultMatrix, bzw glLoadMatrix einen Parameter GLDouble[4] braucht aber die variablen sind GLDouble[15].


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Einsteiger-Fragen


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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]