如何从一个坐标系转换到另一个坐标系(图形)

时间:2011-06-22 23:45:07

标签: graphics coordinate-systems perspective

我已经有一段时间遇到这个问题了。我觉得我应该知道这一点,但我不能为我的生活记住。

如何将屏幕像素映射到各自的“图形”x,y位置?坐标系统已配置为从左下角(0,0)开始,然后增加到右上角。

我希望能够缩放,所以我知道我需要将缩放距离配置为答案。

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

我想知道屏幕上的哪些像素会有四边形。显然,当Z减小时,四边形将占据更多的屏幕,并且随着Z的增加,它将占用更少,但这些计算究竟是多少?

为了进一步说明,我想知道如何使用缩放系数将这些屏幕像素映射到“图形”坐标上。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用缩放系数作为坐标和/或屏幕尺寸的乘数。

例如,如果你有一个100x150像素的正方形,当放大到150%时,矩形的大小应该是150x225。

这个等式是:

  

h =身高

     

w =宽度

     

z =缩放百分比   (100%= 1.00)

     
     

新宽度= W = wz

     

新身高= H = hz

要映射屏幕像素,请应用更基本的数学原理。相对坐标完全取决于缩放的中心。如果一切都放大到正中心,这很容易。如果从其他地方缩放(例如从角落或非中心坐标拉伸对象),则必须在等式中应用偏移量。

从中心点缩放矩形很容易。将矩形宽度的差除以2,然后将其添加到左右坐标值(可以添加负数)。对身高做同样的事。

如果从不在其精确中心但仍在矩形范围内的坐标缩放矩形,则需要偏移。只需确定应在矩形的每一侧应用高度和宽度变化的百分比。靠近变焦点的侧面将获得较低的变化百分比。

当缩放点位于矩形外部时,还必须考虑与缩放点的距离。除了缩放矩形外,此偏移还会移动整个矩形。

获取一张大纸并绘制一些可视化效果。这总是有帮助的。 =)

答案 1 :(得分:0)

如果(xk,yk)是缩放前的中心且尺寸为(Sx,Sy),则在(0,1)中缩放到Z因子,新尺寸将为(Qx,Qy)=(Sx *(1-Z),Sy *(1-Z))以(xk,yk)为中心,表示屏幕坐标为:

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

希望有所帮助。