45度的坐标转换成屏幕坐标

//斜45度的坐标转换成屏幕坐标
    inline void MIToMD(int Dx,int Dy,int &Ix,int 
&Iy)
    {
        Ix=(TileWidth>>1)*(Dx-Dy);//转换为绝对坐标x
        Iy=(TileHeight>>1)*(Dx+Dy);//转换为绝对坐标y      大菱形
    }

    //屏幕坐标转换成斜45度的坐标
    inline void MDToMI(int Ix,int Iy,int &Dx,int 
&Dy)
    {
        Dx=int(0.5*((Iy<<1)+Ix)/(TileWidth>>1));
        Dy=int(0.5*((Iy<<1)-Ix)/(TileWidth>>1));
    }


其中
    #define TileWidth 32 //每个Tile的宽
    #define TileHeight 16 
//每个Tile的高

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2011/07/05/2097878.html,如需转载请自行联系原作者

你可能感兴趣的:(45度的坐标转换成屏幕坐标)