在C#中结合OpenGL实现MIT―MTT套损检测三维成像软件开发.docVIP

在C#中结合OpenGL实现MIT―MTT套损检测三维成像软件开发.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在C#中结合OpenGL实现MIT―MTT套损检测三维成像软件开发.doc

在C#中结合OpenGL实现MIT―MTT套损检测三维成像软件开发   摘 要:MIT-MTT组合测井仪可以测得套管内径、壁厚等数据,使用相应处理软件结合成像技术生成的三维图,直观、明了。为了弄清井下套损状况,研究了在C#中通过调用OpenGL动态链接库文件来实现建模,开发套损检测三维成像软件,并在最后给出实例。   关键词:MIT-MTT;C#语言;OpenGL;软件开发   中图分类号:TP391   1 前言   油田生产开发到一定阶段会发生套损,对套管进行长期动态监测有利于及时发现问题,减少经济损失。英国SONDEX公司MIT(MultifingImagingToo1)多臂井径成像测井仪[1],根据仪器规格不同一次下井可以分别测得圆周上均匀排列的多条井径;MTT(MagneticThicknessToo1)磁壁厚测井仪[2],基于接收到的低频电磁波能量损失和相位大小可以测得套管壁厚。两支仪器组合使用相得益彰。目前,英国SONDEX公司已经开发出了Warrior,Wiper等处理软件。国内的绘图软件,如3DMAX,CAD等可以画三维图,但它们全是手工确定模型。鉴于此,笔者希望通过OpenGL建模技术在C#中的实现来开发出适用的三维绘图软件。   2 程序设计   2.1 使用CsGL动态链接库   OpenGL(OpenGraphicsLibrary)是一个专业的图形程序接口,是一个功能强大,调用方便的底层图形库[3]。C#是建立在.NET框架平台上的高级语言,在.Netframework中没有提供OpenGLApI托管接口,因此需要调用第三方软件CsGL。CsGL提供2个动态链接库:csgl.dll和csgl.native.dll。csgl.dll中定义了4个名称空间:CsGL,CsGL.OpenGL,CsGL.Pointers,CsGL.Util。其中,CsGL.OpenGL定义的4个类OpenGL、GL、GLU、GLUT封装了几乎所有的OpenGL函数、用户库函数、辅助库函数和实用库函数及常量。OpenGLControl中定义了OpenGL场景绘制函数。OpenGLContext中定义了OpenGL环境控制命令。[4]   2.2 创建OpenGL建模环境   要使得OpenGL真正发挥作用,必须添加对CsGL的引用。在命名空间中添加usingCsGL.OpenGL;,然后在解决方案资源管理器中,添加csgl.dll。   我们在窗口界面上设计各种功能控件,如读取文件的路径和数据方式等。要实现OpenGL绘图设计,必须创建用于显示图形的设备环境。创建一个名为OurView的类,实例化为View。将其停靠在窗口上。部分代码如下:   this.view=newOurView();   this.view.Dock=DockStyle.Fill;   2.3 建立OpenGL绘制环境   CsGL.OpenGL.OpenGLControl类中已经定义了创建绘环境的函数。OpenGLControl类派生自System.Windows.Forms.Control,因此它继承了Control类的基本属性与功能。可以声明一个派生自OpenGLControl的类来建立OpenGL绘制环境。代码结构如下:   publicclassOurView:OpenGLControl   {   publicOurView():base()   }   2.3.1 绘制环境的初始化   类OpenGLControl中定义了设备初始化函数InitGLContext,OpenGL绘制环境初始化的基本设置:加载场景中用到的各种纹理,设置各种缓存(颜色、深度),设置阴影模式等。部分代码如下:   protectedoverridevoidInitGLContext()   {   GL.glEnable(GL.GL_TEXTURE_2D);GL.glShadeModel(GL.GL_SMOOTH);   GL.glClearColor(0.5f,0.1f,0.1f,1f);   }   2.3.2 OpenGL场景的绘制   OpenGL场景的绘制可以通过重写CsGI.OpenGL.OpenGLControl类中的绘制函数glDraw来实现。部分代码如下:   publicoverridevoidglDraw()   {   GL.glClearColor(0.0f,0.0f,0.0f,0);   GL.glClear(GL.GL_COLOR_BUFFER_BIT|GL.GL_DEPTH_BUFFER_BIT);   GL.glLoadIdentity();   }   

您可能关注的文档

文档评论(0)

lmother_lt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档