2016-10-21 4 views
0

Ich habe die 2d Koordinaten bekam:Wie wird die Transformation von Bildschirmkoordinaten in isometrische Bildschirmkoordinaten berechnet?

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

Die Koordinaten stellen die folgende Form: enter image description here

Aber ich möchte, dass die Bildschirm-Koordinate für jeden Punkt dynamisch berechnen isometrischer Projektion umgewandelt. Also habe ich die Koordinatenliste der wörtlichen Bildschirmkoordinaten, und ich möchte Bildschirmkoordinaten daraus generieren, die die isometrische 'Version' der Form darstellen. Bitte beachten Sie, dass ich nicht die Koordinaten in der 'isometrischen Welt' berechnen möchte, ich möchte die wörtlichen Bildschirmkoordinaten erhalten. (um 45 Grad gedreht und skaliert vertikal um 0,5)

enter image description here

Wo auf dem Bildschirm mit Fragezeichen jeder Punkt ist? Es ist sehr wahrscheinlich, dass einige Koordinaten negativ werden, aber das ist in Ordnung. Dies kann logisch gelöst werden, indem ein Offset berechnet wird, so dass die am weitesten links liegende x-Koordinate bei Null ist.

Antwort

1

45 Grad gedreht und skaliert vertikal um 0,5

Dies wird affine Transformation:
Verschiebung durch Drehzentrum (xc, yc) -Koordinaten
Rotation
Verschiebung zurück durch xc und einige yc (man könnte eine andere y-Verschiebung muß mit Bildschirmrand auszurichten) Skala von y-Achsen-

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) 

(wahrscheinlich müssen Sie Zeichenkombination in Klammern von (+-)(++) zu abhängig von Ihrer Koordinatensystemausrichtung ändern)

+0

Und ja! Problem gelöst. Vielen Dank. – user2190492

Verwandte Themen