2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)任務(wù)書</p><p> 設(shè)計(jì)題目轉(zhuǎn)動(dòng)鐘表</p><p> 設(shè)計(jì)內(nèi)容及要求內(nèi)容:在屏幕上設(shè)計(jì)一個(gè)可以轉(zhuǎn)動(dòng)的“天王”牌鐘表,鐘表的秒針、分針和時(shí)針轉(zhuǎn)動(dòng)的時(shí)間與標(biāo)準(zhǔn)時(shí)間一致。要求:圖中的直線、圓采用直線和圓的生成算法實(shí)現(xiàn),鐘表中的秒針、分針和時(shí)針能夠轉(zhuǎn)動(dòng)。</p><p> 設(shè)計(jì)環(huán)境:程序在WIN-TC環(huán)境下編譯、運(yùn)行,然后生

2、成轉(zhuǎn)動(dòng)鐘表的圖形界面</p><p> 實(shí)現(xiàn)目標(biāo):通過運(yùn)用C語言編程知識,編寫一個(gè)在桌面可以轉(zhuǎn)動(dòng)的“天王”牌鐘表。圖形中的直線和圓弧曲線采用逐點(diǎn)比較法算法實(shí)現(xiàn),鐘表中的各指針轉(zhuǎn)動(dòng)時(shí)的坐標(biāo)函數(shù)用三角函數(shù)表示,秒針、分針、時(shí)針每次轉(zhuǎn)動(dòng)一下的時(shí)間分別為一秒、一分和一小時(shí),表針轉(zhuǎn)動(dòng)過后會(huì)自動(dòng)消除痕跡。 </p><p>  計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)教師評閱成績表</p><p

3、>  系名稱:信息科學(xué)與工程系 </p><p><b>  此表由教師填寫</b></p><p>  計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)承諾書</p><p><b>  摘 要</b></p><p>  日常生活中,我們的身邊可以看見各種各樣 的鐘表,隨著計(jì)算機(jī)的普及 和計(jì)算機(jī)科學(xué)的飛速發(fā)展 ,人

4、們開始越來越多的利用計(jì) 算機(jī)來解決實(shí)際問題,開發(fā)一 個(gè)易于查看的時(shí)鐘有很大的 現(xiàn)實(shí)意義。同時(shí),設(shè)計(jì)的時(shí)鐘會(huì)聽 到喀噠聲,程序與生 活緊密結(jié)合,具體直觀,開 發(fā)應(yīng)用簡單。利用 C 語言編輯源 程序,再進(jìn)行編譯鏈接生成 可執(zhí)行文件,運(yùn)行時(shí)可以查看時(shí)間,聽到喀噠聲,具體直觀,方便了生活。</p><p>  關(guān)鍵詞: 計(jì)算機(jī)圖形學(xué) WIN-TC 鐘表 逐點(diǎn)比較法</p><p>&l

5、t;b>  目錄</b></p><p><b>  概述</b></p><p><b>  1.1 設(shè)計(jì)概要</b></p><p><b>  1.2 系統(tǒng)環(huán)境</b></p><p><b>  總體設(shè)計(jì)</b></p>

6、;<p><b>  功能實(shí)現(xiàn)</b></p><p>  3.1 程序運(yùn)行結(jié)果分析</p><p>  3.2 程序運(yùn)行結(jié)果截圖</p><p><b>  設(shè)計(jì)總結(jié)</b></p><p><b>  概述</b></p><p>&l

7、t;b>  1.1 設(shè)計(jì)概述</b></p><p>  程序設(shè)計(jì)是一種技術(shù),也是一項(xiàng)工程。程序設(shè)計(jì)語言是程序設(shè)計(jì)的工具。</p><p>  一種程序設(shè)計(jì)語言凝聚了具有時(shí)代特征的程序設(shè)計(jì)理念和方法。本程序利用</p><p>  C語言中的圖形處理函數(shù)完成時(shí)間的模擬顯示。用C語言編程,設(shè)計(jì)一個(gè)時(shí)鐘,</p><p>  掌

8、握用逐點(diǎn)比較法算法畫直線和圓,畫圓弧函數(shù) 聲Bcircle(),背景設(shè)置</p><p>  函數(shù)setbkcolor();坐標(biāo)函數(shù) x=a*cos(b*c*pi/180-pi/2)+300,</p><p>  y=a*sin(b*c*pi/180-pi/2)+240; 音 函 數(shù) sound() 和系統(tǒng)時(shí)間函數(shù)</p><p>  gettime() 。<

9、;/p><p><b>  1.2 系統(tǒng)環(huán)境</b></p><p>  主體程序采用C語言編寫,程序在WIN-TC環(huán)境下編譯和運(yùn)行。</p><p><b>  總體設(shè)計(jì)</b></p><p>  首先定義主函數(shù)void plot_circle_points(int xc, int yc, int

10、x,</p><p>  int y, int c);</p><p>  用逐點(diǎn)比較法算法畫圓:從始點(diǎn)(x1,y1)開始畫起,首先向圓內(nèi)走</p><p>  一步,也就是先向-x方向走一步,然后與所要畫的圓弧進(jìn)行比較;接著判</p><p>  斷結(jié)果,落在園內(nèi)時(shí)向y方向走一步,依此類推,一直到達(dá)圓外為止;當(dāng)</p><

11、;p>  判斷結(jié)果落在園外時(shí),向-x方向走一步,直到再次到達(dá)圓內(nèi)為止;當(dāng)畫到</p><p>  終點(diǎn)(x2,y2)時(shí),終止比較,AB圓弧繪制結(jié)束。</p><p>  void Bcircle (int xc, int yc, int radius, int c)</p><p>  { int x, y, p;</p><p>

12、<b>  x=0;</b></p><p><b>  y=radius;</b></p><p><b>  ……</b></p><p><b>  ……</b></p><p>  程序主要運(yùn)用于表盤的生成;</p><p>

13、;  用逐點(diǎn)比較法算法畫直線:設(shè)坐標(biāo)系中有A(x1,y1),B(x2,y2),</p><p>  令Fm=y2*x1-y1*x2,推廣一般式Fi=x1*yi-y1*xi,然后判斷Fi與0的</p><p>  關(guān)系:若》0,向+x方向走一步;若《0,向+y方向走一步,依此走下</p><p>  去便可以畫出最終直線。</p><p>  

14、void Bline (int x1, int y1, int x2, int y2, int c)</p><p><b>  {</b></p><p>  int x, y, tmp;</p><p>  int dx, dy, d;</p><p><b>  float k;</b><

15、;/p><p><b>  ……</b></p><p><b>  ……</b></p><p>  程序主要運(yùn)用于表針的生成以及表盤上分格短直線的生成;</p><p> ?。?)用Bcircle()函數(shù)畫表盤,設(shè)置表針轉(zhuǎn)動(dòng)時(shí)的坐標(biāo):</p><p>  x1=200*cos

16、(i*6*pi/180)+300;</p><p>  y1=200*sin(i*6*pi/180)+240;</p><p>  x2=(200-l)*cos(i*6*pi/180)+300;</p><p>  y2=(200-l)*sin(i*6*pi/180)+240;</p><p> ?。?)在表盤中央添加“天王”二字和一小圓,運(yùn)

17、用outtextxy()函</p><p>  數(shù)在表盤上、下、左、右四個(gè)方向添加數(shù)字“12”、“6”、“9”和“3”;</p><p>  (6)運(yùn)用 gettime(t)函數(shù)將計(jì)算機(jī)時(shí)間寫入結(jié)構(gòu)體t中,同時(shí)畫三</p><p><b>  根長度不一的表針;</b></p><p>  運(yùn)用d()函數(shù)清楚表針轉(zhuǎn)動(dòng)過后

18、的痕跡,同時(shí)用sound函數(shù)設(shè)</p><p>  置表針轉(zhuǎn)動(dòng)時(shí)的滴答聲;</p><p> ?。?)退出圖形系統(tǒng),返回文本模式:</p><p>  getch(); </p><p>  closegraph();</p><p><b>  功能實(shí)現(xiàn)</b></p><

19、p>  3.1程序運(yùn)行結(jié)果分析</p><p>  程序在WIN-TC環(huán)境下編譯生成圖形界面,圖形界面中的直線和圓弧</p><p>  都采用逐點(diǎn)比較法算法實(shí)現(xiàn),圖形界面為轉(zhuǎn)動(dòng)的鐘表,背景顏色為淺藍(lán)</p><p>  色,由setbkcolor()函數(shù)實(shí)現(xiàn);表盤為以(300,240)為圓心,以20、</p><p>  200、20

