4

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

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

y = ax^2 + bx + c

从 3 个点(我知道它们落在有效的二次曲线上,但根据可配置的设置和对事件做出反应的最大时间是动态的)例如:(-1100, 0), (200, 1), (1500, 0 )。

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

如果我可以摆脱一个固定的二次方程,但评分是基于用户对特定事件(X 轴)做出反应的时间,y 轴点将始终介于 0 和 1 之间,0 是最低分数1是最高分!

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

4

2 回答 2

10

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

在此处输入图像描述

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))
于 2013-06-03T12:33:39.800 回答
0

您可以将其表述为矩阵形式:aX=b

    1 x1 x1^2
a=  1 x2 x2^2
    1 x3 x3^2

   y1
b= y2
   y3

然后通过反转矩阵 a 来解决(可以通过高斯方法非常简单地完成) http://en.wikipedia.org/wiki/Gaussian_elimination

X = a^-1*b

在这种情况下,X 是您正在寻找的 [cba] 系数。

于 2013-06-03T12:50:39.953 回答