45度角Tile地图通过具体位置获得地图的行列数详解
来源:互联网 发布:淘宝号购买 编辑:程序博客网 时间:2024/05/17 06:47
//45度角地图通过具体位置获得地图的行列数
CCPoint TileMapMove::convertto2d(float x,float y)
{
CCTMXTiledMap *tileMap=(CCTMXTiledMap*)this->getChildByTag(kTagTileMap);
//获取地图的宽高
int mapWidth=tileMap->getMapSize().width*tileMap->getTileSize().width;
int mapHeight=tileMap->getMapSize().height*tileMap->getTileSize().height;
double distanse,sin1,sin11,sin22,cos1;
//d2x,d2y保存传入点在地图上的行列值
int d2x,d2y;
//菱形棱长比例系数(因为对角线之比是2:1,所以根据三角形定理,斜边比是sqrt(5.0)
double mystatic5=sqrt(5.0);
//所以地图格的棱长为(高的一半*棱长比例系数)
double mystatic=16*mystatic5;
if(x>mapWidth/2)
{
distanse=sqrt((x-mapWidth/2)*(x-mapWidth/2)+(mapHeight-y)*(mapHeight-y));
sin1=(mapHeight-y)/distanse;
cos1=(x-mapWidth/2)/distanse;
sin11=(sin1*2-cos1)/mystatic5;
d2y=distanse*5/4*sin11/mystatic;
sin22=(2*sin1+cos1)/mystatic5;
d2x=distanse*5/4*sin22/mystatic;
return ccp(d2x,d2y);
}
else
{
//AC的长度
distanse=sqrt((mapWidth/2-x)*(mapWidth/2-x)+(mapHeight-y)*(mapHeight-y));
//1 = 角ACE
sin1=(mapHeight-y)/distanse;
cos1=(mapWidth/2-x)/distanse;
//11 = 角ACD
sin11=(sin1*2-cos1)/mystatic5;
//sinADC = sin 2*CFO = 4/5
d2x=distanse*5/4*sin11/mystatic;
//22 = 角CAD
sin22=(2*sin1+cos1)/mystatic5;
d2y=distanse*5/4*sin22/mystatic;
return ccp(d2x,d2y);
}
}
CCPoint TileMapMove::convertto2d(float x,float y)
{
CCTMXTiledMap *tileMap=(CCTMXTiledMap*)this->getChildByTag(kTagTileMap);
//获取地图的宽高
int mapWidth=tileMap->getMapSize().width*tileMap->getTileSize().width;
int mapHeight=tileMap->getMapSize().height*tileMap->getTileSize().height;
double distanse,sin1,sin11,sin22,cos1;
//d2x,d2y保存传入点在地图上的行列值
int d2x,d2y;
//菱形棱长比例系数(因为对角线之比是2:1,所以根据三角形定理,斜边比是sqrt(5.0)
double mystatic5=sqrt(5.0);
//所以地图格的棱长为(高的一半*棱长比例系数)
double mystatic=16*mystatic5;
if(x>mapWidth/2)
{
distanse=sqrt((x-mapWidth/2)*(x-mapWidth/2)+(mapHeight-y)*(mapHeight-y));
sin1=(mapHeight-y)/distanse;
cos1=(x-mapWidth/2)/distanse;
sin11=(sin1*2-cos1)/mystatic5;
d2y=distanse*5/4*sin11/mystatic;
sin22=(2*sin1+cos1)/mystatic5;
d2x=distanse*5/4*sin22/mystatic;
return ccp(d2x,d2y);
}
else
{
//AC的长度
distanse=sqrt((mapWidth/2-x)*(mapWidth/2-x)+(mapHeight-y)*(mapHeight-y));
//1 = 角ACE
sin1=(mapHeight-y)/distanse;
cos1=(mapWidth/2-x)/distanse;
//11 = 角ACD
sin11=(sin1*2-cos1)/mystatic5;
//sinADC = sin 2*CFO = 4/5
d2x=distanse*5/4*sin11/mystatic;
//22 = 角CAD
sin22=(2*sin1+cos1)/mystatic5;
d2y=distanse*5/4*sin22/mystatic;
return ccp(d2x,d2y);
}
}
- 45度角Tile地图通过具体位置获得地图的行列数详解
- COCOS2D-X中45度地图通过位置获得对应行列数中的三角变换理解
- tile地图的组合算法
- Android显示具体位置地图
- iOS-81-百度地图-通过经纬度获取到具体位置
- 一种tile地图的组合算法
- Tile地图制作
- 用高德地图API 通过详细地址获得经纬度
- cocos2d-android 使用tile地图
- 获得矩阵行列数的方法
- cocos2d-x tile map瓦片地图的黑线及地图抖动解决方案
- 【转载】cocos2d-x tile map瓦片地图的黑线及地图抖动解决方案
- cocos2d-x tile map瓦片地图的黑线及地图抖动解决方案
- Android:使用百度地图SDK定位当前具体位置(类似QQ发表说说的选择地点功能)
- ndroid:使用百度地图SDK定位当前具体位置(类似QQ发表说说的选择地点功能)
- 地图的使用详解
- 【unity拓展】Unity3d通过Tiled2Unity批量导入Tile地图到unity
- WebGIS学习(四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图
- web服务器关机的原因之一
- Java 异步方法转同步
- The document "MainStoryboard.storyboard" could not be opened. Could not read archive.
- libcurl ftp下载实例
- ScrollView中的LinearLayout不能fill_parent
- 45度角Tile地图通过具体位置获得地图的行列数详解
- ListView实现漂亮的自定义表格实例
- Swift和keystone认证服务器结合实现多租户
- 蓝桥杯 C++ 5位正整数倒叙输出
- “摧龙八式——成功销售的八个步骤”笔记(下)
- cocos2d-x中CCNode的init和onEnter
- 课外....
- wp内外链
- 极限游戏开发活动的战果--进击的9秒,开源下载!!!