这篇文章中我们简单介绍 DDA (Digital differential analyzer :数值微分法),它根据直线的微分方程来绘制直线,是最简单的一种画线方法。
设直线的起点坐标为 ,终点坐标为 ,令 , ,则要绘制的直线微分方程为
将上式中的微分用差商来代替,即得:
令 ,取时间步长为 ,则每走一步,可得微分方程数值解得递推公式为
根据此公式,即可简单的推出我们我们下一步的像素坐标,转换为代码如下:
1 | void DrawLineDDA(int x1 , int y1 , int x2 , int y2 , |
在我们的主循环中调用这个方法绘制两条斜线,如下:
1 | while (!glfwWindowShouldClose(pWindow)) { |
最终效果:
参考资料 :《计算机图形学基础(OpenGL版)》