/// <summary> /// Rotate figure by given angle of rotation /// </summary> /// <param name="figure">The figure to rotate</param> /// <param name="rotationAngle">The angle of rotation</param> /// <returns>A new figure after rotation by the given angle of rotation</returns> public static Figure Rotate(Figure figure, double rotationAngle) { var sinValue = Math.Abs(Math.Sin(rotationAngle)); var cosValue = Math.Abs(Math.Cos(rotationAngle)); var newWidth = cosValue * figure.Width + sinValue * figure.Height; var newHeight = sinValue * figure.Width + cosValue * figure.Height; Figure rotatedFigure = new Figure(newWidth, newHeight); return rotatedFigure; }
static void Main() { var width = 25.23; var height = 2.12; var figure = new Figure(width, height); Console.WriteLine(figure); var angleOfRotation = -180; var rotatedFigure = Figure.Rotate(figure, angleOfRotation); Console.WriteLine(rotatedFigure); }