我已经有一段时间遇到这个问题了。我觉得我应该知道这一点,但我不能为我的生活记住。
如何将屏幕像素映射到各自的“图形”x,y位置?坐标系统已配置为从左下角(0,0)开始,然后增加到右上角。
我希望能够缩放,所以我知道我需要将缩放距离配置为答案。
Screen
|\ Some Quad
| \--------|\Qx
| \ Z | \
| \ \|Qy
\ |
Sx\ |Sy
\|
我想知道屏幕上的哪些像素会有四边形。显然,当Z减小时,四边形将占据更多的屏幕,并且随着Z的增加,它将占用更少,但这些计算究竟是多少?
为了进一步说明,我想知道如何使用缩放系数将这些屏幕像素映射到“图形”坐标上。
感谢您的帮助。
答案 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
希望有所帮助。