2016-12-11 6 views
-2

私はサークルを作成し、ユーザー入力に基づいて複数の円を作成するGUIを使用してプログラムを開発しようとしていますが、それらの円は同じサイズで、均等に間隔を置いていて、C++で円内に均等に円を描くコードは何ですか?

これは、これまでの私のコードです:

int PI = 3.14159265359; 

int main(){ 
    srand(time(0)); 

    while(true){ 
     Point tl(0,0);   // to become top left corner of window 

     Simple_window win(tl,500,500,"Canvas"); // make a simple window 

     Circle c0(Point(250, 250), 200); 

     c0.set_color(rand()%243+23); // adjust properties of poly 
     win.attach(c0); 
     int n; 
     cout << "Enter Number of Cycles: "; 
     cin >> n; 
     if (n <= 0) break; 
     int genrand = rand(); 
     int t = rand() * (2*PI); 
//  int xc = rand() % 200, yc = rand() % 200; 
     int r = 200*sin(PI/n)/(1 + sin(PI/n)); 
     int x = 250 + r * cos(t); 
     int y = 250 + r * sin(t); 
     Vector_ref<Circle>rc; 
     Circle cr(Point(x,y),r); 
     cr.set_color(rand()%243+23); 
     for (int i = 0; i < n; i++){ 
      rc.push_back(cr); 
     } 
     for(int k = 0; k < rc.size(); k++) win.attach(rc[k]); 

     win.wait_for_button();  // give control to the display engine 
     } 
    return 0; 
} 

はしかし、問題は、メイン円から別に何も円が出力に表示されていないということです...

+0

そして?どうしたの? – Carcigenicate

+0

私は自分自身を修正したので、内側のサークルは表示されません。 –

+2

基本的なデバッグを追加してください:*プリントアウト*描かれるサークルの数と実際に描かれるサークルの数。あなたの期待と比較してください。補足:PIの価値が正確である桁数を知っていますか? – usr2564301

答えて

0

それはあなたが最初に学んでいるようです簡単なGUIを作成してProgramming -- Principles and Practice Using C++とするのは素晴らしいです! (ここにはincludesがあります)。

ここでは、変数を使用しているサイクルに関して、変数(オブジェクト)の値を作成および変更する場所に注意する必要があります。 Circle crの1つだけを準備していて、サイクル内のベクトルrcに数回戻します。座標の計算とサークルの作成をforサイクル内に移動して考えてみて、もう一度やり直してください。