首页 > 解决方案 > 需要帮助反转此功能

问题描述

我有一个函数,我需要在给定输出的情况下获取输入;

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 的东西

上面的 warp 函数在着色器中用于创建类似 CRT 的失真。我想在屏幕上找到鼠标的位置,并计算出它在 CRT 的原始渲染位置上的位置。不幸的是,我的数学技能不如我的 js 技能。

标签: javascriptmath

解决方案


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

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

在此处输入图像描述

这样你就可以:

  • 固定一个变量(即 y = 0),或 x/y 比率
  • 使用一些数值求根方法来检索特定的解决方案

推荐阅读