public virtual void RotateAroundPoint(double ang, Point p = null)
 {
     Begin = Begin.Rotate(ang, p);
     End   = End.Rotate(ang, p);
 }