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

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

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

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

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

      計算機(jī)圖形學(xué)實(shí)驗(yàn)

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

      第一篇:計算機(jī)圖形學(xué)實(shí)驗(yàn)

      實(shí)驗(yàn)三 MFC畫直線

      最近自己在學(xué)習(xí)如何在VC 6.0 開發(fā)環(huán)境下的使用MFC AppWizard(exe)來繪畫一條直線,雖然比較簡單,通過這樣的練習(xí)可以幫助你熟悉MFC的開發(fā)環(huán)境以及其中的消息傳遞機(jī)制,希望對于像我一樣初入MFC圖形繪制學(xué)習(xí)的人有幫

      第一步:構(gòu)建MFC窗體

      打開Visual C++ 6.0編譯器 新建→工程→MFC AppWizard(exe),工程名以DrawLine為例,然后確定。為了方便,在MFC應(yīng)用程序向?qū)А襟E1當(dāng)中選擇“單文檔”,其余所有的步驟都為默認(rèn)值,直接“完成”。這樣一個簡單的MFC窗體就構(gòu)建好了,自己不妨Compile—Build—BuildExecute一下。

      第二步:編輯菜單項

      選擇ResourceView視窗展開Menu文件夾,左鍵雙擊IDR_DRAWLITYPE,右邊就會出現(xiàn)菜單圖形編輯界面,為了簡化,我們只在添加幫助→DrawLine功能選擇項。雙擊空白會彈出“菜單項目 屬性”對話框。ID:ID_DRAW_LINE;標(biāo)明:

      DrawLine(&D),其它的為缺省。

      第三步:建立消息命令

      如果此時運(yùn)行該程序,你會發(fā)現(xiàn)幫助—DrawLine的功能選項是灰色的,原因就在于我們還沒有添加該功能的消息命令相應(yīng)函數(shù)。通過“查看—Message Maps—Project:DrawLine—Class name:CDrawLineView—Object IDs:ID_DRAW_LINE—選定COMMAND—Add Function?”,其它為默認(rèn),最后確定完成?,F(xiàn)在如果再重新運(yùn)行該程序的話,會發(fā)現(xiàn)原來的灰色已經(jīng)消除了。

      第四步:添加鼠標(biāo)消息響應(yīng)

      打開ClassView視窗,右鍵選定CDrawLineView,選擇Add Windows Messsage Handler會彈出對話框,完成CDrawLineView類的WM_LBUTTONDOWN、WM_MOUSEMOVE、WM_LBUTTONUP三個Windows消息事件的新建。

      第五步:添加響應(yīng)代碼

      首先,在ClassView視窗中雙擊CDrawLineView會定位到“DrawLineView.h : interface of the CDrawLineView class”的文件,添加CDrawLineView類的成員:protected: int m_Drag;POINT m_pPrev;POINT m_pOrigin;三個成員變量。視窗中展開CDrawLineView類,雙擊定位OnLBUTTONDOWN()函數(shù)。在該函數(shù)消息響應(yīng)

      處添加如下代碼:

      //建立好繪圖的設(shè)備環(huán)境

      CClientDC dc(this);OnPrepareDC(&dc);

      dc.DPtoLP(&point);

      //獲取起始點(diǎn)坐標(biāo) m_pPrev=point;m_pOrigin=point;

      m_Drag=1;

      然后,定位于OnMouseMove(),添加如下代碼(其中關(guān)鍵用到了橡皮筋技術(shù)):

      //建立好繪圖的設(shè)備環(huán)境

      CClientDC dc(this);

      OnPrepareDC(&dc);dc.DPtoLP(&point);

      dc.SetROP2(R2_NOT);//橡皮筋繪圖技術(shù)

      //判斷是否BUTTONDOWN

      if(m_Drag)

      {

      dc.MoveTo(m_pOrigin);dc.LineTo(m_pPrev);dc.MoveTo(m_pOrigin);dc.LineTo(point);

      }

      m_pPrev=point;

      最后,在OnLBUTTONDOWN()添加代碼: m_Drag=0;

      程序運(yùn)行效果圖

      實(shí)驗(yàn)4 實(shí)現(xiàn)圓的生成算法

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.熟悉CDC圖形程序庫; 2.掌握中點(diǎn)畫圓生成算法; 3.掌握Bresenham畫圓算法。

      二、實(shí)驗(yàn)內(nèi)容

      利用VisualC++6.0設(shè)計一個簡易畫圓繪圖板,驗(yàn)證圓生成算法。

      三、實(shí)驗(yàn)指導(dǎo)

      1.生成繪圖應(yīng)用程序的框架,如下圖所示。具體實(shí)現(xiàn)見第二次實(shí)驗(yàn),過程不再詳細(xì)說明。

      2.在應(yīng)用程序中增加菜單

      完成相關(guān)菜單的設(shè)計,具體的效果如下圖所示,并設(shè)置好相關(guān)菜單消息的映射,具體的實(shí)現(xiàn)在前面的實(shí)驗(yàn)中介紹過,再此不在詳細(xì)說明。

      3.在繪圖函數(shù)中添加代碼

      通過以上步驟,得到了與菜單對應(yīng)的消息映射,就可以在函數(shù)中添加代碼繪制圖形了。(1)利用中點(diǎn)畫圓算法實(shí)現(xiàn)圓的生成(算法原理見教材)。void CDraw_CirView::OnMid(){ // TODO: Add your command handler code here CDC*pDC=GetDC();//得到繪圖類指針

      RedrawWindow();//重繪窗口

      int x,y,x0=200,y0=200,r=100;//圓的圓心為(x0,y0),半徑為r float d;x=0;y=r;d=1.25-r;

      pDC->SetPixel(x+x0,y+y0,RGB(255,0,0));pDC->SetPixel(y+x0,x+y0,RGB(255,0,0));pDC->SetPixel(y+x0,-x+y0,RGB(255,0,0));pDC->SetPixel(x+x0,-y+y0,RGB(255,0,0));pDC->SetPixel(-x+x0,-y+y0,RGB(255,0,0));pDC->SetPixel(-y+x0,-x+y0,RGB(255,0,0));pDC->SetPixel(-y+x0,x+y0,RGB(255,0,0));pDC->SetPixel(-x+x0,y+y0,RGB(255,0,0));while(x<=y){

      if(d<0)

      {

      d=d+2*x+3;

      x++;

      }

      else

      {

      d=d+2*(x-y)+5;

      x++;

      y--;}

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

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

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

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

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

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

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

      pDC->SetPixel(-x+x0,y+y0,RGB(255,0,0));} } 由以上代碼繪出的圖形如下:

      (2)利用Bresenham算法生成圓(算法原理見教材)。void CDraw_CirView::OnBre(){ // TODO: Add your command handler code here CDC*pDC=GetDC();//得到繪圖類指針

      //RedrawWindow();//重繪窗口

      int x,y,x0=200,y0=200,r=50;//圓的圓心為(x0,y0),半徑為r int delta,delta1,delta2,direction;x=0;y=r;delta=2*(1-r);while(y>=0){

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

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

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

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

      if(delta<0)

      {

      delta1=2*(delta+y)-1;

      if(delta<=0)direction=1;

      else direction=2;

      }

      else if(delta>0)

      {

      delta2=2*(delta-x)-1;

      if(delta2<=0)direction=2;

      else direction=3;

      }

      else direction=2;

      switch(direction)

      {

      case 1:x++;

      delta+=2*x+1;

      break;

      case 2:x++;y--;

      delta+=2*(x-y+1);

      break;

      case 3:y--;

      delta+=(-2*y+1);

      break;

      } } }

      由以上代碼繪出的圖形如下:

      (3)以上是本次實(shí)驗(yàn)的基本部分,利用中點(diǎn)畫圓和Bresenham畫圓算法實(shí)現(xiàn)的基本圖形的繪制。能不能利用該算法,完成一些復(fù)雜圖形的生成,比如利用基本的畫圓算法繪制一個奧運(yùn)五環(huán)。甚至根據(jù)畫圓算法,實(shí)現(xiàn)二次曲線的生成,如橢圓的生成等等。請同學(xué)們認(rèn)真考慮,完成這部分的內(nèi)容,上機(jī)調(diào)試。

      四、思考

      1.如何實(shí)現(xiàn)圓心為任意位置的圓的繪制; 2.兩種畫圓算法的比較。

      第二篇:計算機(jī)圖形學(xué) 實(shí)驗(yàn)六-西南交大

      學(xué)號:姓名:班級:

      計算機(jī)圖形學(xué)

      實(shí)驗(yàn)報告

      2016年6月日

      實(shí)驗(yàn)名稱:三維交互式圖形程序設(shè)計

      一、實(shí)驗(yàn)?zāi)康模?/p>

      1)掌握真實(shí)感圖形生成的基本原理,如消隱、光照、材質(zhì)等知識; 2)學(xué)習(xí)使用OpenGL、GLUT等生成基本圖形,如球體、正方體、茶壺等;

      3)學(xué)習(xí)使用OpenGL生成各種光源:點(diǎn)光源、平行光、聚光燈等; 4)學(xué)習(xí)使用OpenGL設(shè)置繪制對象的顏色、材質(zhì);

      5)進(jìn)一步熟悉OpenGL圖形變換技術(shù):幾何變換、視圖變換、觀察變換等:

      (1)對模型實(shí)現(xiàn)各種幾何變換(測試代碼保留在程序中),包括對 glLoadMatrix、glMultMatrix、glTranslate、glRotate、glScale 等的使用;

      (2)視口變換,測試不同大小的視口 glViewport ;

      (3)投影變換,要對對平行投影與透視投影分別測試,使用不同的觀察體參數(shù),觀察效果

      二、實(shí)驗(yàn)任務(wù):

      1)使用MFC AppWizard 建立一個SDI 程序,根據(jù)參考資料2 和3 中的步驟設(shè)置OpenGL 圖形繪制環(huán)境。增加繪制如下表圖形(選擇其中任意一個,注意模型坐標(biāo)系的選擇和頂點(diǎn)坐標(biāo)的計算)、球體或茶壺等(使用glut 函數(shù))。環(huán)境中創(chuàng)建點(diǎn)光源、平行光、聚光燈(可利用對話框輸入?yún)?shù)創(chuàng)建)、設(shè)置所繪制對象的材質(zhì),呈現(xiàn)出塑料、金屬等材質(zhì)特性。對光源的位置、方向、類型進(jìn)行控制,改變材質(zhì)參數(shù),觀察效果(測試代碼保留在程序中);

      三.實(shí)驗(yàn)過程: 1.觀察參數(shù)的設(shè)置

      glViewport(0.0, 0.0, width, height)//視口大小設(shè)置 gluLookAt(0,0,10,0,0,0,0,1,0);//觀察點(diǎn)設(shè)置,參數(shù)分別為觀察點(diǎn)位置,向哪點(diǎn)(何處)觀察,上方向的定義 2.投影變換

      glOrtho(-15.0*aspect, 15.0*aspect,-15.0,15.0,1,100);//平行投影,參數(shù)是投影面大小和投影的物體距離范圍

      gluPerspective(45,aspect, 1, 100.0);//透視投影,參數(shù)為視角,長寬比,投影距離范圍 3.幾何變換

      glLoadMatrixf(a);//設(shè)置當(dāng)前矩陣為a glTranslatef(2,0,0);//當(dāng)前矩陣*偏移矩陣 glRotatef(45, 0.0, 0.0, 0.0);//旋轉(zhuǎn)

      glScalef(m_scalX,m_scalY,m_scalZ);//當(dāng)前矩陣*比例矩陣 4.光源參數(shù)的設(shè)置

      glLightfv(GL_LIGHT0, Type, vlight);//light為float數(shù)組 glLightf(GL_LIGHT0, Type, light);//light為float Type=GL_LIGHT0, GL_AMBIENT //環(huán)境光 Type=GL_LIGHT0, GL_DIFFUSE

      //漫反射 Type=GL_LIGHT0, GL_SPECULAR //鏡面光 Type=GL_POSITION

      //光源位置 Type=GL_CONSTANT_ATTENUATION //常數(shù)衰減因 Type=GL_LINEAR_ATTENUATION //線性衰減因子 Type=GL_QUADRATIC_ATTENUATION //二次衰減因子 Type=GL_SPOT_DIRECTION

      //聚光方向矢量 Type=GL_SPOT_EXPONENT

      //聚光指數(shù) Type=GL_SPOT_CUTOFF

      //聚光截止角 光源類型控制

      平行光源::設(shè)置AMBIENT,DIFFUSE,SPECULAR,GL_POSITION4個參數(shù)。其中GL_POSITION第4個參數(shù)為0,表示距離無限遠(yuǎn)

      點(diǎn)光源:平行光源基礎(chǔ)上添加常數(shù)衰減,因線性衰減因子,二次衰減因,其中GL_POSITION第4個參數(shù)為1 表示光源位置為確切位置,聚光燈光源 :在點(diǎn)光源基礎(chǔ)上添加聚光方向矢量,聚光截止角,聚光指數(shù)

      本實(shí)驗(yàn)使用了3個光源,分別作為平行光源,點(diǎn)光源和聚光燈光源,通過不同菜單選擇在輸入?yún)?shù)的同時啟用不同的光源,以達(dá)到光源控制的效果

      四.實(shí)驗(yàn)結(jié)果

      原圖:

      材質(zhì)選擇:

      光源基本參數(shù)設(shè)置

      設(shè)置聚光燈光源(位置,方向,聚光指數(shù),聚光截止角,衰減因子)

      聚光衰減屬性(聚光燈)

      五.實(shí)驗(yàn)體會

      通過此次實(shí)驗(yàn),基本掌握了真實(shí)圖形生成的基本原理,對于3D圖新的材質(zhì)變換,光源變換等有了更深層次的理解。初步學(xué)習(xí)并掌握了幾何變換、視圖變換、觀察變換等。對于對話框、組建的設(shè)置更是理解的透徹。深入掌握了課堂上的些許知識。但對于之后的圖形學(xué)設(shè)計,還是有很多的不足之處。所以,需要繼續(xù)努力,掌握更多的圖形設(shè)計學(xué)習(xí)。

      第三篇:《計算機(jī)圖形學(xué)》實(shí)驗(yàn)報告

      吉林大學(xué)

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

      《計算機(jī)圖形學(xué)》實(shí)驗(yàn)報告

      班級: 211923班

      學(xué)號: 21190928

      姓名: 林星宇

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

      實(shí)驗(yàn)項目1

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

      實(shí)驗(yàn)性質(zhì)

      □演示性實(shí)驗(yàn) ?驗(yàn)證性實(shí)驗(yàn)

      □操作性實(shí)驗(yàn) ?綜合性實(shí)驗(yàn)

      實(shí)驗(yàn)地點(diǎn)

      計算機(jī)樓B212

      機(jī)器編號

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      四、實(shí)驗(yàn)結(jié)果

      (程序的運(yùn)行結(jié)果)

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

      ”“

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

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

      在獲取下x1,x2,y1,y2時,因?yàn)镈os界面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));

      }

      }

      }

      實(shí)驗(yàn)項目2

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

      實(shí)驗(yàn)性質(zhì)

      □演示性實(shí)驗(yàn) ?驗(yàn)證性實(shí)驗(yàn)

      □操作性實(shí)驗(yàn) ?綜合性實(shí)驗(yàn)

      實(shí)驗(yàn)地點(diǎn)

      計算機(jī)樓B212

      機(jī)器編號

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

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

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

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

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

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

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

      題目要求實(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”.

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

      (采用了哪些交互方式來完成繪制,這些交互方式應(yīng)用到了哪些系統(tǒng)消息,是如何實(shí)現(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)的軸。

      四、實(shí)驗(yàn)結(jié)果

      (程序的運(yùn)行結(jié)果)

      斜二測投影:

      ”“

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

      ”“

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

      ”“

      斜二測投影變大:

      ”“

      斜二測投影變小:

      ”“

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

      ”“

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

      ”“

      ”“

      ”“

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

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

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

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

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

      實(shí)驗(yàn)項目3

      用矩形窗口對多邊形進(jìn)行裁剪

      實(shí)驗(yàn)性質(zhì)

      □演示性實(shí)驗(yàn) ?驗(yàn)證性實(shí)驗(yàn)

      □操作性實(shí)驗(yàn) ?綜合性實(shí)驗(yàn)

      實(shí)驗(yàn)地點(diǎn)

      計算機(jī)樓B212

      機(jī)器編號

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

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

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

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

      因?yàn)橐帉憫?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)部的部分。

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

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

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

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

      因?yàn)榭梢杂檬髽?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));

      }

      四、實(shí)驗(yàn)結(jié)果

      (程序的運(yùn)行結(jié)果)

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

      ”“

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

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

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

      pointList.RemoveAll();

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

      pointList.Add(CP[i]);

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

      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));

      }

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

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

      ? 東西方建筑中的理性

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

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

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

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

      ? 計算機(jī)圖形學(xué)對理性建筑的貢獻(xiàn)

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

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

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

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

      1.相關(guān)概念

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

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

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

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

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

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

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

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

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

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

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

      直接幾何建模

      3D掃描建模

      投影視圖建模

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

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

      混合式IBR技術(shù)

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

      第五篇:計算機(jī)圖形學(xué)學(xué)習(xí)體會

      計算題圖形學(xué)課程學(xué)習(xí)體會

      計算機(jī)圖形學(xué)是研究用計算機(jī)生成、處理和顯示圖形的一門學(xué)科。他的重要性體現(xiàn)在人們越來越強(qiáng)烈的需要和諧的人機(jī)交互環(huán)境,UI已經(jīng)成為軟件的重要組成部分,以圖形的方式表示抽象的概念和數(shù)據(jù)已經(jīng)成為信息領(lǐng)域的發(fā)張趨勢。這門課我們通過自學(xué)和同學(xué)間互相上課,了解和掌握了計算機(jī)圖形學(xué)的概念、方法和基本的算法。

      學(xué)習(xí)的過程中,感觸比較深的是,常常被那些算法所困擾,算法很難理解,解釋的枯燥而且難學(xué)。原因首先是計算機(jī)圖形學(xué)這門學(xué)科本身特點(diǎn)就是綜合性很強(qiáng),涉及的內(nèi)容和應(yīng)用廣泛,學(xué)科交叉復(fù)雜。綜合了計算機(jī)科學(xué)、數(shù)學(xué)、物理學(xué)等其他相關(guān)學(xué)科的知識。而且學(xué)科發(fā)展日新月異,新的應(yīng)用領(lǐng)域不斷拓展,相關(guān)學(xué)科相互滲透。其次是與計算機(jī)圖形學(xué)課程中的算法特點(diǎn)有關(guān)。很多的算法是為了追求高效率,精益求精,構(gòu)思獨(dú)特、實(shí)現(xiàn)精巧,算法本身就很難看懂和理解。第三方面就是這門課程是一門理論性和實(shí)踐性兼顧的綜合性課程,實(shí)踐性很強(qiáng),不實(shí)踐就顯得空洞,枯燥乏味。

      這門課學(xué)習(xí)的目的是讓我們掌握計算機(jī)圖形學(xué)的相關(guān)概念、原理和知識,算法的難學(xué)難理解,是我們學(xué)習(xí)的主要障礙。課程實(shí)踐中,教員讓我們自學(xué),互相授課,增強(qiáng)時間體會。在自學(xué)和自作可見互相授課過程中,要求要注重基礎(chǔ),強(qiáng)調(diào)基本

      這些動畫,對增強(qiáng)原理、算法的理解性具有很大的作用。

      以上是本人在計算機(jī)圖形課學(xué)習(xí)過程中的體會,字?jǐn)?shù)不多,確是心得,不足之處還請曹老師指正。

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

      文檔為doc格式


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

      相關(guān)范文推薦

        計算機(jī)圖形學(xué)實(shí)驗(yàn)報告

        實(shí) 驗(yàn) 報 告 一、 實(shí)驗(yàn)?zāi)康?1、掌握有序邊表算法填充多邊形區(qū)域; 2、理解多邊形填充算法的意義; 3、增強(qiáng)C語言編程能力。 二、 算法原理介紹 根據(jù)多邊形內(nèi)部點(diǎn)的連續(xù)性知:一條......

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

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

        計算機(jī)圖形學(xué)實(shí)驗(yàn)報告

        0908141020 試驗(yàn)092 尤洋 實(shí)驗(yàn)1-1: 通過循環(huán)畫線,實(shí)現(xiàn)了畫四邊形的功能 實(shí)驗(yàn)1-2: 通過循環(huán)設(shè)置頂點(diǎn)坐標(biāo),循環(huán)畫線,實(shí)現(xiàn)了畫7個頂點(diǎn)的金剛石 實(shí)驗(yàn)1-3: 通過填充實(shí)現(xiàn)了畫三彩多邊形......

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

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

        圖形學(xué)實(shí)驗(yàn)5

        《3D游戲圖形學(xué)》 實(shí)驗(yàn)報告書 (實(shí)驗(yàn)五) 姓名: 學(xué)號: 班級: 浙江理工大學(xué) 二0一二 年 十二 月 數(shù)字圖像處理實(shí)驗(yàn)指導(dǎo)書 實(shí)驗(yàn)五 紋理映射實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康暮鸵?掌握紋理映射的基......

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

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

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

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

        計算機(jī)圖形學(xué)的簡單認(rèn)識

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