component Points; type Point; Point( X_coord = real, Y_coord = real ) -> Point; Abscissa ( Point ) -> real; Ordinate ( Point ) -> real; Translate ( Point, NewOrigin = Point ) -> Point; Scale ( Point, Factor = real ) -> Point; Rotate ( Point, Angle = real ) -> Point; begin use Math; Point(x,y) = Point:[x;y]; Abscissa(P) = P.x; Ordinate(P) = P.y; Translate(P,S) = Point( P.x + S.x, P.y + S.y ); Scale(P,f) = Point( f * P.x , f * P.y ); Rotate(P,a) = Point( P.x * cos(a) + P.y * sin(a), - P.x * sin(a) + P.y * cos(a) ); end component Points;