我想知道是否有人知道根据Bresenham的直线算法或任何类似的算法绘制一条特定厚度的直线。
再想一想,我一直在想,对于每一个setPixel(x,y),我只需画一个圆圈,例如:
filledCircle(x,y,厚度);对于每一个x,y,那当然是非常慢的。我也试着用字典,但那很快就会填满记忆。检查我将要画的像素是否有相同的颜色,但对于大画笔也不够有效。
也许我可以根据角度画半圆?
如有任何意见,将不胜感激。
谢谢。
发布于 2009-09-15 15:30:20
你实际上不能沿着这条线画圆圈。这种方法是专利。)你仍然可以读到关于灵感的专利。
发布于 2009-09-15 15:44:18
我不知道什么是常用的,但在我看来,你可以用Bresenham作为1像素宽的线条,但可以将它垂直或水平地扩展成一定数量的像素。例如,假设你的线离水平大约30度,你想要它有四个像素宽。计算这条线的垂直厚度应该是五个像素。运行Bresenham,但是对于每个像素(x,y),实际绘制(x,y),(x,y+1),.(x,y+4)。如果你想要线的末端是圆形的,画一个圆在每一端。
对于过度杀戮,请绘制手写笔的像素映射(圆圈或对角线或其他任何东西),然后绘制一组平行的Bresenham线,为手写笔中的每个像素绘制一条。
发布于 2009-09-15 15:53:17
Bresenham上有计算像素覆盖率的变化,比如反晶粒几何库中使用的像素覆盖;不管你是否想要高质量的东西--你不会说输出介质是什么,而且大多数系统都比开断液晶显示器更能支持有厚度的钢笔。
https://stackoverflow.com/questions/1427849
复制相似问题