用C語言畫一個心


用C語言圖形庫畫一個心

--環家偉

這次我教大家用代碼畫一個心,這樣你們就可以送給你們的女(男)朋友了。沒找到對象的也可以用來表白啊。

1.首先,我去百度找了心形線的函數,如下:

 

2.  聯系高中的數學知識,我們知道:f(x)>0和f(x)<0的點分別在圖形線兩邊

這樣我們可以通過

這兩個公式篩選出在心里面或者外面的點,然后對他們進行不同的操作。

 

3. 這樣就簡單了,只要遍歷所有的點,然后判斷點是在線上(=)還是在里面或者外面(<或者>),然后對他們進行不同的操作。

如果想畫一個紅心就可以這樣寫:

for (i = 0; i<H; i++)          //H為畫板高
    {
        for (j = 0; j<W; j++)      //W為畫板寬
        {
            //此處得到的(i,j)為屏幕每一個點的坐標
                        
            //對圖形進行平移與放大操作
            double t1 = j/150.0-2, t2 =-(i/100.0-2.5);
            //在這里判斷每一個點是否滿足在心圖像里面的條件
            if (pow(t1, 2) + pow(t2 - pow(t1*t1, 1 / 3.0), 2) <= 1)
                putpixel(j, i, RED);//如果這個點在xin里面,就畫一個紅點(putpixel函數為圖形庫easyx畫點函數)
        }
    }                                        

 

這樣運行后就是這個樣子:

 如果把代碼改成這樣:

for (i = 0; i<H; i++)
    {
        for (j = 0; j<W; j++)
        {
            double t1 = j/150.0-2, t2 =-(i/100.0-2.5);
            if (fabs(pow(t1, 2) + pow(t2 - pow(t1*t1, 1 / 3.0), 2)-1)<0.1)
                putpixel(j, i, RED);
        }
    }

結果就是這樣:

 

 好了,大概的思路就是這個樣子,大家還可以通過這種辦法畫各種函數的圖形

如果沒有圖形庫,請自己去easyx.cn下載安裝,里面有詳細教程。

附完整代碼:

1. 

#include <stdio.h>
#include<easyx.h>
#include<math.h>
#define W 640
#define H 480

int main()
{
    int i, j;
    initgraph(W, H);
    setbkcolor(WHITE);
    cleardevice();
    for (i = 0; i<H; i++)
    {
        for (j = 0; j<W; j++)
        {
            double t1 = j/150.0-2, t2 =-(i/100.0-2.5);
            if (pow(t1, 2) + pow(t2 - pow(t1*t1, 1 / 3.0), 2) <= 1)
                putpixel(j, i, RED);
        }
    }
    getchar();
    return 0;
}

 2. 

#include <stdio.h>
#include<easyx.h>
#include<math.h>
#define W 640
#define H 480

int main()
{
    int i, j;
    initgraph(W, H);
    setbkcolor(WHITE);
    cleardevice();
    for (i = 0; i<H; i++)
    {
        for (j = 0; j<W; j++)
        {
            double t1 = j/150.0-2, t2 =-(i/100.0-2.5);
            if (fabs(pow(t1, 2) + pow(t2 - pow(t1*t1, 1 / 3.0), 2)-1)<0.1)
                putpixel(j, i, RED);
        }
    }
    getchar();
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM