在使用椭圆的中点Bresenham算法绘制椭圆时, 当椭圆足够大时, 椭圆的边缘会出现下面这种情况.
出错原因: 将a, b声明为了int类型, 导致中点判别式中发生溢出
关注后面的a*b*a*b
当a == 280, b == 182时, a*b*a*b约等于2.6*10^9
int的表示范围如下(注意最大的正int是这个范围的一半)
于是最大的int型整数小于2.6*10^9, 溢出, 所以边缘出现变形
解决办法:
将a, b声明为long long型(对于1920*1080的屏幕, 此时一定不会溢出)