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