Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include "grx/include/grx20.h"
- #include "grx/include/grx20.h"
- #include "grx/include/grxkeys.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include "balmod.h"
- void horsi_model_default_init(horsi_model_data *mo)
- {
- mo->v0 = 100.0;
- mo->alpha = M_PI / 4.0;
- mo->g = 9.81;
- mo->x = 0.0;
- mo->y = 0.0;
- mo->x0 = 0.0;
- mo->y0 = 0.0;
- mo->dt = 0.001;
- }
- void horsi_model_start(horsi_model_data *mo)
- {
- mo->t = 0.0;
- }
- int horsi_model_strela_nedopadla(horsi_model_data *mo)
- {
- return ( mo->y >= 0 );
- }
- void horsi_model_iter (horsi_model_data *mo)
- {
- mo->x = mo->x0 + mo->v0 * mo->t * cos(mo->alpha);
- mo->y = mo->y0 + mo->v0 * mo->t * sin(mo->alpha) - 0.5 * mo->g * mo->t * mo->t;
- mo->t += mo->dt;
- }
- /////////////////////////////////////////////////////////////////////////
- void lepsi_model_default_init (lepsi_model_data *mo)
- {
- mo->t0 = 0.0; mo->x0 = 0.0; mo->y0 = 0.0;
- mo->v0 = 470.0;
- mo->eluhel = 45.0;
- mo->alpha = mo->eluhel* M_PI/180.0;
- mo->dt = 0.1;
- mo->R=0.02; // polomer strely
- mo->m=10.8; // hmotnost strely
- mo->ro=1.3; // hustota vzduchu
- mo->C=0.55; // koeficient odporu
- mo->g=9.81; // tihove zrychleni
- mo->S= M_PI * mo->R * 2.0;
- mo->k=mo->C* mo->ro * mo->S/2.0;
- }
- int lepsi_model_strela_nedopadla(lepsi_model_data *mo){
- return (mo->y>=0) ;
- }
- void lepsi_model_start(lepsi_model_data *mo)
- {
- mo->vx=mo->v0*cos(mo->alpha);
- mo->vy=mo->v0*sin(mo->alpha);
- mo->v=sqrt(mo->vx*mo->vx + mo->vy*mo->vy);
- // --- vlastni numericka integrace - k
- mo->t=mo->t_minule=mo->t0;
- mo->x=mo->x_minule=mo->x0;
- mo->y=mo->y_minule=mo->y0;
- mo->i=1;
- }
- int lepsi_model_iter (lepsi_model_data *mo)
- {
- // cislo aktualni iterace (pro vypovet neni potreba)
- mo->i=mo->i+1;
- // DOPROGRAMUJTE NUMERICKE RESENI POHYBOVE ROVNICE EULEROVOU METDODOU
- // tj. postupny vypocet x,y ax,ay vx,vy
- // ( mo->x, mo->y atd. )
- mo->x = mo->x_minule + mo->vx * mo->dt;
- mo->y = mo->y_minule + mo->vy * mo->dt;
- mo->ax = -mo->k * mo->v * mo->vx/mo->m;
- mo->ay = -mo->g - mo->k * mo->v * mo->vy/mo->m;
- mo->vx = mo->vx + mo->ax*mo->dt;
- mo->vy = mo->vy + mo->ay*mo->dt;
- // vypocet okamzite rychlosti v danem kroku
- mo->v= sqrt(mo->vx*mo->vx + mo->vy*mo->vy);
- // priprava pristiho casoveho okamziku
- mo->t=mo->t_minule + mo->dt;
- // zapamatovani minuleho casoveho okamziku a polohy projektilu
- mo->t_minule=mo->t;
- mo->x_minule=mo->x;
- mo->y_minule=mo->y;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement