2016-10-21 2 views
0

J'ai les coordonnées 2d:Comment calculer la transformation des coordonnées d'écran en coordonnées d'écran isométrique?

0, 0 
200, 0 
200, 100 
400, 100 
400, 200 
0, 200 

Les coordonnées représentent la forme suivante: enter image description here

Mais je veux calculer dynamiquement l'écran de coordonnées pour chaque point transformé en projection isométrique. J'ai donc la liste des coordonnées de l'écran littéralement, et je veux générer des coordonnées d'écran qui représentent la «version» isométrique de la forme. S'il vous plaît noter que je ne veux pas calculer les coordonnées dans le «monde isométrique», je veux obtenir les coordonnées de l'écran littéral. (rotation de 45 degrés, et mis à l'échelle verticalement par 0,5)

enter image description here

Lorsque l'écran est chaque point avec des points d'interrogation? Il est très probable que certaines coordonnées deviennent négatives, mais c'est très bien. Cela peut être résolu logiquement en calculant un décalage, de sorte que la coordonnée x la plus à gauche est à zéro.

Répondre

1

mis en rotation de 45 degrés, et mis à l'échelle verticalement par 0,5

Ceci est transformée affine:
décalage par le centre de rotation (xc, yc) Coordonnées
rotation
décalage arrière par xc et certaines YC (vous pourriez avoir besoin d'une autre y quart de travail pour aligner avec le bord de l'écran) échelle par axe y

sq = Sqrt(2)/2 //Cos and Sin of 45 
    x_new = xc + (x_old - xc) * sq - (y_old - yc) * sq 
    y_new = 0.5 * (yc + (x_old - xc) * sq + (y_old - yc) * sq) 

(probablement vous devez changer la combinaison de signes entre parenthèses de (+-)(++) à (++)(-+) en fonction de l'orientation de votre système de coordonnées)

+0

Et oui! Problème résolu. Merci. – user2190492