我对此已经有一段时间的问题了。我觉得我应该知道这一点,但我一辈子都记不住了。
如何将屏幕像素映射到它们各自的"图形"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
希望能有所帮助。