需要帮助反转此功能

时间:2019-03-29 03:53:39

标签: javascript math

我有一个函数,需要根据输出给出输入;

let w = [1/16,1/9];
function warp(x,y){
    return [( x*2-1 ) * (1.0 + Math.pow( y*2-1, 2 ) * w[0]) * 0.5 + 0.5,
            ( y*2-1 ) * (1.0 + Math.pow( x*2-1, 2 ) * w[1]) * 0.5 + 0.5];
}

x和y始终在0.0到1.0之间

我自己尝试过,但是一半的人记得过去的数学课,这只会导致我得到简化为0 = 0的东西

上面的扭曲函数在着色器中使用,以创建类似CRT的失真。 我想将鼠标放在屏幕上的位置,然后计算出CRT原始渲染位置的位置。 不幸的是,我的数学技能没有达到我的js技能的极限。

1 个答案:

答案 0 :(得分:3)

无法逆转此功能。而且,这是两个变量的函数,您无法获得两个变量的唯一解。

请注意,此函数看起来是单调的,其等值线形成椭圆,函数类似于椭圆抛物面

enter image description here

因此您可以:

  • 修复一个变量(即y = 0)或x / y比
  • 使用一些数字root-finding method来检索特定的解决方案