Iso-Ansicht

Status
Nicht offen für weitere Antworten.

Memphis

Aktives Mitglied
Hallo,

ich wollte Fragen ob jemand einen Algorythmus zum errechnen der xy-Koordinaten von xy nach den raute-koordinaten. Es würde mir eine einfache Formel reichen. Wenn möglich auch das man sie wieder in xy zurrückrechnen kann.
Irgendein Tutorial, code-sniple oder sonst was, bin für alles offen.

Na bei der Isometrischen Ansicht sind die Felder doch
/\
\/ und nun brauch ich was um die zu berrechnen weil die sind doch um 30° gedreht.
Stichwort: Tiles
Danke für eure Mühe.
 

MPW

Top Contributor
Memphis hat gesagt.:
ich wollte Fragen ob jemand einen Algorythmus zum errechnen der xy-Koordinaten von xy nach den raute-koordinaten. Es würde mir eine einfache Formel reichen.

Sorry, aber ich kapier' kein Wort,

- gib' mal ein Beispiel oder so....
- schreib's auf Hochdeutsch
- rephrase it!
 

0xdeadbeef

Top Contributor
Hm, eventuell habe ich mir dazu nicht genügend Gedanken gemacht, aber ich halte das für ganz einfach.

Ein isometrisches Spielfeld entsteht ja durch zwei Tranformationen aus einem Rechteck. Erstens wird das Rechteck nach links oder rechts um einen Winkel alpha zur Seite geklappt, also in ein Parallelogramm verwandelt, zum anderen wird u.U. die Höhe noch zusätzlich um einen Faktor f gestaucht. Ist beides bekannt, dann ergeben sich die Höhe hIso des Spielfeldes in isometrischer Ansicht und der Offset ofsIso, um den die Oberkante gegenüber der Unterkante verschoben ist, aus der Höhe des Spielfeldes hFeld als:

hIso = f * hFeld * cos(alpha)
ofsIso = f * hFeld * sin(alpha)

Der Term "f*cos(alpha)" ist auch direkt der Stauchungsfaktor mit dem jede Y-Koordinate des unverzerrten Spielfeldes multipliziert werden muß, um die Koordinate im Iso-Spieldfeld zu erhalten:
yIso = y * f * cos(alpha);

Was die X-Koordinate angeht: die Verschiebung der X-Koordinate ergibt sich aus dem maximalen Offset ofsIso und der y-Koordinate, bzw. aus dem Term "f*sin(alpha)" durch den die beiden Größen voneinander abhängen:

xIso = x + f*sin(alpha)*y; // Vorzeichen hängt von Darstellung ab: hier von links unten nach rechts oben


Für ein echtes isometrisches Spielfeld sind cos(45°) = sin(45°) = 0.707. Für die Werte von f sollte man wohl auch etwas in der Größenordnung von 0.7 nehmen, ist aber Geschmackssache.

Wobei man die Terme "f*cos(alpha)" bzw. "f*sin(alpha)" natürlich nur einmal ausrechnen muß. Üblicherweise ein Fall für final static.

Hoffe mal, das stimmt auch alles...
 

MPW

Top Contributor
hm...was bedeutet eigentlich isometrisch?
Die ganze Mathematik ist mir gut klar...aber das Wort kenn' ich garnicht...
 

0xdeadbeef

Top Contributor
Oops. Nach dieser Definition habe ich gerade eine "axonometrische Darstellung" erklärt, keine isometrische.

Falls Memphis also eine isometrische Projektion in dem Sinne will, wie er im Link erklärt wird, müßte ich noch mal nachlegen:

iso.gif


x' = x*cos(alpha)
y' = x*sin(alpha)+y*cos(alpha)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben