我今天早些时候问了一个类似的问题,事实证明我只是在数学方面很糟糕,因为我也无法解决这个问题。
我通过宽度/高度计算屏幕比例。我需要一个函数将结果数转换为新的比例。
e.g。
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 :(得分:1)
您需要为该比率每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)