问题标签 [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.
performance - 为什么 Bresenham 的线算法比 Naive 算法更有效
在我的图形课程中,我们学习了 Naive 线光栅化算法,然后是 Bresenham 的线条绘制算法。我们被告知计算机是整数机器,这就是我们应该使用后者的原因。
如果我们假设没有软件级别的优化,那么对于具有 mmx 和其他指令集的现代 cpu 来说是否如此?正如我查看了英特尔的 64-ia-32-architectures-optimization-manual.pdf 并且与 mmx 的 int 相比,float 的加减乘法延迟相同或更好。
如果算法在 gpu 中执行,这应该重要吗?已检查NVIDIA CUDA Programming Guide 1.0 (pdf),第 41 页,int 和 float 的时钟周期是相同的。
将 float 转换为 int 的效率低下是什么?load-hit-store 失速对我们来说是一个真正的问题吗?
向上/向下舍入数字的函数的效率如何?(我们可以想到c++ stl中的实现)
Bresenham 算法的效率是由于加法而不是内循环中使用的乘法吗?
php - 没有对角线运动的布雷森汉姆线
是否有改进的 Bresenham 算法,其中从一个像素到下一个像素的步长不允许是对角线,只是水平或垂直?或者任何其他算法可以做到这一点?(PHP 优先)
geometry - 栅格化和填充超球面的算法?
我正在尝试栅格化并填充超球面。本质上,我有一个固定大小的 d 维网格和一个球体(中心、半径),并且想要找出网格的哪些单元格与球体重叠并存储它们的坐标。
我知道中点圆算法利用 8 向镜像并产生圆的外部单元格(边界)。我还更改了链接的维基百科代码以填充圆圈(即生成边界内所有单元格的坐标)。
但是我不知道任何更高维度的算法。例如在 4d 中,我一直在考虑通过生成所有可能的圆圈来实现,如下面的伪代码。基本思想是,由于 4d 球体是 (x-x0) 2 + (y-y0)**2 + (z-z0)**2 + (k-k0)**2 = r 2,所以等于到 (x-x0) 2 + (y-y0)**2 = r 2 - (z-z0)**2 - (k-k0)**2。因为我知道如何画一个圆圈,所以我只需要为 z 和 k 的所有可能值生成所有圆圈。
这个问题似乎很相关,但我不明白答案。
opengl - OpenGL线条绘制工件
我正在使用 OpenGL/GLUT 来实现 Bresenham 的线条绘制算法,并且出现了一些看似随意的伪影的问题。这是一个例子:
这是一些我认为可能相关的代码。我没有包含填充顶点缓冲区的代码,因为我 99% 确定它是正确的并且已经重写了它。问题出现了,我开始使用 GLUT 鼠标回调。
这个想法是你点击一个点,这条线从那个点到你释放的点。在我与调用一起添加该功能之前glutPostRedisplay()
,线条图似乎工作正常。
在上图中,要画的线是左边的那条线。它起作用了,但出现了其他工件。我已经检查过了,它们也不在顶点缓冲区中。
他们来自哪里的任何想法?
javascript - Bresenham 算法失败——不断超出范围
我正在使用 Bresenham 算法为玩家运动制作游戏原型。我在这里使用了“编辑”下的实现,但我没有存储要点:Bresenham algorithm in Javascript
我数学很弱(而且我不是开发人员!),所以这可能阻碍了我找出问题所在的能力。我发现了一篇很棒的文章,它在更高的层次上解释了该算法:简化的 Bresenham 线算法:它*究竟*做什么?
这是我的代码的一些输出。每次循环迭代时,我都会检查我们是否超出了合理的区域。这种情况始终如一地发生。我的错误计算和查找点存在问题,但我没有数学能力知道如何解决它。
在下面的代码中,currentX 和 currentY 应该不断变化以接近 targetX 和 targetY。您会看到当前坐标和目标坐标中的一个是相同的,但另一个会非常不同。这没有任何意义,因为根据算法,到那时 currentX 和 currentY 都应该非常接近目标坐标。
编辑 3:新输出
编辑:下面发布的代码。
EDIT2:下面发布了更多相关代码。
hermes.js - 描述玩家的角色 (Hermes) 以及他与 2d 游戏平面的关系
game.js - 高级游戏逻辑。重点关注的是click事件处理程序,否则这里还没有太多
c++ - 使用 Bresenham 线算法绘制线条
我的计算机图形作业是仅使用绘制点的能力来实现 OpenGL 算法。
所以很明显,我需要先开始drawLine()
工作,然后才能画出其他任何东西。 drawLine()
只能使用整数来完成。没有浮点数。
这是我被教导的。基本上,线条可以分为 4 种不同的类别,正陡、正浅、负陡和负浅。这是我应该画的图:
这是我的程序正在绘制的图片:
颜色是为我们完成的。给定顶点,我们需要使用 Bresenham 的线算法根据起点和终点绘制线。
这是我到目前为止所拥有的:
我知道我的错误会很愚蠢,但老实说,我无法弄清楚我做错了什么。为什么有些线条画错如上图?
algorithm - 将 Bresenham 生成的圆存储为多边形?
我正在使用Midpoint circle algorithm生成圆圈。我不想画这些圆圈。相反,我想将它们存储为多边形。显然,坐标的顺序是错误的,所以如果我使用Graphics.DrawPolygon来绘制这些圆,那么圆将变成线网。
问:如何修改算法以生成正确定义的多边形?或者,如何从一组点(在这种情况下属于一个圆)创建一个有效的多边形?
更新:这成功了。
algorithm - Cornu螺旋/样条的高速绘图算法?
有没有人见过角螺旋线(又名回旋曲线)或样条线的不错的绘图算法?对于弧线和直线,我们有 Bresenham 算法之类的东西。这适用于回旋曲线吗?
维基百科页面有这个 Sage 代码:
是否有可用的参数图示例代码?我的网络搜索看不到太多内容。
plot - 像素:获取特定图中的像素
我想知道是否有一种算法可以在某个“像素化”区域内获取像素?
因此,如果我们有一个未填充的 3 x 3 像素正方形,则未填充的图将是: 2,2 网格为:
谢谢!
c# - 所有案例都涵盖了 Bresenham 的线算法
我需要检查一行中的所有像素,所以我使用 Bresenham 算法来访问其中的每个像素。特别是我需要检查所有像素是否都位于位图的有效像素上。这是代码:
Check_Pixel 用于检查行像素是否在有效位图上。我将创建的像素添加到 aList<Point>
以逐点渲染他的元素,并确保Bresenham
检查正确的像素(确实如此)。问题是我的算法并没有涵盖所有情况,而是涵盖了大约 50% 的情况。
PS:我的坐标系原点在左上角(x从左到右,y从上到下)