Pet*_* W. 11 vb.net math bezier css-transitions
我有一个三次贝塞尔曲线,其中给出了第一个和最后一个点(即P0(0,0)和P3(1,1)).其他两点定义如下:cubic-bezier(0.25,0.1,0.25,1.0)(X1,Y1,X2,Y2,这些值也不得小于或大于0或1)
现在我会怎样必须做的是获得给定X的Y坐标,假设只有一个?(我知道在某些情况下可能存在多个值,但让我们把它们放在一边.我不是在这里做火箭科学,我只是希望能够每秒多次获得Y来进行转换)
我设法挖掘了这个:给定x立方贝塞尔曲线的y坐标,但我不明白xTarget代表什么.
哦,这也不是任何功课,我对有关互联网上的立方贝塞尔曲线没有可理解的事实感到有些恼火.
Joh*_*nPS 21
如果你有
P0 = (X0,Y0)
P1 = (X1,Y1)
P2 = (X2,Y2)
P3 = (X3,Y3)
Run Code Online (Sandbox Code Playgroud)
那么对于任何t在[0,1]你得到的坐标给出的曲线上的点
X(t) = (1-t)^3 * X0 + 3*(1-t)^2 * t * X1 + 3*(1-t) * t^2 * X2 + t^3 * X3
Y(t) = (1-t)^3 * Y0 + 3*(1-t)^2 * t * Y1 + 3*(1-t) * t^2 * Y2 + t^3 * Y3
Run Code Online (Sandbox Code Playgroud)
如果您将得到一个x数值,那么你需要找到它t的值[0,1]对应于曲线上的点,然后使用这些t值来找到y协调.
在X(t)上述公式中,在左侧设置为你的x价值,并插上X0,X1,X2,X3.这将为您提供带变量的三次多项式t.你解决了这个问题t,然后将该t值插入Y(t)等式中以获得y坐标.
求解三次多项式是棘手的,但可以通过仔细使用其中一种方法来求解三次多项式来完成.