public Point rotate( Direction d, int w, int h  ){
		switch( d ){
			case down: return create( w - _x - 1, h - _y - 1 );
			case flipH: return create( _x, h - _y - 1 );
			case flipV: return create( w - _x - 1, _y );
			case left: return create(  _y, w - _x - 1);
			case right: return create( h - _y -1 , _x );
			case up: return this;
			
		}
		throw new UnsupportedOperationException();
	}