我必须用以下代码画一个圆
(检查点是否在圆上)。

int rad=10;
// i=x,j=y
for (int j=ymid-rad;j<=ymid+rad;j++){
   for (int i=xmid-rad;i<=xmid+rad;i++){
      if (((i-xmid)*(i-xmid)+(j-ymid)*(j-ymid)) == rad*rad)
         Image1->Canvas->Pixels[i][j]=clRed;
   }
}

但是,它仅画出圆的几个点。
我究竟做错了什么?

谢谢你。

最佳答案

您正在用整数算术完成所有这些工作;有very few integer solutionsx^2 + y^2 == r^2(用于固定r)。

我建议改用midpoint circle algorithm之类的东西。

10-08 11:59