如果一条线不是水平或垂直的,绘制它在平面上(逐点)的算法是什么?
请参阅Bresenham算法。
没有“逐点”算法——因为点是无限小的,所以任何基于点的算法都需要无限长的时间才能完成。
相反,根据虚拟笔宽度绘制线条,并计算绘制该线条时笔触覆盖的像素数量和强度。
如果您只想像上世纪70年代那样打开或关闭像素,则使用Brensenham算法家族之一。
大多数现代计算机图形使用反锯齿算法——要么是笔划、子采样或精确像素覆盖——有时在GPU中使用并行算法(例如通过将一个薄矩形投影到平面上来绘制线条,或者对每个像素进行覆盖计算)。
许多图形算法都是基于贝塞尔曲线的;直线只是控制点在一条直线上的曲线,因此绘制它们的算法是相同的,尽管可能会做一些优化。