资源简介

这是我的虚拟现实技术课大作业,用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.embed.manifest

     文件        472  2009-12-11 05:28  net\Dot-Net Under Gravity\Debug\Dot-Net Under Gravity.exe.embed.manifest.res

     文件        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个文件信息

评论

共有 条评论