ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:139.58KB ,
资源ID:18890463      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18890463.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言OpenGL及大数阶乘文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言OpenGL及大数阶乘文档格式.docx

1、做出九个旋转图形,利用光影效果制作不同旋转。1.3 开发工具Code blocks1.4 应用平台Windows 2000/XP 32位2 详细设计2.1 程序结构头文件,静态变量,函数定义,函数调用,主函数。循环型数据结构。2.2 主要功能绘出圆环,茶壶,球,正八面体,线框和实体,还有线框立方体以及自动旋转. 改变各函数的不同数据,可以改变图形形状,图形颜色,图形旋转等功能。原理:glTranslated函数确定每个图形位置;glColor3d(0.6,0.3,0.7);/设置绘图颜色图函数,绘图函数:glPushMatrix();/将当前矩阵压入堆栈 glTranslated(-2.4,3

2、.6,-6);/坐标位置 glRotated(0,1,0,0);/旋转矩阵 glRotated(a,1,0,1); glutWireTorus(0.2,0.8,slices,stacks);/线框圆环体 glPopMatrix();/将当前矩阵弹出堆栈光影响效果函数:const GLfloat light_ambient = 0.0f, 0.0f, 0.0f, 1.0f ;/环境光源const GLfloat light_diffuse ;/漫发射光const GLfloat light_specular/反射高光const GLfloat light_position数据结构:循环型stat

3、ic void key(unsigned char key, int x, int y) switch (key) case 27 : case q: exit(0); break;+ slices+; stacks+;- if (slices3 & stacks3) slices-; stacks-; glutPostRedisplay();2.3 函数实现调用多个绘图函数,画出九个自动旋转图形。 改变各函数的不同数据,可以改变图形形状,图形颜色,图形旋转等功能。绘图函数: 旋转自增:const GLfloat light_diffuse = 1.0f, 1.0f, 1.0f, 1.0f ;

4、const GLfloat light_specular = 1.0f, 1.0f, 1.0f, 1.0f ;/反射高光const GLfloat light_position = 2.0f, 5.0f, 5.0f, 0.0f ;2.4 开发日志2013-6-13(农历二一三年五月初六) 16:42程序修改完.3 程序调试及运行3.1 程序运行结果九个不同图形自动旋转.3.2 程序使用说明使用前必须将下载GLUT 并放在指定位置3.3 程序开发总结注意函数调用,合理安排每个图形的位置及大小,否则会出现图形重叠,交叉.合理安排图形旋转.谨慎处理数据。4 附件(源程序)/* * GLUT Shap

5、es Demo * * Written by Nigel Stewart November 2003 * This program is test harness for the sphere, cone * and torus shapes in GLUT. * Spinning wireframe and smooth shaded shapes are * displayed until the ESC or q key is pressed. The * number of geometry stacks and slices can be adjusted * using the +

6、 and - keys. */#include#ifdef _APPLE_#include #elseGL/glut.h#endifstdlib.hstatic int slices = 8;static int stacks = 8;/* GLUT callback Handlers */static void resize(int width, int height) const float ar = (float) width / (float) height; glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION);/指

