📄 math.cpp
字号:
#include "runner.h"
/*
GirdX = g / 2 * ( y / h - (w - x) / w )
GridY = g / 2 * ( y / h + (w + x) / w )
*/
VOID Coord_2DWorldToGrid(int x , int y , int *piGridX , int *piGridY , float fGridWidth , float fGridHeight , int iGridNum)
{
float iHalfGridNum = (float)iGridNum / 2.0f;
float w = fGridWidth * iHalfGridNum;
float h = fGridHeight * iHalfGridNum;
float GridY = iHalfGridNum * ((float)y / h - (w - (float)x) / w);
float GridX = iHalfGridNum * ((float)y / h + (w - (float)x) / w);
if(GridX < 0) GridX-=1;
if(GridY < 0) GridY-=1;
*piGridY = (int)GridY;
*piGridX = (int)GridX;
}
/*
WorldX = (g + y - x) * w / g;
WorldY = ( y + x) * h / g;
*/
VOID Coord_GridTo2DWorld(int x , int y , int *piWorldX , int *piWorldY , float fGridWidth , float fGridHeight , int iGridNum)
{
float iHalfGridNum = (float)iGridNum / 2.0f;
float w = fGridWidth * iHalfGridNum;
float h = fGridHeight * iHalfGridNum;
float WorldX = (float)(iGridNum + y - x) * ( w / (float)iGridNum );
float WorldY = (float)( y + x) * ( h / (float)iGridNum );
*piWorldX = (int)WorldX;
*piWorldY = (int)WorldY;
}
VOID Blit_GetValidRect(RECT *prcDest , RECT *prcSrc ,
int iDrawX , int iDrawY ,
RECT rcDest , RECT rcSrc)
{
RECT rc; //将 rcSrc 转化为屏幕坐标系
rc.left = iDrawX;
rc.top = iDrawY;
rc.right = iDrawX + rcSrc.right - rcSrc.left;
rc.bottom = iDrawY + rcSrc.bottom - rcSrc.top;
//求出与目标区域rcDest的交集
if(IntersectRect(prcDest , &rcDest , &rc))
{
// 将rcInter转化为源图坐标
//int iOffLeft = prcDest->left - iDrawX;
//int iOffTop = prcDest->top - iDrawY;
//int iOffRight = prcDest->right - (iDrawX + rcSrc.right - rcSrc.left);
//int iOffBottom = prcDest->bottom - (iDrawY + rcSrc.bottom - rcSrc.top);
prcSrc->left = rcSrc.left + prcDest->left - iDrawX;
prcSrc->top = rcSrc.top + prcDest->top - iDrawY;
prcSrc->right = rcSrc.left + prcDest->right - iDrawX;
prcSrc->bottom = rcSrc.top + prcDest->bottom - iDrawY;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -