Mapas isométricos en Flash

Coordenadas de mundo isométrico a coordenadas de mapa

El cálculo de las coordenadas de mapa es muy sencillo de visualizar si pensamos al tile del siguiente modo:

Figura 14. Tamaño del lado isométrico

Figura 14. Tamaño del lado isométrico

La columa en la que nos encontraremos será:

col = Xi / W iso
row = Zi / W iso

Siendo W iso:

W iso = tw / (2 * Cos ?) = th / (2 * Sen ?)

Entonces:

col = 2 * Xi * Cos ? / tw
row = 2 * Zi * Sen ? / th

Coordenadas de mapa isométrico a coordenadas de mundo isométrico

Para hacer el pasaje inverso al caso anterior bastará con despejar. Tengamos en cuenta que la coordenada Yi cuando se realiza este pasaje se fija en cero:

Yi = 0
Xi = col * tw / (2 * Cos ?)
Zi = row * th / (2 * Sen ?)

Coordenadas de mundo plano a coordenadas de mundo isométrico

De las ecuaciones anteriores también podemos realizar un despeje y obtener las coordenadas de mundo isométrico a partir de las coordenadas de mundo plano. Veamos:

Xp = Xmapa + (Xi + Zi) Cos ?
Yp = Ymapa – [(Xi - Zi) Sen ? + Yi]

Debido a que existen infinitas coordenadas de mundo plano que generen coordendas de mundo isométrico deberemos fijar una de las variables de mundo isométrico. Entonces hacemos Yi = 0:

Xp = Xmapa + (Xi + Zi) Cos ?
Yp = Ymapa – [(Xi - Zi) Sen ? + 0]

Xp = Xmapa + (Xi + Zi) Cos ?
Yp = Ymapa – (Xi – Zi) Sen ?

Xi + Zi = Xp – Xmapa / Cos ?
Xi – Zi = Yp – Ymapa / Sen ?

Xp – Xmapa / Cos ? = (Yp – Ymapa / -Sen ?) + 2 * Zi

Zi = 0.5 * [(Xp - Xmapa / Cos ?) + (Yp - Ymapa / Sen ?)]

Xi = (Xp – Xmapa / Cos ?) – Zi

Yi = 0

El resto de las conversiones pueden obtenerse fácilmente haciendo uso de las ya calculadas.

Espero que este artículo les haya resultado útil.

~fuzzyLogic

Compartir:
  • Twitter
  • Facebook
  • MySpace
  • BarraPunto
  • del.icio.us

Pages: 1 2 3 4

Comments

  1. Ari Romero
    April 4th, 2010 | 18:11

    MUY interesante esto =) felicitaciones por el trabajo

Leave a reply