程序員,在路上……_第1頁(yè)
程序員,在路上……_第2頁(yè)
程序員,在路上……_第3頁(yè)
程序員,在路上……_第4頁(yè)
程序員,在路上……_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、程序員,在路上第1節(jié)標(biāo)題: 用程序畫出麥克斯維速率分布曲線內(nèi)容提要: Windows SDKOPENEL顯示圖像正文:今天有同學(xué)來找我,問我是否可以幫助他把一個(gè)物理問題的圖像畫出來。我看來一下書,發(fā)現(xiàn)自己的功課又拉下了很多。我想從現(xiàn)在開始應(yīng)該好好學(xué)習(xí)了,程序只是世界上的一個(gè)小部分,真正的大師應(yīng)該融會(huì)貫通。但無(wú)論如何程序總算是寫出來了,用的是Windows SDKOPENEL,其實(shí)我對(duì)這兩個(gè)東西也是新手。希望有人多多指點(diǎn)。程序請(qǐng)參見附件。公式在“expressions.h”中,繪圖程序在“draw.h”中,其余請(qǐng)參見參考資料一開始我用Debug編譯通過,用Release編譯就有很多錯(cuò)誤,研究發(fā)現(xiàn)

2、Release等每個(gè)配置文件都要手動(dòng)連接庫(kù)。遺留問題:1.windows程序如何用啟用命令行輸出狀態(tài),輸入?yún)?shù),現(xiàn)在參數(shù)是寫死在程序中?2為什么這個(gè)程序系統(tǒng)資源占用如此之大,如何解決?3. 我在zlib的頭文件中看到這樣兩句話typedef voidpf (*alloc_func) OF(voidpf opaque, uInt items, uInt size);typedef void (*free_func) OF(voidpf opaque, voidpf address);這是什么意思?通常不是typedef vector<int> vec_int;這種格式嗎?知識(shí)點(diǎn):1.

3、opengGL所需庫(kù)的頭文件, 如下:#include <windows.h>/ Header File For Windows#include <glgl.h>/ Header File For The OpenGL32 Library#include <glglu.h>/ Header File For The GLu32 Library#include <glglaux.h>/ Header File For The GLaux LibraryW2.opengGL所需庫(kù)的連接方式(VS2003的截圖如下)3.openGL函數(shù)/清除屏幕到之前

4、指定的顏色, 清除深度緩存glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); / Clear The Screen And The Depth Buffer/重置場(chǎng)景 (譯注:就是重置當(dāng)前視圖模型矩陣)glLoadIdentity();/ Reset The Current Model view Matrix/ glTranslatef(x, y, z) 的功能是沿 X軸,Y軸和Z軸 做移動(dòng)。 下面的代碼在X軸上向左移動(dòng)了1.5個(gè)單位, Y 軸上沒有移動(dòng)(0.0), Z 軸上向屏幕里面移動(dòng)了 6.0個(gè)單位。 注意當(dāng)你做移動(dòng)的時(shí)候你是相對(duì)于當(dāng)前

5、位置做的, 而不是屏幕(場(chǎng)景)中心位置。glTranslatef(-1.5f,0.0f,-6.0f);/ Move Left 1.5 Units And Into The Screen 6.0/下面這一行代碼是新加的。glRotatef(Angle,Xvector,Yvector,Zvector) 用于繞軸旋轉(zhuǎn)物體, 這是一條十分有用的函數(shù)。 Angle 是一個(gè)用于指定旋轉(zhuǎn)角度的數(shù)字(通常存儲(chǔ)于變量中)。 Xvector, Yvector 和 Zvector 這三個(gè)參數(shù)用于描述一條向量, 以規(guī)定物體的旋轉(zhuǎn)軸。 如果你使用 (1,0,0) 這樣的值, 你就描述了一條長(zhǎng)度為1個(gè)單位的、順著x軸指向

6、右方的向量; 而 (-1,0,0) 這樣的值就描述了一條長(zhǎng)度為1個(gè)單位的、順著x軸 但指向左方的向量。為了更好地理解 X, Y 和 Z 旋轉(zhuǎn), 這里舉一些例子X 軸 你正在使用一臺(tái)臺(tái)鋸, 木頭穿過鋸刀的中心。 鋸刀在x軸上飛速旋轉(zhuǎn), 刀齒看起來是向上切或者向下切, 這取決于鋸刀的旋轉(zhuǎn)方向。 這與在OpenGL中以x軸旋轉(zhuǎn)物體相類似。/Y 軸 想象一下, 原野上掛起了龍卷風(fēng)。 龍卷風(fēng)的中心正處于y軸上, 它刮起的泥土還有碎片正繞著y軸 (龍卷風(fēng)的中心) 旋轉(zhuǎn)著, 從左到右或從右到左。 這與在OpenGL中以y軸旋轉(zhuǎn)物體相類似。/Z 軸 你正看著一臺(tái)旋轉(zhuǎn)著的電風(fēng)扇, 電風(fēng)扇的中心點(diǎn)面向著你。 電風(fēng)

