Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Подскажите плз алгоритм полёта пули на OpenGl!!!   Найти похожие ветки 

 
min   (2004-05-04 18:15) [0]

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


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

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


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

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


 
MrAngel   (2004-05-05 01:23) [3]

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


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

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


 
MeF88 ©   (2004-05-05 11:34) [5]

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


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

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


 
matsic ©   (2004-05-11 19:05) [7]

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

#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.



Страницы: 1 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
3-1091540445
AndrewK
2004-08-03 17:40
2004.08.29
Как вызвать создания ConnectionString?


3-1091450350
ZHK
2004-08-02 16:39
2004.08.29
Как в реальном времени добавить поля в таблицу?


9-1084036236
Rule
2004-05-08 21:10
2004.08.29
Помогите найти движок для некомерческого использования !!!


14-1092275016
Думкин
2004-08-12 05:43
2004.08.29
С днем рождения! 12 августа


1-1092493911
Kirsanch
2004-08-14 18:31
2004.08.29
TService