问题标签 [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.
algorithm - 了解 Bresenham 算法的误差累积部分?
我在理解 Bresenham 的线条绘制算法中的误差累积部分如何工作时遇到问题。
假设我们有x1
和x2
。让我们假设x1 < x2
,y1 < y2
和(x2 - x1) >= (y2 - y1)
为简单起见:
让我们从简单的画线开始。它看起来像:
让我们让它更 Bresenham'ish,并将 y 的整数和浮点部分分开:
yf
在这一点上,我们可以将它们相乘slope
以2 * (x2 - x1)
使它们成为整数,不再需要浮点数。我明白那个。
我不完全理解的部分是:
这实际上是如何工作的?为什么我们要与 1.0 进行比较然后递减呢?
我知道 Bresenham 的基本问题是:如果我们目前处于像素状态x, y
并且我们想要绘制下一个,我们应该选择x + 1, y
还是x + 1, y + 1
?- 我只是不明白那张支票是如何帮助我们回答这个问题的。
有些人称之为错误术语,有些人称之为阈值,我只是不明白它代表什么。
任何解释表示赞赏,谢谢。
bresenham - 使用 Bresenhem 和中点算法绘制直线和椭圆
今天早些时候,我的讲师要求我使用 Bresenhem 和中点画一个椭圆形,其中有线条,我不知道到底在说什么,所以我失败了,然后我被告知要回家做明天的另一个问题,这里是问题的问题
图片
我知道堆栈不是人们回答作业的地方但事情是这样的,首先我搜索了网络,我找到的壁橱解决方案是如何推断Decision Parameter
而不是如何使用参数来绘制实际的线,我希望有人帮助我举例说明如何绘制线,我需要的是使用 Bresenhen 和中点算法绘制的线和椭圆的示例以及如何他们这样做并没有向我展示如何回答整个问题,但如果有人回答这个问题,我仍然会很感激,因为这将帮助我真正理解如何处理这些问题。
这是我到目前为止所学到的,如何导出决策参数仍然不知道如何使用它来绘制一条线
algorithm - 是什么导致此代码输出多行(mips 程序集)?
注意:请不要对这个新手的问题投反对票以帮助学习。对于寻求帮助的人被否决,这是相当令人沮丧的。
嗨,我一直在尝试在 mips 汇编中实现 bresenham 算法,但是我使用的算法不完整,即不包括错误等。我偶然发现了使用该算法的某人的 mips 汇编代码,但是我不明白代码中的什么使程序输出多行。main_for 是导致代码输出多行的原因的一部分吗?
graphics - DDA 算法和 Bresenham 算法
我一直在研究用于画线的 DDA 和 Bresenham 算法,并且对一件事感到好奇。在这两种算法中,我们都将像素网格视为单位大小并执行进一步的步骤。我的问题是我是否将网格大小更改为 0.5 *0.5 而不是 1*1 网格,这两种算法的工作方式是否会有任何变化。如果是的话,有人能告诉我每个算法分别会有哪些变化。很想知道。谢谢你的回答提前。任何可以帮助的人,请这样做,因为它很紧急。我有一个考试,我想澄清这个概念。请。谢谢:)
python - 阴影投射 Python 的优化
我一直在为我正在做的一个小型角色扮演游戏开发影子施法者。
我遇到的问题是,当我在游戏中使用它时,它只是一种减慢速度并导致可怕滞后的方式。
请不要被帖子的长度吓到。它相当简单,但为了让您可以运行我也包含所有 Bresenham 算法的代码。
原理如下: - 制作黑色表面 - 定义具有位置和半径的光源。- 使用 Bresenham 的圆算法获得由该位置和半径定义的圆的圆周上的所有点。- 对于沿圆周的每个点,使用 Bresenham 的线算法从光源的位置绘制一条线。- 然后遍历线的点并检查它们是否与屏幕上显示的每个障碍物发生碰撞。- 如果没有碰撞,则以该点为中心绘制一个半径为 10 像素左右的白色圆圈。- 如果发生碰撞,沿圆周移动到下一个点。- 最后在一个表面上用所有白色圆圈对表面进行blit,黑色的透明度值为100,白色的透明度值为100。
到目前为止,我尝试了以下方法: 确实减少了延迟: - 将障碍物列表限制为屏幕上显示的那些 - 将屏幕边缘视为障碍物,以减少不可见区域的迭代。- 仅在圆周围的每 3 个点和沿线的 12 个点上迭代。这并没有改变任何东西: - 使用从光源到范围边缘或障碍物的椭圆而不是沿线的许多圆圈。问题是我必须为每个椭圆重新绘制表面,然后旋转整个椭圆。
如果您对如何提高效率有任何建议,我会很高兴来到这里。
Bresenham 线算法:
布雷森汉姆圈算法:
我的光源、障碍物和阴影遮罩的课程:
阴影生成函数允许我在不使用 Night_Mask 类的 apply_shadows 方法中的异常的情况下打破线和障碍循环:
最后是运行上述所有内容的主要 pygame 示例循环:
这是从头到尾的完整代码,用于轻松复制粘贴:
java - Bresenham 线算法
大家好,
我正在努力完成布雷森汉姆线方程的算法。
我得到的输出是黑色的输出,预期的输出是白色的。bresenham 算法用于打印矩形中间的两条对角线。有人可以纠正我的代码以修复它。
笔记:
bx 等价于 x2 和 super.x x1 与 y 类似。
c++ - Bresenham线算法画线
我正在尝试在 C++ 绘图程序中实现 Bresenham 线算法。
当 x 增加时它画得很好,但它似乎做了一个奇怪的算法
我尝试了多种方法,例如翻转 x,y 我已经按照多个示例重写了代码并且没有运气。
这是我转换的网站的链接
http://www.falloutsoftware.com/tutorials/dd/dd4.htm
这是我的程序发生的事情的图片
assembly - ARM 组装 Bresenham 的线算法
几天来,我一直在尝试实现 Bresenham 的线路算法,但一直面临着奇怪的问题。我能够画出一些线条,但其他线条似乎不起作用并导致无限循环。我花了几个小时试图让 Qemu 工作并尝试了一些模拟器,但似乎无法解决问题。下面是我应该画线的代码。
这两条线毫无问题地绘制:
这条线不会绘制并阻止程序进一步执行: