public Point3D Rotate( Point3D p, int count ) { int rx = p.X - Location.X; int ry = p.Y - Location.Y; for ( int i = 0; i < count; ++i ) { int temp = rx; rx = -ry; ry = temp; } return new Point3D( Location.X + rx, Location.Y + ry, p.Z ); }