安装glut库
这篇博客的编译器是VS2017,vs2019的安装步骤也一样:glut
中点画圆法
这篇博客写得挺详细的,也介绍了速度更快的Bresenham算法:中点画圆法
思路分析
首先,利用导数找出斜率为1的点,从这点开始将曲线分开两段处理,斜率小于1的曲线利用y作为增量计算,斜率大于1的曲线利用x作为增量计算。
其次,由于 y = a x 2 + b x + c y=ax^2+bx+c y=ax2+bx+c关于函数对称轴 x = − a 2 b x=\cfrac{-a}{2b} x=2b−a对称,所以只要画出右边的图像,再进行取对称点操作就能得到左边图像,从而拼出整个图像。
注意, y = a x 2 + b x + c y=ax^2+bx+c y=ax2+bx+c有3个参数,下面两种参数变化的情况会对程序产生较大影响
情况分析
a=0
此时,曲线会退化成直线 y = b x + c y=bx+c y=bx+c
a=0且b=0
此时,曲线会退化成一条平行于x轴的直线 y = c y=c y=c
判别式推导
原函数变为 f ( x , y ) = a x 2 + b x + c − y f(x,y)=ax^2+bx+c-y f(x,y)=ax2+bx+c−y
当 0 < x < − a 2 b 0<x<\cfrac{-a}{2b} 0<x<2b−a时,利用y作为增量
对任意一点 d 0 ( x p , y p ) d_0(xp,yp) d0(xp,yp),有
d p = F ( M ) = F ( x p + 1 , y p + 0.5 ) = a ( x p + 1 ) 2 + b ( x p + 1 ) + c − ( y p + 0.5 ) d_p=F(M)=F(x_p+1,y_p+0.5)=a(x_p+1)^2+b(x_p+1)+c-(y_p+0.5) dp=F(M)=F(xp+1,yp+0.5)=a(xp+1)2+b(xp+1)+c−(yp+0.5)
若 d p < 0 d_p<0 d