資源簡介
這是我的虛擬現實技術課大作業,用OpenGL和VS2005做的,glut庫的各種基本調用都涉及到了,里面有很詳細的原理說明。對初學OpenGL者是個很好的例子。
PS: 北航的同學還是乖乖自己寫論文吧,畢竟每年真正做出來演示程序的同學是很少的,要是直接拿我這個來交作業,老師說你是抄襲的就不好了。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#define?GRID_WIDTH 26 //?網格寬度
#define?GRID_HEIGHT 21 //?網格高度
#define?GRID_EDGE 8.0 //?彈簧原長
#define?GRID_K 0.5 //?彈簧勁度系數
#define?GRID_DAMP 0.003 //?彈簧阻尼
typedef?struct //?頂點結構
{
float?x?y?z; //?頂點坐標
float?vx?vy?vz; //?頂點運動速度
int?fixed;
}VERTEX;
typedef?struct //?力結構
{
float?fx?fy?fz; //?力在3個方向的分力
}FORCE;
unsigned?char?btnState; //?鼠標狀態
int?oldx?oldy;
float?theta; //?旋轉角度
float?axis[3]; //?旋轉軸
float?lastPos[3]?curPos[3]; //?鼠標上次和當前坐標(映射到單位半球面)
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}; //?上一次轉換矩陣
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}; //?光源坐標
float?lightAmbient[]?=?{1.0?1.0?1.0?1.0}; //?環境光
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}; //?表面材質
float?eye[3]?=?{0.0?-100.0?300.0}; //?視點
float?at[3]?=?{0.0?-100.0?200.0}; //?觀察點
float?up[3]?=?{0.0?1.0?0.0}; //?向上向量
float?defaultGravity[4]?=?{0.0?-0.2?0.0?1.0};//?默認重力
float?gravity[4]; //?重力
VERTEX?vertex[GRID_HEIGHT][GRID_WIDTH]; //?頂點矩陣
VERTEX?vertexBack[GRID_HEIGHT][GRID_WIDTH]; //?后備頂點矩陣
int?GridFlag; //?控制網格/紋理顯示
int?wndWidth?=?600; //?窗口寬度
int?wndHeight?=?600; //?窗口高度
void??Init(); //?初始化
void??Display(); //?窗口重繪函數
void??Reshape(int?newWidth?int?newHeight); //?窗口大小函數
void??Motion(int?x?int?y); //?鼠標移動函數
void??Mouse(int?btn?int?state?int?x?int?y); //?鼠標點擊函數
void??Keyboard(unsigned?char?key?int?x?int?y);//?鍵盤函數
void??Idle(); //?空閑函數
void??GetForce(VERTEX?*v1?VERTEX?*v2?FORCE?*force); //?計算作用力
int???Hemishere(int?x?int?y?int?dfloat?v[3]);//?平面坐標映射為半球面坐標
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
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????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??基于彈簧-質點系統的窗簾運動實時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個文件信息
評論
共有 條評論