public static pos GetDrawingPosition(PhysicalObject o)
 {
     switch(M.Rotation){
     case 0:
     return o.p;
     case 1:
     return new pos(o.col,COLS-1 - o.row);
     case 2:
     return new pos(ROWS-1 - o.row,COLS-1 - o.col);
     case 3:
     default:
     return new pos(ROWS-1 - o.col,o.row);
     }
 }
 public int DistanceFrom(PhysicalObject o)
 {
     return DistanceFrom(o.row,o.col);
 }
 public static int DistanceFrom(this pos p,PhysicalObject dest)
 {
     return p.ManhattanDistanceFrom(dest.row,dest.col);
 }
 public int DirectionOf(PhysicalObject obj)
 {
     return p.DirectionOf(obj.p);
 }