第一篇:C語言畫圓橢圓
C語言畫圖實(shí)驗(yàn)代碼,包含畫直線,畫圓,橢圓 #include “graphics.h”
#include “conio.h”
#include “dos.h”
#include “math.h”
#include “stdio.h”
/* 直線中點(diǎn)算法*/
void midpointline(int x0,int y0,int x1,int y1,int color){
int x,y;
int a,b,c,d,d1,d2;
a=(y0-y1);
b=(x1-x0);
d=a+a+b;
d1=a+a;
d2=a+b+a+b;
x=x0;y=y0;
putpixel(x,y,color);
while(x { if(d<0) {x++;y++;d+=d2;} else {x++;d+=d1;} putpixel(x,y,color); } } /* 直線DDA算法*/ DDA_line(int x1,int y1,int x2,int y2,int color){ int i; float increx,increy,x,y,length,xx,yy; if(abs(x2-x1)>abs(y2-y1)) length=abs(x2-x1); else length=abs(y2-y1); increx=(x2-x1)/length; increy=(y2-y1)/length; x=x1; y=y1; for(i=1;i<=length;i++) yy=y+0.5; putpixel((int)xx,(int)yy,color); x=x+increx; y=y+increy; } } /* 橢圓中點(diǎn)算法*/ void MidBresenhamllipse(double a,double b,int color) { double x,y, d1,d2; x=0;y=b; d1=b*b+a*a*(-b+0.25); putpixel(x+300,y+200,color); putpixel(-x+300,-y+200,color); putpixel(-x+300,y+200,color); putpixel(x+300,-y+200,color); while(b*b*(x+1) { if(d1<=0) { d1+=b*b*(2*x+3); x++; } else { d1+=b*b*(2*x+3)+a*a*((-2)*y+2); x++; y--; } putpixel(x+300,y+200,color); putpixel(-x+300,-y+200,color); putpixel(-x+300,y+200,color); putpixel(x+300,-y+200,color); } d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b; while(y>0) { { d2+=b*b*(2*x+2)+a*a*(-2*y+3); x++; y--; } else { d2+=a*a*(-2*y+3); y--; } putpixel(x+300,y+200,color); putpixel(-x+300,-y+200,color); putpixel(-x+300,y+200,color); putpixel(x+300,-y+200,color); } } /* 參數(shù)法畫橢圓 */ void cs_ellipse(int x0,int y0,int a,int b,int dt) { int x,y,n,i; float t=0,t1; t1=dt*0.0174533; n=360/dt; moveto(x0+a,y0); for(i=1;i { t=t+t1; x=x0+a*cos(t); y=y0+b*sin(t); lineto(x,y); } lineto(x0+a,y0); } void cs_Ellipse(int x0,int y0,int a1,int b1,int color1) { int i,x=x0,y=y0,a=a1,b=b1,color=color1; cs_ellipse(x,y,a,b,1); } /* 中點(diǎn)Bresenham算法畫圓 */ voidBresenhemCircle(int x0,int y0,double r,int color) { int x,y,d; x=0; y=(int)r; d=(int)(3-2*r); while(x { cirpot(x0,y0,x,y,color); if(d<0) d+=4*x+6; else { d+=4*(x-y)+10; y--; } x++; } if(x==y) cirpot(x0,y0,x,y,color); } int cirpot(int x0,int y0,int x,int y,int color) { putpixel((x0+x),(y0+y),color); putpixel((x0+y),(y0+x),color); putpixel((x0+y),(y0-x),color); putpixel((x0+x),(y0-y),color); putpixel((x0-x),(y0-y),color); putpixel((x0-y),(y0-x),color); putpixel((x0-y),(y0+x),color); putpixel((x0-x),(y0+y),color); return(0); } /* 參數(shù)法畫圓 */ void cs_circle(int x0,int y0,int r,int dt) { int x,y,n,i; float t=0,t1; t1=dt*0.0174533; n=360/dt; moveto(x0+r,y0); for(i=1;i { t=t+t1; x=x0+r*cos(t); y=y0+r*sin(t); lineto(x,y); } lineto(x0+r,y0); } void cs_Circle(int x0,int y0,int r1,int color1) { int i,x=x0,y=y0,r=r1,color=color1; cs_circle(x,y,r,1); } void fun() { printf(“************************************************************n”);printf(“*input '1' ues midpointline painting line!*n”);printf(“*input '2' ues DDA_line painting line!*n”);printf(“*input '3' ues system function painting line!*n”); printf(“*input '4' ues midBresenham painting elliptic!*n”);printf(“*input '5' ues parametricpainting elliptic!*n”); printf(“*input '6' ues system function painting elliptic!*n”); printf(“*input '7' ues midBresenham painting circle!*n”);printf(“*input '8' ues midBresenham painting circle!*n”);printf(“*input '9' ues parametricpainting circle!*n”);printf(“*input 'a' print all graphics!!*n”);printf(“*input 'E'exit system!*n”); printf(“************************************************************n”);} /*主函數(shù)塊*/ void main() { int gdriver=DETECT,gmode; /*setbkcolor(9);*/ char c; initgraph(&gdriver,&gmode,“c:tc”); fun(); scanf(“%c”,&c); do { switch(c) { case '1': midpointline(120,220,200,160,20);break;case '2': DDA_line(110,120,200,340,10);break;case '3': line(110,120,200,240);break; case '4': MidBresenhamllipse(34,55,6);break;case '5': cs_Ellipse(120,240,20,120,21);break;case '6': ellipse(110,250,0,360,100,40);break; case '7': BresenhemCircle(100,100,50,4);break;case '8': circle(100,100,67);break;case '9': cs_Circle(100,100,23,2);break;case 'a': midpointline(120,220,200,160,20);DDA_line(110,120,200,340,10);line(110,120,200,240); MidBresenhamllipse(34,55,6);cs_Ellipse(120,240,20,120,21);ellipse(110,250,0,360,100,40); BresenhemCircle(100,100,50,4);circle(100,100,67); cs_Circle(100,100,23,2);break; } printf(“Input any key to continue?。”);getch(); cleardevice(); fun(); scanf(“%c”,&c); }while(c!='E'); printf(“exit system!n”); closegraph(); } 大班語言活動:詩歌《畫圓》 活動目標(biāo): 1.在想想、講講的過程中,理解小動物畫圓的方法,學(xué)習(xí)詩歌。 2.感受動物畫圓的趣味,體驗(yàn)自主學(xué)習(xí)的快樂。 活動準(zhǔn)備: 反映詩歌內(nèi)容的圖片一套。 活動過程: 一、導(dǎo)入部分:用身體畫圓,激起幼兒學(xué)習(xí)的興趣,引出詩歌主題。 1.教師用手勢畫一個圓形,問:你們看,我畫了什么?我是怎樣畫出來的?還能用其他的動作來畫圓嗎? 2.請幼兒嘗試用自己的身體動作來畫圓。 3.教師和全體幼兒一起來用身體動作畫圓。 二、理解掌握部分:初步了解詩句的結(jié)構(gòu),學(xué)習(xí)詩歌。 1.學(xué)習(xí)小魚畫圓的詩句 (1)師:小動物們看見我們這么畫圓覺得非常有趣,它們也想來畫,你們看誰來了呀? (2)出示小魚圖片,教師以小魚的口吻說:我是一條快活的小魚,喜歡在小河里游來游去,我畫圓的方法和你們不一樣,請你們猜猜,我是怎樣畫圓的呢?(引導(dǎo)幼兒猜測) (3)師:你們真聰明,幫我想出了這么多的辦法,看,我是怎樣畫圓的呀?(出示圖片) (4)師:小魚是怎樣畫圓的?(吐出泡泡一串串)讓幼兒表演動作。 (5)師:小魚為什么要用這種方法畫圓?(突出動物的特點(diǎn))它的圓畫在什么地方? (6)教師結(jié)合圖片完整朗誦小魚畫圓的詩句:“小魚畫圓,吐出泡泡一串串,在水中畫圓?!?/p> (7)幼兒完整地學(xué)念詩句,并表演小魚吐泡泡的動作。 2.學(xué)習(xí)小猴畫圓的詩句 (1)師:看,還有誰也來畫圓了? (2)出示小猴圖片,教師以小猴的口吻說:我畫圓的方法也很不一樣,你們知道我是怎么畫的嗎? (3)(出示圖片)問:小猴是怎么畫圓的?在哪里畫的?小猴為什么要用這種方法畫圓?(突出動物的特點(diǎn)) (4)教師結(jié)合圖片完整朗誦小猴畫圓的詩句:“小猴畫圓,抓住樹枝蕩一圈,在樹上畫圓?!?/p> (5)幼兒完整地學(xué)念詩句,并表演小猴畫圓的動作。 3.學(xué)習(xí)青蛙畫圓的詩句 (1)師:除了小魚和小猴,還有其它的動物朋友也來了,我們趕快來認(rèn)識一下吧!師:這個動物朋友呀身穿綠衣服,唱起歌來“呱呱呱”,它是誰?(青蛙) (2)問:青蛙是怎么畫圓的?在哪里畫的?青蛙為什么要用這種方法畫圓?(突出動物的特點(diǎn)) (3)教師結(jié)合圖片完整朗誦青蛙畫圓的詩句:“青蛙畫圓,撲通一聲跳下水,在水中畫圓?!?/p> (4)幼兒完整地學(xué)念詩句,并表演青蛙畫圓的動作。 4.學(xué)習(xí)刺猬畫圓的詩句 (1)師:最后這位朋友可厲害了,渾身長滿的尖尖的刺,你們知道他是誰嗎?(刺猬) (2)問:小朋友想一想,小刺猬是怎樣畫圓的?在哪里畫圓的?為什么要用這種方法? (3)教師結(jié)合圖片完整朗誦刺猬畫圓的詩句:“刺猬畫圓,團(tuán)起身子滾一滾,在草地畫圓?!?/p> (4)幼兒完整地學(xué)念詩句,并表演刺猬畫圓的動作。 5.完整學(xué)習(xí)詩歌,感受動物畫圓的趣味。 師:小朋友畫圓有趣嗎?其實(shí)畫圓是一首好聽的詩歌,我們一起來聽一聽。(教師完整的朗誦一遍詩歌) 幼兒完整的學(xué)念詩句,并表演畫圓的動作。 三、延伸活動:詩歌仿編 1.討論:還有什么小動物會來畫圓呢?怎樣畫圓?在哪里畫圓? 2.教師引導(dǎo)幼兒將想象出來的內(nèi)容講述出來,編成詩句。 #include void main() { int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,“"); setcolor(15); line(66,66,88,88); lineto(100,100); linerel(36,64); getch(); restorecrtmode(); } -------------- #include #include void circlePoint(int x,int y)/*八分法畫圓程序*/ { circle(320 x*20,240 y*20,3); circle(320 y*20,240 x*20,3); circle(320-y*20,240 x*20,3); circle(320-x*20,240 y*20,3); circle(320-x*20,240 y*20,3); circle(320-x*20,240-y*20,3); circle(320-y*20,240-x*20,3); circle(320 y*20,240-x*20,3); circle(320 x*20,240-y*20,3); } void MidBresenhamcircle(int r)/* 中點(diǎn)Bresenham算法畫圓的程序 */ { int x,y,d; x=0;y=r;d=1-r;/* 計(jì)算初始值 */ while(x { circlePoint(x,y);/* 繪制點(diǎn)(x,y)及其在八分圓中的另外7個對稱點(diǎn) */ if(d<0)d =2*x 3;/* 根據(jù)誤差項(xiàng)d的判斷,決定非最大位移方向上是走還是不走 */ else { d =2*(x-y)5; y--; } x; delay(900000); } /* while */ } main() { int i,j,r,graphmode,graphdriver; detectgraph(&graphdriver,&graphmode); initgraph(&graphdriver,&graphmode,” “); printf(”中點(diǎn)Bresenhamcircle算法畫圓的程序n“);/*提示信息*/ printf(”注意 |r|<=11“); printf(”n輸入半徑值 r:“); scanf(”%d“,&r); printf(”按任意鍵顯示圖形...“); getch(); cleardevice(); setbkcolor(BLACK); for(i=20;i<=620;i =20)/*使用雙循環(huán)畫點(diǎn)函數(shù)畫出表格中的縱坐標(biāo)*/ for(j=20;j<=460;j) putpixel(i,j,2); for(j=20;j<=460;j =20)/*使用雙循環(huán)畫點(diǎn)函數(shù)畫出表格中的橫坐標(biāo)*/ for(i=20;i<=620;i) putpixel(i,j,2); outtextxy(320,245,”0“);/*原點(diǎn)坐標(biāo)*/ outtextxy(320-5*20,245,”-5“);circle(320-5*20,240,2);/*橫坐標(biāo)值*/ outtextxy(320 5*20,245,”5“);circle(320 5*20,240,2); outtextxy(320-10*20,245,”-10“);circle(320-10*20,240,2); outtextxy(320 10*20,245,”10“);circle(320 10*20,240,2); outtextxy(320-15*20,245,”-15“);circle(320-15*20,240,2); outtextxy(320 15*20,245,”15“);circle(320 15*20,240,2); outtextxy(320,240-5*20,”-5“);circle(320,240-5*20,2);/*縱坐標(biāo)值*/ outtextxy(320,240 5*20,”5“);circle(320,240 5*20,2); outtextxy(320,240-10*20,”-10“);circle(320,240-10*20,2); outtextxy(320,240 10*20,”10“);circle(320,240 10*20,2); outtextxy(20,10,”The center of the circle is(0,0)“);/*坐標(biāo)軸左上角顯示提示信息*/ setcolor(RED);/*標(biāo)記坐標(biāo)軸*/ line(20,240,620,240);outtextxy(320 15*20,230,”X“); line(320,20,320,460);outtextxy(330,20,”Y“); setcolor(YELLOW); MidBresenhamcircle(r); setcolor(BLUE);/*繪制圓*/ circle(320,240,r*20); setcolor(2); getch(); closegraph(); } -------------------------#include void main() { int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,”"); setcolor(15); circle(20,20,20); getch(); } 送教下鄉(xiāng)《畫圓》說課稿 《畫圓》是一節(jié)大班語言課,是一首充滿童趣的詩歌,它運(yùn)用擬人化的手法,分別描繪了猴子蕩樹、啄木鳥啄洞、小魚吐泡泡、刺猬翻滾等不同的畫圓方法,這些小動物恰似一群天真、活潑、好動的孩子,充滿了無限的歡樂和生機(jī),這樣的內(nèi)容無疑是幼兒熟悉和喜愛的。所以我選擇了詩歌《畫圓》這個內(nèi)容。 我認(rèn)為本次活動的活動目標(biāo)是: 1.在想想、講講的過程中學(xué)習(xí)兒歌,用明快的節(jié)奏朗誦兒歌。 2.理解小動物畫圓的方法,學(xué)習(xí)詩歌。 3.感受動物畫圓的趣味,體驗(yàn)自主學(xué)習(xí)的快樂。 重、難點(diǎn)主要是:幫助幼兒理解詩歌中小動物畫圓的方法,學(xué)習(xí)詩歌,感受動物們畫圓的趣味。本課分為五個環(huán)節(jié): 第一個環(huán)節(jié):情景引入,引出詩歌。 第二個環(huán)節(jié):借助圖片逐層引導(dǎo)幼兒欣賞詩歌中小猴、刺猬和啄木鳥畫圓的詩句,幫助他們初步了解詩句的結(jié)構(gòu)。 第三個環(huán)節(jié):引導(dǎo)幼兒用動作來模仿“蕩、吐、滾、團(tuán)、啄”等動詞,用多種形式朗讀和表現(xiàn)詩歌,感受動物畫圓的趣味,解決重難點(diǎn)。 第四個環(huán)節(jié):嘗試創(chuàng)編詩句,體驗(yàn)自主學(xué)習(xí)的快樂。為小魚想出畫圓的辦法,再用“在哪里畫圓,怎樣畫圓?”的句式創(chuàng)編詩歌。 第五個環(huán)節(jié):延伸活動,用身體動作來畫圓,進(jìn)一步感受畫圓的趣味。 一節(jié)課下來,我感覺我們廣坪幼兒園的孩子活潑可愛,整體素質(zhì)發(fā)展較好,整個活動在活潑愉快的氣氛中進(jìn)行,師生互動,平等地進(jìn)行交流。新《綱要》指出:“教師應(yīng)成為幼兒學(xué)習(xí)活動的支持者、合作者、引導(dǎo)者”。在活動中我力求形成合作探究式的師生互動、生生互動,使重難點(diǎn)在幼兒的主動探索中得到解決,體驗(yàn)自主學(xué)習(xí)的快樂。在引導(dǎo)幼兒學(xué)習(xí)詩歌的過程中,運(yùn)用各種方法和手段來幫助他們學(xué)習(xí)和理解重點(diǎn)動詞,豐富幼兒的詞匯,發(fā)揮他們的形象思維,達(dá)成活動目標(biāo)。收到了預(yù)期的效果。由于不太熟悉孩子,前期準(zhǔn)備不夠充分,和孩子們不能玩成一片,有注重個別孩子的現(xiàn)象,對能力弱的孩子沒能照顧到,感到很遺憾。還有由于是臨時換課,細(xì)節(jié)和銜接方面不太到位,還有很多考慮不周的地方,請各位領(lǐng)導(dǎo)和老師多提寶貴意見,給予幫助。謝謝大家! 機(jī)關(guān)幼兒園:楊春蓉 2011年11月25日 《畫 圓》 設(shè)計(jì)者:梁海紅 單位:鄭州師范學(xué)院附屬小學(xué) 教學(xué)目標(biāo)與要求 1.知識與技能 (1)學(xué)習(xí)“橢圓”工具的使用。(2)用“橢圓”繪制簡單的圖形。2.過程與方法 在繪制基本圖形的過程中掌握“橢圓”、工具的使用,培養(yǎng)學(xué)生的操作中的組合技能。3.情感態(tài)度與價值觀 通過繪制橢圓和線條的組合,使學(xué)生切身感受“畫圖”程序帶來的樂趣,進(jìn)一步培養(yǎng)學(xué)生對“畫圖”程序的熱愛。教學(xué)目的: 學(xué)習(xí)畫圓的一般方法,訓(xùn)練學(xué)生的組合思維,提高學(xué)生的創(chuàng)造能力。教學(xué)重點(diǎn): 掌握畫圓的基本方法。課前準(zhǔn)備:多媒體課件。 教學(xué)前的思考:找根“主線”拽住學(xué)生的注意力。因?yàn)橐荒昙壍膶W(xué)生注意力不容易集中,針對學(xué)生的這個特點(diǎn)我設(shè)計(jì)了以“猜一猜”為幾乎整個課堂的主線,來激發(fā)學(xué)生的興趣,讓學(xué)生能夠積極主動的去動腦思考,把他們的注意力吸引到課堂上。 一、“猜謎語”導(dǎo)入;創(chuàng)設(shè)教學(xué)中“猜”的學(xué)習(xí)氛圍。師:導(dǎo)入語:同學(xué)們,大家坐姿正端正,表現(xiàn)的正好,那老師就獎勵大家一下,一起來玩?zhèn)€“猜謎語”的小游戲(出示課件): 看看圓,摸摸麻。包著一肚小月牙。(猜一種水果)生:思考,猜出答案 設(shè)計(jì)意圖:這個謎語的用途是吸引學(xué)生,并引出“圓、月牙”形狀詞語。 謎語中我是這樣設(shè)計(jì)了: 1、如果學(xué)生猜出來了,我會繼續(xù)追問其原因“為什么這樣猜”,從而引出根據(jù)“形狀”來猜的這一想法。 2、如果學(xué)生猜不到,我會用形狀來引導(dǎo)學(xué)生猜出結(jié)果,進(jìn)而講出猜這個謎語的竅門,抓住“形狀”特點(diǎn)。 二、延伸“猜”這根主線 接著,我延伸猜一猜,給出西瓜“形狀”圖片,再猜。(課件展示) 師:同學(xué)生,你“為什么這樣猜”,引出圓形上面的“花紋(即線條)” 生:觀察思考,回答問題。 設(shè)計(jì)意圖:這樣告訴學(xué)生一個圓形上面添加上一些簡單的花紋就可以組成一個實(shí)物圖形。 三、進(jìn)一步延伸“猜”這根主線 為了證明老師的說法,進(jìn)一步延伸“猜”的主線。師:出示一個大圓,(課件展示),之后在上面添加線條(組合出了昆蟲的樣子),讓學(xué)生猜是什么; 生:觀察思考,回答問題。 師:再為昆蟲添加簡單的花紋,再延伸“猜”這條主線,得出“七星瓢蟲”。 設(shè)計(jì)意圖:這一系列的猜一猜,既證明了老師的說法,也讓學(xué)生知道了如何簡單的加工“圓”。 三、趣味猜一猜 師:緊接著,出示一個“大圓”,接著在大圓的左、右、下添共加了五個“小圓”,再次延伸“猜”這一主線,不少學(xué)生會根據(jù)“大圓”和其下面的“小橢圓”猜烏龜。為了鼓勵學(xué)生的正確猜想,順應(yīng)學(xué)生的猜想,把烏龜?shù)哪X袋添加上去了。(激發(fā)學(xué)生的興趣) 師:接著,設(shè)計(jì)一個疑問:“真的就是“烏龜”么?” 把烏龜?shù)哪X袋去掉,換成兔子的腦袋,這樣猜想的“烏龜”就又變成了“兔子”,推翻了學(xué)生的“猜想”。(再變換中體味畫圖的樂趣) 設(shè)計(jì)意圖:總結(jié)猜想的方法:不能只看部分,要根據(jù)圖形“整體”的組合猜想,才可以得出最正確的答案。這樣,即傳遞了猜想方法,也讓學(xué)生看到了烏龜和兔子的畫法,還讓學(xué)生了解了“圓”的奇妙組合。 四、教學(xué)中圖形“組合”思想的傳遞。教師設(shè)計(jì)思維:通過猜想中“圓”的不停變幻,讓學(xué)生看到了“圓”的奇妙和趣味組合圖形;讓簡單圖形的“組合”思想慢慢的進(jìn)入學(xué)生的思維。怎樣進(jìn)行組合?首先要讓學(xué)生知道:“圓”它不孤單,這個通過讓學(xué)生分析組成“烏龜”和“兔子”,找到組成圖形的“圓”不同特點(diǎn): 師:同學(xué)們,咱們在來看看組成“烏龜”和“兔子”的園有哪些不同,你能發(fā)現(xiàn)么? 生:回答 1、圓的大小不同; 2、圓的形狀也不同(即正圓和橢圓):有胖的、有瘦的、有高的、有矮的。 分析出這些之后,讓學(xué)生上臺演示畫出不同的圓,再讓全部學(xué)生試著去畫一畫并進(jìn)行簡單的組合。 五、電腦畫圖中的“技巧”。 師:(出示課件)同學(xué)們,請你仔細(xì)觀察,看看這個大熊貓有多少個圓組成的,看看誰數(shù)的又仔細(xì)又快!快來試一試吧!生:觀察,數(shù)一數(shù)圓的個數(shù)。 師:找學(xué)生回答,你數(shù)的真仔細(xì),回答的很正確。 同學(xué)們,你剛才數(shù)的時候,你仔細(xì)觀察了么?組成熊貓的不同的15個圓是如何組合在一起的? 分析得出:圓之間的簡單接合,以及較難的圓之間的相互嵌套;同時也讓學(xué)生認(rèn)識到了圖形“組合”中一些技巧。緊接著教師演示講解畫圖技巧。在嵌套技巧中,可以大概的演示一下“選定”工具的使用,讓學(xué)生看到了“嵌套”技巧中也有技巧。下面把學(xué)生的作品附上幾幅:第二篇:大班語言活動《畫圓》1
第三篇:C語言編程 “畫圓”源程序
第四篇:畫圓說課稿
第五篇:畫圓教案