7、定投影矩阵定义修剪空间 glLoadIdentity();/加载单位矩阵 glFrustum(-ar, ar, -1.0, 2.0, 2.0, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity() ;static void display(void) const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; const double a = t*90.0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3d(0.6,0.3

8、,0.7);/设置绘图颜色 glPushMatrix(); glTranslated(0,3.6,-6); glutSolidTorus(0.2,0.8,slices,stacks); glTranslated(2.4,3.6,-6); glutWireCube(1); glTranslated(-2.4,1.2,-6); glutWireTeapot(1); glTranslated(0,1.2,-6); glRotated(60,1,0,0); glRotated(a,2,0,1); glutWireOctahedron(); glTranslated(2.4,1.2,-6); glutW

9、ireSphere(1,slices,stacks); glTranslated(-2.4,-1.2,-6); glutSolidTeapot(1); glTranslated(0,-1,-6); glutSolidOctahedron(); glTranslated(2.4,-1.2,-6); glutSolidSphere(1,slices,stacks); glutSwapBuffers();static void idle(void)const GLfloat mat_ambient = 0.7f, 0.7f, 0.7f, 1.0f ;const GLfloat mat_diffuse

10、 = 0.8f, 0.8f, 0.8f, 1.0f ;const GLfloat mat_specular = 1.0f, 1.0f, 1.0f, 1.0f ;const GLfloat high_shininess = 100.0f ;/* Program entry point */int main(int argc, char *argv) glutInit(&argc, argv); glutInitWindowSize(700,600);/视窗大小 glutInitWindowPosition(10,10);/视窗位置 glutInitDisplayMode(GLUT_RGB | G

11、LUT_DOUBLE | GLUT_DEPTH); glutCreateWindow(GLUT Shapes); glutReshapeFunc(resize); glutDisplayFunc(display); glutKeyboardFunc(key); glutIdleFunc(idle); glClearColor(1,1,1,1); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glEnable(GL_LIGHT0); glEnable(GL_N

12、ORMALIZE); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glMaterialfv(GL_FRONT, GL_AMBIENT, ma

13、t_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); glutMainLoop(); return EXIT_SUCCESS;编写大数阶乘源码。1.1 设计题目编写常用算法的演示程序大数阶乘源码Codeblocks程序有三大部分组成,一部分是主函数,另两部分是另外两种函数。主函数负责将n输入,并通过对另外两个函数的调用实

14、现对n的阶乘的计算。在计算大数阶乘的过程中,乘数一般不是一位数字,计算的时候可以稍作变通,将上次的进位加上本次的积得到数P,将P除以10的余数做为结果的本位,将P除以10的商作为进位。当被乘数的所有数字都和乘数相乘完毕后,将进位C放在积的最前面即可。根据此原理编写函数。一个m位数乘以n位数,其结果为m+n-1,或者m+n位,所以需首先定义一个至少m+n个元素的数组,并置前n位为0。计算一个m位的被乘数乘以一个n位的整数k,积仍存储于数组avoid mul(unsigned char a,unsigned long k,int m,int n) int i; unsigned long p; u

15、nsigned long c=0; for ( i=m+n-1; i=n;i-) p= ai * k +c; ai=(unsigned char)( p % 10); c= p / 10; while (c0) ai=(unsigned char)( c % 10); i-; c /=10;int main(int argc, char* argv) unsigned char a=0,0,0,2,3,4,5; mul(a,678,4,3); i=0; while ( ai=0) i+; for (;i4+3;i+) printf(%c,ai+0); /由于数ai(0=ai =9)对应的可打印

16、字任符为0到9,所以显示为i0 return 0; 从上面的例子可知,在做乘法之前,必须为数组保留足够的空间。具体到计算n!的阶乘时,必须准备一个能容纳的n!的所有位数的数组或者内存块。即数组采有静态分配或者动态分配。前者代码简洁,但只适应于n小于一个固定的值,后者灵活性强,只要有足够的内存,可计算任意n的阶乘,我们这里讨论后一种情况,如何分配一块大小合适的内存。n!有多少位数呢?我们给出一个近似的上限值: (n+1)/2的n次方,下面是推导过程。Caes 1: n是奇数,则中间的那个数mid= (n+1)/2, 除了这个数外,我们可以将1到n之间的数分成n/2组,每组的两个数为 mid-i和

17、mid+i (i=1到mid-1),如1,2,3,4,5,6,7 可以分为数4,和3对数,它们是(3,5),(2,6)和(1,7),容易知道,每对数的积都于小mid*mid,故n!小于(n+1)/2 的n的次方。Case 2: n 是个偶数,则中间的两个数(n1)/2和(n+1)/2, 我们将(n+1)/2记做mid,则其它的几对数是(mid-2,mid+1),(mid-3)(mid+2)等等,容易看出,n!小于mid 的n次方。由以上两种情况可知,对于任意大于1的正整数n, n!12时,数据会溢出,如果改成定义为double型,n170时,数据也会溢出),所以要用数组储存阶乘得到的数据。#i

18、nclude stdio.hstdlib.hmemory.hmath.hmalloc.hvoid calcFac(unsigned long n) unsigned long i,j,head,tail; int blkLen=(int)(n*log10(n+1)/2); /计算n!有数数字的个数 blkLen+=4; /保险起见,多加4位 if (n=head;j-) unsigned long prod=arrj*i+c; arrj=(char)(prod%10); c= prod /10; head-; arrhead=(char)(c % 10); c/=10;= for (i=head;=tail;,arri+0n free(arr);void testCalcFac() int n; while (1)n=? scanf(%ld,&n); if (n=0) calcFac(n); testCalcFac();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1