最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Using points to generate quadratic equation to interpolate data - Stack Overflow

programmeradmin2浏览0评论

I'm trying to e up with a flexible decaying score system for a game using quadratic curves. I could probably brute force my way through it but was wondering if anyone can help me e up with something flexible or maybe there are some ready made solutions out there already!

But basically I need the ability to generate the values of a,b & c in:

y = ax^2 + bx + c

from 3 points (which i know fall on a valid quadratic curve, but are dynamic based on configurable settings and maximum times to react to an event) for example: (-1100, 0), (200, 1), (1500, 0).

So I can then plugin in values for x to generate values of Y which will determine the score I give the user.

If I could get away with a fixed quadratic equation I would but the scoring is based on how much time a user has to react to a particular event (X Axis) the y axis points will always be between 0 and 1 with 0 being minimum score and 1 being maximum score!

Let me know if you need more info!

I'm trying to e up with a flexible decaying score system for a game using quadratic curves. I could probably brute force my way through it but was wondering if anyone can help me e up with something flexible or maybe there are some ready made solutions out there already!

But basically I need the ability to generate the values of a,b & c in:

y = ax^2 + bx + c

from 3 points (which i know fall on a valid quadratic curve, but are dynamic based on configurable settings and maximum times to react to an event) for example: (-1100, 0), (200, 1), (1500, 0).

So I can then plugin in values for x to generate values of Y which will determine the score I give the user.

If I could get away with a fixed quadratic equation I would but the scoring is based on how much time a user has to react to a particular event (X Axis) the y axis points will always be between 0 and 1 with 0 being minimum score and 1 being maximum score!

Let me know if you need more info!

Share Improve this question asked Jun 3, 2013 at 12:19 TristanTristan 3,8855 gold badges37 silver badges58 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 10

You can use Lagrange polynomial interpolation, the curve is given by

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))

If you collect the coefficients, you obtain

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))

you can formulate it in a matrix form: aX=b

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

   y1
b= y2
   y3

then solve by inverting the matrix a (can be done via gauss method pretty straight forward) http://en.wikipedia/wiki/Gaussian_elimination

X = a^-1*b

and X in this case are the [c b a] coefficients your are looking for.

发布评论

评论列表(0)

  1. 暂无评论