资源简介
这是我的虚拟现实技术课大作业,用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个文件信息
相关资源
- 北航计算机控制大作业一
- 虚拟现实作业
- 北航数理统计期末2015
- 北航研究生矩阵理论期末考题
- 北航计组P2-汇编语言
- 北航自动控制原理考题
- 北航计组P1-Verilog简单部件与状态机
- 北航计组P0-Logisim简单部件与状态机
- 虚拟现实源程序代码虚拟现实代码
- 北航图像处理课程习题与答案
- 常见的vrml,特殊的VRML效果,以及VR
- 机器视觉习题
- 北航编译原理课程设计PL0文法代码及
- 军事仿真虚拟现实系统制作方案
- 北航研究生机器学习2013年考试试题
- 北航计组代码三p4--Verilog单周期
- 北航计组实验代码三p4--Verilog单周期
- 北航计组实验代码和电路二Logisim单周
- 北航计组实验二p3--Logisim单周期
- 北航计组实验代码、电路一
- 961北航考研全部资料.zip
- 北航历年机试题自做代码06-18
- vrml 写的学生宿舍
- 北航研究生上机考试真题整理(2006
- 北航社会计算作业答案
- 基于虚拟现实头戴式显示器的具有驾
- 北航 RTI,BH RTI
- 北航软件工程991复试资料.zip
- 北航计算机组成实验Project5
- 北航数理统计大作业课程论文.doc版
评论
共有 条评论