Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » Definition eines sich wiederholenden Koordinatensystems

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.11.2008, 23:22 Uhr
~Dirk_
Gast


Hallo zusammen,

im Prinzip möchte ich auf einer 2D-Weltkarte Linien zeichnen. Das Problem ist der x-Wert. Der y-Wert spielt keine Rolle bei diesem Problem.

Mein Koordinatensystem wähle ich mit glOrtho immer so, dass min_x dem kleinsten x-Wert eines Anfangspuntkes einer Linie entspricht und max_x dem größten x-Wert einer Linie entspricht.

Beispiele: (nur x-Werte werden hier genannt, da der y-Wert keine Rolle spielt)

Beispiel 1:
Linie 1: x = 5 ..7
Linie 2: x = 4 ..6

In diesem Fall ist min_x = 4 und max_x=7. Es gibt keine Probleme das Koordinatensystem zu definieren.

Beispiel 2:
Linie 1: x = 178 ..-179 (Datumsgrenze wird hier überschritten, Linie hat eine Länge von 3)
Linie 2: x = -178..-170

In diesem Fall habe ich ein Problem. Wenn ich min_x und max_x nach dem gleichem Schema setze wie bei Beispiel 1 dann erhalte ich für min_x = -179 und für max_x = 178. In diesem Falle ist mein definiertes Koordinatensystem riesig und ich sehe die 2 Linien kaum oder sie werden völlig falsch gezeichnet. Das ist natürlich nicht das Ziel.

Das große Problem ist hier, dass die erste Linie über die Datumsgrenze geht. Eigentlich ist mein min_x = 178 und mein max_x = -170. Das heißt, dass ich gerne ein Koordinatensystem mit einer Breite von 12 definieren würde.

Wie kann ich OpenGL oder der SW irgendwie beibringen, dass nach 180 nicht 181, sondern -179 kommt und dass 180 dasselbe ist wie -180

Brauche ich evtl. 2 Koordinatensysteme, falls eine Linie die Datumsgrenze überschreitet?

Leider habe ich keine Ahnung wie ich das Problem lösen könnte.

Fantastisch wäre es sogar, wenn man nicht auf einer Ebene zeichnen würde wie bisher, sondern wenn man direkt auf eine Kugel zeichnen könnte.

Ich bin für alle Hinweise dankbar, da ich bei diesem Problem leider nicht wirklich weiterkomme.

Vielen Dank und viele Grüße
Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.01.2009, 21:32 Uhr
kiba



Könntest es ja so versuchen:

C++:
int a = 181;

if(a > 180)
  a = -179;
if(a < -180)
  a = 179;


ist nichts anderes also das:
www.cplusplus.com/reference/algorithm/min.html
www.cplusplus.com/reference/algorithm/max.html

oder wenn du eine negative Zahl in eine Positive umwanderln willst:

C++:
int a = 181;

a *= -1  //a == -181

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.01.2009, 21:51 Uhr
0xdeadbeef
Gott
(Operator)


Lass das Koordinatensystem doch von 0 bis 359 reichen und rechne modulo 360.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ OpenGL ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: