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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(opengl图形填充正余弦曲线绘制字符输出C++电子教案.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

opengl图形填充正余弦曲线绘制字符输出C++电子教案.docx

1、opengl图形填充正余弦曲线绘制字符输出C+电子教案opengl图形填充、正余弦曲线绘制、字符输出(C+)实验五1、 实验目的和要求了解且掌握图形填充、曲线绘制和字符输出等技术。2、 实验内容1) 用OpenGL实现用黑白相间的棋盘图案填充多边形2) 用OpenGL分别用点和折线模式实现正弦和余弦的绘制3) 用OpenGL在屏幕上输出”OpenGL”字样3、 实验步骤1) 相关算法及原理描述1 图案填充多边形多边形模式设置函数为:void glPolygonMode(GLenum face,GLenum mode);控制多边形指定面的绘制模式。参数face为GL_FRONT、GL_BACK或

2、GL_FRONT_AND_BACK;参数mode为 GL_POINT、GL_LINE或GL_FILL,分别表示绘制轮廓点式多边形、轮廓线式多边形或全填充式多边形。缺省时,绘制的是正反面全填充式多边形。设置图案填充式多边形函数为:void glPolygonStipple(const GLubyte *mask);为当前多边形定义填充图案模式。参数mask是一个指向32x32位图的指针。与虚点线绘制的道理一样,某位为1时绘制,为0时什么也不绘。注意,在调用这个函数前,必须先启动一下,即用glEnable(GL_POLYGON_STIPPLE);不用时用glDisable(GL_POLYGON_S

3、TIPPLE) 关闭。2 正弦和余弦曲线的绘制线的绘制需要用到GL_LINES模式,它指定在glBegin/glEnd函数对中,从第一个点开始,两两构成一条直线段。绘制正余弦曲线的话,只需要编写一段循环语句,指定绘制路线,设置不同线型。3 在屏幕上显示字符在OpenGL实用程序工具包中包含了一些预定义的字符库,用来显示点阵和矢量字符。函数 void glutBitmapCharacter(void *font,int character); 显示一个GLUT位图字符。其中font是GLUT符号常数,指定点阵字库。参数character采用ASCII编码的形式指定要显示的字符。用函数glutBi

4、tmapCharacter 显示字符时,是将当前的光栅位置作为字符的左下角点,函数执行后,点阵字符装入刷新缓冲存储器,当前的光栅位置会在x坐标方向上获得一个字符宽度的增量,这样可以较轻易的生成一个水平方向的字符串。2) 程序调试、测试与运行结果分析1 图案填充多边形2 正余弦曲线的绘制3 在屏幕上显示字符4、 实验总结这次的实验有三个,其中显示字符比较简单,只需要调用一个函数就可以完成,各字母对应的ASCII码查找也简单,所以完成的很快很顺利。再就是正余弦曲线的绘制,之前都有做过直线的绘制,基本都是大同小异,稍有难处的就是曲线坐标的确定。在函数中我用一段循环语句来确定曲线点的坐标。最难做的就是

5、棋盘填充多边形了。这个实验的代码也很简单,遇到困难的是数组定义位图。其实数组的编写现在也没有搞太明白,感觉设计起来很难,有在网上查资料,才最终解决了。对知识了解,但编写还是有些困难。这次的实验也是一样的有趣,吸引人,以后会更加努力的。5、 附录1) 棋盘填充多边形#includevoid Initial(void)glClearColor(1.0f,1.0f,1.0f,1.0f); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150.0);GLubyte tianchong=/* 填充模式定义 (32x32) */0x00, 0x

6、01, 0x80, 0x00,0x00, 0x03, 0xc0, 0x00,0x00, 0x07, 0xe0, 0x00,0x00, 0x0f, 0xf0, 0x00,0x00, 0x1f, 0xf8, 0x00,0x00, 0x3f, 0xfc, 0x00,0x00, 0x7f, 0xfe, 0x00,0x00, 0xff, 0xff, 0x00,0x01, 0xff, 0xff, 0x80,0x03, 0xff, 0xff, 0xc0,0x07, 0xff, 0xff, 0xe0,0x0f, 0xff, 0xff, 0xf0,0x1f, 0xff, 0xff, 0xf8,0x3f, 0xf

7、f, 0xff, 0xfc,0x7f, 0xff, 0xff, 0xfe,0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff,0x7f, 0xff, 0xff, 0xfe,0x3f, 0xff, 0xff, 0xfc,0x1f, 0xff, 0xff, 0xf8,0x0f, 0xff, 0xff, 0xf0,0x07, 0xff, 0xff, 0xe0,0x03, 0xff, 0xff, 0xc0,0x01, 0xff, 0xff, 0x80,0x00, 0xff, 0xff, 0x00,0x00, 0x7f, 0xfe, 0x00,0x00, 0x3f

8、, 0xfc, 0x00,0x00, 0x1f, 0xf8, 0x00,0x00, 0x0f, 0xf0, 0x00,0x00, 0x07, 0xe0, 0x00,0x00, 0x03, 0xc0, 0x00,0x00, 0x01, 0x80, 0x00;void Display(void) glClear(GL_COLOR_BUFFER_BIT); /* 绘制一个指定图案填充的矩形 */ glColor3f(0.1,0.8,0.7); glEnable(GL_POLYGON_STIPPLE); glPolygonStipple(tianchong); glRectf(50.0f,100.0f

9、,150.0f,50.0f);/* 绘制一个指定图案填充的三角形*/ glColor3f(0.9,0.86,0.4); glPolygonStipple(tianchong); glBegin(GL_TRIANGLES); glVertex2i(10,10); glVertex2i(90,10); glVertex2i(10,90); glEnd(); glDisable (GL_POLYGON_STIPPLE); glFlush(); glutSwapBuffers();int main(int argc,char*argv) glutInit(&argc,argv); glutInitDi

10、splayMode(GLUT_DOUBLE|GLUT_RGB); glutInitWindowSize(500,300); glutInitWindowPosition(100,100); glutCreateWindow(棋盘图形填充); glutDisplayFunc(Display); Initial(); glutMainLoop(); return 0;2) 正余弦曲线的绘制#include#include void MyDisplay();void Init();void DrawSin();void MyDisplay() glClear(GL_COLOR_BUFFER_BIT)

11、; DrawSin(); glFlush();void Init() glColor3f(1.0f,0.0f,0.0f); glClearColor(1.0f,1.0f,1.0f,1.0f);void DrawSin() const float factor=0.1; glBegin(GL_LINES); glVertex2f(-1,0); glVertex2f(1,0); glVertex2f(0,-1); glVertex2f(0,1); glEnd(); /glLineStipple (5,0x1C47); /glBegin (GL_LINES); /用虚线绘制 glBegin(GL_L

12、INE_STRIP); for(float x=-1/factor;x1/factor;x+=0.001) glVertex2f(x*factor,sin(x)*factor); glEnd(); glBegin(GL_LINE_STRIP); for(float y=-1/factor;y1/factor;y+=0.001) glVertex2f(y*factor,cos(y)*factor); glEnd(); glutSwapBuffers();int main(int argc,char*argv) glutInit(&argc,argv); glutInitDisplayMode(G

13、LUT_SINGLE|GLUT_RGB); glutInitWindowSize(400,300); glutInitWindowPosition(100,150); glutCreateWindow(正余弦曲线绘制); Init(); glutDisplayFunc(MyDisplay); glutMainLoop(); return 0;3) 在屏幕显示字符#includeint winWidth=600,winHeight=300;void Initial(void) glClearColor(1.0f,1.0f,1.0f,1.0f);void ChangeSize(int w,int

14、h) winWidth=w; winHeight=h; glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0,winWidth,0.0,winHeight);void Display(void) glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f,0.0f,0.0f); glutStrokeCharacter(GLUT_STROKE_ROMAN,79); glutStrokeCharacter(GLUT_STROKE_ROMAN,112); gl

15、utStrokeCharacter(GLUT_STROKE_ROMAN,101); glutStrokeCharacter(GLUT_STROKE_ROMAN,110); glutStrokeCharacter(GLUT_STROKE_ROMAN,71); glutStrokeCharacter(GLUT_STROKE_ROMAN,76); glutSwapBuffers();int main(int argc,char*argv) glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); glutInitWindowSize(500,300); glutInitWindowPosition(100,100); glutCreateWindow(Write Words); glutDisplayFunc(Display); glutReshapeFunc(ChangeSize); Initial(); glutMainLoop(); return 0;

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

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