# Iso-Ansicht



## Memphis (1. Nov 2005)

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 (1. Nov 2005)

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 (2. Nov 2005)

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 (2. Nov 2005)

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


----------



## Lim_Dul (2. Nov 2005)

Ansicht von "schräg oben"

Bild findet sich unter: http://de.wikipedia.org/wiki/Perspektive#Isometrische_Projektion


----------



## 0xdeadbeef (2. Nov 2005)

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:







x' = x*cos(alpha)
y' = x*sin(alpha)+y*cos(alpha)


----------



## Memphis (3. Nov 2005)

eigentlich meinte ich die isometrische, danke für eure Antworten.


----------

