
2008-5-20 13:15
tuablove
求角色移动算法,如图
图:
[img]http://www.yoayoo.cn/math.gif[/img]
x往右为正 y往下为正
有一物体A obj 坐标为100,100
求 A 到 B 点 ,A到C点的最短路径
但只能以45°的倍数角移动,b,c两个点是代表点 以后就是任意点的通用算法了,如果可以加入再加入绕开障碍物的功能
希望大家给指点一二,或提供点相关资料 ,我是用c#写的!
2008-5-20 13:46
Rail100
也就是移动的方向是上下左右,再加上斜上下左右共8个方向吧?优化过的算法没弄过,普通的就是往八个方向各移动一次,记录上一次的移动坐标,当移动失败后返回到上一次移动的坐标继续往其他方向移动,假如全部坐标都移动失败,则返回更上一个坐标继续移动,直到找到一个可以通行的路径。记录所有通行的路径,给出一个最短的。这个算法在地图比较小的时候可以用用。
优化步骤,根据两点间直线最短的方式,假设A往B走,设新路径为AB+,则AB+上的每个点应该与AB直线的距离最小,当移动时除了符合走点的规则(例如无障碍物则通行)外,还符合最短距离的规则。
2008-5-20 14:52
tuablove
也就是如果有障碍物存在的话 就从遇到障碍物的节点开始,往8个方向移动试图到下一个节点,如此往下,再把所有可行的路径记录下来对比,选择最短的做为最优路径了
2008-5-20 21:17
laoyu2003
A*算法
2008-5-21 14:22
tuablove
好 我研究研究研究研究研究研究
2008-5-26 19:16
xoyo1003
A点到任意点(路径不带权,即任意邻接节点路径为1或无穷大)参考宽度优先搜索算法(BFS),复杂度O(n)
[url]http://acm.hnu.cn:8080/online/?action=problem&type=show&id=10210&courseid=5[/url]
A点到任意点(路径带权)参考单源点的最短路径——Dijkstra算法,复杂度O(n^2),用堆加速可以O(n*logn)
参考90°的倍数角移动,[url]http://www.cwebgame.com/thread-188886-1-1.html[/url]
2008-5-27 02:30
榕龙
在楼主的需求下,大可不必祭出Dijkstra 或A*,floodfill就够用了。
2008-5-27 10:10
xoyo1003
种子染色法可解最短路径 头次听说
页:
[1]
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.