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;