用畫(huà)線函數(shù)作出的圖案

字號(hào):

下面這個(gè)圖案是用最簡(jiǎn)單的畫(huà)線函數(shù)畫(huà)出的,而且程序代碼也不長(zhǎng).程序如下:
    #include
    #include
    #include
    void main()
    {
    float t;
    int x0=320,y0=240;
    int n,i,j,r;
    int x[50],y[5];
    int gdriver=DETECT,gmode;
    printf("input n(23-31)and r(100-200)\n"); /*讀入表示圖形復(fù)雜度大小的設(shè)置參數(shù)*/
    scanf("%d %d",&n,&r);
    initgraph(&gdriver,&gmode,"\\tc\\bgi"); /*設(shè)置圖形方式初始化*/
    cleardevice(); /*清屏*/
    setbkcolor(WHITE); /*設(shè)置緣景為白色*/
    setcolor(RED); /*設(shè)置繪圖色為紅色*/
    t=6.28318/n;
    for(i=0;i    { x[i]=r*cos(i*t)+x0;
    y[i]=r*sin(i*t)+y0;
    }
    for(i=0;i<=n-2;i++) /*根據(jù)端點(diǎn)值畫(huà)線*/
    { for(j=i+1;j<=n;j++)
    line(x[i],y[i],x[j],y[j]);
    }
    getch();
    closegraph();
    }
    程序分析:
    該程序首先用initgraph()自動(dòng)設(shè)置圖形驅(qū)動(dòng)及顯示模式,接著調(diào)用清屏函數(shù)cleardevice()清除屏幕.在第一個(gè)for循環(huán)中,根據(jù)讀入的n和r的值計(jì)算需要描繪的端點(diǎn)的坐標(biāo)值,在第二個(gè)for循環(huán)中一連幾天出各線段。最后,當(dāng)用getch()函數(shù)接收到有鍵盤(pán)輸入時(shí),closegraph()函數(shù)關(guān)閉圖形顯示。線段端點(diǎn)的坐標(biāo)是怎樣計(jì)算出來(lái)的呢?其實(shí)只要將一個(gè)圓分成幾等份并把各等分點(diǎn)連起來(lái)就可以了.