20、3和206為半徑的圓,由畫圓函數(shù)Bcircle()函數(shù)實(shí)現(xiàn);表盤中</p><p>  央有“天王”二字和一小圓,由簡單的畫圖函數(shù)生成;表盤上有三根長度</p><p>  不一、顏色不同的的表針,它們轉(zhuǎn)動(dòng)的位置坐標(biāo)由三角函數(shù)控制x=a*cos</p><p>  (b*c*pi/180-pi/2)+300,y=a*sin(b*c*pi/180-pi/2)+240;

21、表針每次走</p><p>  過后,痕跡會(huì)由d()函數(shù)消除,表針轉(zhuǎn)動(dòng)時(shí)有轉(zhuǎn)動(dòng)聲音,由sound()函</p><p>  數(shù)控制,并且聲音有延遲時(shí)間,由delay()函數(shù)控制。</p><p>  3.2 程序運(yùn)行結(jié)果截</p><p><b>  第4章 設(shè)計(jì)總結(jié)</b></p><p>  

22、歷時(shí)四周終于把課程設(shè)計(jì)做出來了,通過這次課程設(shè)計(jì),加強(qiáng)了我的動(dòng)手、思考和解決問題的能力,同時(shí)也讓我對運(yùn)用C語言編寫計(jì)算機(jī)圖形學(xué)程序有新的興趣。而且在設(shè)計(jì)過程中,經(jīng)常會(huì)遇到這樣那樣的問題,通過自己查閱資料,找同學(xué)和老師幫助,問題最終得到了解決。 由于課本上的知識太多,平時(shí)課間的學(xué)習(xí)并不能很好的理解和運(yùn)用各個(gè)函數(shù)的功能,而且考試內(nèi)容有限,所以在這次課程設(shè)計(jì)過程中,我在書本上了解了很多函數(shù)的功能,并且對于其在程序中的使用有了更多的認(rèn)識。平時(shí)看

23、課本時(shí),有時(shí)問題老是弄不懂,做完課程設(shè)計(jì),那些問題就迎刃而解了,而且還可以記住很多東西。比如一些程序功能的實(shí)現(xiàn),平時(shí)看課本,這次看了,下次就忘了,通過動(dòng)手實(shí)踐讓我們對各個(gè)函數(shù)印象深刻。我認(rèn)為認(rèn)識來源于實(shí)踐,實(shí)踐是認(rèn)識的動(dòng)力和最終目的,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。所以這四個(gè)星期的課程設(shè)計(jì)對我的作用是非常大的。我覺得程序設(shè)計(jì)需要耐心和細(xì)心,有時(shí)候一個(gè)標(biāo)點(diǎn)的錯(cuò)誤,如果你不注意,可能會(huì)導(dǎo)致程序無法運(yùn)行,所以寫程序的時(shí)候一定要認(rèn)真、細(xì)心。由于時(shí)間有

24、限,自己的水平也有限,盡管查閱了許多資料,但依然感覺自己的課程設(shè)計(jì)有許多不足之處,比如程序圖形界面簡單等。本想加入一些其</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 王汝傳.黃海平.計(jì)算機(jī)圖形學(xué)教程[M]. 北京:人民郵電出版社,2009.</p><p>  [2] 楊路明. C語言程序設(shè)計(jì)教程[M]. 北京:北

25、京郵電大學(xué)出版社,2005.</p><p>  [3] 姜靈芝.C語言課程設(shè)計(jì)案例精編[M].北京:清華大學(xué)出版社.2008.</p><p>  [4] 田祥宏.C語言程序設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社.2007.</p><p><b>  附錄</b></p><p><b>  程序代碼:&

26、lt;/b></p><p>  #include<graphics.h></p><p>  #include<math.h></p><p>  #include<dos.h></p><p>  #define pi 3.1415926</p><p>  #define

27、 X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;</p><p>  #define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;</p><p>  #define d(a,b,c,d) X(a,b,c);Y(a,b,c);Bline(300,240,x,y,d)</p><p>  void plot

