Как конвертировать из одной системы координат в другую (графика) - PullRequest
2 голосов
/ 23 июня 2011

У меня были проблемы с этим в течение некоторого времени.Я чувствую, что должен знать это, но я не могу вспомнить, чтобы я всю жизнь.

Как я могу сопоставить пиксели экрана с их соответствующими «графическими» позициями x, y?Системы координат были настроены на запуск слева внизу (0,0) и увеличение до правого верха.

Я хочу иметь возможность масштабирования, поэтому я знаю, что мне нужно настроитьувеличьте расстояние до ответа.

Screen
|\          Some Quad
| \--------|\Qx
|  \    Z  | \
|   \       \|Qy
 \  |
Sx\ |Sy
   \|

Я хочу знать, какие пиксели на моем экране будут иметь четырехугольник.Очевидно, что при уменьшении Z квадроцикл будет занимать больше экрана, а при увеличении Z он будет занимать меньше, но как именно они рассчитываются?

Для дальнейшего уточнения я хочу знать, как я могу отобразить эти экраныпикселей в «графических» координатах с использованием коэффициента масштабирования в уравнении.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Если (xk, yk) является центром до масштабирования, а размер (Sx, Sy) увеличен с коэффициентом Z в (0, 1], новый размер будет (Qx, Qy) = (Sx * (1-Z), Sy * (1-Z)) с центром в (xk, yk), что означает, что координаты экрана:

rectangle: xk - Qx/2, yk - Qy/2, xk + Qx/2, yk + Qy/2

Надеюсь, это поможет.

0 голосов
/ 23 июня 2011

Используйте коэффициент масштабирования в качестве множителя для координат и / или размера экрана.

Например, если у вас квадрат 100x150 пикселей, при увеличении до 150% размер прямоугольника должен быть150x225.

Уравнение для этого:

h = высота

w = ширина

z = процентное увеличение (100% = 1,00)


новая ширина = W = wz

новая высота = H = hz

Кпиксели экрана карты, применять более основные математические принципы.Относительные координаты полностью зависят от центра масштабирования.Это очень легко, если все увеличивается в точном центре.Если вы изменяете масштаб из другого места (например, растягиваете объект из угла или нецентральной координаты), вы должны применить к своему уравнению смещение.

Простое масштабирование прямоугольника от его центральной точки.Разделите разницу в ширине прямоугольника на 2, а затем добавьте ее к левому и правому значению координат (вы можете добавить отрицательное число).Сделайте то же самое для высоты.

Если масштабирование прямоугольника от координаты, которая НЕ находится в его точном центре, но все еще находится в пределах прямоугольника, требует смещения.Просто определите, какой процент изменения высоты и ширины должен применяться к каждой стороне прямоугольника.Стороны, расположенные ближе к точке увеличения, получат меньший процент изменения.

Когда точка увеличения находится за пределами прямоугольника, расстояние от точки увеличения также следует учитывать.Это смещение перемещает весь прямоугольник, в дополнение к масштабированию прямоугольника.

Возьмите большой лист бумаги и нарисуйте некоторые визуализации.Это всегда помогает.=)

...