我想使用Bresenham的线算法或类似方法从四个点创建一个填充矩形,以获得平滑的边。我在Stack Overflow [link]上遇到了这个答案,它非常适合在两点之间创建一条线。如何使用/修改此功能来创建填充矩形?还有其他算法可以更好地满足我的需求吗?
答案 0 :(得分:0)
对于任意旋转的矩形:
注意:此描述遵循wiki Wu's implementation沿着OX轴进行for循环,但沿OY轴绘制边并填充水平线更有效。
按X坐标左键对顶点进行排序
使水平轴上的间隔由顶点分隔
对于每个间隔选择上边和下边
同时执行Wu的上边缘和下边缘的antaliasing绘图
对于上边缘绘制上半透明像素
draw: plot(ipart(intery) , x, rfpart(intery))
并忽略底部像素,使用其位置作为填充线的起点
LineFrom(ipart(intery)+1, x)
对于下边缘绘制底部半透明像素并使用鞋面作为填充线的末端
到达角落时重新初始化边缘绘制。