数字科技馆益智类仿真模型设计关键技术研究

2017-03-16 07:19
淮阴工学院学报 2017年1期
关键词:益智绘制原理

程 飞

(安徽电子信息职业技术学院 电子工程系,安徽 蚌埠 233000)

数字科技馆益智类仿真模型设计关键技术研究

程 飞

(安徽电子信息职业技术学院 电子工程系,安徽 蚌埠 233000)

数学益智模型对于思维能力训练具有重要作用。相对于实物模型,虚拟模型可以反映实物内部形态和组合过程,能更好表达模型所包含的科学原理。采用一档多视技术开发交互式仿真益智模型,结合OpenGL开发透明模型,采用VC++设计dlg对话框,可以实现仿真益智模型设计与开发。给出了以中国古代益智模型牟合方盖为实例,结合上述关键技术设计和开发仿真益智模型的具体过程。

益智模型;虚拟仿真;OpenGL

0 引言

数学益智游戏对于开发智力,培养空间想象力有重要作用。科技馆里常见的牟合方盖、鲁班锁、九连环都属于此类。然而,这些模型都是以实体形式体现的。由于对此类模型的研究受到各种条件的限制,参观者对于其内部结构和反映的数学原理难以很好理解,模型的科普意义有限。目前对于益智游戏的研究主要集中在实物设计研究[1],或者仅限于利用静态模型研究科学原理[2],对于交互式虚拟数学益智游戏研究主要集中在平面游戏[3],关于三维交互式虚拟数学益智游戏未见相关文献。如果能够开发三维虚拟模型,其科普作用可以不受时间地点的限制,学习者通过观察和交互式虚拟研究,可以更好理解其中包含的数学原理。对于数字科技馆的建设也有重要意义。因而,有必要对于虚拟数学益智游戏的设计和开发进行研究。本文以牟合方盖为例,详述虚拟数学益智游戏的设计和开发过程。

1 牟合方盖

对一个正立方体从纵横两侧面作内切圆柱体时,两圆柱体的公共部分称为“牟合方盖”[4](如图1、图2所示)。正立方体以内,牟合方盖以外的部分称为“外棋”。为了简化问题,一般研究八分之一牟合方盖(位于第一卦限的部分)。

图1 牟合方盖的形成

图2 牟合方盖

牟合方盖的作用是在应用祖暅原理推算球的体积时作为中间模型,对于计算球的体积有重要意义。其计算原理是:计算等高的牟合方盖的切片面积和方锥的切片面积,推导出外棋体积与方锥体积相同,则牟合方盖的体积等于方盖所在立方体体积减去外棋体积(即方锥体积)。再次利用祖暅原理,利用方盖和球体的等高切片面积的对应关系,得到球体积(如图10所示)。相关计算详见有关资料[4],不再赘述。祖暅原理、牟合方盖、球体积公式三者层次关系如图3所示:

图3 牟合方盖作用

2 详细设计

(1)祖暅原理

计算球体积必须用到祖暅原理(祖暅原理的意义是:如果两个等高的立体在等高处截二立体的面积恒等,则这两个物体的体积相等)。因而,首先开发祖暅原理交互式软件。这里采用VC++和OpenGL开发。VC++的MFC负责交互式界面的设计[5],而OpenGL负责图形显示[6]。

图4 祖暅原理交互界面

开发步骤为:

首先建立MFC文件,然后切分界面,左边放入表单视(FormView),右边放入视图类(View),关键语句如下:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

{CRect rect;

GetWindowRect(&rect);

BOOL bRes=m_wndSplitter.CreateStatic(this,1,2);//切分成1行两列

m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(jiaohuqu),CSize(0,0),pContext); //左边放入FormView

m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(hutuqu),CSize(0,0),pContext);//右边放入视图类(View)

…………………………………………}

左边交互区输入数值(形变参数),通过UpdateData(TRUE)实现控件值进变量。左边“确定”按钮按下,左右界面之间通过一档多视技术开始通讯,向所有视图发送lHint,并从FormView向Doc传递中间值,View区读取Doc中的变量值,按变量值绘制图形。关键代码如下:

void CKuangjiaView::OnButton1()

{jiaohuquDoc*pDoc=(jiaohuqu *)GetDocument();

int ptt(1); //设置lHint=1

pDoc->doccanshu=m_canshu;//参数进Doc文档相应变量

pDoc->UpdateAllViews(NULL, 1,(CObject*)&ptt);//通知所有View

…………………………}

View区获取Doc中的变形系数以后,即绘制弯曲的圆柱体,这里将圆柱体理解为多个(这里取100个)小圆柱体的叠加,每个小圆柱体依次在y轴方向移动一个距离s(由s =t2, t∈[0,1]给定),就可以实现弯曲效果。进一步绘制两个圆形切片,以表示等高处截面。绘制效果如图4所示。

(2)牟合方盖

先绘制立方体,由于电脑显示设置的不同,需要调整分割线以实现正方体显示效果。和上面的技术相同,通过按钮响应绘制纵横两个方向的圆柱。如图5和图6所示。

图5 横向圆柱

图6 两个方向的圆柱

为简化问题,仅以八分之一牟合方盖为例进行绘制。此时有三个外棋,如图7所示。每个外棋均理解为曲边棱锥,通过下面的方法绘制棱锥:首先计算纵横两个方向的圆柱的相贯线。相贯线[7]的表达式由曲面方程联立表示为:

(1)

