问题标签 [bresenham]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
350 浏览

ipad - 在 ipad 中实现自由手绘点缺失问题

我正在用某种画笔制作一个免费的 ipad 绘图应用程序,例如“画笔”。我的问题是 touchmove 事件错过了快速移动的一些要点。

所以我想获取先前位置和当前位置之间的所有这些中间点来绘制画笔图案。

我实施了 bresenham line algorthm 来获得所有这些积分,但它会减慢性能,请您指导我什么是最好的方法来做到这一点。

谢谢 。

0 投票
3 回答
3578 浏览

c++ - 在 OpenGL 上使用 Bresenham 算法绘制圆

我可以用算法画一个圆。但是,边界看起来很奇怪,像素看起来彼此分离。我希望他们更接近。我试图扩大点大小。但结果并没有那么好。所以,我在想如果我可以完全填充像素可能会更好。(我想它是方形的。)我该怎么做或者你有更好的主意吗?现在看起来像这样:

http://img690.imageshack.us/i/circlev.jpg/

0 投票
2 回答
5290 浏览

graphics - 绘制四连线的算法

我正在寻找一种算法(用 Java 编码会很好,但任何足够清晰可以转换为 Java 的东西都可以)来绘制一条 4 连接线。似乎Bresenham 的算法是使用最广泛的,但我发现的所有可以理解的实现都是 8 连接的。OpenCV 的cvline函数显然有一个 4-connected 版本,但源代码对我来说,作为一个平庸且近乎 C 文盲的程序员,难以理解。其他各种搜索都一无所获。

感谢任何人都可以提供的任何帮助。

0 投票
1 回答
1496 浏览

optimization - 通过绘制许多水平和垂直线而不是像素来优化 Bresenham

我有一组非常有效的水平和垂直线条绘图功能,每个周期可以绘制许多像素(水平一个,~4 像素/周期,垂直一个~0.25 像素/周期。)我正在使用 Bresenham 的线条绘图绘制任意线的算法。但是,这涉及调用单个绘制像素例程,该例程相对较慢(~0.03 像素/周期。)

我注意到 Bresenham 算法绘制的大多数线条都显示了水平和垂直条带,它们之间的距离很远。有谁知道是否可以将这些对 DrawPixel 的单独调用替换为对 DrawHoriz 和 DrawVert 绘图例程的调用?有人有代码示例吗?我已经尝试过了,但我的成功有限,主要是导致输出中断 - 我怀疑我以错误的方式接近它。

非常感谢

0 投票
4 回答
1262 浏览

algorithm - A* 启发式创建 Bresenham 线

根据我对 A* 启发式和 Bresenham 算法如何工作的了解,这可能是不可能的,因为只有当前状态和目标状态被传递给启发式函数。但也许有人对这个问题有一个聪明的解决方案。

我正在使用 A* 来规划网格上的路径,并且我想要一个启发式方法,当当前状态和目标之间或下一次绕过障碍物之间有空闲空间时,它会导致最佳路径遵循 Bresenham 的线。

这里有一些图片来说明这个问题。

曼哈顿距离:

如果世界上的运动就像一个网格上的跳棋,这将是非常好的,但我最终会将 A* 路径转换为连续平面上的运动,所以这确实很好用。

使用曼哈顿距离启发式从红到绿的最短路径

欧几里得距离:

更好,但仍然不完美。注意最后的直线。对角线可以很容易地保持对角线,这就是我想要的。

使用欧几里得距离启发式从红色到绿色的最短路径

我想要的是:

布雷森汉姆线被绘制到下一个转弯或目标。

我真正想要的最佳路径,它使用布雷森汉姆线到达目标

我在这里找到了一个很好的资源,http ://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html,它触及了我正在寻找的东西,但似乎只适用于从开始到目标绘制 Bresenham 线。我想要的是布雷森汉姆线也被吸引到下一个绕过障碍物的转弯处。

有什么想法可以解决这个问题吗?

0 投票
2 回答
1025 浏览

algorithm - 布雷森汉姆算法

可能重复:
如何使用 Bresenham 创建任意厚度的线?

如何使用 Bresenham 算法绘制超过一个像素厚的线条?我是否必须在 x 和 y 偏移的情况下多次运行该算法?

0 投票
2 回答
968 浏览

scala - 布雷森汉姆线算法错误

我有以下bresenham 算法的代码,它表示适应Scala Java 代码。

对于几乎所有的线都很好,但是当我试图从上到下计算垂直线时(即(0,3) -> (0,0))我什么也没得到。
我觉得自己很愚蠢,因为问题并不那么难,而在于上面hasNext的案例说不)。 我已经通过交换积分来解决这个问题,但这显然是一个糟糕的解决方案。有人可以帮我概括算法吗?

0 投票
2 回答
291 浏览

python - 布雷森汉姆线没有终止

我已经在 python 中实现了来自 Wikipedia 的Bresenham 算法,但是对于某些行它不起作用,例如从 1,0 到 0,1 它不会停止并继续制作超长的行

0 投票
2 回答
12115 浏览

java - 简化的 Bresenham 线算法:它*究竟*做什么?

基于维基百科关于 Bresenham 的线算法的文章,我已经实现了那里描述的简化版本,我的 Java 实现如下所示:

现在我明白了,它err控制了 x 轴上的步数与 y 轴上的步数之间的比率——但现在我应该记录代码在做什么,但我无法清楚地表达它的用途,以及为什么if 语句是这样的,它们是如何err变化的,以及为什么会以代码中看到的方式发生变化。

维基百科没有指向任何更详细的解释或来源,所以我想知道:

使用此简化版本的 Bresenham 线算法,究竟做了什么errdxdy

0 投票
2 回答
13217 浏览

c++ - c++ Bresenham的线算法画弧和旋转

我正在寻找用 Bresenham 的线算法制作弧线的方法。这个算法画出完美的圆,但是如果我需要画弧(从 0 到 Pi)并将它旋转 30 度(例如)怎么办?