using System; abstract public class AbstractPoint { public enum PointRepresentation {Polar, Rectangular} // We have not yet decided on the data representation of Point public abstract double X { get ; set ; } public abstract double Y { get ; set ; } public abstract double R { get ; set ; } public abstract double A { get ; set ; } public void Move(double dx, double dy){ X += dx; Y += dy; } public void Rotate(double angle){ A += angle; } public override string ToString(){ return "(" + X + ", " + Y + ")" + " " + "[r:" + R + ", a:" + A + "] "; } protected static double RadiusGivenXy(double x, double y){ return Math.Sqrt(x * x + y * y); } protected static double AngleGivenXy(double x, double y){ return Math.Atan2(y,x); } protected static double XGivenRadiusAngle(double r, double a){ return r * Math.Cos(a); } protected static double YGivenRadiusAngle(double r, double a){ return r * Math.Sin(a); } }