計算機圖形學(xué)設(shè)計報告.doc_第1頁
計算機圖形學(xué)設(shè)計報告.doc_第2頁
計算機圖形學(xué)設(shè)計報告.doc_第3頁
計算機圖形學(xué)設(shè)計報告.doc_第4頁
計算機圖形學(xué)設(shè)計報告.doc_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計計算算機機圖圖形形學(xué)學(xué) 設(shè)設(shè) 計計 報報 告告 專業(yè)班級 專業(yè)班級 NET113 NET113 學(xué)學(xué) 號 號 201107082000201107082000 姓姓 名 名 吉祥草吉祥草 指導(dǎo)老師 指導(dǎo)老師 杜俊俐杜俊俐 中原工學(xué)院軟件學(xué)院中原工學(xué)院軟件學(xué)院 20132013 年年 6 6 月月 1818 日日 目目 錄錄 項目一項目一 圖形轉(zhuǎn)換的繪制圖形轉(zhuǎn)換的繪制 C C 1 1 項目二項目二 畫圖工具畫圖工具 JAVA JAVA 6 6 項目三項目三 紅綠燈繪制紅綠燈繪制 JAVAJAVA 9 9 項目四項目四 五子棋游戲五子棋游戲 JAVAJAVA 1313 1 項目一名稱 圖形轉(zhuǎn)換的繪制項目一名稱 圖形轉(zhuǎn)換的繪制 一 一 設(shè)計目的設(shè)計目的 1 練習(xí) 2D 圖形的繪制技術(shù) 2 練習(xí) 2D 圖形的幾何變換技術(shù) 3 練習(xí) 2D 圖形的填充技術(shù) 二 二 設(shè)計內(nèi)容設(shè)計內(nèi)容 編程實現(xiàn)五星紅旗的繪制 三 三 設(shè)計方案設(shè)計方案 與實現(xiàn)與實現(xiàn) 設(shè)計中的基本繪圖功能及繪圖函數(shù) 設(shè)計的總體安排 用 C 語言編寫的程序 首先用自己學(xué)的專業(yè)語言來編寫 2D 圖形的繪制以 及轉(zhuǎn)換的技術(shù) 圖形數(shù)據(jù)及確定 開始為轉(zhuǎn)變的圖形總體是有無數(shù)個空心圓組成的 每個圓圓心是同一點 但每個圓有 不同的半徑 圓的邊緣設(shè)置是白色的 除了邊緣就是綠色的 它們的邊緣間的距離相等 轉(zhuǎn)變后的圖形是無數(shù)個空心正方形和一個實心的綠色圓組成 正方形邊緣的間距也是等長 的 3 設(shè)計流程 1 為便于確定復(fù)雜圖形之位置 先找出中心點 將它視為圓心 先設(shè)置一個半徑 為 150 長的綠色實心圓 然后畫白色的圓 其中半色空心圓 半徑要依次累加相同的數(shù)字 2 轉(zhuǎn)變后的圖形也用相同方法 圓心 綠色實心圓的半徑都相同 不過不是設(shè)置 白色的圓 而是白色的正方形 邊長也要依次累加相同的數(shù)字 四 四 設(shè)計結(jié)果設(shè)計結(jié)果 2 轉(zhuǎn)換前的圖形 轉(zhuǎn)換后的圖形 抓圖 抓圖 3 五 設(shè)計總結(jié)五 設(shè)計總結(jié) 陳述在程序設(shè)計和調(diào)試中遇到的主要問題及解決過程 對所用的知識深入理解的作用 設(shè)計語言等相應(yīng)功能的掌握和程序設(shè)計能力的提高以及經(jīng)驗和體會 分析并提出改進設(shè)想 等 在設(shè)計過程中 我們所學(xué)的 C 知識基礎(chǔ)是很重要的 基礎(chǔ)弄通 即使不會框架 也可以有一份事情做 同時在做此程序時 也發(fā)現(xiàn)了很多的問題 比如說知識的健忘 在 做的時候竟然不知道該怎么編程 這就在提醒我們要時時刻刻得學(xué)習(xí) 不要對自己在學(xué)習(xí) 上的松懈 并且 C 相關(guān)的知識雖然有點雜 有點多 但多學(xué)有益 讓你永遠不會松懈 這 使我能更上一層樓 六 附錄六 附錄 using System using System Collections Generic using System ComponentModel using System Data using System Drawing using System Text using System Windows Forms namespace glf Creatione public partial class 圖形轉(zhuǎn)換 Form public 圖形轉(zhuǎn)換 InitializeComponent Graphics g int i 0 private void button1 Click object sender EventArgs e g FillRectangle new SolidBrush panel1 BackColor 0 0 panel1 Width panel1 Height i if i 2 1 drawR 轉(zhuǎn)換前的圖形 else 4 drawZFX 轉(zhuǎn)換后的圖形 private void Form1 Paint object sender PaintEventArgs e drawR 轉(zhuǎn)換前的圖形 private void drawZFX 轉(zhuǎn)換后的圖形 g panel1 CreateGraphics g FillEllipse new SolidBrush Color Green 0 0 300 300 綠色實心圓 for int i 0 i int x r SolidBrush b r Convert ToInt16 150 i 5 1 Math Sqrt 2 x 150 r if r 0 break if i 2 0 b new SolidBrush Color White else b new SolidBrush Color Green g FillRectangle b x x r 2 r 2 private void drawR 轉(zhuǎn)換后的圖形 g panel1 CreateGraphics g FillRectangle new SolidBrush Color White 0 0 300 300 白色矩形 g FillEllipse new SolidBrush Color Green 0 0 300 300 綠色實心圓 5 SolidBrush b int x r for int i 1 i x i 5 r 300 2 x if r 0 break if i 2 0 b new SolidBrush Color White else b new SolidBrush Color Green g FillEllipse b x x r r 6 項目二名稱 畫圖工具繪制項目二名稱 畫圖工具繪制 一 一 設(shè)計目的設(shè)計目的 1 練習(xí) 2D 圖形的繪制技術(shù) 2 練習(xí) 2D 圖形的幾何變換技術(shù) 3 練習(xí) 2D 圖形的填充技術(shù) 二 二 設(shè)計內(nèi)容設(shè)計內(nèi)容 編程實現(xiàn)畫圖工具的繪制 三 三 設(shè)計方案與實現(xiàn)設(shè)計方案與實現(xiàn) 1 因需要在模板上畫圖 所以應(yīng)先構(gòu)建一個模板 2 為了實現(xiàn)用鼠標畫圖 根據(jù)需求增加鼠標和鍵盤的監(jiān)聽器 3 實現(xiàn)畫圖功能 四 四 設(shè)計結(jié)果設(shè)計結(jié)果 抓圖 抓圖 五 設(shè)計總結(jié)五 設(shè)計總結(jié) 這學(xué)期剛剛學(xué)完選修的 Java 語言 正好也拿來練習(xí)一下 編寫此程序時 學(xué)習(xí)過 Java 的各位對這個集合框架并不陌生 對 java util 這個 package 肯定也不陌生 不 知道大家查詢 API 的時候怎么去審視或者分析其中的一個 package 每個包最重要的兩 個部分就是 interfaces 和 classes 接口代表了它能做什么 實現(xiàn)類則代表了它如何去做 關(guān)注實現(xiàn)類之前 我們應(yīng)該先理解清楚它的來源接口 不管在 j2se 還是 j2ee 中 都應(yīng)該 是這樣 那么我們先看這三個接口 List Set Map 也許有些人不太熟悉這三個名字 但相信大部分人都熟悉 ArrayList LinkedList TreeSet HashSet HashMap Hashtable 等實現(xiàn)類的名 字 它們的區(qū)別也是滿容易理解的 List 放可以重復(fù)的對象集合 Set 放不可重復(fù)的對象 組合 而 Map 則放 這樣的名值對 Key 不可重復(fù) Value 可以 所以 7 總結(jié)起來就是要想編程序 必須要了解程序本身都需要什么 六 附錄六 附錄 import javax swing import java awt import java awt event public class Exercise12 4 extends JFrame private DrawMaze mazePanel new DrawMaze public Exercise12 4 添加模板輸出所花的圖形 getContentPane add mazePanel mazePanel setFocusable true public static void main String args Exercise12 4 frame new Exercise12 4 frame setTitle Exercise12 4 frame setSize 350 150 frame setDefaultCloseOperation JFrame EXIT ON CLOSE frame setVisible true class DrawMaze extends JPanel implements KeyListener int x y previousX previousY public DrawMaze addKeyListener this 重構(gòu)監(jiān)聽器 public void keyReleased KeyEvent e public void keyTyped KeyEvent e public void keyPressed KeyEvent e switch e getKeyCode case KeyEvent VK DOWN 構(gòu)造向下箭頭的監(jiān)聽器 previousY y previousX x y 10 break case KeyEvent VK UP 構(gòu)造向上箭頭的監(jiān)聽器 previousY y previousX x y 10 break case KeyEvent VK LEFT 構(gòu)造向左箭頭的監(jiān)聽器 previousX x 8 previousY y x 10 break case KeyEvent VK RIGHT 構(gòu)造向右箭頭的監(jiān)聽器 previousX x previousY y x 10 repaint 9 項目三名稱 紅綠燈繪制項目三名稱 紅綠燈繪制 一 一 設(shè)計目的設(shè)計目的 1 練習(xí) 2D 圖形的繪制技術(shù) 2 練習(xí) 2D 圖形的幾何變換技術(shù) 3 練習(xí) 2D 圖形的填充技術(shù) 二 二 設(shè)計內(nèi)容設(shè)計內(nèi)容 編程實現(xiàn)紅綠燈的繪制 三 三 設(shè)計方案與實現(xiàn)設(shè)計方案與實現(xiàn) 1 為實現(xiàn)紅綠燈的繪制 先構(gòu)建模板 2 為模板添加三個按鈕 并在畫板中實現(xiàn)紅黃綠三燈的閃爍 3 為三個按鈕增加監(jiān)聽器 實現(xiàn)點擊即可亮燈 4 測試程序 是否有漏洞 四 四 設(shè)計結(jié)果設(shè)計結(jié)果 抓圖 五 設(shè)計總結(jié)五 設(shè)計總結(jié) 編寫程序最終要的是要知道程序應(yīng)該怎么去編寫 要怎么去做才能實現(xiàn)程序的基本功能 從編寫這個程序中我發(fā)現(xiàn)設(shè)計模式只是對一類問題的一種通用解決辦法 只要是面向?qū)ο?的編程預(yù)言都可以用得上最好的設(shè)計方法就是自己編寫一個簡單的程序 哪怕是一個簡單 的應(yīng)用就足夠了 六 附錄六 附錄 10 import java awt BorderLayout import java awt Graphics import java awt Color import java awt GridLayout import java awt event ActionEvent import java awt event ActionListener import java util import javax swing JPanel import javax swing JFrame import javax swing ButtonGroup import javax swing JRadioButton public class lightP1 extends JFrame 構(gòu)建紅綠燈模板 int flag 0 myPanel panel 1 new myPanel public lightP1 super setTitle TrafficLight getContentPane setLayout new BorderLayout 紅綠燈分布 final JPanel panel new JPanel getContentPane add panel BorderLayout NORTH final ButtonGroup buttonGroup new ButtonGroup final JRadioButton jrbRed new JRadioButton 構(gòu)建紅黃綠三個按 鍵 jrbRed setText Red panel add jrbRed final JRadioButton jrbYellow new JRadioButton jrbYellow setText Yellow panel add jrbYellow final JRadioButton jrbGreen new JRadioButton jrbGreen setText Green buttonGroup add jrbRed buttonGroup add jrbYellow buttonGroup add jrbGreen panel add jrbGreen jrbRed addActionListener new ActionListener 分別為三個按鍵增 加監(jiān)聽器 public void actionPerformed ActionEvent e g setColor Color red flag 1 panel 1 setColor flag panel 1 repaint jrbYellow addActionListener new ActionListener 11 public void actionPerformed ActionEvent e flag 2 panel 1 setColor flag panel 1 repaint jrbGreen addActionListener new ActionListener public void actionPerformed ActionEvent e flag 3 panel 1 setColor flag panel 1 repaint getContentPane add panel 1 BorderLayout CENTER Timer timer new Timer timer schedule new MyTimerTask 1000 1000 class MyTimerTask extends TimerTask public void run for int i 1 i 3 i try Thread sleep 1000 catch Exception e flag i Thread sleep 3000 panel 1 setColor flag panel 1 repaint System out println flag flag Main method public static void main String args lightP1 frame new lightP1 frame setDefaultCloseOperation JFrame EXIT ON CLOSE frame setSize 400 450 frame setVisible true class myPanel extends JPanel 12 int color 0 protected void paintComponent final Graphics g 在畫板中實現(xiàn) 紅綠燈 public void paint Graphics g 設(shè)計紅黃綠三燈的所在位置 super paint g g drawRect 130 25 40 120 if color 1 g setColor Color red g fillOval 135 30 30 30 g setColor Color black g fillOval 135 70 30 30 g setColor Color black g fillOval 135 110 30 30 else if color 2 g setColor Color black g fillOval 135 30 30 30 g setColor Color yellow g fillOval 135 70 30 30 g setColor Color black g fillOval 135 110 30 30 else if color 3 g setColor Color black g fillOval 135 30 30 30 g setColor Color black g fillOval 135 70 30 30 g setColor Color green g fillOval 135 110 30 30 else g setColor Color black g fillOval 135 30 30 30 g setColor Color black g fillOval 135 70 30 30 g setColor Color black g fillOval 135 110 30 30 public void setColor int color this color color 13 項目四名稱 五子棋制作項目四名稱 五子棋制作 一 一 設(shè)計目的設(shè)計目的 1 練習(xí) 2D 圖形的繪制技術(shù) 2 練習(xí) 2D 圖形的幾何變換技術(shù) 3 練習(xí) 2D 圖形的填充技術(shù) 二 二 設(shè)計內(nèi)容設(shè)計內(nèi)容 編程實現(xiàn)游戲五子棋 三 三 設(shè)計方案與實現(xiàn)設(shè)計方案與實現(xiàn) 1 設(shè)計模板 為了能讓棋子顯示 先構(gòu)造五子棋的模板 2 設(shè)計五子棋的棋子以及其顏色 3 設(shè)計程序判斷五子棋的五個相同旗子是否在同一條直線或斜線上 4 判斷五子棋的輸贏 并用對話框的形式輸出 5 測試程序 查詢漏洞 四 四 設(shè)計結(jié)果設(shè)計結(jié)果 抓圖 五 設(shè)計總結(jié)五 設(shè)計總結(jié) 其實 我覺得用 C 也好 Java 語言也好 都有相同之處 當然也有各自的特點 編 寫程序最終要的是要知道程序應(yīng)該怎么去編寫 要怎么去做才能實現(xiàn)程序的基本功能 從編 寫這個程序中我發(fā)現(xiàn)設(shè)計模式只是對一類問題的一種通用解決辦法 只要是面向?qū)ο蟮木?程預(yù)言都可以用得上最好的設(shè)計方法就是自己編寫一個簡單的程序 哪怕是一個簡單的應(yīng) 用就足夠了 14 所以一定要知道程序該怎么編寫 該怎么做出模型 怎么添加?xùn)|西來使程序能夠運行 六 附錄六 附錄 package dyb import java applet import java awt import java awt event import java applet Applet import java awt Color import javax swing JOptionPane public class 五子棋 extends Applet implements MouseListener MouseMotionListener int color Qizi 0 旗子的顏色標識 0 白子 1 黑子 int intGame Start 0 游戲開始標志 0 未開始 1 游戲中 int intGame Body new int 16 16 設(shè)置棋盤棋子狀態(tài) 0 無子 1 白 子 2 黑子 Checkbox ckbHB new Checkbox 2 CheckboxGroup ckgHB new CheckboxGroup public void init setLayout null addMouseListener this color Qizi 0 Game start csh public void mousePressed MouseEvent e public void mouseClicked MouseEvent e Graphics g getGraphics int x1 y1 x1 e getX y1 e getY if e getX 300 e getY 300 return if x1 20 10 x1 20 if y1 20 10 y1 20 x1 x1 20 20 15 y1 y1 20 20 set Qizi x1 y1 public void mouseEntered MouseEvent e public void mouseExited MouseEvent e public void mouseReleased MouseEvent e public void mouseDragged MouseEvent e public void mouseMoved MouseEvent e public void paint Graphics g draw qipan g public void set Qizi int x int y 落子 if intGame Start 0 判斷游戲未開始 return if intGame Body x 20 y 20 0 return Graphics g getGraphics if color Qizi 1 判斷黑子還是白子 g setColor Color black color Qizi 0 else g setColor Color white color Qizi 1 g fillOval x 10 y 10 20 20 intGame Body x 20 y 20 color Qizi 1 if Game win 1 x 20 y 20 判斷輸贏 JOptionPane showMessageDialog this Get qizi color color Qizi 贏了 提示 JOptionPane YES OPTION System exit 0 intGame Start 0 if Game win 2 x 20 y 20 判斷輸贏 16 JOptionPane showMessageDialog this Get qizi color color Qizi 贏了 提示 JOptionPane YES OPTION System exit 0 intGame Start 0 if Game win 3 x 20 y 20 判斷輸贏 JOptionPane showMessageDialog this Get qizi color color Qizi 贏 了 提示 JOptionPane YES OPTION System exit 0 intGame Start 0 if Game win 4 x 20 y 20 判斷輸贏 JOptionPane showMessageDialog this Get qizi color color Qizi 贏 了 提示 JOptionPane YES OPTION System exit 0 intGame Start 0 public String Get qizi color int x if x 0 return 黑子 else return 白子 public void draw qipan Graphics G 畫棋盤 15 15 G setColor Color ORANGE G fill3DRect 10 10 300 300 true G setColor Color black for int i 1 i 16 i G drawLine 20 20 i 300 20 i

溫馨提示

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

評論

0/150

提交評論