资源简介
OpenGL编程实现绘制房子,树,月亮,3D,可以进行旋转
代码片段和文件信息
#include
#include
#include
#include
#include
//---------------喷泉相关------------------------------------
struct particle
{
float t; // 粒子的寿命
float v; // 粒子的运动速度
float d; // 粒子的运动方向
float x y z; // 粒子的位置坐标
float xd zd; // X 和 Z 方向上的增量
char type; // 粒子的状态(移动或淡化)
float a; // 粒子淡化的 alpha 值
struct particle *next *prev;
};
struct particle *fn=NULL; /* Fountains 链表结构*/
int timep=17;
//--------------------------------------------------------------------
float flag=1.0;
GLfloat theta=3.1415*0.2fai=3.1415*0.7;
GLfloat P0X=120.0*sin(theta)*sin(fai)P0Y=120*cos(fai)P0Z=120.0*cos(theta)*sin(fai);
int windowwwindowh; //窗口的宽和高
static GLuint texName; //纹理组的名称
//依序为月亮、侧面、地面
GLuint drawwalllistmoonlistrooflisttreeliststoolliststartList; //贴环境纹理的显示列表
GLUquadricObj *qobj;
//------------------------------------------------------------
GLfloat ctrlpoints[4][4][3];
GLfloat texpts[2][2][2] = {{{0.7 0.7} {0.7 1}}
{{1 0.7} {1 1}}};
//-----------------------喷泉相关-----------------------------
void AddParticles()
{
struct particle *tempp;
int i;
for (i=0; i<15; i++)
{
tempp = (struct particle *)malloc(sizeof(struct particle));
if (fn) fn->prev = tempp;
tempp->next = fn;
fn = tempp;
tempp->t = -9.9;
tempp->v = (float)(rand() % 200000)/100000+1; // 速度
tempp->d = (float)(rand() % 400)/100-2; // 方向角度
// 开始运动的坐标
tempp->x = 0;
tempp->y = 0;
tempp->z = i*2;
tempp->xd = cos((tempp->d*3.14159)/180)*tempp->v/4;
tempp->zd = sin((tempp->d*3.14159)/180)*tempp->v;
tempp->type = 0;
tempp->a = 1;
}
}
// 移动粒子
void MoveParticles()
{
struct particle *tempp;
{
tempp = fn;
while (tempp)
{
if (tempp->type == 0) // 如果粒子是运动的
{
tempp->x += tempp->xd;
tempp->z += tempp->zd;
tempp->y = -(9.8*(tempp->t*tempp->t/4))/2+122.5; // 计算高度
tempp->t += 0.1; // 寿命递增
if (tempp->y < 0) tempp->type = 1; // 如果粒子落到地上,则粒子淡化
}
else // 粒子落到地上
{
tempp->y = -(9.8*(tempp->t*tempp->t/4))/2+122.5;
}
tempp = tempp->next; //进行下一个粒子的计算
}
}
}
// 删除粒子
void DeleteParticles()
{
struct particle *tempp *temp1;
{
tempp = fn;
while (tempp)
{
if ((tempp->type == 1) && (tempp->a <= 0)) // 粒子死亡
{
// 删除粒子
temp1 = tempp->prev;
tempp->prev->next = tempp->next;
if (tempp->next) tempp->next->prev = temp1;
free(tempp);
tempp = temp1;
}
tempp = tempp->next;
}
}
}
void timf(int value)
{
glutPostRedisplay();
glutTimerFunc(timep timf 0);
}
//-------------------------------------------------------------
void readimage(char
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 196664 2005-06-12 17:52 source code\door.bmp
文件 196664 2005-06-13 00:05 source code\floor.bmp
文件 196664 2005-06-12 15:10 source code\moon.bmp
文件 20534 2005-06-18 23:05 source code\Pond.cpp
文件 49208 2005-06-12 16:34 source code\roof.bmp
文件 49208 2005-06-12 19:05 source code\starlow.bmp
..A.SH. 21504 2005-06-18 23:06 source code\Thumbs.db
文件 227071 2007-04-11 16:16 月色.pdf
目录 0 2005-06-18 23:06 source code
----------- --------- ---------- ----- ----
957735 10
相关资源
- 武大遥感院复试题笔试+机试
- 基于OpenGL的贝塞尔曲线算法的实现
- zw_麻省理工学院公开课:计算机科学
- 一个3d 飞机模型 可用opengl读取
- 基于openGL、pygame增强现实的视频实现
- 东北大学软件学院计算机网络平时测
- 东北大学Linux实验报告及代码sk.zip
- 山东大学2011-2020软件学院软件工程专
- Opengl 开发库, 动态链接库文件,op
- 重庆大学软件学院多媒体技术实验二
- 医院综合布线解决方案
- 山大软件学院限选课区块链考试题回
- OpenGL战斗机飞行实现
- 电影院售票管理系统
- 中科大软院软件测试4
- VS2008CWinpcap网络嗅探器中科院课设.r
- 朝阳医院2018年销售数据.xlsx
- 中国计量学院 数字逻辑电路 期末试题
- Opengl-光照球体
- OpenGL法向量计算
- [MIT][计算机科学及编程导论][6.00][课程
- 东北大学软件学院BB平台操作系统截至
- 医院完整版08.zip
- GLUT库(glut.h、glut32.dll、glut32.lib)
- 东北大学软件学院软件测试期末复习
- 飞飞cms,瑞安电影城ruiandy.com后台资源
- 东北大学计算机学院 计算机组成原理
- opengl的鼠标画线,圆,矩形,还有个
- 2018年北大前沿交叉研究院大数据中心
- 医院药品库存数据库设计
评论
共有 条评论