欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    图形学-弹跳的球体(共11页).doc

    • 资源ID:30233795       资源大小:106KB        全文页数:11页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图形学-弹跳的球体(共11页).doc

    精选优质文档-倾情为你奉上一、设计内容与设计要求1设计内容:弹跳的球体:一个着色的三维球体,沿着一条给定的轨道(正弦衰弱曲线)不断弹跳并同时翻滚,要求按ESC停止转动翻滚按加快弹跳速度,按减慢弹跳速度。2设计要求:在屏幕上不断地连续弹跳并同时翻滚,按加快移动速度,按减慢移动速度。3.算法提示:可用绘制三维曲面(规则曲面、参数方程为:x=Rsin()cos(), y=Rsin()sin(), z=Rcos(),0180,0360)来设计球体的形状,用轴测图将它绘制到屏幕上,并对球面上的小方格进行填充,选择510个不同方位的球体图形用getimage()命令将它们的图象保存;对以后路径上的图形只需用命令Putimage()调出即可。其轨迹方程为: z=A|sin(r+)|e-kr r=(x2+y2)1/2。二、进度安排第 3 周 星期一 8:0012:00星期二 8:0012:00 星期三 8:0012:00 星期四 8:0012:00 星期五 8:0012:00第 4 周 星期一 8:0012:00目录专心-专注-专业一、课题的主要功能本课题实现了一个着色的三维球体,沿着一条给定的轨道(正弦衰弱曲线)不断弹跳,控制键为W键和X键,按W键使运动加速,按X键使运动减速。并且着色球体在屏幕上连续不断的按照给定的曲线函数跳动,且三维球体自身也要进行翻滚。二、课题的功能模块的划分跳动的球体keyboard(int )convey(void)sphere(float,float,float)该程序主要分为三个部分:1、键盘控制部分:该部分主要是实现对键盘控制的操作,按W键加快三维球体的运动速度,按X键能减慢球体的运动速度。2、球体运动轨迹设计部分:主要是确定球体在屏幕上的运动轨迹。3、球体绘制部分:该部分主要是绘制一个着色的三维球体,并控制其自身翻滚所沿其经纬度设定。三、主要功能的实现1、功能实现该程序的主要功能我已基本实现,三维球体在屏幕上按照程序给定的正弦衰弱曲线轨道进行跳动并翻转,通过球体经纬度和球体绿色部分的旋转就可以看出来。当我们从键盘上输入W时球体就会加快运动,并显出字符PAGEUP;当我们从键盘上输入X时球体就会减慢运动,并显出字符PAGEDOWN。2、流程图键盘控制部分:kbhit()ch=getch() Y ch W X Nspeed=1000-t2*50speed=1000+t4*100Sleep(speed)四、程序调试五、总结为了这个程序,我真的发了很多心思,其中有很多问题是我不会的,我需要花时间去学习和编程,中间会出现问题,比如在怎样在二维平面上绘制三维球体、球体颜色的填充、球体自身的翻滚等,如果想认真完成这次课设,这些是需要我一步一步解决的。实际上,在弄懂了程序功能原理的基础上,我们的时间是充余的,做一个粗糙的程序体出来应该是游刃有余的,如果说创新对于我们来说是件难事,那改良总是有可能的。就像这次我做这个课设时,为了解决问题我仔细的研究老师给的那几个参考例子,并且也借鉴了书上的一些功能函数。对于课程设计,总的一句话就是要动手,只有自己动手了,书本是那个学的知识才能融会贯通,才能应用与实际。这个程序所需要的一些基本功能我已经实现啦,但是做工还是有点粗糙,因为自己的能力水平也有限,而且时间有限,我就只能做到这样啦。 到了大四,可以说经过了无数次实验和课设,给我最深的回忆是每次自己独立写出程序的那种快感,这种感觉是不编程人无法体会的,我很庆幸过了四年我这点还没有丢失掉,或许这是我这大学四年留下的最美好的回忆。六、附件#include "stdio.h"#include "conio.h"#include<graphics.h> /*图形系统头文件*/#include<math.h>/#include<stdlib.h>#include "windows.h"#define PI 3.14159long int speed=1000;int A=50;float w=0.2;static double yy=0.0,xx=0.0;char ch;void convey() /*轨迹方程函数*/ xx=xx+10.0; yy=200-A*sin(w*xx); if(xx>=500&&yy>=400) xx=10.0;yy=0.0; /*设置球体运动的最大坐标*/ return; void quittime01(int t2) /*按w键加速球体运动*/ printf("PAGEUPn"); speed=1000-t2*50; Sleep(speed); return; void quittime02(int t4) /*按x键减速球体运动*/ printf("PAGEDOWNn");speed=1000+t4*100; Sleep(speed); return; void keyboard(int t1) /*定义判断是否按键控制速度函数*/ if(kbhit() /*判断是否按键*/ ch=getch(); switch(ch) case 'w': quittime01(t1); /*调用quittime01()函数*/ return; case 'x': quittime02(t1); return; default:break; else Sleep(speed);return; void sphere(float R,int alfa,int beta) /*R为球体半径,alfa、beta分别为半径与经纬线的夹角*/ float x4,y4,z4; /*定义旋转变换前点坐标数组*/ float x14,z14; /*定义旋转变换后点坐标数组*/ int i,j,k; float sx4,sy4; int shfill10; /*定义存放了5个顶点坐标序列的数组*/ double yn; double a1,a2,b1,b2,c,d; c=alfa*PI/180.0; /*每次旋转的角度*/ d=beta*PI/180.0; cleardevice(); for(j=0;j<180;j=j+20) a1=j*PI/180.0; a2=(j+20)*PI/180.0; for(i=0;i<360;i=i+20) b1=i*PI/180; b2=(i+20)*PI/180; x0=R*sin(a1)*cos(b1); /*求出图形旋转前点的坐标*/ y0=R*sin(a1)*sin(b1); z0=R*cos(a1); x1=R*sin(a2)*cos(b1); y1=R*sin(a2)*sin(b1); z1=R*cos(a2); x2=R*sin(a2)*cos(b2); y2=R*sin(a2)*sin(b2); z2=R*cos(a2); x3=R*sin(a1)*cos(b2); y3=R*sin(a1)*sin(b2); z3=R*cos(a1); for(k=0;k<4;k+) /*求出图形旋转后点的坐标*/ x1k=xk*cos(c)-yk*sin(c); z1k=-xk*sin(c)*sin(d)-yk*cos(c)*sin(d)+zk*cos(d); sxk=100-x1k+xx; /*将三维坐标转化为屏幕坐标*/ syk=100-z1k+yy; yn=-(x12-x10)*(z13-z11)+(x13-x11)*(z12-z10); if(yn>=0.0) /*对可见部分进行画线,实现消隐*/ moveto(sx0,sy0); lineto(sx1,sy1); lineto(sx2,sy2); lineto(sx3,sy3); lineto(sx0,sy0); shfill0=(int)sx0,shfill1=(int)sy0; shfill2=(int)sx1,shfill3=(int)sy1; shfill4=(int)sx2,shfill5=(int)sy2; shfill6=(int)sx3,shfill7=(int)sy3; shfill8=(int)sx0,shfill9=(int)sy0; if(i=20) /*对一段经曲面进行填充*/ setfillstyle(1,GREEN); else setfillstyle(1,RED); fillpoly(5,shfill); /*用当前颜色填充多边形*/ void main() int gdrive=DETECT,gmode,t; initgraph(&gdrive,&gmode,""); /*初始化图形系统*/ cleardevice(); setcolor(WHITE); /*设置当前画笔颜色为白色*/ sphere(50,80,30); /调用sphere函数 outtextxy(400,20,"Press any key to start!");getch(); for(t=0;t<=45;t+) cleardevice(); sphere(50,t*10,0); keyboard(t); convey(); getch(); closegraph(); /*关闭图形系统*/计算机与通信学院课程设计评分表课题名称: 弹跳的球体 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期:

    注意事项

    本文(图形学-弹跳的球体(共11页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开