7、扇的扇片繞著z軸旋轉(zhuǎn), 順時(shí)針或逆時(shí)針方向。這與在OpenGL中以z軸旋轉(zhuǎn)物體相/類似。/所以, 在下面的這行代碼中, 如果 rtri 等于 7的話, 我們將在y軸上旋轉(zhuǎn)7度 (從左到右)。 你可以試著修改代碼, 使三角形在x和y軸上同時(shí)旋轉(zhuǎn)。注意旋轉(zhuǎn)是按照角度的(譯注:不是弧度), 如果rtri 的值為 10, 我們將在y軸上旋轉(zhuǎn) 10度。glRotatef(rtri,0.0f,1.0f,0.0f);/ Rotate The Triangle On The Y axis ( NEW )/這里沒有聲明rtri,需要先聲明rtri,若要實(shí)現(xiàn)動(dòng)態(tài)旋轉(zhuǎn)可以在繪圖函數(shù)中加入rtri+=0.2f;或者r

8、tri-=0.14f;之類的語(yǔ)句/在這個(gè)簡(jiǎn)單的程序中我們只繪制一個(gè)三角形。 如果想再增加一個(gè)三角形, 我們就需要增加3行代碼(3個(gè)頂點(diǎn)) 到原來的3行代碼后面, 這樣在glBegin(GL_TRIANGLES) 和 glEnd() 之間就會(huì)有6行代碼了。 在glBegin(GL_TRIANGLES) 和glEnd() 之間應(yīng)該是3個(gè)點(diǎn)為一組的, 多余的點(diǎn)會(huì)被忽略。 同樣的道理也適用于4邊形, 如果你繪制的都是4邊形的話, 要增加另一個(gè)四邊形你就需要在原來的4行代碼的后面再添加一組4行代碼。 而一個(gè)多邊形(polygon) 可由任意數(shù)目的頂點(diǎn)組成, 所以在glBegin(GL_POLYGON)

9、和glEnd() 之間可以有任意行代碼。/glBegin 后面的第一行代碼為我們的三角形設(shè)置第一個(gè)頂點(diǎn), glVertex 的第一個(gè)參數(shù)指定頂點(diǎn)的X坐標(biāo), 第二個(gè)參數(shù)指定Y坐標(biāo), 而第三個(gè)指定 Z 坐標(biāo)。 所以, glBegin(GL_TRIANGLES) 后面的三行代碼分別指定了三角形上面的頂點(diǎn), 左下角的頂點(diǎn) 和 右下角的頂點(diǎn)。 然后, glEnd() 告知 OpenGL已經(jīng)沒有頂點(diǎn)了。 這樣, 一個(gè)封閉的三角形就完成了。以順時(shí)針的順序, 我們將繪制出四邊形的背面, 也可以說實(shí)際上我們看到的是它的背面。 物體沿逆時(shí)針順序被繪制的話就會(huì)以正面面向我們。glBegin(GL_TRIANGLES

10、);/ Drawing Using Triangles (四邊形:GL_QUADS,直線:GL_LINES,多邊形,GL_POLYGON)/我們將當(dāng)前顏色設(shè)置為紅色(紅色亮度滿,沒有綠和藍(lán))。 接下來的代碼是第一個(gè)頂點(diǎn)(三角形上面的), 我們將以紅色作為當(dāng)前顏色來進(jìn)行繪制。 從現(xiàn)在開始如果我們不改變當(dāng)前顏色, 那么繪制什么都將是紅色的。glColor3f(1.0f,0.0f,0.0f);/ Set The Color To RedglVertex3f( 0.0f, 1.0f, 0.0f);/ TopglVertex3f(-1.0f,-1.0f, 0.0f);/ Bottom LeftglVer

11、tex3f( 1.0f,-1.0f, 0.0f);/ Bottom RightglEnd();/ Finished Drawing The Triangle參考資料:OpenGL Tutorial(第1-4課)中文版原著 Jeff Molofee (NeHe) neheconnect.ab.ca譯著 江超宇 (Aman JIANG) http:/www.AmanPChaoyu_JIANG Aman_JIANGQQ: 15852673附件: 日期:2022-1-16 19:19:12作者信息:姓名:張沈鵬職業(yè):電子科技大學(xué)生物醫(yī)學(xué)工程大二(05年)電子郵箱:zsp747QQ:375995667(不常用)目前的打算:深入學(xué)習(xí)C+,并想學(xué)一學(xué)XUL,XPCOM,wxWidgets之類跨平臺(tái)的編程技術(shù),同時(shí)研究一下zlib,sqlite之類C、C常用、實(shí)用開源庫(kù)的用法,學(xué)習(xí)通過MPC或mplayer播放電影,最后在這些的基礎(chǔ)之上寫一個(gè)通過電影+字幕學(xué)習(xí)英語(yǔ)的軟件,其形式大概類似于我愛背單詞CCTV-6的動(dòng)感英語(yǔ)。希望有志同道合的人與我一起學(xué)習(xí),共同進(jìn)步;也希望有高手可以在前行途中指點(diǎn)迷津。我想可以

溫馨提示

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

評(píng)論

0/150

提交評(píng)論