1. -- 
  2. -- Jan & Uwe R. Zimmer, Australia, July 2011 
  3. -- 
  4.  
  5. with Float_Type;          use Float_Type; 
  6. with Graphics_Structures; use Graphics_Structures; 
  7. with Vectors_3D;          use Vectors_3D; 
  8.  
  9. package Swarm_Structures_Base is 
  10.  
  11.    subtype Distances     is Real; 
  12.    subtype Acc_Scalar    is Real; 
  13.  
  14.    subtype Positions           is Point_3D; 
  15.    subtype Velocities          is Vector_3D; 
  16.    subtype Accelerations       is Vector_3D; 
  17.  
  18.    subtype Swarm_Element_Index is Positive; 
  19.    subtype Throttle_T          is Real range 0.0 .. 1.0; 
  20.  
  21.    Idle_Throttle : constant Throttle_T := 0.0; 
  22.    Full_Throttle : constant Throttle_T := 1.0; 
  23.  
  24.    type Vehicle_Charges is new Real range 0.0 .. 1.0; 
  25.  
  26.    Empty_Charge : constant Vehicle_Charges := 0.0; 
  27.    Half_Charge  : constant Vehicle_Charges := 0.5; 
  28.    Full_Charge  : constant Vehicle_Charges := 1.0; 
  29.  
  30.    type Energy_Globes is record 
  31.       Position : Positions;   pragma Atomic (Position); 
  32.       Velocity : Velocities;  pragma Atomic (Velocity); -- in delta-position per second 
  33.    end record; 
  34.  
  35.    type Energy_Globes_A is array (Positive range <>) of Energy_Globes; 
  36.  
  37. end Swarm_Structures_Base;