2012-06-26 2 views
0

Хорошо, поэтому мне нужно сделать параболу, которая простирается на всю длину моего Мира. (W) Я создаю это в мире, где верхний левый угол (0,0)Парболическое уравнение с использованием 3 баллов

моих 3 точек слева направо, (х, у)

(0, H) (Вт/2,0) < < вершина (W, H)

Это было бы от нижнего левого угла мира, к вершине в верхней центральной части мира, в нижнем правом углу диалогового окна Мир.

Уверен, что я сделал это намного сложнее, чем это было необходимо, но я обжарил свой мозг, пытаясь понять это.

Также, как это работает, я хотел бы, чтобы графический объект перемещался по параболе за определенное количество времени.

поэтому я бы сделал функцию, чтобы получить Y, и я бы послал ей X, который будет варьироваться от 0 до W, в зависимости от времени, прошедшего.

так я назвал бы функция,

 GetPathY((WorldWidth*Percentage)); 
private int getPathY(double X) { 
    int y = (int) ScreenHeight-((4 * ScreenHeight* X)/(WorldWidth^2)) 
    return(y); 
} 

бы эту работу я думаю?

So: y = (((- 4 * ScreenHeight)/(WorldWidth^2)) (x- (WorldWidth/2)^2)) или: y = H - ((4Hx)/(W^2));

ответ

0

Я действительно сделал второй способ сделать это.

первый путь я перестановкой у = а (х-Н)^2 + к, чтобы решить для «в»

y=(WindowHeight/((WindowWidth/2)^2)*(x-(WindowWidth/2))^2 

2 пути, просто сделать два процентили, один для вверх, один для горизонтальной. По мере того, как время масштабируется, процентиль оси X от 0 до 100% и ось Y от 0 до 100% на полпути вовремя, а затем обратно вниз от 100-0% все, что вам нужно было сделать, это поместить ось Y в чтобы он начинал быстро и замедлялся, достигнув 100%. Это даст кривую.

Конечно, уравнение проще :)

Я был бы признателен, если вы не удалите этот пост, потому что мой ответ был в корне отличается, то другие ребята, и оба мои решения справедливы и также различны. Я ничего не использовал для его ответа, чтобы получить мои собственные, и оба этих решения могут помочь кому-то другому, кто пытается решить что-то подобное в будущем. Также по той причине, что первый ответ не помог решить проблему так, как она была описана.

3

Какое уравнение для параболы?

y(x) = c0 + c1*x + c2*x^2 

У вас есть три момента:

y(0) = c0 = H 

И еще:

y(W/2) = H + c1*(W/2) + c2*(W/2)^2 = 0 

Вы можете решить это для любой c1 или c2. Давайте сделаем это для c2:

c2 = -4H/W^2 - 2c1/W 

Тогда есть последнее уравнение:

y(W) = H + c1*(W) + c2*(W^2) = H 

Вычесть H с обеих сторон дает:

c1*W + c2*W^2 = = 0 

Упростить этот, чтобы получить c1:

c1 = -c2*W 

Заменить коэффициент, который вы решили во втором уравнении, чтобы получить третий, и вы закончили.

Это просто алгебра.

+0

Итак: у = (((- 4 * ScreenHeight)/(WorldWidth^2)) (х- (WorldWidth/2)^2)) или: у = Н - ((4HX)/(W^2)) – WIllJBD

+0

Это то, что вам удалось применить к этим шагам? Тогда да, вот и все. Проверьте себя с Wolfram Alpha. – duffymo

+0

За исключением этого не получилось, что мне было нужно, это только смутило меня. Что мне понадобилось, так это перестройка уравнения y = a (x-h) + k, что я и пытаюсь сделать в первую очередь, что вы делали, было просто сложнее. – WIllJBD

Смежные вопросы