javascript - 使用点生成二次方程来插值数据

标签 javascript math quadratic

我正在尝试为使用二次曲线的游戏设计一个灵活的衰减分数系统。我可能会强行通过它,但想知道是否有人可以帮助我想出一些灵活的方法,或者也许已经有一些现成的解决方案了!

但基本上我需要能够在以下位置生成 a、b 和 c 的值:

y = ax^2 + bx + c

来自 3 个点(我知道它们落在有效的二次曲线上,但它们是动态的,基于可配置的设置和对事件使用react的最长时间)例如:(-1100, 0), (200, 1), ( 1500, 0).

然后我可以插入 x 的值以生成 Y 的值,这将决定我给用户的分数。

如果我能摆脱一个固定的二次方程式,我会,但评分是基于用户对特定事件(X 轴)使用react的时间,y 轴点将始终介于 0 和 1 之间,其中 0是最低分,1 是最高分!

如果您需要更多信息,请告诉我!

最佳答案

可以使用拉格朗日多项式插值,曲线​​由

enter image description here

y(x) = y_1 * (x-x_2)*(x-x_3)/((x_1-x_2)*(x_1-x_3))
     + y_2 * (x-x_1)*(x-x_3)/((x_2-x_1)*(x_2-x_3))
     + y_3 * (x-x_1)*(x-x_2)/((x_3-x_1)*(x_3-x_2))

如果你收集系数,你会得到

a = y_1/((x_1-x_2)*(x_1-x_3)) + y_2/((x_2-x_1)*(x_2-x_3)) + y_3/((x_3-x_1)*(x_3-x_2))

b = -y_1*(x_2+x_3)/((x_1-x_2)*(x_1-x_3))
    -y_2*(x_1+x_3)/((x_2-x_1)*(x_2-x_3))
    -y_3*(x_1+x_2)/((x_3-x_1)*(x_3-x_2))

c = y_1*x_2*x_3/((x_1-x_2)*(x_1-x_3))
  + y_2*x_1*x_3/((x_2-x_1)*(x_2-x_3))
  + y_3*x_1*x_2/((x_3-x_1)*(x_3-x_2))

关于javascript - 使用点生成二次方程来插值数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16896577/

相关文章:

geometry - 求两个整数二次贝塞尔曲线相交的快速方法?

java - QuadCurve2D 的中点

javascript - Graphael 饼图错误?

javascript - webpackJsonp 未使用 karma-webpack 定义?

javascript - 使用 jQuery 如何使所有父 div 和 body 扩展高度以容纳内容?

algorithm - 延迟列生成示例

javascript - 在 Selenium 中发送警报中的文本

java - 正弦在Java中是如何实现的?

Java:(int) double 可靠吗?