森汉姆算法(AS3)-检测两点之间所经过的节点
为了把A*寻到的路径中一些没必要的节点去掉,可以用到森汉姆算法,如果两点之间经过的节点都是可走的,那就把这两个点连起来,最终拿到的路径就是比较平滑的了。
下面是算法实现:
public static function bresenham(x1: int , y1: int , x2: int , y2: int ): Array
{
var touched: Array = [];
var steep: Boolean = Math.abs(y2 - y1) > Math.abs(x2 - x1);
if (steep)
{
var tmp: int ;
tmp = x1;
x1 = y1;
y1 = tmp;
tmp = x2;
x2 = y2;
y2 = tmp;
}
if (x1 > x2)
{
var x1_old: int = x1;
var y1_old: int = y1;
x1 = x2;
x2 = x1_old;
y1 = y2;
y2 = y1_old;
}
var deltax: int = x2 - x1;
var deltay: int = Math.abs(y2 - y1);
var error: int = deltax / 2 ;
var ystep: int ;
var y: int = y1;
if (y1 < y2)
{
ystep = 1 ;
}
else
{
ystep = - 1 ;
}
for ( var x: int = x1; x <= x2; ++x)
{
if (steep)
{
touched.push( new Point(y, x));
}
else
{
touched.push( new Point(x, y));
}
error = error - deltay;
if (error < 0 )
{
y = y + ystep;
error = error + deltax;
}
}
return touched;
}
|
一些资料:http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
转载于:https://www.cnblogs.com/bluesea-flash/p/3319366.html
森汉姆算法(AS3)-检测两点之间所经过的节点相关推荐
- 易懂的Bresenham 布雷森汉姆算法画圆的原理与Python编程实现教程
Bresenham 布雷森汉姆算法画圆的原理与编程实现教程 注意:Bresenham的圆算法只是中点画圆算法的优化版本.区别在于Bresenham的算法只使用整数算术,而中点画圆法仍需要浮点数.注意: ...
- 在yuv上画线_利用布雷森汉姆算法绘制在YUV图像上画直线
最近,因工作需要,在YUV图像上画直线: 算法1步骤: 1.已知直线的起点和终点: 2. 利用布雷森汉姆算法在两点间画直线: 3. 将该直线上的点的颜色在YUV图像上画出. 布雷森汉姆算法原理参考wi ...
- Python布雷森汉姆直线算法RViz可视化ROS激光占位网格映射
使用对数赔率映射已知姿势算法(ROS 包). 布雷森汉姆直线算法 布雷森汉姆直线算法是一种线绘制算法,它确定应选择的 n 维栅格的点,以便形成两点之间的直线的近似值. 它通常用于在位图图像中(例如在计 ...
- 布雷森汉姆直线演算法(Bresenham‘s line algorithm)介绍
布雷森汉姆直线演算法(Bresenham's line algorithm)是用来描述两点间决定一条直线的算法,本人发现它可以用于确定栅格地图中两点间直线经过的栅格位置,它会算出一条线段在点阵图上最接 ...
- 【附源码】布雷森汉姆直线算法(bresenham‘s line algorithm)
1.布雷森汉姆直线算法简介 我们在纸上画直线时,只需要定一个起点和终点,然后把两点连接起来就是一条直线,你将会得到一条笔直的直线. 但是,这个简单的过程,在计算机上却并不容易.首先计算机的屏幕是一个一 ...
- ITK:布雷森汉姆线BresenhamLine
ITK:布雷森汉姆线BresenhamLine 内容提要 输出结果 C++实现代码 内容提要 在两点之间的布雷森纳姆线上获得点. 输出结果 [0, 0] [1, 1] [2, 2] [3, 3] [0 ...
- 用C语言代码实现布雷森汉姆直线插补
布雷森汉姆直线插补是计算机图形学中常见的直线插补算法.以下是用C语言实现布雷森汉姆直线插补的代码示例: #include <stdio.h> #include <math.h> ...
- C语言实现Dijkstra算法(求解两点之间最短路径问题)
文章目录 含有约束条件下的最短路径问题 程序框图及变量说明 程序框图 算法解释 所用数据 代码实现 运行结果 含有约束条件下的最短路径问题 C语言实现最优路径算法(有限时间约束条件下的算法模型) 程序 ...
- 使用Floyd-Warshall算法求出两点之间的最短路径
求出下面任意两个点之间的最短路径: 如何才能求出两点之间的最短路径呢?大家都知道学几何的时候,有一条定理就是:两点之间线段最短.但是在实际情况中,我往往两点之间没有之间的通路而是一些曲折的线路. 上面 ...
最新文章
- 一步步写自己SqlHelper类库(五):Command对象
- python多线程处理文件_Python实验:采用多线程在一个文件中查找特定字符串
- 8086CPU写汇编的规则
- Android MVP模式的初识
- 揭露:人体十大最佳北京上门×××黄金时间
- python中numpy.transpose()函数详解
- [MCSM]随机搜索和EM算法
- Pattern 模式器: Matcher 匹配器
- Dreamweaver8 V8.0.0.2766
- 地图比例尺与空间分辨率之间的关系_分辨率与比例尺
- 随笔之---java版本哲学家就餐问题【信号量的实现】
- NR 5G: Relaxed measurement
- 正则表达式在工作中的应用
- Unity 旋转角度计算
- 电商运营从哪些方面做数据分析?
- eclipse中xtext/xtend的安装及注意事项
- 如果黑客转行干活动策划,我再也不怕开会睡着了
- 东软睿驰与联合电子达成战略合作,抢占国产化基础软件市场新风口
- win10去除广告弹窗的有效方法
- 解决插入U盘后有提示音,但无法打开、格式化或恢复的问题