Figure 16.
COORDINATES body.
------------------------------------------------------------
-- A better way to write the package body.
with STANDARD_INTEGERS; use STANDARD_INTEGERS;
package body COORDINATES is
function Transform(RP : Rectangular_points)
return Polar_points is
X : Polar_points;
R_SQUARED, NORTH, EAST : float;
begin
-- begin dimensionless processing
NORTH := float(Dimensionless(RP.NORTH));
EAST := float(Dimensionless(RP.EAST));
R_SQUARED := NORTH * NORTH + EAST * EAST;
X.R := Type_Convert(Integer_32(TRIG.Sqrt(R_SQUARED)));
-- end dimensionless processing
X.THETA := TRIG.Atan(NORTH,EAST);
return X;
end Transform;
function Transform(PP : Polar_points)
return Rectangular_points is
X : Rectangular_points;
DISTANCE : float;
begin
-- begin partially dimensionless processing
DISTANCE := float(Dimensionless(PP.R));
X.NORTH := Type_Convert(Integer_32(DISTANCE
* TRIG.Cos(PP.THETA)));
X.EAST := Type_Convert(Integer_32(DISTANCE
* TRIG.Sin(PP.THETA)));
-- end partially dimensionless processing
return X;
end Transform;
end COORDINATES;