欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      計算機圖形學(xué)實驗報告

      時間:2019-05-12 01:07:35下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《計算機圖形學(xué)實驗報告》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《計算機圖形學(xué)實驗報告》。

      第一篇:計算機圖形學(xué)實驗報告

      實 驗 報 告

      一、實驗?zāi)康?/p>

      1、掌握有序邊表算法填充多邊形區(qū)域;

      2、理解多邊形填充算法的意義;

      3、增強C語言編程能力。

      二、算法原理介紹

      根據(jù)多邊形內(nèi)部點的連續(xù)性知:一條掃描線與多邊形的交點中,入點和出點之間所有點都是多邊形的內(nèi)部點。所以,對所有的掃描線填充入點到出點之間所有的點就可填充多邊形。

      判斷掃描線上的點是否在多邊形之內(nèi),對于一條掃描線,多邊形的掃描轉(zhuǎn)換過程可以分為四個步驟:

      (1)求交:計算掃描線與多邊形各邊的交點;(2)排序:把所有交點按x值遞增順序排序;

      (3)配對:第一個與第二個,第三個與第四個等等;每對交點代表掃描線與多邊 形的一個相交區(qū)間;(4)著色:把相交區(qū)間內(nèi)的象素置成多邊形顏色,把相交區(qū)間外的象素置成背景色。

      p1,p3,p4,p5屬于局部極值點,要把他們兩次存入交點表中。如掃描線y=7上的交點中,有交點(2,7,13),按常規(guī)方法填充不正確,而要把頂點(7,7)兩次存入交點表中(2,7,7,13)。p2,p6為非極值點,則不用如上處理。

      為了提高效率,在處理一條掃描線時,僅對與它相交的多邊形的邊進行求交運算。把與當(dāng)前掃描線相交的邊稱為活性邊,并把它們按與掃描線交點x坐標(biāo)遞增的順序存放在一個鏈表中,稱此鏈表為活性邊表(AET)。

      對每一條掃描線都建立一個與它相交的多邊形的活性邊表(AET)。每個AET的一個節(jié)點代表一條活性邊,它包含三項內(nèi)容

      1.x-當(dāng)前掃描線與這條邊交點的x坐標(biāo);

      2.Δx-該邊與當(dāng)前掃描線交點到下一條掃描線交點的x增量; 3.ymax-該邊最高頂點相交的掃描線號。

      每條掃描線的活性邊表中的活性邊節(jié)點按照各活性邊與掃描線交點的x值遞增排序連接在一起。

      當(dāng)掃描線y移動到下一條掃描線y = y+1時,活性邊表需要更新,即刪去不與新掃

      描線相交的多邊形邊,同時增加與新掃描線相交的多邊形邊,并根據(jù)增量法重新計算掃描線與各邊的交點x。

      當(dāng)多邊形新邊表ET構(gòu)成后,按下列步驟進行:

      ① 對每一條掃描線i,初始化ET表的表頭指針ET[i]; ② 將ymax = i的邊放入ET[i]中;

      ③ 使y =多邊形最低的掃描線號; ④ 初始化活性邊表AET為空; ⑤ 循環(huán),直到AET和ET為空。

      ? 將新邊表ET中對應(yīng)y值的新邊節(jié)點插入到AET表。? 遍歷AET表,將兩兩配對的交點之間填充給定顏色值。

      ? 遍歷AET表,將 ymax= y的邊節(jié)點從AET表中刪除,并將ymax> y的各邊節(jié)點的x值遞增Δx;并重新排序。? y增加1。

      三、程序源代碼

      #include “graphics.h” #define WINDOW_HEIGHT 480 #define NULL 0 #include “alloc.h” #include “stdio.h” #include “dos.h” #include “conio.h” typedef struct tEdge /*typedef是將結(jié)構(gòu)定義成數(shù)據(jù)類型*/ { int ymax;/* 邊所交的最高掃描線號 */ float x;/*當(dāng)前掃描線與邊的交點的x值 */ float dx;/*從當(dāng)前掃描線到下一條掃描線之間的x增量*/ struct tEdge *next;}Edge;

      typedef struct point{int x,y;}POINT;/*將結(jié)點插入邊表的主體函數(shù)*/

      void InsertEdge(Edge *list,Edge *edge)/*活性邊edge插入活性邊表list中*/ { Edge *p,*q=list;p=q->next;/*記住q原來所指之結(jié)點*/ while(p!=NULL)/*按x值非遞減順序增加邊表*/ {

      if(edge->x

      x)/*要插入的邊的x較大不應(yīng)該在當(dāng)前插入*/

      p=NULL;

      else /*要插入的邊的x較小應(yīng)該在當(dāng)前插入*/

      {q=p;

      p=p->next;

      } } edge->next=q->next;/*使欲插入之結(jié)點edge指向q原來所指之結(jié)點*/ q->next=edge;/*使q指向插入之結(jié)點*/ }

      int yNext(int k,int cnt,POINT *pts)/*對于多邊形中的某個頂點序號k(0,1...6),返回下一頂點的縱坐標(biāo),如果這2個頂點所在邊是 水平的,則順延,即返回第(k+2)個頂點的縱坐標(biāo)),cnt是頂點個數(shù)+1,pts指向多邊形頂點結(jié)構(gòu)體的指針*/

      { int j;if((k+1)>(cnt-1))/*當(dāng)前頂點為最后一個頂點,則下一個頂點為第0個頂點 */

      j=0;else

      j=k+1;/*當(dāng)前頂點不是最后一個頂點,下一個頂點為數(shù)組下標(biāo)加一*/ while(pts[k].y==pts[j].y)/*掃描線掃過平行頂點,需分情況找到當(dāng)前頂點下下個頂點*/ if((j+1)>(cnt-1))

      j=0;

      else

      j++;return(pts[j].y);/*返回下一個頂點的y值 */ }

      /* 計算增量,修改AET*/ /*生成邊表結(jié)點,并插入到邊表中的主體函數(shù)*/ void MakeEdgeRec(POINT lower,POINT upper,int yComp,Edge *edge,Edge *edges[])/*把邊結(jié)點edge,放到lower.y掃描線所在的邊結(jié)點指針數(shù)組edges[]中 */ {edge->dx=(float)(upper.x-lower.x)/(upper.y-lower.y);edge->x=lower.x;if(upper.yymax=upper.y-1;/*縮短上層頂點*/ /*奇點,應(yīng)該把這點當(dāng)作兩個點而分開,所以把y的最大值減一,向下移動*/ else edge->ymax=upper.y;/*不是奇點,不需改變y值 */ insertEdge(edges[lower.y],edge);/*插入一個邊緣掃描線,插入到列表 */ }

      /*創(chuàng)建邊表的主體函數(shù)*/ void BuildEdgeList(int cnt,POINT *pts,Edge *edges[])/*建立新邊表,cnt:多邊形頂點個數(shù)+1,edges[]:指向活性邊結(jié)點的指針數(shù)組*/ { Edge *edge;POINT v1,v2;int i,yPrev=pts[cnt-2].y;/*當(dāng)前頂點的前一個頂點的y值,在當(dāng)前頂點不是奇點時使用該參數(shù)*/ v1.x=pts[cnt-1].x;v1.y=pts[cnt-1].y;for(i=0;i

      edge=(Edge *)malloc(sizeof(Edge));

      edge=(Edge*)malloc(sizeof(Edge));if(v1.y

      yNext*/ MakeEdgeRec(v1,v2,yNext(i,cnt,pts),edge,edges);/*確定v1,v2邊較高端點的開閉*/

      else

      MakeEdgeRec(v2,v1,yPrev,edge,edges);/*當(dāng)前頂點

      是奇點*/ } yPrev=v1.y;v1=v2;} }

      /*建立活性邊表的主體函數(shù):建立第scan條掃描線的活性邊表*/ void BuildActiveList(int scan,Edge *active,Edge *edges[])/*建立掃描線scan的活性邊表,把活性邊結(jié)點放入掃描線scan的結(jié)點指針數(shù)組 edges[scan]中*/ { Edge *p,*q;p=edges[scan]->next;/*查找當(dāng)前掃描線對應(yīng)的y桶*/ while(p)/*y桶不空*/

      {q=p->next;/*找到最后一個邊結(jié)點,插入*/

      InsertEdge(active,p);/*把更新后的邊表重新插入邊表中保存*/

      p=q;

      } }

      /*填充一對交點的主體函數(shù)*/ void FillScan(int scan,Edge *active,int color)/*填充掃描線:填充掃描線上,且在下一結(jié)點到再下一結(jié)點之間的點*/ { Edge *p1,*p2;int i;p1=active->next;while(p1){

      p2=p1->next;

      for(i=p1->x;i

      x;i++)

      putpixel((int)i,scan,color);/*畫出圖形內(nèi)部的點*/ p1=p2->next;/*活性表的下一條邊表 */ } }

      void DeleteAfter(Edge *q)/*刪除鏈表中結(jié)點,刪除邊結(jié)點q的后續(xù)結(jié)點p*/ { Edge *p=q->next;q->next=p->next;/*刪除結(jié)點*/ free(p);} /* 刪除 y=ymax 的邊 */

      /*填充完后,更新活動邊表的主體函數(shù)*/ void UpdateActiveList(int scan,Edge *active)/*刪除掃描線scan完成交點計算的活性邊,同時更新交點x域*/ { Edge *q=active,*p=active->next;while(p)if(scan>=p->ymax)/*掃描線超過邊的最大y值,此條邊的節(jié)點應(yīng)該刪掉*/ { p=p->next;deleteAfter(q);} else /*掃描線未超過邊的最大y值,相應(yīng)的x值增加*/ { p->x=p->x+p->dx;q=p;p=p->next;} }

      /*對活性邊表結(jié)點重新排序的主體函數(shù)*/ void ResortActiveList(Edge *active)/*活性邊表active中的結(jié)點按x域從小到大重新排序*/ { Edge *q,*p=active->next;active->next=NULL;while(p){q=p->next;InsertEdge(active,p);/*把更新后的邊表重新插入邊表中保存 */ p=q;} }

      /*多邊形填充的主體程序*/ void ScanFill(int cnt,POINT *pts,int color)/*填充函數(shù),輸入:多邊形頂點個數(shù)+1=cnt, 指向多邊形頂點的指針數(shù)組pts*/

      { Edge *edges[WINDOW_HEIGHT],*active;int i,scan,scanmax=0,scanmin=WINDOW_HEIGHT;for(i=0;i

      {if(scanmax

      if(scanmin>pts[i].y)scanmin=pts[i].y;

      } for(scan=scanmin;scan<=scanmax;scan++)/*初始化每條掃面線的邊鏈表*/ {edges[scan]=(Edge *)malloc(sizeof(Edge));/*建

      edges[scan]->next=NULL;

      } BuildEdgeList(cnt,pts,edges);/*建立有序邊表*/ active=(Edge *)malloc(sizeof(Edge));“桶”*/ active->next=NULL;for(scan=scanmin;scan<=scanmax;scan++)/*掃描每條掃描線,求活性表*/ {

      BuildActiveList(scan,active,edges);/*建立活性邊表*/

      if(active->next)/*活性邊表不為空*/

      { FillScan(scan,active,color);/*填充當(dāng)前掃描線*/ UpdateActiveList(scan,active);/*更新活化邊表*/ ResortActiveList(active);/*重排活化邊表*/

      } } }

      /*開始菜單*/ void main(){ POINT pts[7];/*保存數(shù)組*/ int gdrive=DETECT,gmode;pts[0].x=100;pts[0].y=40;/*多邊形頂點x、y坐標(biāo)*/ pts[1].x=220;pts[1].y=140;pts[2].x=280;pts[2].y=80;pts[3].x=350;pts[3].y=300;pts[4].x=200;pts[4].y=380;pts[5].x=50;pts[5].y=280;pts[6].x=100;pts[6].y=40;/*合并桶中的新邊,按次序插入到 AET 中*/ initgraph(&gdrive,&gmode,“C:TC3.0BGI”);/*設(shè)置graphic模式*/ ScanFill(7,pts,2);getch();}

      四、實驗結(jié)果

      圖1 用有序邊表算法生成的多邊形

      五、總結(jié)與體會

      實驗步驟

      1)分析多邊形區(qū)域掃描線填充算法的原理,確定算法流程

      ① 初始化:構(gòu)造邊表,AET表置空

      ② 將第一個不空的ET表中的邊插入AET表

      ③ 由AET表取出交點進行配對(奇偶)獲得填充區(qū)間,依次對這些填充區(qū)間著色

      ④ y=yi+1時,根據(jù)x=xi+1/k修改AET表所有結(jié)點中交點的x坐標(biāo)。同時如果相 應(yīng)的ET表不空,則將其中的結(jié)點插入AET表,形成新的AET表 ⑤ AET表不空,則轉(zhuǎn)(3),否則結(jié)束。2)編程實現(xiàn)

      ① 首先確定多邊形頂點和ET/AET表中結(jié)點的結(jié)構(gòu)

      ② 編寫鏈表相關(guān)操作(如鏈表結(jié)點插入、刪除和排序等)

      ③ 根據(jù)1)中的算法結(jié)合上述已有的鏈表操作函數(shù)實現(xiàn)多邊形區(qū)域掃描線填充的主體功能

      ④ 編寫主函數(shù),測試該算法 通過運用C語言環(huán)境下的圖像顯示設(shè)置,本次實驗我學(xué)會了多邊形區(qū)域掃描線填充的有序邊表算法,設(shè)計相關(guān)的數(shù)據(jù)結(jié)構(gòu)(如鏈表結(jié)構(gòu)、結(jié)點結(jié)構(gòu)等),并將實現(xiàn)的算法應(yīng)用于任意多邊形的填充,為深一步的學(xué)習(xí)做好了鋪墊。

      六、參考文獻

      [1]張家廣 等編著.計算機圖形學(xué)(第3版).北京:清華大學(xué)出版社,1998年9月.[2]陳傳波,陸楓主編,《計算機圖形學(xué)基礎(chǔ)》,電子工業(yè)出版社,2002年3月.

      第二篇:《計算機圖形學(xué)》實驗報告

      吉林大學(xué)

      計算機科學(xué)與技術(shù)學(xué)院

      《計算機圖形學(xué)》實驗報告

      班級: 211923班

      學(xué)號: 21190928

      姓名: 林星宇

      2021-2022學(xué)年第1學(xué)期

      實驗項目1

      邊標(biāo)志算法的實現(xiàn)

      實驗性質(zhì)

      □演示性實驗 ?驗證性實驗

      □操作性實驗 ?綜合性實驗

      實驗地點

      計算機樓B212

      機器編號

      一、實現(xiàn)的功能

      編寫應(yīng)用程序,采用鼠標(biāo)輸入頂點的方法確定待填充多邊形(多邊形最后一點雙擊);實現(xiàn)邊標(biāo)志算法完成對該多邊形的填充,要求 完成使用自己學(xué)號的后四位數(shù)字對多邊形內(nèi)部進行填充。

      二、采用的圖形學(xué)算法及實現(xiàn)

      (算法的實現(xiàn)函數(shù)是什么(函數(shù)名,參數(shù),返回值,函數(shù)功能等)以及采用了哪些數(shù)據(jù)結(jié)構(gòu)(數(shù)組,鏈表等))

      要求使用邊標(biāo)志算法的原理和實 現(xiàn)方法,所以使用了EdgeMarkFill函數(shù),即邊標(biāo)志算法:

      void CMFCDrawTestView::EdgeMarkFill(CDC* pDC, CArray* plist, COLORREF color)

      pDC為設(shè)備環(huán)境變量指針,plist為多邊形點表,color為傳入的RGB()值。

      int zima[16][32]為學(xué)號后4位二維數(shù)組。

      X1,x2,y1,y2分別為多邊形上的最小最小大,y值

      三、采用的交互方式及實現(xiàn)

      (采用了哪些交互方式來完成繪制,這些交互方式應(yīng)用到了哪些系統(tǒng)消息,是如何實現(xiàn)的)

      邊填充的實現(xiàn):編寫應(yīng)用程序,采用鼠標(biāo)輸入頂點的方法確定待填充多邊形(多邊形最后一點雙擊);實現(xiàn)邊標(biāo)志算法完成對該多邊形的填充,要求 完成使用自己學(xué)號的后四位數(shù)字對多邊形內(nèi)部進行填充。

      易知,在畫完多邊形后,即雙擊左鍵(OnLButtonUp)后,使用EdgeMarkFill函數(shù)。

      Type=2時,在OnLButtonUp中,調(diào)用EdgeMarkFill(pDC,&(obj->points), RGB(r, 0, 0));

      四、實驗結(jié)果

      (程序的運行結(jié)果)

      應(yīng)用程序運行后,標(biāo)志算法完成對該多邊形的填充的圖形結(jié)果如下:

      ”“

      五、遇到的問題及解決辦法

      問題1:(在實現(xiàn)過程中遇到了什么樣的問題,及采用了何種解決辦法)

      在獲取下x1,x2,y1,y2時,因為Dos界面x、y大小顛倒的原因,獲取時出現(xiàn)了問題。

      首先,通過for(int i = 1;i < plist->GetSize();i++){

      CPoint p = plist->GetAt(i);

      if(x1 > p.x)x1 = p.x;

      if(x2 < p.x)x2 = p.x;

      if(y1 > p.y)y1 = p.y;

      if(y2 < p.y)y2 = p.y;

      }

      獲取x1,x2,y1,y2.在遍歷多邊形過程中:

      int count = plist->GetSize();

      for(int i = 0;i < count;i++){

      CPoint p1 = plist->GetAt(i);

      CPoint p2 = plist->GetAt((i + 1)% count);

      if(p1.y == p2.y)

      continue;

      if(p1.y > p2.y)

      {

      CPoint p;p = p1;p1 = p2;p2 = p;

      }

      xs = p1.x;

      dxs =(p2.x-p1.x)/(double)(p2.y-p1.y);

      //dys = abs(p2.y-p1.y)/(p2.y-p1.y);

      for(ys = p1.y;ys!= p2.y;ys += 1)

      {

      Ixs = int(xs + 0.5);

      MARK[ys][Ixs] =!MARK[ys][Ixs];

      xs = xs + dxs;

      }

      黃線處即為處理x1,x2,y1,y2的大小。

      問題2:通過數(shù)組zima[][]來確定多邊形區(qū)域填充學(xué)號后4位時,zima[y ][x ]未%其字長,即zima[y % 16][x % 32]。后改為:

      for(y = y1;y <= y2;y++)

      {

      bool inside = false;

      for(x = x1;x <= x2;x++)

      {

      if(MARK[y][x])

      inside =!inside;

      if(inside)

      {

      if(zima[y % 16][x % 32])

      pDC->SetPixel(x, y, RGB(255, 0, 0));

      }

      }

      }

      實驗項目2

      立方體的比例、平移、旋轉(zhuǎn)變換及投影顯示

      實驗性質(zhì)

      □演示性實驗 ?驗證性實驗

      □操作性實驗 ?綜合性實驗

      實驗地點

      計算機樓B212

      機器編號

      一、實現(xiàn)的功能

      建立立方體的數(shù)據(jù)模型;編寫應(yīng)用程序,利用菜單和鍵盤結(jié)合的方式完成對立方體的移動、比例和旋轉(zhuǎn)變換,并顯示透視或斜二測投影結(jié)果。要求應(yīng)用程序具有如下功能:

      1、通過菜單選擇的方式,選擇對三維空間中的立方體作斜二測投 影或透視投影;

      2、通過鍵盤按鍵或鼠標(biāo)移動的方式,完成對三維空間中的立方體 進行平移變換(上下左右前后),比例變換(放大或縮小)以及 旋轉(zhuǎn)變換(繞 x,y,z 軸),并同時顯示變換后的投影結(jié)果

      3、創(chuàng)建對話框,通過對話框設(shè)置透視投影時候的投影中心,以及旋轉(zhuǎn)變換時候的旋轉(zhuǎn)軸(可以設(shè)置成分別繞 x 軸,y 軸,z 軸進 行旋轉(zhuǎn))

      二、采用的圖形學(xué)算法及實現(xiàn)

      (算法的實現(xiàn)函數(shù)是什么(函數(shù)名,參數(shù),返回值,函數(shù)功能等)以及采用了哪些數(shù)據(jù)結(jié)構(gòu)(數(shù)組,鏈表等))

      題目要求實現(xiàn)立方體的移動、比例和旋轉(zhuǎn)變換,并顯示透視或斜二測投影結(jié)果。

      對要求1:在菜單選TY項中選擇斜二測投影(斜二=1)或透視投影(透視=1)。然后在OnDraw中調(diào)用Draw_Cubic(CDC* pDC)畫出立方體。

      對要求2:在OnKeyDown中調(diào)用函數(shù),即在鍵盤上按“S”使立方體變小,“B”使立方體變大,“←”“→”“↑”“↓”使立方體左右上下移動。

      對要求3:在菜單XYZ中選擇旋轉(zhuǎn)的x,y,z軸,即x=1或y=1或z=1,然后在OnKeyDown中調(diào)用函數(shù),即按鍵盤上的“T”或“P”.

      三、采用的交互方式及實現(xiàn)

      (采用了哪些交互方式來完成繪制,這些交互方式應(yīng)用到了哪些系統(tǒng)消息,是如何實現(xiàn)的)

      由題目要求1,易知需要一個函數(shù)Draw_Cubic(CDC* pDC)畫出立方體的斜二測投影或透視投影并且建立一個菜單欄TY(投影)。即在菜單選TY項中選擇斜二測投影(斜二=1)或透視投影(透視=1)。然后在OnDraw中調(diào)用Draw_Cubic(CDC* pDC)畫出立方體。

      由題目要求2:易知直接在OnKeyDown函數(shù)上添加使立方體變大變小,前后左右平移的功能。即即在鍵盤上按“S”使立方體變小,“B”使立方體變大,“←”“→”“↑”“↓”使立方體左右上下移動。

      由題目要求3:建立一個菜單XYZ決定旋轉(zhuǎn)的軸。

      四、實驗結(jié)果

      (程序的運行結(jié)果)

      斜二測投影:

      ”“

      斜二測投影平移到左上角:

      ”“

      斜二測投影平移到右下角:

      ”“

      斜二測投影變大:

      ”“

      斜二測投影變?。?/p>

      ”“

      斜二測投影變?yōu)橥敢曂队埃?/p>

      ”“

      斜二測投影繞z軸旋轉(zhuǎn):

      ”“

      ”“

      ”“

      五、遇到的問題及解決辦法

      (在實現(xiàn)過程中遇到了什么樣的問題,及采用了何種解決辦法)

      問題1:一開始建立立方體時,沒有建立邊表,導(dǎo)致投影困難。

      后來建立了點表和對應(yīng)的邊表。

      問題2:一開始Draw_Cubic中x1, y1,z1, x2, y2,z2定義為了int型。

      實驗項目3

      用矩形窗口對多邊形進行裁剪

      實驗性質(zhì)

      □演示性實驗 ?驗證性實驗

      □操作性實驗 ?綜合性實驗

      實驗地點

      計算機樓B212

      機器編號

      一、實現(xiàn)的功能

      編寫應(yīng)用程序?qū)崿F(xiàn)多邊形裁剪。要求首先采用鼠標(biāo)確定裁剪區(qū)域(矩形區(qū)域),然 后用鼠標(biāo)輸入待裁剪的多邊形(可分別使用鼠標(biāo)左鍵和右鍵來確定裁剪區(qū)域和待裁剪 的多邊形)。多邊形繪制完畢后進行裁剪,以不同顏色顯示被裁剪對象位于窗口內(nèi)(此 部分應(yīng)保證多邊形的完整性)及外部的部分。

      二、采用的圖形學(xué)算法及實現(xiàn)

      (算法的實現(xiàn)函數(shù)是什么(函數(shù)名,參數(shù),返回值,函數(shù)功能等)以及采用了哪些數(shù)據(jù)結(jié)構(gòu)(數(shù)組,鏈表等))

      因為要編寫應(yīng)用程序?qū)崿F(xiàn)多邊形裁剪。要求首先采用鼠標(biāo)確定裁剪區(qū)域(矩形區(qū)域),然 后用鼠標(biāo)輸入待裁剪的多邊形(可分別使用鼠標(biāo)左鍵和右鍵來確定裁剪區(qū)域和待裁剪 的多邊形)。所以要使用多邊形裁剪算法,即Cut_Top(),Cut_Bottom(),Cut_Left(),Cut_Right()四個函數(shù)。

      Cut()函數(shù)為用綠色顯示被裁剪對象位于窗口內(nèi)部分。

      存在int type的變量;

      當(dāng)type=1時,在OnLButtonUp中畫出矩形框。

      當(dāng)type=2時,畫出多邊形,在左鍵雙擊后,在OnLButtonDblClk中調(diào)用如下函數(shù):Cut_Top();Cut_Right();Cut_Bottom();Cut_Left();Cut();

      裁剪多邊形在,并標(biāo)出在矩形內(nèi)部的部分。

      三、采用的交互方式及實現(xiàn)

      (采用了哪些交互方式來完成繪制,這些交互方式應(yīng)用到了哪些系統(tǒng)消息,是如何實現(xiàn)的)

      編寫應(yīng)用程序?qū)崿F(xiàn)多邊形裁剪。要求首先采用鼠標(biāo)確定裁剪區(qū)域(矩形區(qū)域),然 后用鼠標(biāo)輸入待裁剪的多邊形(可分別使用鼠標(biāo)左鍵和右鍵來確定裁剪區(qū)域和待裁剪 的多邊形)。多邊形繪制完畢后進行裁剪,以不同顏色顯示被裁剪對象位于窗口內(nèi)(此 部分應(yīng)保證多邊形的完整性)及外部的部分。

      根據(jù)以上繪制方法,可知需要處理WM_OnLButtonDblClk(左鍵雙擊)及WM_LButtonUp(左鍵抬起)消息,為了繪制橡皮線,還需處理調(diào)用WM_MouseMove(鼠標(biāo)移動)消息。

      因為可以用鼠標(biāo)畫出矩形和多邊形,所以這么規(guī)定,當(dāng)type=1時畫矩形,即:

      DDALine(pDC,lx,by,lx,ty,RGB(r, g, b));

      DDALine(pDC, lx, by, rx, by, RGB(r, g, b));

      DDALine(pDC, rx, by, rx, ty, RGB(r, g, b));

      DDALine(pDC, lx, ty, rx, ty, RGB(r, g, b));

      當(dāng)type=2時畫多邊形,而后裁剪,即:

      for(int i = 0;i < pointList.GetSize();i++)

      {

      p1 = pointList.GetAt(i);

      p2 = pointList.GetAt((i+1)% count);

      DDALine(pDC, p1.x, p1.y, p2.x, p2.y, RGB(0,255,0));

      }

      四、實驗結(jié)果

      (程序的運行結(jié)果)

      裁剪結(jié)果如下圖所示,黑色為裁剪窗口,紅色為多邊形被裁剪的部分,綠色為多邊形裁剪后的部分:

      ”“

      五、遇到的問題及解決辦法

      (在實現(xiàn)過程中遇到了什么樣的問題,及采用了何種解決辦法)

      問題1:我在裁剪使一開始對多邊形做上下左右裁剪時,這四個步驟是分別對原圖形裁剪,而不是對圖形接連進行裁剪。后來在裁剪函數(shù)上先除去之前圖形,然后把已裁剪多邊形重新構(gòu)建。如下:

      pointList.RemoveAll();

      for(int i = 0;i < m;i++)

      pointList.Add(CP[i]);

      問題2:在多邊形被矩形裁剪的部分顯現(xiàn)不同顏色花費了挺多時間,后來我直接讓裁剪的部分顏色被覆蓋就可以了。如下:

      for(int i = 0;i < pointList.GetSize();i++)

      {

      p1 = pointList.GetAt(i);

      p2 = pointList.GetAt((i+1)% count);

      DDALine(pDC, p1.x, p1.y, p2.x, p2.y, RGB(0,255,0));

      }

      第三篇:計算機圖形學(xué)實驗報告

      0908141020 試驗092 尤洋

      實驗1-1:

      通過循環(huán)畫線,實現(xiàn)了畫四邊形的功能

      實驗1-2:

      通過循環(huán)設(shè)置頂點坐標(biāo),循環(huán)畫線,實現(xiàn)了畫7個頂點的金剛石 實驗1-3:

      通過填充實現(xiàn)了畫三彩多邊形

      實驗2-1:

      實現(xiàn)了畫各種范圍不同斜率的直線

      實驗3-1:

      通過Cohen-Sutherland算法和清屏重畫實現(xiàn)了金剛石的區(qū)域裁剪 實驗4-1:

      通過不斷地清屏重畫實現(xiàn)了北極星的平移、比例、旋轉(zhuǎn)、對稱 實驗5-1:

      通過矩陣變換實現(xiàn)了三維圖形的三視圖、正軸測投影

      第四篇:計算機圖形學(xué)實驗報告(例文)

      計算機圖形學(xué)實驗報告

      0900213 38 8 郭佩佩

      實驗一

      建立計圖實驗環(huán)境 1. 實驗?zāi)康?為了體現(xiàn)面向?qū)ο蟮某绦蛟O(shè)計思想,本實驗采用基于 Visual C 十十集成環(huán)境的 MFC 編程方法,從開發(fā) windows 應(yīng)用程序的角度,來建立一個菜單交互式繪圖基本環(huán)境,為后續(xù)的實驗打基礎(chǔ)。

      2. 實驗內(nèi)容 1)

      建立菜單交互式繪圖基本環(huán)境的工程文件 Vcad,運行后如圖:

      2)在繪圖菜單的下拉子菜單下有如下菜單項:

      直線

      ----用彈性線方法輸入直線的起止點后,調(diào)用 bresenham 算法替換原來

      的 moveto/lineto 算法畫直線

      圓/圓弧

      ----在該菜單選擇后,可分別畫圓或圓弧。

      直線段裁剪----輸入矩形域左上角及右下角后,產(chǎn)生裁剪區(qū)域;然后可輸入若干條直線段,矩形域作為主裁剪域?qū)ζ洳眉糁?/p>

      面區(qū)填充

      ----輸入多邊形的若干頂點后,調(diào)用面區(qū)填充算法對多邊形域的內(nèi)部填充

      之。

      貝塞爾曲線----輸入四頂點后,調(diào)用三次貝塞爾曲線生成算法生成貝塞爾曲線。

      實驗二

      園和園弧的繪制算法

      1.實驗?zāi)康?通過園和橢圓弧生成算法的上機調(diào)試,掌握:

      1)

      VC++圖形函數(shù)的使用方法; 2)

      圓和橢圓弧的生成原理。

      2.實驗內(nèi)容 1)以函數(shù)形式編寫圓的生成算法,然后在 VCAD 繪圖小系統(tǒng)中的繪圖----圓子菜單下找到合適的程序修改點,將本實驗要求你編寫的畫圓算法插入工程文件中,通過調(diào)試來驗證你編寫的畫圓算法的正確性。

      2)

      以函數(shù)形式編寫角度 DDA 橢圓弧生成算法,然后在 VCAD 繪圖小系統(tǒng)中的繪圖----圓弧子菜單下找到合適的程序修改點,將本實驗要求你編寫的畫圓弧算法插入工程文件中,通過調(diào)試來驗證你編寫的畫圓弧算法的正確性。

      Arc(int xc,int yc,doubli r,double ts,double te){

      double rad,ts1,tel,deg,dte,ta,ct,st;

      int x,y,n,I;

      rad=0.0174533;

      tsl=ts*rad;

      tel=te*rad;

      if(r<5.08)

      deg=0.015;

      else

      if(r<7.62)

      deg=0.06;

      else

      if(r<25.4)

      deg=0.075;

      else

      deg=0.15;

      dte=deg*25.4/r;

      if(tel

      tel+=6.28319;

      n=(int)((tel-tsl)/dte+0.5);if(n==0)

      n=(int)(6.28319/dte+0.5);

      ta=tsl;

      x=xc+r*cos(tsl);

      y=yc+r*sin(tsl);

      moveto(x,y);

      for(i=1;i<=n;i+++)

      { ta+=dte;ct=cos(ta);st=sin(ta);x=xc+r*ct;y=yc+r*st;lineto(x,y);}

      x=xc+r*cos(tel);

      y=yc+r*sin(tel);

      lineto(x,y);

      return(0);}

      實驗三

      直線的裁剪(編碼裁剪算法)

      1. 實驗?zāi)康?通過編碼裁剪算法的設(shè)計與調(diào)試,了解二維線段的裁剪過程,提高程序設(shè)計能力與上機調(diào)試能力,達到理論與實踐有機結(jié)合之目的。注:此實驗已有可運行的中點裁剪算法作為參考實例,做實驗時,可將中點裁剪算法替換為你編寫的編碼裁剪算法。

      2. 實驗內(nèi)容 1)

      以函數(shù)形式編寫編碼裁剪算法及相關(guān)子算法;

      Var xl,xr,yb,yt:real;…… procedure clip(x1,y1,x2,y2:real);label:return;type edge=(L,R,B,T);

      outcode=set of edge;Var c,c1,c2:outcode;x,y:real;Procedure

      code(x,y:real;Var

      c:outcode);

      Begin c:=[ ];

      If x

      Else if x>xr then c:=[R];

      If y

      Else if y>yt then c:=c+[T];

      End {end of code} Begin {main}

      Code(x1,y1,c1);code(x2,y2,c2);While(c1<>[])or(c2<>[])do

      Begin

      if c1*c2<>[] then return;{顯然不可見}

      c:=c1;if c=[] then c:=c2;

      If L in c then begin

      x:=xl;y:=…end;{對左邊界求交}

      If R in c then begin

      x:=xr;y:=…end;{對右邊界求交}

      If B in c then begin

      x:=…;y:=yb end;{對底邊界求交}

      If T in c then begin

      x:=…;y:=yt end;{對頂邊界求交} If c=c1 then begin

      x1:=x;y1:=y;

      code(x,y,c1)end

      Else begig

      x2:=x,y2:=y;

      code(x,y,c2)end End;{End of while} Line(x1,y1,x2,y2);

      Return: end;{end of clip}

      2)

      交互產(chǎn)生矩形裁剪框,并輸入不同斜率的直線段的始、終點,先畫出此直線段,然后調(diào)用裁剪算法,畫出裁剪后保留的可見線段部分。

      3)

      在 VCAD 繪圖小系統(tǒng)中的繪圖----直線裁剪子菜單下找到合適的修改點,將本實驗要求你編寫的編碼裁剪算法替換掉工程文件中的中點裁剪算法,通過調(diào)試來驗證你編寫的編碼裁剪算法的正確性。

      實驗四

      面區(qū)填充(Y-X 算法)

      1. 實驗?zāi)康?通過 Y-X 面區(qū)填充算法的調(diào)試,掌握:

      1)

      多邊形面區(qū)填充算法的數(shù)據(jù)組織; 2)

      利用相關(guān)性提高算法效率; 3)

      奇異點的處理方法; 4)

      提高程序設(shè)計能力。

      2. 實驗內(nèi)容 1)

      以函數(shù)形式編寫 Y-X 面區(qū)填充算法; 2)

      在 VCAD 繪圖小系統(tǒng)中的繪圖----面區(qū)填充子菜單下找到合適的修改點,將本實驗要求你編寫的面區(qū)填充算法插入工程文件中,通過調(diào)試來驗證你編寫的面區(qū)填充算法的正確性。操作時,用鼠標(biāo)交互給出多邊形的若干頂點,畫出此多邊形,然后調(diào)用你編寫的 Y-X 面區(qū)填充算法填充,以自選的顏色填充多邊形。

      實驗五

      貝塞爾曲線生成算法的設(shè)計與調(diào)試

      一、實驗?zāi)康?在掌握曲線、曲面數(shù)學(xué)理論的基礎(chǔ)上,通過調(diào)試,繪制 Bezier 曲線。加深同學(xué) 對數(shù)學(xué)理論的理解。通過二條 Bezier 曲線的拼接設(shè)計,掌握自由曲線的擬合方法。

      二、內(nèi)容和要求

      1、由三次 Bezier 曲線的公式:P(t)=∑P i

      B i,3(t)

      出發(fā),編寫生成 Bezier

      i=0 曲線的程序,要求如下:

      a)

      用鼠標(biāo)輸入特征多邊形的四點。然后調(diào)用 Bezier 曲線生成算法繪出曲線。

      b)

      重復(fù)上步 3—4 遍,驗證你編寫的算法的正確性。

      typedef cptype float[4][4];float cc(int n,int i)//計算 n!/(i!(n-i)!)

      {int j;

      float a;

      a=1;

      for(j=i+1;j<=n;j++)a*=j;

      for(j=2;j<=n-i;j++)a/=j;

      return a;

      }

      float b_lend(Int i,int n,float t2)//計算 B i,n(t)

      {float v;

      v=cc(n,i);for(j= 1;j<=i;j++)v*=t2;

      for(j=1;j<=n-i;j++)v*=(1-t2);

      return v;

      } void bezier(float x0,float y0,float z0,float t0,int n,cptype cp2)//給定 t0,計算 f(t0){int i;

      float b1,g;

      for(i=0;i<=n;i++){b1=b_lend(i,n,t0);

      x0=x0+cp2[i,1]*b1;y0=y0+cp2[i,2]*b1;z0=z0+cp2[i,3]*b1;}} void draw_curv(int k,cptype cp1)//將 t 分成 k 等份,循環(huán)迭代,繪出曲線。

      {int i,j,x1,y1,z1;

      float x,y,z,delt;

      delt=1.0/k;

      t=0;

      for(i=1;i<=k;i++)

      {x=y=z=0;

      bezier(x,y,z,t,3,cp1);

      if(t==0)moveto(x,y);

      else lineto(x,y);

      t+=delt;}}

      2、將特征多邊形改為五個控制點,修改程序后繪出四次曲線。

      3、實現(xiàn)二條三次 Bezier 的拼接,并使連接點處保持一階連續(xù)。

      實驗小結(jié):

      實驗的過程是辛苦的,特別是處理大量的數(shù)據(jù),大量的臨時變量,很容易出錯,需要極大的耐心。一些計算時,例如DDA 算法畫圓時,需要強制類型轉(zhuǎn)換一些數(shù)據(jù),因為遺漏導(dǎo)致程序出了許多奇怪的錯誤,調(diào)試很久才發(fā)現(xiàn)。另外,貝塞爾曲線的算法編寫中,一些數(shù)學(xué)函數(shù)的調(diào)用也很復(fù)雜,因為不常用,所以經(jīng)常翻閱 API 文檔。

      最困難的是因為對該圖形系統(tǒng)的不熟悉,導(dǎo)致處理鼠標(biāo)操作時遇到一些難題,仔細比對才得以解決。

      通過本次實驗,對整個圖形系統(tǒng)有了比較透徹的了解,同時對一些數(shù)學(xué)函數(shù)的使用再次加深了印象,更重要的是掌握了許多實用的計算機圖形學(xué)的算法,對 MFC 的使用有了很大提升。

      這次實驗中積累的經(jīng)驗在今后的軟件開發(fā)中將使我受益匪淺。

      2005 年 1 月 3 日

      第五篇:計算機圖形學(xué)學(xué)習(xí)心得

      《計算機圖形學(xué)》學(xué)習(xí)報告

      ? 東西方建筑中的理性

      盡管東方“木構(gòu)”的暫時性文化和西方“石砌”的永久性文化氛圍造成了建筑形式風(fēng)格的差異,但是它們都兼有理性和感性美。從柱式的英文“order”一詞,到中國古建筑等級制的基數(shù)開間,無不透露著匠人的理性思考;從古埃及繪畫中為了將人的特征最大限度表現(xiàn)而作的頭部側(cè)面身體正面的繪畫,到文藝復(fù)興達芬奇創(chuàng)造的透視畫法,一步步將人們引向更為理性的世界。

      西方古典主義者強調(diào)構(gòu)圖中的主從關(guān)系,突出軸線、講求配稱;倡導(dǎo)理性,主張建筑的真實,反對表現(xiàn)感情和情緒。隨之而來的比例、節(jié)奏、韻律、秩序美,是建筑區(qū)別于雕塑和繪畫兩大藝術(shù)的特點。

      維特魯威提出的建筑三原則:堅固、適用、美觀,時時刻刻提醒著我們建筑是要被建造起來的,它是我們的“避難所”,需要理性的結(jié)構(gòu)、縝密的分析和思考。時代在進步,建筑理論從勒杜克的結(jié)構(gòu)理性主義發(fā)展到現(xiàn)在的解構(gòu)主義,再也不是建筑形式適應(yīng)結(jié)構(gòu)的時代了,而是兩者互為促進。

      我們對建筑的理解不再是像路易斯康那樣再去問磚想做什么,等待它做拱卷的回答。我們向大自然學(xué)習(xí),卡拉特拉瓦創(chuàng)造了許多帶有理性美的仿生建筑。當(dāng)我們想進一步拓寬我們的思維時,我們還能向誰求助?計算機圖形學(xué)為我們打開了理性思考的一扇窗。

      ? 計算機圖形學(xué)對理性建筑的貢獻

      半個多世紀(jì)以來,計算機技術(shù)得到了飛速的發(fā)展。它的進步不僅僅使世界變得更平,信息交流更便捷,在此平臺上開發(fā)的各種繪圖軟件更是將建筑師從傳統(tǒng)的手工渲染畫圖中解放出來,也解放了結(jié)構(gòu)師的工作量。用了30年的時間,計算機的速度從K(103)到T(1012),而從T到Z(1021),我們只用了10年時間。發(fā)展的速度是越來越快,我們設(shè)計方法和速度都得到了革新。這是這樣一個數(shù)字化信息化的時代,才有弗蘭克蓋里建筑的夸張和扎哈哈迪德設(shè)計的新奇。

      原來我們隨手繪出的自由曲線,現(xiàn)在計算機都能幫我們算出是否有建造的可能,以及建筑性能也能在建造前得到分析。在創(chuàng)意上,計算機也能將我們模糊的概念無限發(fā)展,給它一個規(guī)則,它可能還你一個超乎想象的造型,在理性規(guī)則中生成感性而自由的建筑。

      知其然,還應(yīng)知其所以然,看著電視機的變薄,圖像更加逼真,這變化的一切都建立在計算機圖形學(xué)的架構(gòu)下,了解了基礎(chǔ)原理,才能更高效地做高質(zhì)量的建筑設(shè)計。

      ? 計算機圖形學(xué)的理論知識

      1.相關(guān)概念

      計算機圖形學(xué)是主要研究通過計算機處理用集合數(shù)據(jù)和數(shù)學(xué)模型所描述的圖形的原理、算法和系統(tǒng)。包括圖形的輸入、存儲、運算、轉(zhuǎn)換、傳送和輸出。數(shù)字化技術(shù)是泛指在某特定領(lǐng)域利用包括硬件、軟件在內(nèi)的計算機與電子技術(shù)以及數(shù)學(xué)或數(shù)字模型等描述的問題進行求解、模擬或分析活動的一切應(yīng)用技術(shù)。

      建筑數(shù)字化技術(shù)研究應(yīng)用包括建筑的數(shù)字化設(shè)計和反映建筑的數(shù)字化特征在內(nèi)的數(shù)字技術(shù)。而建筑數(shù)字化技術(shù)的核心幾何學(xué)科就是計算機圖形學(xué)。2.反映建筑數(shù)字化特征的典型圖形技術(shù)

      建筑的動態(tài)特征——圖形顯示:如奧地利格拉茨美術(shù)館的925盞燈形成的外墻面顯示屏 建筑的互動特征——圖形顯示:如杜瑟赫姆市的隨情感變化而色彩變化的建筑物

      建筑的數(shù)字特征——幾何運算:如柏林Max Reinhardt大樓模型及“莫比烏斯環(huán)”變換 建筑的虛實特征——交互式圖形:如法國國立圖書館(實體與網(wǎng)絡(luò)圖書館)

      設(shè)計手段和設(shè)計媒體的數(shù)字化特征——交互式圖形:如紐約韓國基督教長老會教堂 而建筑性能如聲環(huán)境、熱環(huán)境、光環(huán)境、風(fēng)環(huán)境模擬的可視化分析中都用到了圖形學(xué)。3.虛擬現(xiàn)實技術(shù)(VR)

      虛擬現(xiàn)實技術(shù)是計算機生成的給人多種感官刺激的虛擬世界(環(huán)境),是一種高級的人機交互系統(tǒng)。

      虛擬現(xiàn)實技術(shù)的三個基本特征:沉浸感、交互性、想象力 它具有多學(xué)科的綜合性,正如建筑學(xué)是一門綜合的藝術(shù),虛擬現(xiàn)實技術(shù)包括圖像處理、圖形學(xué)、計算幾何、多傳感器、網(wǎng)絡(luò)、多媒體和仿真技術(shù)等。

      正如課堂上老師放映的《碟中諜4》,逼真的爆炸場景,以及從皮克斯動畫開始的動物毛發(fā)到最近火熱的《少年派》逼真的老虎與人共存畫面,虛擬現(xiàn)實技術(shù)的進步影響到了我們生活的方方面面,觸到了我們原來想都不敢想的世界。

      而VR技術(shù)在建筑行業(yè)中,有以下作用:(1)指導(dǎo)設(shè)計:讓建筑師通過瀏覽觀察和了解空間關(guān)系,特別是對空間大小、方向、形狀和建筑元素行為的理解。(2)建筑表現(xiàn)與環(huán)境仿真(3)仿真施工:檢查和修改施工細節(jié)、合理性和有效性

      4.虛擬現(xiàn)實的基礎(chǔ)與關(guān)鍵技術(shù):建模與描繪

      基于幾何和圖形學(xué)的建模和描繪技術(shù)

      直接幾何建模

      3D掃描建模

      投影視圖建模

      基于圖像的場景描繪技術(shù)(IBR)

      圖像投影變形技術(shù) 光場重建技術(shù)

      混合式IBR技術(shù)

      IBR技術(shù)圖形的繪制獨立于場景的復(fù)雜性,僅僅與所要生成畫面的分辨率有關(guān)。

      下載計算機圖形學(xué)實驗報告word格式文檔
      下載計算機圖形學(xué)實驗報告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        計算機圖形學(xué)實驗

        實驗三 MFC畫直線 最近自己在學(xué)習(xí)如何在VC 6.0 開發(fā)環(huán)境下的使用MFC AppWizard(exe)來繪畫一條直線,雖然比較簡單,通過這樣的練習(xí)可以幫助你熟悉MFC的開發(fā)環(huán)境以及其中的消息傳......

        計算機圖形學(xué)學(xué)習(xí)體會

        計算題圖形學(xué)課程學(xué)習(xí)體會 計算機圖形學(xué)是研究用計算機生成、處理和顯示圖形的一門學(xué)科。他的重要性體現(xiàn)在人們越來越強烈的需要和諧的人機交互環(huán)境,UI已經(jīng)成為軟件的重要組......

        計算機圖形學(xué)論文

        工欲善其事,必先利其器 ——淺析計算機圖形學(xué)及其作用 本學(xué)期學(xué)校開設(shè)了計算機圖形學(xué),一開始不知計算機圖形學(xué)為何物的我不是很理解為什么要有這門課,但是經(jīng)過一學(xué)期的洗禮過后......

        計算機圖形學(xué)心得體會

        計算機圖形學(xué)心得體會 姓名: 學(xué)號: 201203284 班級: 計科11202 序號: 31 院系: 計算機科學(xué)學(xué)院 通過一個學(xué)期的學(xué)習(xí),經(jīng)過老師細心的講解,我對圖形學(xué)這門課有了基礎(chǔ)的認識,從......

        對于計算機圖形學(xué)感想

        計算機圖形學(xué) 1045532136 朱嘯林 我們班是計算機科學(xué)與技術(shù),剛開始知道要上圖形學(xué)的時候我還是一頭霧水,覺得沒什么聯(lián)系,經(jīng)過老師的點撥和自己的領(lǐng)悟,我明白了其中的道理。計算......

        計算機圖形學(xué)中英文關(guān)鍵詞

        Computer graphics 計算機圖形學(xué) Two-dimensional 二維 Three-dimensional 三維 geometric transformation 幾何變換 composite transformations 復(fù)合變換 Two-dimensional......

        計算機圖形學(xué)的簡單認識

        計算機圖形學(xué)的簡單認識 090600304229計科0942卿文玲第一周,我們上了一節(jié)計算機圖形學(xué)。記得剛開始領(lǐng)到書的時候,翻看里面的內(nèi)容,發(fā)現(xiàn)好多數(shù)學(xué)公式,心想:“完了,這不就是變相數(shù)學(xué)......

        計算機圖形學(xué)模擬太陽系源代碼

        #include #include #include #include //行星 GLfloat rot0 = 30.0; GLfloat rot1 = 0.0; GLfloat rot2 = 0.0; GLfloat rot3 = 0.0; GLfloat rot4 = 0.0; GLfloat rot5......