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

    opengl图形填充、正余弦曲线绘制、字符输出(C++)(共7页).doc

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

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

    opengl图形填充、正余弦曲线绘制、字符输出(C++)(共7页).doc

    精选优质文档-倾情为你奉上实验五1、 实验目的和要求了解且掌握图形填充、曲线绘制和字符输出等技术。2、 实验内容1) 用OpenGL实现用黑白相间的棋盘图案填充多边形2) 用OpenGL分别用点和折线模式实现正弦和余弦的绘制3) 用OpenGL在屏幕上输出”OpenGL”字样3、 实验步骤1) 相关算法及原理描述 图案填充多边形多边形模式设置函数为:void glPolygonMode(GLenum face,GLenum mode);控制多边形指定面的绘制模式。参数face为GL_FRONT、GL_BACK或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_STIPPLE) 关闭。 正弦和余弦曲线的绘制线的绘制需要用到GL_LINES模式,它指定在glBegin/glEnd函数对中,从第一个点开始,两两构成一条直线段。绘制正余弦曲线的话,只需要编写一段循环语句,指定绘制路线,设置不同线型。 在屏幕上显示字符在OpenGL实用程序工具包中包含了一些预定义的字符库,用来显示点阵和矢量字符。函数 void glutBitmapCharacter(void *font,int character); 显示一个GLUT位图字符。其中font是GLUT符号常数,指定点阵字库。参数character采用ASCII编码的形式指定要显示的字符。用函数glutBitmapCharacter 显示字符时,是将当前的光栅位置作为字符的左下角点,函数执行后,点阵字符装入刷新缓冲存储器,当前的光栅位置会在x坐标方向上获得一个字符宽度的增量,这样可以较轻易的生成一个水平方向的字符串。2) 程序调试、测试与运行结果分析 图案填充多边形 正余弦曲线的绘制 在屏幕上显示字符4、 实验总结这次的实验有三个,其中显示字符比较简单,只需要调用一个函数就可以完成,各字母对应的ASCII码查找也简单,所以完成的很快很顺利。再就是正余弦曲线的绘制,之前都有做过直线的绘制,基本都是大同小异,稍有难处的就是曲线坐标的确定。在函数中我用一段循环语句来确定曲线点的坐标。最难做的就是棋盘填充多边形了。这个实验的代码也很简单,遇到困难的是数组定义位图。其实数组的编写现在也没有搞太明白,感觉设计起来很难,有在网上查资料,才最终解决了。对知识了解,但编写还是有些困难。这次的实验也是一样的有趣,吸引人,以后会更加努力的。5、 附录专心-专注-专业1) 棋盘填充多边形#include<gl/glut.h>void 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, 0x01, 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, 0xff, 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, 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,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);glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);glutInitWindowSize(500,300);glutInitWindowPosition(100,100);glutCreateWindow("棋盘图形填充");glutDisplayFunc(Display);Initial();glutMainLoop();return 0;2) 正余弦曲线的绘制#include<math.h>#include <gl/glut.h>void MyDisplay();void Init();void DrawSin();void MyDisplay()glClear(GL_COLOR_BUFFER_BIT);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_LINE_STRIP);for(float x=-1/factor;x<1/factor;x+=0.001)glVertex2f(x*factor,sin(x)*factor);glEnd();glBegin(GL_LINE_STRIP);for(float y=-1/factor;y<1/factor;y+=0.001)glVertex2f(y*factor,cos(y)*factor);glEnd();glutSwapBuffers();int main(int argc,char*argv)glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitWindowSize(400,300);glutInitWindowPosition(100,150);glutCreateWindow("正余弦曲线绘制");Init();glutDisplayFunc(MyDisplay);glutMainLoop();return 0;3) 在屏幕显示字符#include<gl/glut.h>int winWidth=600,winHeight=300;void Initial(void)glClearColor(1.0f,1.0f,1.0f,1.0f);void ChangeSize(int w,int 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);glutStrokeCharacter(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;

    注意事项

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

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




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

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

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

    收起
    展开