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



我对此已经有一段时间的问题了。我觉得我应该知道这一点,但我一辈子都记不住了。

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

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

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

我想知道屏幕上的哪些像素会有四边形。很明显,随着Z的减少,四边形会占据更多的屏幕,而随着Z的增加,它会占据更少的屏幕,但这些是如何计算的呢?

为了进一步澄清,我想知道如何使用等式中的缩放因子将这些屏幕像素映射到"图形"坐标上。

谢谢你的帮助。

使用缩放因子作为坐标和/或屏幕大小的倍数。

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

一个方程式是:

h=高度

w=宽度

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


新宽度=W=wz

新高度=H=hz

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

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

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

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

拿一张大纸,画出一些视觉效果。这总是有帮助的

如果(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

希望能有所帮助。

最新更新