为简化计算,仅取位于第一卦限的八分之一牟合方盖,取xi =i*r/100, (i=0,1,……,100),代入上式,计算得到yi,zi,将点的数据赋给数组x[i],y[i],z[i],得到相贯线的数据。同样的方法可以获得其他交线的点数据。利用获得的数据,可以利用小四边形面片绘制出曲面,进一步由多个曲面围成立体。以左下角的形体为例,其上曲面绘制关键代码如下:

for(int i=0; i<100; i++)

{ glBegin(GL_QUADS);

glNormal3f(x[i],y[i],z[i]);

glVertex3f(r, y[i],z[i]);

glVertex3f(r,x[i+1],z[i+1]);

glVertex3f(x[i+1],x[i+1],z[i+1]);

glEnd();}

图7 八分之一牟合方盖和外棋

图8 主控界面

(3)主界面设计

基于DLL设计主界面,和前面同样的方法,通过按钮外部启动《祖暅原理》,《牟合方盖》,以及《球体积》计算模块。主界面将三者结合成一个整体。关键代码如下:

ShellExecute(this->m_hWnd,"open","datazugengyuanli.exe","","",SW_SHOW );

绘制效果如图8所示。

3 关键技术

3.1 透明

在图形学中,透明通过公式s=sf*α+sp*(1-α)实现,其中sf为前景图,sp为背景图,α为混合算子,关键语句为:

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

// GL_SRC_ALPHA为混合算子α,GL_ONE_MINUS_SRC_ALPHA为1-α

在OpenGL环境下[7-8],绘制圆柱要分前后两个部分绘制,才能显示效果。绘制牟合方盖和外棋要用不同的颜色表示面。

3.2 原理展示

原理涉及到较为复杂的数学表达式,因而直接通过按钮启动dlg,以对话框显示原理。关键代码为 void CKuangjiaView::OnButton4()

{………………;

yuanli dlg;

dlg.DoModal();}

球体积计算的原理和计算方法用dlg显示的结果如图9和图10所示。

图9 算法原理对话框

图10 计算过程对话框

3.3 爆炸图[9]

爆炸图可以帮助学习者理解内部结构以及牟合方盖的形成过程。图7即为响应“移出外棋”按钮对应的爆炸图。每次按下按钮,通过lHint传值,改变外棋绘图的原点,实现外棋平移。Z方向平移的关键代码如下:

glPushMatrix();//压栈

glTranslatef(0,0,t);//每次按下按钮,t增加1(t+=1);

waiqi();//绘制外棋

glPopMatrix();//出栈

4 结论

目前,比较常用的数学实物模型,虚拟仿真模型方式可以更好表达相关数学原理。学习者可以利用参数化三维虚拟数学模型,进行交互式自主学习,可以深入了解相关知识。该方法不仅可以应用于数学益智类仿真设计,也可以推广到教学领域,开发教学辅助资源,如应用于圆周率推导、算筹运算等数学内容。此外,该方法的关键技术可以应用于数字科技馆开发,如在中国古代数字科技馆的建设中,利用透明技术表现指南车等古代机械的工作原理。采用一档多视技术开发交互式仿真益智模型,结合OpenGL开发透明模型,采用VC++设计dlg对话框,是实现仿真益智模型设计与开发的一种行之有效的方法。

[1] 李凌云.益智游戏与课程的融合[J].读写算,2014(22): 207.

[2] 张东海.牟合方盖曲面的参数方程及其在GeoGebra中的应用[J].中学数学月刊,2015(6): 48-50.

[3] 范智轩,胡娜,杨文阳.Flash益智游戏的设计与开发研究[J].数字技术与应用,2013(4): 184-186.

[4] 王树禾.数学演义(普及版)[M].北京:科学出版社,2004.

[5] 郑阿奇,丁有和. Visual C++教程(第2版)[M]. 北京:清华大学出版社,2009.

[6] 李胜睿.计算机图形学实验教程[M].北京:机械工业出版社,2004.

[7] 程飞.基于OpenGL的高等数学多媒体课件实现[J].洛阳师范学院学报,2005(10):72-74.

[8] 于晓明,孔耀美.基于OpenGL的反走样算法的分析与应用[J].咸阳师范学院学报,2016(2): 60-64.

[9] 王幼龙. 机械制图[M].北京:机械工业出版社,2006.

(责任编辑:孙文彬)

Research on the Key Technology of Simulation Design of Puzzle Game Model in Digital Museum

CHENG Fei

(Department of Electronic Engineering, Anhui Vocational College of Electronics & Information Technology, Bengbu Anhui 233000, China)

Mathematica puzzle game was significant to thinking ability training. Compared with natural pattern, simulation model could reflect the internal form and combination process, and better express the scientific principles of the model as well. Using a multi view technology to develop interactive simulation puzzle model, combined with the OpenGL to develop transparent model, using VC++ to design the dlg dialog box, the design and development of simulation puzzle model could be realized. Combined with the key technology as above, the specific process of design and development of the simulation model of the China ancient educational model Steinmetz solid was given as an example.

puzzle game model;simulation;OpenGL

2016-12-15

安徽省教育厅2013年自然科学研究项目(KJ2013Z013)。

程飞(1970-),男,江苏江都人,副教授,硕士,主要从事CAD及计算机仿真研究。

TP311.1

A

1009-7961(2017)01-0034-04

猜你喜欢
益智绘制原理
基于包络解调原理的低转速滚动轴承故障诊断
了解咳嗽祛痰原理,有效维护健康
益智故事会
超萌小鹿课程表
平均场正倒向随机控制系统的最大值原理
放学后
化学反应原理全解读
益智大比拼
在转变中绘制新蓝图
VBA在宗地图绘制中的应用