我有一个由下式表示的二次贝塞尔曲线(用x代替),其中x在0-1之间
var y = p0 * Math.pow(x, 2) + p1 * 2 * x * (1 - x) + p2 * Math.pow((1 - x), 2)
我想传递一个已知的y值并沿曲线求解x。
我尝试重新排列二次方以求解x,但是我得到的值都不在0-1范围内。
答案 0 :(得分:1)
y = p0 * Math.pow(x, 2) + p1 * 2 * x * (1 - x) + p2 * Math.pow((1 - x), 2)
=> y = p0x^2 + 2p1(x-x^2) + p2(1-2x+x^2)
=> y = p0x2 + 2p1x - 2p1x2 +p2 - 2p2x + p2x2
=> y = p0x2 + p2x2 - 2p1x2 + 2p1x - 2p2x + p2
=> y = (p0+p2-2p1)x^2 + 2(p1 - p2)x + p2
=> 0 = (p0+p2-2p1)x^2 + 2(p1 - p2)x + (p2 - y)
这是简单的二次方程通过输入p0,p1,p2和y来进一步解决它,你将得到x的等式。 x将两个答案总是...丢弃否定一个正面答案将是你的答案