pietrod21

massima gittata eulero

Nov 16th, 2011
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.88 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #define g 9.81
  5. #define dth 0.1
  6. #define dt 0.1
  7.  
  8. ///////////////////////////////////////////////////////////struct
  9. struct vett{
  10.     double x,y;
  11.     }vento;    //creo la struttura vettore e contestualmente creo un vettore vento (si può fare aggiungendo typedef)
  12.  
  13.  
  14. struct punto{
  15.     struct vett p,v,a;  //creo struttura che segue il punto in tutti i suoi valori (//)
  16. }punt, temp;       
  17. //////////////////////////////////////////////////////////funzioni
  18. struct vett aa(double vx,double vy,double ventx,double venty, double fA);
  19. struct punto kutta(struct punto fpunt, struct vett fvento, double fA);
  20.  
  21. //---------------------
  22. main(){
  23. int i=0;
  24. double A=0.1, modv=20, theta=0, thetaMAX, grad=(M_PI/2)/dth;
  25.  
  26. punt.p.x=0;
  27. punt.p.y=0;
  28. vento.x=0;
  29. vento.y=0;
  30.  
  31.     do{
  32.     punt.v.x=modv*cos(theta);
  33.     punt.v.y=modv*sin(theta);
  34.         do{  
  35.         temp=kutta(punt, vento, A);
  36.         printf(" %lf %lf \n", theta*180/M_PI,punt.p.x);
  37.         }while(punt.p.y>0);
  38.             if(temp.p.x>punt.p.x){thetaMAX=theta;} 
  39.         punt=temp;
  40.         theta+=dth;
  41.     }while(theta<M_PI/2);
  42. printf("massima gittata raggiunta a %lf gradi \n", thetaMAX*180/M_PI);
  43. }
  44. //---------------------
  45. struct vett aa(double vx,double vy,double ventx,double venty, double fA){ //prende le velocità del proiettile e del vento e scrive - tramite puntatore - l'accelerazione risultante nella struct punt.a
  46.        
  47.     struct vett acc;
  48.     acc.x=-fA*fabs(vx-ventx)*(vx-ventx);
  49.     acc.y=-fA*fabs(vy-venty)*(vy-venty)-g;
  50.         //printf(" vettore acc %lf %lf \n", acc.x, acc.y);
  51.     return acc;
  52. }
  53.  
  54. struct punto kutta(struct punto fpunt, struct vett fvento, double fA){
  55.  
  56.     double vx,vy,ventx,venty;
  57.     struct vett a1;
  58.  
  59.     vx=fpunt.v.x;
  60.     vy=fpunt.v.y;
  61.     ventx=fvento.x;
  62.     venty=fvento.y;
  63.  
  64.     a1=aa(vx,vy,ventx,venty,fA);  
  65.  
  66.     fpunt.v.x=a1.x*dt;
  67.     fpunt.v.y=a1.y*dt;
  68.     fpunt.p.x=fpunt.v.x*dt;
  69.     fpunt.p.y=fpunt.v.y*dt;
  70.        
  71.     return fpunt;
  72. }
  73.  
  74.  
Advertisement
Add Comment
Please, Sign In to add comment