2

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

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

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

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

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

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

谢谢你的帮助。

4

2 回答 2

0

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

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

一个等式是:

h = 高度

w = 宽度

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


新宽度 = W = wz

新高度 = H = hz

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

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

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

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

拿一张大纸并画出一些可视化。这总是有帮助的。=)

于 2011-06-22T23:49:10.170 回答
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

希望有帮助。

于 2011-06-22T23:54:25.293 回答