package Protected_Point_3D is new Generic_Protected (Point_3D, Zero_Vector_3D);
package Protected_Vector_3D is new Generic_Protected (Vector_3D, Zero_Vector_3D);
subtype Distances is Real;
subtype Acc_Scalar is Real;
subtype Positions is Point_3D;
subtype Velocities is Vector_3D;
subtype Accelerations is Vector_3D;
subtype Swarm_Element_Index is Positive;
subtype Throttle_T is Real range 0.0 .. 1.0;
type Vehicle_Charges is new Real range 0.0 .. 1.0;
type Energy_Globe is record Position : Positions; Velocity : Velocities; -- in delta-position per second end record;
type Energy_Globes is array (Positive range <>) of Energy_Globe;
type Energy_Globe_Protected is record Position : Protected_Point_3D.Monitor_Ptr; Velocity : Protected_Vector_3D.Monitor_Ptr; end record;
type Energy_Globes_Protected is array (Positive range <>) of Energy_Globe_Protected;
Idle_Throttle : constant Throttle_T := 0.0;
Full_Throttle : constant Throttle_T := 1.0;
Empty_Charge : constant Vehicle_Charges := 0.0;
Half_Charge : constant Vehicle_Charges := 0.5;
Full_Charge : constant Vehicle_Charges := 1.0;