forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Гравитация и траектория прыжков (http://forum.boolean.name/showthread.php?t=7948)

DeMoNN 09.03.2009 14:40

Гравитация и траектория прыжков
 
Собственно как программируется гравитация и находится траектория управляемого прыжка (во время прыжка можно менять направление клавишами 4 и 6). Кому не сложно, дайте алгоритм или хоть начек на него.

jimon 09.03.2009 15:15

Ответ: Гравитация и траектория прыжков
 

вот уравнение зависимости координаты от времени
тут x(0) - начальное положение, u - начальная скорость, a - ускорение
дельта t - это t - t0, обозначим dt (лень искать знать дельты в юникоде), t0 время когда начался прыжок

при прыжке получаем
x(t) = x(0) + Ux * dt + (1/2)*(k(t))*(dt^2)
y(t) = y(0) + Uy * dt + (1/2)*(-g)*(dt)^2
где g это гравитация, k(t) это функция которая будет возращать некоторое ускорение для управления прыжком (влево, вправо)

вот и всё

ps. конечно на практике намного проще добавлять и отнимать положение по x прямо в координатах

luk Skyuoker 16.07.2009 14:37

Ответ: Гравитация и траектория прыжков
 
jimon, чегот у меня фигура по этой формуле прямо летит... по линии... А ты не можешь подсказать как сделать нормальную обработку столкновения... ну наприпимер с полом, в зависимости от массы и обьёма... а то я хочу наприимер сделать кирпичь, а он у меня прыгает как мячик! :(
---
---
есть ещё такая фишка
Подьём вверх- y1 = y0-gt\
! точно не помнЮ!
Спуск вниз- y1 = y0+gt/
---
---
А вообще я делал так
Код:

var x, y, ux, uy, g: integer;
Begin
x:=0;
y:=getHeight;
ux:=7;
uy:=30;
g:=3;
  Repeat
      x:=x+ux;
      y:=y-uy;
      uy:=uy-g;
    setColor(255,255,255);
    fillRect(0,0,getWidth,getHeight);
    setColor(0,0,0);
    fillEllipse(x,y,5,5);
    repaint;
    delay(200);
  Until y>getHeight;
end.

// тестировал на KEmulator'e


Часовой пояс GMT +4, время: 05:27.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot