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

Aktuelle Zeit: Fr Jul 18, 2025 00:54

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Mausposition auf einer Sphere ?
BeitragVerfasst: Fr Mär 10, 2006 12:20 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

ich hab schon wieder ein Problem:

Ich hab derzeit folgendes gemacht.
Meine "Erde" ist aus einer Sphere mit Texturen gemacht.
Jetzt kann ich einen Punkt ( Latitude und Longitude ) auf der Erde auf meiner Sphere lokalisieren.

Ich brauch das ganze jetzt aber auch andersrum.
Also wenn ich mit der maus irgendwo auf der Sphere bin kann man doch irgendwie sicher die
OGL koordinaten auf der Sphere herausfinden oder ?
Die könnte ich dann wieder in Lat/Lon umrechnen.

ich hab diese funktion hier : ( onMouseMove des Panels wo OGL drin läuft )

Code:
  1.     if wglMakeCurrent(DC,RC) then
  2.     begin
  3.       glGetDoublev(GL_MODELVIEW_MATRIX, @modelview );
  4.       // Get the Current Modelview matrix.
  5.       glGetDoublev(GL_PROJECTION_MATRIX, @projection );
  6.       // Get the Current Projection Matrix.
  7.       glGetIntegerv(GL_VIEWPORT, @viewport );
  8.       glReadPixels(round(X), round(Y), 1, 1,GL_DEPTH_COMPONENT,GL_FLOAT, @winZ );
  9.       // Get the Current Viewport.
  10.       gluUnProject(x, Y, winZ, modelview, projection, viewport, rX, rY, rZ);
  11.       // Get the vector for the current position
  12.       // determined by parameters.     InitVector (result, rX, rY, rZ);
  13.       // And Return it from the function.
  14.       mp0.Text := FloatToStr(rX);
  15.       mp1.Text := FloatToStr(ry);
  16.       mp2.Text := FloatToStr(rZ);
  17.     end;
  18.  


( hier im Forum gefunden ) ausprobiert, aber entweder mach ich da was falsch oder ichbin auf dem falschen Dampfer.
Soweit ich das sehe hat diese Funktion ja nix mit der Sphere zu tun oder ?

Kann mir da jemand helfen ?

Matthias

// edit Lossy: Code durch Pascaltags ersetzt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 10, 2006 12:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Nö das nicht direkt. Aber du bekommst ja die Koordinaten auf der sich deine Maus befindet. Und diese hast du ja anhand deine Grund Daten berechnet. Du weißt ja um wie viel deine Sphere verschoben wurde. Und wenn du das mit dem Punkt verrechnest so, dass deine Sphere als Swerpunkt die 0, 0, 0 hat dann bekommst du ziemlich genau einen Vektor mit dem du deinen Koordinaten aurechnen könntest. Gehen sollte das mit ArcCosinus und oder ArcSinus. Bin da jetzt kein Crack was das angeht aber hoffe es war halbwegs verständlich.

PS: Tust du mir bitte einen gefallen und achtest darauf, dass dein Delphi Code in Pascla Tags steht. Danke.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 10, 2006 12:56 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

Uup, sorry da hatte ich wohl die falschen Tags benutzt.
Werd mich bessern :-)

Also in der Render Procedure verschiebe ich meine Spher immer, das sieht so aus :

Code:
  1.  
  2.   glTranslatef(0,0,-170000);
  3.  
  4.   // für den Zoom
  5.   glScaleF(Scale, Scale, Scale);  
  6.  
  7.   // so wird ein bestimmter punkt ( lat/lon) in den fordergrund gebracht,
  8.   // also die Sphere so gedreht das der Punkt zu mir zeigt <!-- s:-) --><img src=\"{SMILIES_PATH}/icon_smile.gif\" alt=\":-)\" title=\"Smile\" /><!-- s:-) -->
  9.   // XWinkel und YWinkel sind hier direkt Lat und Lon, also z.b. Lat 51 und lon 12 ( etwa ) für Leipzig
  10.   glRotatef(XWinkel, 1, 0, 0);
  11.   glRotatef(YWinkel, 0, 1, 0);
  12.  


müsste ich dann den Z-Wert ( winZ ) mit den -1700 multiplizieren oder wie genau geht das ?

Matthias

Ps.: Achso , mal zu den Tags, ich weiss ja nicht wer Euer Forum macht, aber die Pascal Tags sind ein bischen blöd wenn man was per copy und paste in delphi einfügen will.
Das hängt dann immer alles in einer Zeile und das ist .. naja :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 10, 2006 13:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Japp. Die Pascaltags nicht optimal aber haben eine automatische Verlinkung zum Wiki und sehen wesentlich besser als das Codetag aus. Dafür gabs schon mal im Feedback ein Thema bzw gehört so etwas dahin. Da wird es dann in jedem Fall gesehen. Weiß aber nicht in wie fern man da etwas machen kann.

Und ja. Du müsstest deine Transformation auf die Punkte ausführen die du bei gluUnProject zurück bekommst. Wie du dann aber weiter rechnest kann ich dir nicht genau sagen. Aber ich denke mal es geht darum, dass du Höhen und Längengrad getrennt betrachtest. Ich hoffe aber gerade, dass ich nicht völligen scheiß erzähle. Wenn ich erhlich bin tue ich mit solchen Berechnungen ein bisschen arg schwer. Vielleicht hat es dich ja schon auf eine Idee gebracht oder jemand wirklich Matheerfahrenes sagt dazu noch mal was. ;-)


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


Wer ist online?

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