我已经看到了一个示例程序,其中放置球体的位置是他们在做一些数学计算。在这种情况下,我看到正在使用THREE.Math.mapLinear()
。如果我将参数传递为:
var x = THREE.Math.mapLinear(-70.16, -150, 150, 0, 1366);
那么
x
的值将显示363.51。请谁能解释到底发生了什么?
最佳答案
The mapLinear
function采用两个数字范围(a1
-a2
和b1
-b2
)和一个偏移量(x
):
mapLinear: function ( x, a1, a2, b1, b2 ) {
return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );
}
它计算出
a
在x
范围内的距离,并计算b
中的等效位置并将其返回。根据您的输入,
-70.16
大约是范围-150
到150
的四分之一(23.387%)。函数返回363.51
,大约相当于范围0
到1366
的四分之一(23.387%)。