【发布时间】:2013-11-16 18:30:15
【问题描述】:
我正在寻找一种快速算法来绘制具有一定厚度的线条。线条不必抗锯齿,速度是优先考虑的。像这样相当简单的事情就足够了:
用例是一个 Javascript 游戏,其中蠕虫会留下踪迹。 (HTML5 Canvas 明显画线,但 getImageData() 很慢,碰撞检测也很慢)
在过去的 2.5 小时内,我找不到任何可以做到这一点的东西。是的,我知道关于 SO 的问题几乎相同,实际上其中有很多,但没有一个问题有可行的解决方案。我目前唯一的解决方案是沿着 Bresenham 线画圈,效率不高。
一些代码(伪代码、JS 或至少是文章的链接)会很棒。
【问题讨论】:
-
在您自己没有这样做的情况下坚持获得代码似乎有点富有......
-
线条绘制通常使用 Bresenham 算法完成:en.wikipedia.org/wiki/Bresenham%27s_line_algorithm。用这种方法画粗线也应该是相当直接的。
-
我认为帆布是要走的路。您可以使用 DOM 元素并旋转它们,但这会很差,尤其是在性能方面。碰撞检测可以用 Canvas 和 JS-objects 完成,性能非常好。你想用
getImageData()做什么? -
我没有包含任何代码,因为我只使用 Bresenham 的算法 - 在这里找到 stackoverflow.com/a/4672319/388994 问题是 - 它没有画粗线。至少我找不到任何正确的方法。
-
@81403 只是绘制更大的正方形(矩形)而不是单个像素。
标签: javascript algorithm graphics drawing line