this assignment needs to be written in Eiffel programming language.
Write an application with the following specification.
--It should contain a class RECTANGLE with 8 floating point members (DOUBLE) x1,y1,x2,y2,x3,y3,x4,y4 indicating co-ordinates of 4 corner points in a clock-wise fashion.
--There should be at least 3 class methods named scale(scale factor), translate(x,y) and rotate(degree).
-- The application should always initialize the rectangle with following co-ordinates (0,0), (0,1), (2,1), (2,0).
-- The application should ask the user input in the following fashion in an infinite loop.
(1) Scale (2) Translate (3) Rotate (4) Quit. Your choice :
Upon user entering a number between 1 to 4, it should ask further input (such as scale factor for scaling (from 0.1 to 10 only), (x,y) co-ordinates for translation and degree (0 to 360) for rotation ) if required.
-- After every transformation (scale/translate/rotate), print the values of co-ordinates in a single line in the following format:
(x1,y1) (x2,y2) (x3,y3) (x4,y4)
-- The line asking for user choice should be the next line (NOT on the same line as the co-ordinates).
-- Note that after some operations, it is possible that x1 > x4. DO NOT sort the co-ordinates.
-- Keep in mind that floating point arithmetic is not commutative. Do not compare two floating point numbers for equality. Compare to see if they are within 0.001 distance of each other.
-- Rotation is always performed with respect to (x1,y1). That is, during a rotation (x1,y1) remains fixed. Similarly, (x1,y1) remains fixed during scaling operation as well.
-- Please annotate the program with appropriate pre-conditions, post-conditions and invariants.