-
大小: 821KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-09
- 語言: 其他
- 標(biāo)簽: 北航??虛擬現(xiàn)實(shí)??仿真??OpenGL??
資源簡介
這是我的虛擬現(xiàn)實(shí)技術(shù)課大作業(yè),用OpenGL和VS2005做的,glut庫的各種基本調(diào)用都涉及到了,里面有很詳細(xì)的原理說明。對初學(xué)OpenGL者是個(gè)很好的例子。
PS: 北航的同學(xué)還是乖乖自己寫論文吧,畢竟每年真正做出來演示程序的同學(xué)是很少的,要是直接拿我這個(gè)來交作業(yè),老師說你是抄襲的就不好了。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#define?GRID_WIDTH 26 //?網(wǎng)格寬度
#define?GRID_HEIGHT 21 //?網(wǎng)格高度
#define?GRID_EDGE 8.0 //?彈簧原長
#define?GRID_K 0.5 //?彈簧勁度系數(shù)
#define?GRID_DAMP 0.003 //?彈簧阻尼
typedef?struct //?頂點(diǎn)結(jié)構(gòu)
{
float?x?y?z; //?頂點(diǎn)坐標(biāo)
float?vx?vy?vz; //?頂點(diǎn)運(yùn)動(dòng)速度
int?fixed;
}VERTEX;
typedef?struct //?力結(jié)構(gòu)
{
float?fx?fy?fz; //?力在3個(gè)方向的分力
}FORCE;
unsigned?char?btnState; //?鼠標(biāo)狀態(tài)
int?oldx?oldy;
float?theta; //?旋轉(zhuǎn)角度
float?axis[3]; //?旋轉(zhuǎn)軸
float?lastPos[3]?curPos[3]; //?鼠標(biāo)上次和當(dāng)前坐標(biāo)(映射到單位半球面)
float?lastMatrix[16]?={1.0?0.0?0.0?0.0?0.0?1.0?0.0?0.0?0.0?0.0?1.0?0.0?0.0?0.0?0.0?1.0}; //?上一次轉(zhuǎn)換矩陣
float?lookFromX[16]?={0.0?0.0?1.0?0.0?0.0?1.0?0.0?0.0?-1.0?0.0?0.0?0.0?0.0?0.0?0.0?1.0}; //?X方向正視矩陣
float?lookFromY[16]?={1.0?0.0?0.0?0.0?0.0?0.0?1.0?0.0?0.0?-1.0?0.0?0.0?0.0?0.0?0.0?1.0}; //?Y方向正視矩陣
float?lookFromZ[16]?={1.0?0.0?0.0?0.0?0.0?1.0?0.0?0.0?0.0?0.0?1.0?0.0?0.0?0.0?0.0?1.0}; //?Z方向正視矩陣
float?lightPos[]?=?{0.0-100.0?200.0?1.0}; //?光源坐標(biāo)
float?lightAmbient[]?=?{1.0?1.0?1.0?1.0}; //?環(huán)境光
float?lightDiffuse[]?=?{1.0?1.0?1.0?1.0}; //?漫反射光
float?lightSpecular[]?=?{1.0?1.0?1.0?1.0}; //?鏡面光
float?material[][4]?=?{{0.1?0.1?0.1?1.0}?{0.2?0.4?0.8?1.0}?{0.2?0.6?1.0?0.0}?128.0}; //?表面材質(zhì)
float?eye[3]?=?{0.0?-100.0?300.0}; //?視點(diǎn)
float?at[3]?=?{0.0?-100.0?200.0}; //?觀察點(diǎn)
float?up[3]?=?{0.0?1.0?0.0}; //?向上向量
float?defaultGravity[4]?=?{0.0?-0.2?0.0?1.0};//?默認(rèn)重力
float?gravity[4]; //?重力
VERTEX?vertex[GRID_HEIGHT][GRID_WIDTH]; //?頂點(diǎn)矩陣
VERTEX?vertexBack[GRID_HEIGHT][GRID_WIDTH]; //?后備頂點(diǎn)矩陣
int?GridFlag; //?控制網(wǎng)格/紋理顯示
int?wndWidth?=?600; //?窗口寬度
int?wndHeight?=?600; //?窗口高度
void??Init(); //?初始化
void??Display(); //?窗口重繪函數(shù)
void??Reshape(int?newWidth?int?newHeight); //?窗口大小函數(shù)
void??Motion(int?x?int?y); //?鼠標(biāo)移動(dòng)函數(shù)
void??Mouse(int?btn?int?state?int?x?int?y); //?鼠標(biāo)點(diǎn)擊函數(shù)
void??Keyboard(unsigned?char?key?int?x?int?y);//?鍵盤函數(shù)
void??Idle(); //?空閑函數(shù)
void??GetForce(VERTEX?*v1?VERTEX?*v2?FORCE?*force); //?計(jì)算作用力
int???Hemishere(int?x?int?y?int?dfloat?v[3]);//?平面坐標(biāo)映射為半球面坐標(biāo)
void??GetGravity(float?matrix[16]?float?vector[4]); //?獲取重力
void??DrawQuad(int?x?int?y); //?繪制鴿子
bool??LoadTexture(LPCTSTR?szFileName?GLuint?&TexId); //?載入紋理
GLuint?Texture[1];
void?main(int?argc?char?**argv)
{
glutInit(&argc?argv);
glutInitDisplayMode(GLUT_RGB?|?GLUT_DEPTH?|?GLUT_DOUBLE);
glutInitWindowSize(wndWidth?wndHeight);
glutInitWindowPosition(200?100);
glutCreateWindow(“Grid“);
if?(LoadTexture(_T(“1.bmp“)?Texture[0])?==?FALSE)
printf(“Failed“);
Init();
glutReshapeFunc(Reshape);
glutDisplayFunc(Display);
glutMotionFunc(Motion);
glutMouseFunc(Mouse);
glutKeyboardFunc(Keyboard);
glutIdleFunc(Idle);
glutMain
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????162056??2009-12-20?17:14??net\debug\1.bmp
?????文件??????49152??2009-12-20?17:50??net\debug\Dot-Net?Under?Gravity.exe
?????文件?????453632??2009-12-20?17:50??net\debug\Dot-Net?Under?Gravity.pdb
?????文件??????13877??2009-12-20?17:50??net\Dot-Net?Under?Gravity\3DDotNet.cpp
?????文件??????55710??2009-12-20?17:50??net\Dot-Net?Under?Gravity\Debug\3DDotNet.obj
?????文件???????6398??2009-12-20?17:50??net\Dot-Net?Under?Gravity\Debug\BuildLog.htm
?????文件????????406??2009-12-11?05:28??net\Dot-Net?Under?Gravity\Debug\Dot-Net?Under?Gravity.exe.em
?????文件????????472??2009-12-11?05:28??net\Dot-Net?Under?Gravity\Debug\Dot-Net?Under?Gravity.exe.em
?????文件????????388??2009-12-20?17:50??net\Dot-Net?Under?Gravity\Debug\Dot-Net?Under?Gravity.exe.intermediate.manifest
?????文件????1160252??2009-12-13?15:47??net\Dot-Net?Under?Gravity\Debug\Dot-Net?Under?Gravity.res
?????文件?????????32??2009-12-13?16:53??net\Dot-Net?Under?Gravity\Debug\Dot-Net?Under?Gravity1.res
?????文件?????????67??2009-12-20?17:50??net\Dot-Net?Under?Gravity\Debug\mt.dep
?????文件?????388096??2009-12-20?17:50??net\Dot-Net?Under?Gravity\Debug\vc80.idb
?????文件?????102400??2009-12-20?17:50??net\Dot-Net?Under?Gravity\Debug\vc80.pdb
?????文件????1193512??2009-12-13?15:44??net\Dot-Net?Under?Gravity\Dot-Net?Under?Gravity.aps
?????文件???????1617??2009-12-13?15:44??net\Dot-Net?Under?Gravity\Dot-Net?Under?Gravity.rc
?????文件???????3997??2009-12-16?20:03??net\Dot-Net?Under?Gravity\Dot-Net?Under?Gravity.vcproj
?????文件???????1413??2009-12-20?18:10??net\Dot-Net?Under?Gravity\Dot-Net?Under?Gravity.vcproj.D3NXQ62X.DELL.user
?????文件??????17580??2009-12-13?15:58??net\Dot-Net?Under?Gravity\Dot-Net?Under?Gravity1.aps
?????文件???????1284??2009-12-13?15:58??net\Dot-Net?Under?Gravity\Dot-Net?Under?Gravity1.rc
?????文件????????464??2009-12-13?15:44??net\Dot-Net?Under?Gravity\resource.h
?????文件????????928??2009-12-10?21:59??net\net.sln
????..A..H.?????28672??2009-12-20?18:10??net\net.suo
?????文件?????240128??2010-01-16?18:03??基于彈簧-質(zhì)點(diǎn)系統(tǒng)的窗簾運(yùn)動(dòng)實(shí)時(shí)3D虛擬仿真.doc
?????目錄??????????0??2009-12-20?17:50??net\Dot-Net?Under?Gravity\Debug
?????目錄??????????0??2010-01-13?00:57??net\debug
?????目錄??????????0??2009-12-20?17:50??net\Dot-Net?Under?Gravity
?????目錄??????????0??2009-12-20?18:11??net
-----------?---------??----------?-----??----
??????????????3882533????????????????????28
............此處省略1個(gè)文件信息
評論
共有 條評論