0

次のコードで円を描く必要があります(ポイントが円上にあるかどうかを確認してください)。

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;
   }
}

ただし、円のいくつかの点しか描画しません。私は何を間違っていますか?

ありがとうございました。

4

2 に答える 2

0

範囲ベースのバージョンは次のように機能します。

bool RangeCheck(float val, float r1, float r2) {
   return val >= r1 && val <= r2;
}
bool Circle(float x, float y, float rad) {
   return RangeCheck(sqrtf(x*x+y*y), rad-0.8, rad+0.8);
}
bool CircleWithCenter(float x, float y, float cx, float cy, float rad) {
   x-=cx; y-=cy;
   return Circle(x,y,rad);
}

この種の範囲は、天気予報で等値線を描く方法ですが、円にも機能します。

于 2013-02-01T15:14:13.990 に答える