我今天早些时候问了一个类似的问题,结果发现我只是数学很糟糕,因为我也无法弄清楚这个问题。
我正在通过宽度/高度计算屏幕比例。我需要一个函数将该结果数字转换为新比例。
例如
function convertNum(ratio) {
return //formula here
}
例子:
Given a resolution of 3000x1000 = ratio of 3 (i.e. 3000/1000).
I want it converted to 133.3 via the function, e.g. convertNum(3) spits out 133.33
2500x1000 = 2.5 (desired result: 100)
2000x1000 = 2 (desired result: 66.6)
1500x1000 = 1.5 (desired result: 33.3)
1000x1000 = 1 (desired result: 0)
对于高于 1.0 的所有屏幕比例,它应该继续以这种方式缩放。
您需要为比率中每 0.5 增加 33.3%。
首先弄清楚您需要添加多少"填充件":
// Subtracting 1 since 1 should result in a 0
(ratio - 1) / 0.5
然后将填充件数乘以填充量:
((ratio - 1) / 0.5) * 0.333
但是除以 0.5 与乘以 2 是一回事,因此可以进一步简化为:
(ratio - 1) * 2 * 0.333
但这显然与:
(ratio - 1) * 0.666
虽然,您可以通过将其更改为以下方面来获得更高的精度:
(ratio - 1) * (2 / 3)