C语言300行-投篮

上传人:文库****9 文档编号:152442783 上传时间:2020-11-23 格式:DOCX 页数:7 大小:13.10KB
返回 下载 相关 举报
C语言300行-投篮_第1页
第1页 / 共7页
C语言300行-投篮_第2页
第2页 / 共7页
C语言300行-投篮_第3页
第3页 / 共7页
C语言300行-投篮_第4页
第4页 / 共7页
C语言300行-投篮_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《C语言300行-投篮》由会员分享,可在线阅读,更多相关《C语言300行-投篮(7页珍藏版)》请在金锄头文库上搜索。

1、#include stdio.h#ifdef _APPLE_#include #else#include #endif#include #include #include #include #include static double a=0;static double b=0.2;static double t=0;static double t1=0;static double v=0;static double i=0;static double m=0;static double n=0;static double p,q,r,r1=1;static void resize(int w

2、idth,int height)/重绘回调函数 const float ar=(float)width/(float)height; glViewport(0,0,width,height);/利用函数glViewport定义视区 glMatrixMode(GL_PROJECTION);/投影矩阵 glLoadIdentity();/ 重置坐标系统,使投影变换复位 glFrustum(-ar,ar,-1.0,1.0,2.0,100.0);/利用函数glFrustum定义修剪区 glMatrixMode(GL_MODELVIEW); glLoadIdentity();static void di

3、splay(void)/显示回调 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);/清除颜色缓冲区和深度缓冲区 t=t+t1*0.0001; glColor3d(1,0.6,0.6);/画图颜色灰红/绘制一个实心球,默认原点在屏幕中心与照相机重合 glPushMatrix(); glTranslated(-3+0.5*cos(a),-0.6+0.5*sin(a),-5); glRotated(0,0,0,0); glutSolidSphere(b,16,16); glPopMatrix(); glColor3d(1,0,0);/画图颜色红/

4、绘制一个实心球,默认原点在屏幕中心与照相机重合 glPushMatrix(); glTranslated(-3+t*cos(a)*v*t1,-0.6+(t*sin(a)*v-45*t*t)*t1,-5); glRotated(0,0,0,0); glutSolidSphere(0.2*r1,16,16); glPopMatrix(); glColor3d(1,1,1);/画图颜色灰/绘制一个线框圆环 glPushMatrix(); glTranslated(m+2.3,n-0.6,-5); glRotated(100,1,0,0); glRotated(7.5,0,1,0); glutWire

5、Torus(0.1*r1,0.6,16,16); glPopMatrix(); if(pow(3-t*cos(a)*v*t1+m+2.3,2)+pow(0.6-(t*sin(a)*v-45*t*t)*t1+n-0.6,2)0.024) t=t-t1*0.0001; r1=3.5; else r1=1; for(p=-3.5,q=0.5;p3.6;p=p+0.5) if(pow(3-t*cos(a)*v*t1+p,2)+pow(0.6-(t*sin(a)*v-45*t*t)*t1+q,2)0.2)r=0.4; else r=0.05; glColor3d(0,0,0);/画图颜色黑 /绘制一个线

6、框圆环 glPushMatrix(); glTranslated(p,q,-5); glRotated(t*5000,0,1,0); glutWireTorus(r,0.15,16,16); glPopMatrix(); for(p=-3.5,q=0;p3.6;p=p+0.5) if(pow(3-t*cos(a)*v*t1+p,2)+pow(0.6-(t*sin(a)*v-45*t*t)*t1+q,2)0.2)r=0.4; else r=0.05; glColor3d(0,0,0);/画图颜色黑 /绘制一个线框圆环 glPushMatrix(); glTranslated(p,q,-5); g

7、lRotated(t*5000,0,1,0); glutWireTorus(r,0.15,16,16); glPopMatrix(); for(p=-3.5,q=1;p3.6;p=p+0.5) if(pow(3-t*cos(a)*v*t1+p,2)+pow(0.6-(t*sin(a)*v-45*t*t)*t1+q,2)0.2)r=0.4; else r=0.05; glColor3d(0,0,0);/画图颜色黑 /绘制一个线框圆环 glPushMatrix(); glTranslated(p,q,-5); glRotated(t*5000,0,1,0); glutWireTorus(r,0.1

8、5,16,16); glPopMatrix(); glutSwapBuffers();/交换缓冲区static void key(unsigned char key, int x, int y)/键盘回调函数 switch(key) case 27:/Esc键的ASCII码为27 case 13:/回车的ASCII码为13 exit(0); break; case 43:/加号的ASCII码为43 if (a0) a=a-0.1; break; case 49:/1的ASCII码为49 v=4; break; case 50:/2的ASCII码为50 v=8; break; case 51:/

9、3的ASCII码为51 v=12; break; case 52:/4的ASCII码为52 v=16; break; case 53:/5的ASCII码为53 v=20; break; case 54:/6的ASCII码为54 v=24; break; case 55:/7的ASCII码为55 v=28; break; case 56:/8的ASCII码为56 v=32; break; case 57:/9的ASCII码为57 v=36; break; case 32:/空格的ASCII码为32 if(t0.1) t1=1; b=0.001; else b=0.2; v=0; t1=0; t=

10、0; m=0; n=0; break; case 97:/a的ASCII码为97 m=m-0.2; break; case 119:/w的ASCII码为119 n=n+0.2; break; case 100:/d的ASCII码为100 m=m+0.2; break; case 115:/s的ASCII码为115 n=n-0.2; break; glutPostRedisplay();/标记当前窗口需要重新绘制static void idle(void)/空闲回调函数 glutPostRedisplay();/标记当前窗口需要重新绘制/定义一个默认的光源的属性值,使用数组来存放光源的颜色值const GLfloat light_ambient = 0.0f, 0.0f, 0.0f, 1.0f ;/光源中环境光的颜色,黑色,第四个分量1.0表示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号