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 )
gluUnProject(x, Y, winZ, modelview, projection, viewport, rX, rY, rZ);
// Get the vector for the current position
// determined by parameters. InitVector (result, rX, rY, rZ);
// And Return it from the function.
mp0.Text:=FloatToStr(rX);
mp1.Text:=FloatToStr(ry);
mp2.Text:=FloatToStr(rZ);
end;
( 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 ?
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.
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:
glTranslatef(0,0,-170000);
// für den Zoom
glScaleF(Scale, Scale, Scale);
// so wird ein bestimmter punkt ( lat/lon) in den fordergrund gebracht,
// also die Sphere so gedreht das der Punkt zu mir zeigt <!-- s:-) --><img src=\"{SMILIES_PATH}/icon_smile.gif\" alt=\":-)\" title=\"Smile\" /><!-- s:-) -->
// XWinkel und YWinkel sind hier direkt Lat und Lon, also z.b. Lat 51 und lon 12 ( etwa ) für Leipzig
glRotatef(XWinkel,1,0,0);
glRotatef(YWinkel,0,1,0);
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
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.
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.