1. -- 
  2. -- Jan & Uwe R. Zimmer, Australia, September 2019 
  3. -- 
  4.  
  5. with Vectors_xD_I; pragma Elaborate_All (Vectors_xD_I); 
  6.  
  7. package Vectors_2D_P is 
  8.  
  9.    type xy_Coordinates is (x, y); 
  10.  
  11.    pragma Warnings (Off, "in instantiation at vectors_xd_i.adb:132"); 
  12.    package Vectors_2Di is new Vectors_xD_I (Positive, xy_Coordinates); 
  13.    pragma Warnings (On, "in instantiation at vectors_xd_i.adb:132"); 
  14.  
  15.    subtype Vector_2D_P is Vectors_2Di.Vector_xD_I; 
  16.  
  17.    Zero_Vector_2D_P : constant Vector_2D_P := Vectors_2Di.Zero_Vector_xD; 
  18.  
  19.    function Image (V : Vector_2D_P) return String renames Vectors_2Di.Image; 
  20.  
  21.    function Norm (V : Vector_2D_P) return Vector_2D_P renames Vectors_2Di.Norm; 
  22.  
  23.    function "*" (Scalar : Float; V : Vector_2D_P) return Vector_2D_P renames Vectors_2Di."*"; 
  24.    function "*" (V : Vector_2D_P; Scalar : Float) return Vector_2D_P renames Vectors_2Di."*"; 
  25.    function "/" (V : Vector_2D_P; Scalar : Float) return Vector_2D_P renames Vectors_2Di."/"; 
  26.  
  27.    function "*" (V_Left, V_Right : Vector_2D_P) return Float renames Vectors_2Di."*"; 
  28.  
  29.    function Angle_Between (V_Left, V_Right : Vector_2D_P) return Float renames Vectors_2Di.Angle_Between; 
  30.  
  31.    function "+" (V_Left, V_Right : Vector_2D_P) return Vector_2D_P renames Vectors_2Di."+"; 
  32.    function "-" (V_Left, V_Right : Vector_2D_P) return Vector_2D_P renames Vectors_2Di."-"; 
  33.  
  34.    function "abs" (V : Vector_2D_P) return Float renames Vectors_2Di."abs"; 
  35.  
  36. end Vectors_2D_P;