有关距离计算的几个函数
根据函数来看,#15的问题的回答就是:两个城市的距离是大洋的距离,而非大陆的距离,不管你的科技情况和探索情况如何
- inline int plotDistance(int iX1, int iY1, int iX2, int iY2) // Exposed to Python
- {
- int iDX;
- int iDY;
- iDX = xDistance(iX1, iX2);
- iDY = yDistance(iY1, iY2);
- return (std::max(iDX, iDY) + (std::min(iDX, iDY) / 2));
- }
- inline int xDistance(int iFromX, int iToX)
- {
- return coordDistance(iFromX, iToX, GC.getMapINLINE().getGridWidthINLINE(), GC.getMapINLINE().isWrapXINLINE());
- }
- inline int yDistance(int iFromY, int iToY)
- {
- return coordDistance(iFromY, iToY, GC.getMapINLINE().getGridHeightINLINE(), GC.getMapINLINE().isWrapYINLINE());
- }
- inline int coordDistance(int iFrom, int iTo, int iRange, bool bWrap)
- {
- if (bWrap && (abs(iFrom - iTo) > (iRange / 2)))
- {
- return (iRange - abs(iFrom - iTo));
- }
- return abs(iFrom - iTo);
- }
复制代码 |