关于坐标系转换函数的疑惑

之前参照书本和网上源码把魔塔代码基本弄懂了,现在自己试着写一个坦克大战,在碰撞检测步骤出了问题,搞了半天发现,原来是用到了魔塔中的坐标转换函数,而这个函数在魔塔中没错,在这里看就是有问题的。魔塔中的转换函数代码如下:

CCPoint GameMap::tileCoordForPosition(CCPoint position)
{
int x=position.x/sGlobal->gameMap->getTileSize().width;
int y=(((sGlobal->gameMap->getMapSize().height-1)*sGlobal->gameMap->getTileSize().height)-position.y)/sGlobal->gameMap->getTileSize().height;
return ccp(x,y);
}

由于魔塔中y方向上每次减的position.y为一个瓦片的高度,正好没问题,但是如果高度不是瓦片高度整数倍呢,比如一个瓦片高度60,那么position.y=30的地方,算出的tilemap坐标就有问题了,就拿55块的地图来说,每块瓦片为6060,那么position.y=30代入进去就会得到y坐标为3对不对?那么实际上这个点还是在最下面那一行,tilemap坐标y应该为4才对。求大神解释这是为何?