找论文网 > 计算机论文 > 计算机应用 >

基于OpenGL的实验室用滑动变阻器的设计与实现(1)

摘  要 本文介绍了基于OpenGL的实验室用滑动变阻器的设计与实现技术,并介绍模板缓存在图形设计中的应用、滑动变阻器的三维可视化以及通过鼠标实现其缩放和移动等技术实现功能。
    关键字 OpenGL;滑动变阻器;仿真;纹理;模板缓存
 
1 引言
    物理学是一门实验科学,学生不仅可以从物理实验中获取感性认识,加强探索能力和培养动手技巧,而且物理实验在增加物理教学的趣味性方面也有着举足轻重的作用。随着现代科学技术及计算机技术的飞速发展,计算机在辅助物理实验教学中,如模拟实验过程、演示实验原理、进行数据处理、实验控制和测量等方面都有了广泛的应用,这也有力地促进了实验教学的改革步伐。在计算机辅助物理实验教学中,CAI课件在辅助实验教学中起着举足轻重的作用。物理实验CAI课件模拟实验过程、演示实验原理、进行实验控制等的仿真程度越高,对实验教学的效果影响就越好。目前,教师多以Flash等工具来制作多媒体实验教学课件,很多情况下不能模拟实验过程,更加难实现进行实验控制,如实现直流电路中的滑动变阻器根据滑块的移动来及时准确地控制电路,实现直流电路的仿真控制。本文将要介绍在OpenGL环境下,实验室用滑动变阻器的设计思路和实现方法。
2  OpenGL简介
    OpenGL是一个工业标准的三维计算机图形软件接口,是美国高级图形和高性能计算机系统公司(SGL)开发的三维图形库。它实际上是与图形硬件完全无关的程序设计API,独立于操作系统,有着强大的图形功能和良好的跨平台移植能力,具有可靠性、可扩展性强、伸缩性好、灵活性强、易用等特点。OpenGL实现二维和三维的高级图形技术,在性能上表现得异常优越,它包括建模、变换、颜色模式设置、光照与材质设置、双缓存动画以及更先进的能力,如纹理映射、物体运动模糊等。OpenGL的这些能力为实现逼真的三维渲染效果,建立交互的三维景观等提供了优秀的软件工具。
3 实验室用滑动变阻器的设计与实现 3.1  需求分析
    实验室用滑动变阻器是直流电路中最常用的实验仪器之一。系统应提供多种交互手段,用户和系统的交互主要通过鼠标和键盘进行。键盘主要应用在辅助鼠标进行多个物体的选择,其他的交互都是用鼠标来完成。系统设计中的滑动变阻器能够根据所连接在电路中的接线柱和滑块的位置来及时准确地改变电路中的电阻,同时系统也必须提供将滑动变阻器连接到电路中的接口。
3.2  功能
    ⑴缩放和移动。主要实现滑动变阻器在上下左右和对角线方向的缩放功能,可以通过鼠标的拖动来完成(如图1)。

图1  鼠标缩放图像

    ⑵滑块移动。滑动变阻器在电路中电阻的变化主要是通过滑动滑块来实现的。在正确连接的情况下,滑块移动能够改变滑动变阻器在电路中的有效电阻,从而实现变阻器在电路中的限流、分压作用等。本文中的滑块移动功能是通过在滑块上绑定一个点,这个点和滑块彼此关联来实现的,通过鼠标拖动点来实现滑块移动,效果如图2所示。

图2  使用鼠标拖动滑块
    ⑶接线柱。滑动变阻器在电路中起到保护电路、限制电路电流和分担电压等作用,是通过使用接线柱将滑动变阻器连接到电路中来实现的,所以接线柱的连接功能是必不可少的(如图3)。

图3 接线柱功能
4  设计实现关键技术 4.1  纹理贴图技术
    纹理贴图技术又称为纹理映射技术,它是计算机图形学中广泛应用的一项重要技术。本文选用纹理贴图技术是出于两方面的考虑,第一,使用OpenGL建模所创建的几何造型不能够描述物体的微观细节,而利用纹理图像可以达到模拟物体表面丰富的细节的目的,在很大程度上可以提高图形的真实性;第二,采用纹理映射的方法,可以很好地简化建模过程。本文中的滑动变阻器造型,如果使用OpenGL直接建模时有许多的细节需要表现,想要创建出真实感非常强的滑动变阻器,需要的工作量是很大的,若采用纹理映射,只要创建简单的模型。在这里使用OpenGL绘制两个简单的正方形模型,分别使用经过处理的三维立体效果很好的不含滑动变阻器滑块的图片和单独的滑块图片贴到模型表面即可。相比较而言,使用纹理贴图的工作量要小很多。
    纹理映射(Texture Map)是将指定的图像数据应用到一个几何图元上,使用纹理绘制的一般步骤为:导入纹理,将纹理贴图到几何图形上。
4.1.1  导入纹理
    应用纹理绘制的第一步就是要将纹理载入到内存中,同时设置纹理图像。下面的代码能实现该功能:
    ::glGenTextures(1,&m_textureNames);
BITMAP BM;
HBITMAP hBmp = (HBITMAP) ::LoadImage (NULL, m_bmpFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMF ILE|LR_ CREATEDIBSECTION);
    ::GetObject(hBmp, sizeof (BM), &BM);
    ::glBindTexture(GL_TEXTURE_2D, m_textureNames);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, BM.bmWidth, BM.bmHeight, 0, GL_BGR_EXT, GL_UNSIGNED _BYTE, BM.bmBits);
    其中m_textureNames表示的是需要载入的纹理图片的文件名参数,可以实现对24位位图文件的载入。
    在将纹理应用到几个图形之前,还需要指定纹理时的过滤方式。
4.1.2  将纹理贴图到几何图形上
    将纹理贴图到几何图形上的关键问题就是指定纹理坐标,纹理坐标控制纹理图像中的像素是按照什么样的方式映射到几何图形上。OpenGL中指定纹理坐标的函数是void glTexCoord{1234}{sifd}{v}(TYPE coords) ,贴图效果如图4所示。
 

图4  纹理贴图效果
 

共2页: 1 [2] 下一页


基于Hibernate和Struts的J2EE应用开发研究
MD5算法的快速硬件实现
工商管理 | 工科论文 | 财务管理 | 管理学 | 公共管理 | 财政税收 | 证券金融 | 会计审计 | 计算机 | 法律论文 | 医药学 | 汉语言文学
社会论文 | 工科论文 | 理科论文 | 文化论文 | 艺术论文 | 文学论文 | 哲学论文 | 政治论文 | 英语论文 | 写作指导 | 计算机应用
www.zlunwen.com 找论文网 ® 版权所有 网站地图