版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、皮球运动动画一、 设计方案圆皮球从某竖直高度以横向速度抛出,落地,弹起,最终静止。设弹起后所能上升的高度为上一次最大高度的4/5,实现运动轨迹动画。 整个设计包括两个方面,一是掌握动画的基本原理,二是圆的绘制。动画是将静止的画面变为动态的艺术。实现由静止到动态,主要是靠人眼的视觉残留效应。利用人的这种视觉生理特性可制作出具有高度想象力和表现力的动画影片。 动画中的皮球要用到中点画圆算法画圆, void MidCircle(int x0, int y0, int r)定义圆心的坐标和圆半径,用mLight.Ir, mLight.Ig, mLight.Ib来定义圆的颜色,glClearColor定
2、义显示框的背景颜色,int cx=100,cy=300,cr=20定义圆开始运动时的水平位置,垂直高度和体积大小,glClearColor定义显示框的背景颜色,int windowswidth = 1000,windowshight = 500定义显示框的宽度和高度。 void Init()用来初始化,void myDisplay()用来显示,glLoadIdentity()为加载身份,void RenderScene(void)为渲染现场,void TimerFunction(int value)为计时器功能。二、 程序流程图floatmo;returnmColor;mColor.Ir=Ka
3、Ia+mLight.Ir*Kd*theta+mLight.Ir*Ks*pow(alpha,n);alpha<0alpha=H.fx*N.fx+H.fy*N.fy+H.fx*N.fz;theta<0VectorN;d+=deltax;NOglVertex2i(x+x0,y+y0);d<0glEnd();x<yintx,y,deltax,deltay,d;mColor=Phong(x0,y0,r,i+x0,x+y0);WHILEmColor=Phong(x0,y0,r,i+x0,y+y0);i+i<=yi=-yi+i<=xi=-xintx,y,deltax,de
4、ltay,d;glClear(GL_COLOR_BUFFER_BIT);glViewport(0,0,(GLsizei)w,(GLsizei)h);glClear(GL_COLOR_BUFFER_BIT);flag=1;YESt=sqrt(2*h/g);Multiflag=1cy-cr>0&&cx+cr<windowswidth&&up=0h>1floatt=0,vv,s,hv;return0;glutInit(&argc,argv);三、程序清单#include <GL/glut.h>#include <stdio.
5、h>#include <stdlib.h>#include <math.h>#define NO_LIGHT 1#define LIGHT 2bool bLight = false;struct Vectorfloat fx, fy, fz;struct Colorfloat Ir, Ig, Ib;/*定义皮球的颜色*/;float KaIa;float Kd, n;Vector H,light;Color mLight, mColor;int cx=100,cy=300,cr=20;/*定义皮球开始运动时的水平位置,下落高度和体积大小*/int windowsw
6、idth = 1000,windowshight = 500;/*定义显示框的宽度和高度*/int xstep=0,ystep=0,flag=10,up=0;float vh =4,g=9.8,h=cy;void Init()float mo;Vector eye;mLight.Ir = 200;mLight.Ig =20;mLight.Ib =200;/*定义皮球的颜色*/KaIa=100;Kd = 0.7;n = 20;light.fx=0.10;light.fy=0.50;light.fz = sqrt(1-(light.fx*light.fx)-(light.fy*light.fy);
7、eye.fx=1;eye.fy=0;eye.fz=1;H.fx=light.fx+eye.fx;H.fy=light.fy+eye.fy;H.fz=light.fz+eye.fz;mo=sqrt(H.fx*H.fx+H.fy*H.fy+H.fz*H.fz);H.fx=(H.fx/mo);H.fy=(H.fy/mo);H.fz=(H.fz/mo);H.fx=(H.fx/mo);H.fy=(H.fy/mo);H.fz=(H.fz/mo);glClearColor(1.0, 1.0, 1.0, 0.0);glShadeModel(GL_SMOOTH);Color Phong(int x0, int
8、y0, int r, int x, int y)Vector N;float z,alpha,theta,Ks;Ks=1.0-Kd;z=sqrt(float)(r*r-(x-x0)*(x-x0)-(y-y0)*(y-y0);N.fx=(x-x0)*1.0/r;N.fy=(y-y0)*1.0/r;N.fz = z*1.0/r;theta = N.fx * light.fx + N.fy * light.fy + N.fz * light.fz;if(theta<0)theta=0;alpha=H.fx*N.fx+H.fy*N.fy+H.fx*N.fz;if(alpha<0)alpha
9、=0;mColor.Ir=KaIa+mLight.Ir*Kd*theta+mLight.Ir*Ks*pow(alpha,n);mColor.Ig=KaIa+mLight.Ig*Kd*theta+mLight.Ig*Ks*pow(alpha,n);mColor.Ib=KaIa+mLight.Ib*Kd*theta+mLight.Ib*Ks*pow(alpha,n);return mColor;void MidCircle(int x0, int y0, int r) /*中点画圆算法定义圆的圆心坐标和半径*/int x,y,deltax,deltay,d;x = 0;y = r;deltax =
10、 5;deltay = 5-r-r;d = 1-r;glColor3f (1.0f, 1.0f, 1.0f); glBegin(GL_POINTS);glVertex2i (x+x0,y+y0);glVertex2i (-x+x0,y+y0);glVertex2i (-x+x0,-y+y0);glVertex2i (x+x0,-y+y0);glVertex2i (y+y0, x+x0);glVertex2i (y+y0, -x+x0);glVertex2i (-y+y0, -x+x0);glVertex2i (-y+y0, x+x0);while(x<y)if(d<0)d += d
11、eltax;deltax += 2;deltay += 2;x+;elsed += deltay;deltax += 2;deltay += 4;x+;y-;glVertex2i (x+x0,y+y0);glVertex2i (-x+x0,y+y0);glVertex2i (-x+x0,-y+y0);glVertex2i (x+x0,-y+y0);glVertex2i (y+y0, x+x0);glVertex2i (y+y0, -x+x0);glVertex2i (-y+y0, -x+x0);glVertex2i (-y+y0, x+x0);glEnd();void MidCircleLig
12、ht(int x0, int y0, int r)int x,y,deltax,deltay,d;x = 0;y = r;deltax = 3;deltay = 5-r-r;d = 1-r;int i=0; glBegin(GL_POINTS);for( i=-x;i<=x;i+)mColor=Phong(x0,y0,r,i+x0,y+y0);glColor3ub (mColor.Ir, mColor.Ig, mColor.Ib);glVertex2i (i+x0,y+y0);glColor3ub (mColor.Ir, mColor.Ig, mColor.Ib);glVertex2i
13、(i+x0,-y+y0);for(i=-y;i<=y;i+)mColor=Phong(x0,y0,r,i+x0,x+y0);glColor3ub (mColor.Ir, mColor.Ig, mColor.Ib); glVertex2i (i+x0,x+y0);glColor3ub (mColor.Ir, mColor.Ig, mColor.Ib); glVertex2i (i+x0,-x+y0);while(x<y)if(d<0)d += deltax;deltax += 2;deltay += 2;x+;elsed += deltay;deltax += 2;deltay
14、 += 4;x+;y-;for(i=-x;i<=x;i+)mColor=Phong(x0,y0,r,i+x0,y+y0);glColor3ub (mColor.Ir, mColor.Ig, mColor.Ib); glVertex2i (i+x0,y+y0);glColor3ub (mColor.Ir, mColor.Ig, mColor.Ib); glVertex2i (i+x0,-y+y0);for(i=-y;i<=y;i+)mColor=Phong(x0,y0,r,i+x0,x+y0);glColor3ub (mColor.Ir, mColor.Ig, mColor.Ib);
15、 glVertex2i (i+x0,x+y0);glColor3ub (mColor.Ir, mColor.Ig, mColor.Ib); glVertex2i (i+x0,-x+y0);glEnd();void myDisplay() /*用此函数来显示*/glClear(GL_COLOR_BUFFER_BIT);glColor3f (0.0f, 0.0f, 1.0f); MidCircleLight(cx, cy, cr);glFlush();void Reshape(int w, int h) /*加载身份*/glViewport(0, 0, (GLsizei) w, (GLsizei)
16、 h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h);void RenderScene(void) /*渲染现场*/glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0f, 0.0f, 0.0f);/*清空命令缓冲区并交换帧缓存*/glutSwapBuffers();void TimerFunction(int value) /*定义计时器功能*/*处理到达窗口边界的球形,使之反弹*/float t=0,vv,s,hv;i
17、f (h>1)if(cy-cr>0 && cx+cr<windowswidth && up = 0)t =sqrt(2*h/g);vv = g*t/5;/*hv = 0.5*g*g*t; s= vh*t;*/cx += vh;cy -= vv;else if(cy-cr<=0)flag = 1;up =1 ;if(flag = 1)h=4.0/5.0*h;flag = 0 ;printf("%d,%d,%d,%dn",up,flag,h,cy-cr);if(cy-cr<=h && up = 1)t
18、 = sqrt(2*h/g);vv = sqrt(2*g*h)/8;/*hv= vv*t - 0.5*g*t*t; s = vh *t;*/cy +=vv;cx +=vh;else if(cy-cr>=h)up = 0 ;/*用新坐标重新绘图*/ glutPostRedisplay();glutDisplayFunc(myDisplay);glutTimerFunc(33,TimerFunction, 1);int main(int argc, char *argv)glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(100, 100);glutInitWindowSize(windowswidth,windowshight );glutCreateWindow("Ball bouncing");Init();glutDisplayFunc(RenderScene);glutTimerFunc(33, TimerFunction, 1);glutReshapeFunc(Reshape);glut
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年装饰装修施工员考试题库(附答案)
- 2025上半年教师资格考试(高中生物)新版试卷真题附答案
- 2025下半年幼儿园教师资格证考试《综合素质》真题及参考答案
- 氢氟醚:绿色高效的氟化解决方案
- 2026年【道路运输企业主要负责人与安全生产管理人员】考试题及答案
- 2026年《新闻记者职业资格》(全科)模拟真题及答案深度解析
- 2026年直辖市检察院入额专项试题含答案
- 2026下半年高中地理教资面试地形
- 中国AI创新力量
- 播音主持职业生涯规划
- 2026年三级公立医院绩效考核指标分析报告
- 物业服务履约质量评价方案
- 光明区2025广东深圳市光明区科技创新服务中心博士后招聘笔试历年参考题库典型考点附带答案详解
- 学礼仪懂尊重做文明小学生-小学主题班会课件
- 高级机工见习记录薄填写
- 中国创新药械多元支付白皮书2026
- 2025年医院普外科岗招聘笔试题目(附答案)
- 第四单元跨学科实践活动3:水质检测及净水器的制作课件2025-2026学年九年级化学人教版上册
- 学校后勤外包合同
- (广东二模)广东省2026年4月高三高考模拟测试(二)数学试卷(含标准答案及解析)
- 茅坝镇行政审批工作制度
评论
0/150
提交评论