我已经看到了一个示例程序,其中放置球体的位置是他们在做一些数学计算。在这种情况下,我看到正在使用THREE.Math.mapLinear()。如果我将参数传递为:

var x = THREE.Math.mapLinear(-70.16, -150, 150, 0, 1366);


那么x的值将显示363.51。

请谁能解释到底发生了什么?

最佳答案

The mapLinear function采用两个数字范围(a1-a2b1-b2)和一个偏移量(x):

mapLinear: function ( x, a1, a2, b1, b2 ) {
    return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );
}


它计算出ax范围内的距离,并计算b中的等效位置并将其返回。

根据您的输入,-70.16大约是范围-150150的四分之一(23.387%)。函数返回363.51,大约相当于范围01366的四分之一(23.387%)。

09-16 10:57