Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите плз алгоритм полёта пули на OpenGl!!! [Delphi, Windows]


min ©   (2004-05-04 18:15:00) 

В теме всё сказано.


matsic   (2004-05-11 19:05:00) [1]

Посмотри на этот фрагмент

#ifndef TFly3D_cpp
#define TFly3D_cpp

#include "vector3D.cpp"

const TVector3D g={0,-9.8,0};
const double K=0.0002;
const double QUALITY=0.0001;
struct TFly3D
{
TVector3D koord, v;
double mass;
void move(double);
};

void TFly3D::move(double dt)
{
double dt_opt,dt_sum,a_var_min,v_abs;
TVector3D a, a_const, a_var;
dt_sum=0;
a_const=(TVector3D)g;
m:
v_abs=abs(v);
a_var=-v*v_abs*K;
a_var_min=QUALITY/dt*v_abs;
if(a_var_min<abs(a_var)) dt_opt=QUALITY/K/v_abs/mass;
 else dt_opt=dt-dt_sum;
a=a_const+a_var;
koord+=v*dt_opt+a*dt_opt*dt_opt/2.0;
v+=a*dt_opt;
dt_sum+=dt_opt;
if(dt_sum<dt) goto m;
}

#endif


Полный исходник, конечно, намного побольше. Все таки, имеем дело с 3D-векторами.
Здесь хоть и не учитывается  сам ветер, но есть сила сопротивления воздуха. Силу ветра можно добавить к в расчет, если в строке
a_var=-v*v_abs*K;
Вектор скорости vзаменить на скорость относительно воздуха v1=v-v_air,
где v_air- скорость ветра.
Не забудь пересчитать и v_absсоответственно.

Коэффициент сопротивления воздуха K.
QUALITYотвечает за точность расчета. Чем меньше - тем точнее, но больше жрет ресурсов. Можно брать от 0,01 до 0,1.


MrAngel   (2004-05-06 01:22:00) [2]

Goorus - именно :-)))


MeF88   (2004-05-05 11:34:00) [3]

Помню здесь задача была - на каком расстоянии от стрелка упадет пули, при таких-то условиях... Вот здесь аналогично - просто надо найти кучу учебников и мануалов по физике, хотя бы банальный школьный учебник.


Goorus   (2004-05-05 03:25:00) [4]

Угу, а ещё надо учитывать тействие гравитационных сил всех планет во вселенной, Боровское движение, зависимость плотности воздуха от высоты, солнечную радиацию и уровень алкоголя в крови стрелка :)


MrAngel   (2004-05-05 01:23:00) [5]

Дело в том что в идеале пуля вовсе не летит по прямой. Вспомните снайперов. Те делают поправку на ветер, плотность воздуха, дальность, высота позиции стрелка.


Рамиль   (2004-05-04 22:16:00) [6]

А что, на OpenGL пуля как то по другому летит?!.:) Как же ее тогда на DirectDraw кособочит...


ворошиловский стрелок   (2004-05-04 21:49:00) [7]

по прямой.. лучше по параболе.


Наверх

Титульная страница Поиск, карта сайта Написать письмо