什么代码可以在C ++中在圆圈内创建均匀间隔的圆圈?

时间:2016-12-11 13:22:32

标签: c++ graphics geometry

我一直在尝试使用GUI创建一个程序,创建一个圆,然后根据用户输入创建多个圆,这些圆应该具有相同的大小,均匀间隔,并且必须有一个点接触外圆。

到目前为止,这是我的代码:

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

然而,问题是输出中没有出现主圆圈以外的圆圈......

1 个答案:

答案 0 :(得分:0)

您似乎正在学习编程的开始,使用Programming -- Principles and Practice Using C++创建一个简单的GUI,这很棒! (这里是includes )。

现在,您需要注意创建和修改您的变量(对象)的值,以及您使用它的周期。您只准备了一个Circle cr并且他们多次将其推回到循环内的向量rc。只需将坐标的计算和Circle的创建移到for周期内...想一想,然后再试一次。