2016-10-21 11 views
0

У меня есть 2d координаты:Как вычислить преобразование из экранных координат в изометрические координаты экрана?

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

координаты представляют следующую форму: enter image description here

Но я хочу, чтобы динамически вычислять экран координат для каждой точки преобразованной в изометрической проекции. Итак, у меня есть список координат буквенно-экранных координат, и я хочу сгенерировать на нем координаты экрана, представляющие изометрическую «версию» формы. Обратите внимание, что я не хочу вычислять координаты в «изометрическом мире», я хочу получить буквальные координаты экрана. (поворачивается на 45 градусов, и масштабирование по вертикали 0,5)

enter image description here

Где на экране каждая точка знаки вопроса? Очень вероятно, что некоторые координаты станут отрицательными, но это нормально. Это можно логически решить, вычисляя смещение, так что самая левая координата x равна нулю.

ответ

1

поворачивается на 45 градусов, и масштабирование по вертикали 0,5

Это аффинное преобразование:
сдвига от центра вращения (хс, ус) координаты
вращения
сдвига назад хс и некоторыми yc (вам может потребоваться другой сдвиг y для выравнивания с краем экрана) шкала по оси 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) 

(возможно, вы должны сменить комбинацию знака в скобках от (+-)(++) до (++)(-+) в зависимости от ориентации вашей системы координат)

+0

И да! Задача решена. Благодарю. – user2190492

Смежные вопросы