28、_circle_points(int xc, int yc, int x, int y, int c)</p><p><b>  {</b></p><p>  putpixel(xc+x, yc+y, c);</p><p>  putpixel(xc-x, yc+y, c);</p><p>  putpixel(

29、xc+x, yc-y, c);</p><p>  putpixel(xc-x, yc-y, c);</p><p>  putpixel(xc+y, yc+x, c);</p><p>  putpixel(xc-y, yc+x, c);</p><p>  putpixel(xc+y, yc-x, c);</p><p

30、>  putpixel(xc-y, yc-x, c);</p><p><b>  }</b></p><p>  void Bcircle (int xc, int yc, int radius, int c)</p><p><b>  {</b></p><p>  int x, y,

31、p;</p><p><b>  x=0;</b></p><p><b>  y=radius;</b></p><p>  p=3-2*radius;</p><p>  while (x<y){</p><p>  plot_circle_points(xc, y

32、c, x, y, c);</p><p>  if (p<0) p=p+4*x+6;</p><p><b>  else{</b></p><p>  p=p+4*(x-y)+10;</p><p><b>  y-=1;</b></p><p><b> 

33、 }</b></p><p><b>  x+=1;</b></p><p><b>  }</b></p><p>  if (x == y)</p><p>  plot_circle_points(xc, yc, x, y, c);</p><p><

34、b>  }</b></p><p>  void Bline (int x1, int y1, int x2, int y2, int c)</p><p><b>  {</b></p><p>  int x, y, tmp;</p><p>  int dx, dy, d;</p>

35、<p><b>  float k;</b></p><p>  if( 0 == (x1 - x2))</p><p><b>  {</b></p><p><b>  x = x1;</b></p><p>  if(y1 > y2)</p>

36、<p>  { tmp = y1;y1 = y2; y2 =tmp;}</p><p>  for(y = y1; y < y2; y ++)</p><p><b>  {</b></p><p>  putpixel(x, y, abs(getpixel(x,y)-c));</p><p><

37、b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  k = (float)(y2 -y1)/(float)(x2 - x1);</p><p>  if(k > 1.0) </p>

38、<p><b>  {</b></p><p>  tmp = x1; x1 = y1; y1 = tmp;</p><p>  tmp = x2; x2 = y2; y2 = tmp;</p><p><b>  }</b></p><p>  else if(k > 0)

39、 </p><p><b>  {}</b></p><p>  else if(k < -1.0) </p><p><b>  {</b></p><p><b>  x1 = -x1;</b></p><p><b>  x

40、2 = -x2;</b></p><p>  tmp = x1; x1 = y1; y1 = tmp;</p><p>  tmp = x2; x2 = y2; y2 = tmp;</p><p><b>  }</b></p><p>  else if( k < 0)</p><

41、p><b>  {</b></p><p>  y1 = - y1;</p><p>  y2 = - y2;</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {&

42、lt;/b></p><p><b>  y = y1;</b></p><p>  if(x1 > x2)</p><p>  { tmp = x1; x1 = x2; x2 = tmp;}</p><p>  for(x = x1; x <= x2; x ++)</p><p&g

43、t;<b>  {</b></p><p>  putpixel(x, y, abs(getpixel(x,y)-c));</p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b>&

44、lt;/p><p>  if(x1 > x2)</p><p><b>  {</b></p><p>  tmp = x1; x1 = x2; x2 = tmp;</p><p>  tmp = y1; y1 = y2; y2 = tmp;</p><p><b>  }</b

45、></p><p>  dx = x2 - x1;</p><p>  dy = y2 - y1;</p><p>  d = 2 * dy - dx;</p><p>  x = x1; y = y1;</p><p>  for(; x < x2; x ++)</p><p>&

46、lt;b>  {</b></p><p><b>  if(k > 1)</b></p><p>  {putpixel(y, x, abs(getpixel(y, x) - c));}</p><p>  else if(k > 0)</p><p>  {putpixel(x, y, a

47、bs(getpixel(x,y)-c));}</p><p>  else if( k < -1)</p><p>  {putpixel(-y, x, abs(getpixel(-y,x)-c));}</p><p>  else if(k < 0)</p><p>  {putpixel(x, -y, abs(getpixel

48、(x,-y)-c));}</p><p><b>  else {}</b></p><p>  if(d >= 0)</p><p><b>  {</b></p><p><b>  y++;</b></p><p>  d+=2*dy-2*d

49、x;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  d+=2*dy;</b></p><p><b>  }<

50、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void init()</p><p><b>  {</b></p><p>  int i,l,x1,x2,y1,y2;</p&

51、gt;<p>  setbkcolor(3);</p><p>  Bcircle(300,240,20,15);</p><p>  Bcircle(300,240,200,15);</p><p>  Bcircle(300,240,203,15);</p><p>  Bcircle(300,240,206,15);<

52、;/p><p>  Bcircle(300,240,5,15);</p><p>  for(i=0;i<60;i++)</p><p><b>  {</b></p><p>  if(i%5==0) l=15;</p><p><b>  else l=5;</b>&l

53、t;/p><p>  x1=200*cos(i*6*pi/180)+300;</p><p>  y1=200*sin(i*6*pi/180)+240;</p><p>  x2=(200-l)*cos(i*6*pi/180)+300;</p><p>  y2=(200-l)*sin(i*6*pi/180)+240;</p>&l

54、t;p>  Bline(x1,y1,x2,y2,15);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  int

55、 x,y,j;</p><p>  int gd,gm;</p><p>  unsigned char h,m,s;</p><p>  struct time t[1];</p><p>  detectgraph(&gd, &gm);</p><p>  initgraph(&gd,&am

56、p;gm," ");</p><p>  setcolor(2);</p><p>  cleardevice();</p><p>  moveto(250,190);</p><p>  linerel(50,0);</p><p>  moveto(275,190);</p>&

57、lt;p>  linerel(0,25);</p><p>  moveto(250,215);</p><p>  linerel(50,0);</p><p>  moveto(275,215);</p><p>  linerel(-25,25);</p><p>  moveto(275,215);<

58、;/p><p>  linerel(25,25);</p><p>  setcolor(4);</p><p>  moveto(300,240);</p><p>  linerel(50,0);</p><p><b>  x=getx();</b></p><p>&l

59、t;b>  y=gety();</b></p><p>  moveto(x,y+25);</p><p>  linerel(-50,0);</p><p>  moverel(0,25);</p><p>  linerel(50,0);</p><p>  moverel(-25,0);<

60、/p><p>  linerel(0,-50);</p><p>  setcolor(5);</p><p>  circle(330,210,30) ;</p><p>  setcolor(6);</p><p>  for(j=0;j<=6;j++)</p><p><b>

61、  { </b></p><p>  outtextxy(300,80,"12") ; </p><p>  outtextxy(300,390,"6"); </p><p>  outtextxy(140,230,"9"); </p><p>  outtextxy(

62、460,230,"3"); </p><p><b>  } </b></p><p><b>  init();</b></p><p>  gettime(t);</p><p>  h=t[0].ti_hour;</p><p>  m=t[0]

63、.ti_min;</p><p>  s=t[0].ti_sec;</p><p>  d(150,h,30,7);</p><p>  d(170,m,6,14);</p><p>  d(190,s,6,4);</p><p>  while(!kbhit())</p><p><b&

64、gt;  {</b></p><p>  while(t[0].ti_sec==s)</p><p>  gettime(t);</p><p>  sound(400);</p><p>  delay(70);</p><p>  sound(200);</p><p>  de

65、lay(30);</p><p>  nosound();</p><p>  d(190,s,6,4);</p><p>  s=t[0].ti_sec;</p><p>  d(190,s,6,4); </p><p>  if (t[0].ti_min!=m)</p><p>&l

66、t;b>  {</b></p><p>  d(170,m,6,14);</p><p>  m=t[0].ti_min;</p><p>  d(170,m,6,14);</p><p><b>  }</b></p><p>  if (t[0].ti_hour!=h)<

67、;/p><p><b>  {</b></p><p>  d(150,h,30,7);</p><p>  h=t[0].ti_hour;</p><p>  d(150,h,30,7);</p><p>  sound(1000);</p><p>  delay(240)

68、;</p><p>  nosound();</p><p>  delay(140);</p><p>  sound(2000);</p><p>  delay(240);</p><p>  nosound();</p><p><b>  }</b></p&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論