Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Lanci - balistica.pas

balistica.pas

Caricato da: Poggi Marco
Scarica il programma completo

  1. unit balistica;
  2. {H+}
  3.  
  4. interface
  5. uses grafica;
  6.  
  7. type traiettoria=object
  8.   private
  9.     angolo,velocita:double;
  10.     vettoreVelocita:pointf;
  11.     procedure setVelocita(v0:double);
  12.     function getVelocita:double;
  13.     procedure setAngolo(alfa:double);
  14.     function getAngolo:double;
  15.   public
  16.     constructor crea;
  17.     function tempoVolo:double;
  18.     function gittata:double;
  19.     function altezzaMassima:double;
  20.     procedure calcolo(out posizione:pointf; tempo:double);
  21.     property celere:double read getVelocita write setVelocita;
  22.     property alzata:double read getAngolo write setAngolo;
  23. end;
  24.  
  25. implementation
  26.  
  27. constructor traiettoria.crea;
  28. begin
  29.   angolo:=0;
  30.   velocita:=0;
  31.   vettoreVelocita.x:=0.0;
  32.   vettoreVelocita.y:=0.0;
  33. end;
  34.  
  35. function traiettoria.tempoVolo:double;
  36. begin
  37.   tempoVolo:=2.0 * vettoreVelocita.y / 9.80665;
  38. end;
  39.  
  40. function traiettoria.gittata:double;
  41. begin
  42.   gittata:=vettoreVelocita.x * tempoVolo;
  43. end;
  44.  
  45. function traiettoria.altezzaMassima:double;
  46. var vertice:pointf;
  47. begin
  48.   calcolo(vertice, tempoVolo / 2.0);
  49.   altezzaMassima:=vertice.y;
  50. end;
  51.  
  52. procedure traiettoria.calcolo(out posizione:pointf; tempo:double);
  53. begin
  54.   posizione.x:=vettoreVelocita.x * tempo;
  55.   posizione.y:=vettoreVelocita.y * tempo - 4.9033 * tempo * tempo;
  56. end;
  57.  
  58. procedure traiettoria.setVelocita(v0:double);
  59. begin
  60.   velocita:=abs(v0);
  61.   vettoreVelocita.x:=velocita * cos(angolo);
  62.   vettoreVelocita.y:=velocita * sin(angolo);
  63. end;
  64.  
  65. function traiettoria.getVelocita:double;
  66. begin
  67.   getVelocita:=velocita;
  68. end;
  69.  
  70. procedure traiettoria.setAngolo(alfa:double);
  71. begin
  72.   angolo:=abs((PI / 180.0) * alfa);
  73.   vettoreVelocita.x:=velocita * cos(angolo);
  74.   vettoreVelocita.y:=velocita * sin(angolo);
  75. end;
  76.  
  77. function traiettoria.getAngolo:double;
  78. begin
  79.   getAngolo:=(180.0 / PI) * angolo;
  80. end;
  81.  
  82. end.