找回密码
 点一下
查看: 1088|回复: 5

怎么计算黄格到红格的最近距离

[复制链接]
发表于 2013-5-17 08:17:44 | 显示全部楼层 |阅读模式
本帖最后由 551155 于 2013-5-17 10:10 编辑

QQ图片20130517081812.jpg

请问,怎么计算黄格到红格的最近距离,其中顶部位置再向上一格就到底部,底部向下就到顶部。

直接距离是比较好计算,黄格向右6格向下2格,共8格,但如果是跨边的话,黄格向左3格,向下2格,共5格就到了。

发表于 2013-5-17 08:48:55 | 显示全部楼层
沿上下左右四个方向计算好了
跨边的计算边距离相加好了

最后比较四种方案

点评

上下左右的话,是有八个方向的,比如向上的话,延伸到同格,向左向右都可以走,这样就需要共计八个方案进行比较……不知道有没有更简便一些的方式。  发表于 2013-5-17 08:56
回复

使用道具 举报

发表于 2013-5-17 09:07:55 | 显示全部楼层
复制图层,然后拼接到周围的八个方向,分别计算九个红格到中间黄格的距离,然后比较得出结论。

如果直接计算的话,红格到黄格水平距离是6,整个平面水平长度是9,所以跨格距离最近,为(9-6=3);垂直距离是2,整个平面垂直长度是9,所以不跨格距离最近,为2。那么总计就是5格。

点评

这样的话,计算就是两部分,先比较出两种水平距离,选近的,再比较出两种垂直距离,选近的,相加,是这个意思吧?  发表于 2013-5-17 09:18
回复

使用道具 举报

发表于 2013-5-17 09:21:22 | 显示全部楼层
可以这么说吧,而且这样做也是比较方便的一种,不过直接计算的话,只能计算出距离,没有计算出移动的方向。话说lz是打算做什么呢?难道又是强到爆的教程……

点评

没有,我做的地图的一个迷宫的提示信息,因为没有计算到反向,所以提示距离不正确,谢谢你啦。  发表于 2013-5-17 09:26
回复

使用道具 举报

发表于 2013-5-17 12:02:36 | 显示全部楼层
表示我只是来优化下LS们的算法的……

比如像图示的9*9格子的话
首先红黄两块的坐标能获取,然后计算dx和dy(x和y分别的差值,负数的话就乘-1),再用9分别减去dx和dy得到另外两个数,设为tx和ty吧
于是要走的格子数就是Min(dx, tx)+Min(dy, ty)

点评

水平:min((dx-tx)的绝对值),(mx-((dx-tx)的绝对值)), 垂直:min((dy-ty)的绝对值),(my-((dy-ty)的绝对值)), 距离:水平+垂直 绝对值这个功能应该可以用的,不管正负都可以判断出长度了,我是这样做的。  发表于 2013-5-17 14:43
回复

使用道具 举报

发表于 2013-5-17 22:36:03 | 显示全部楼层
噗,龙犯傻了……

因为是可以穿屏的,所以当水平(或垂直)距离大于半屏长度的时候,绝对是穿屏近,就是这样。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-4 20:57 , Processed in 0.239549 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表