一种基于参数的动态几何三维图形切割实现方法与流程

文档序号:19073112发布日期:2019-11-08 20:59阅读:372来源:国知局
一种基于参数的动态几何三维图形切割实现方法与流程

本发明涉及动态几何应用软件技术领域,具体的说,是一种基于参数的动态几何三维图形切割实现方法。



背景技术:

动态地拖动几何图形中的自由点来生动地得到几何图形维持约束关系的动态过程,从而更好的了解几何图形中所蕴含的几何性质,具备这样特点的系统被称为动态几何。动态几何是几何约束求解的重要应用,被广泛应用于教学辅助中,是深入基础数学学科的教育信息化工具。三维动态几何软件是面向教育的立体几何教学辅助软件,使用该类软件进行辅助教学,可直观的建立真实的三维空间与立体图形。在立体几何中,常常需要对立体图形进行切割,观察切割面的形状等。现有的软件中,多采用选取一个立体图形和一个切割面,构造该切割面对立体图形的切割,用切割率来表示切割后的图形平移的距离,用切割面法向确定切割后图形的平移方向,同时生成一个切割动画按钮。通过点击动画按钮,可动态显示立体图形被切割面切割的分离过程。目前实现该技术方案的主要有英壬画板、几何图霸等。但是现有技术中存在以下缺点:1)只能指定一个切割面;2)切割率只能指定为数值,不能通过参数控制。



技术实现要素:

本发明的目的在于提供一种基于参数的动态几何三维图形切割实现方法,用于解决现有技术中不能使用多个切割面对立体图形进行切割,且不能通过参数动态控制切割率的问题。

本发明通过下述技术方案解决上述问题:

一种基于参数的动态几何三维图形切割实现方法,包括:

步骤s100:设置切割属性,所述切割属性包括切割平面、切割类型、切割控制变量和切割位移;所述切割控制变量是切割动画关联的变量;所述切割位移为切割动画的最大位移;所述切割面为一个或多个平面;

步骤s200:根据所述切割控制变量和切割位移确定被切割立体图形在切割过程中的移动量,根据切割平面的法向确定被切割立体图形切割动画时的移动方向,动态展示立体图形的切割过程。。

进一步地,所述切割类型包括串行切割和并行切割,所述串行切割为多个切割面依次对被切割立体图形进行切割;所述并行切割为多个切割面同时对被切割立体图形进行切割。

进一步地,所述步骤s200具体包括:

步骤s210:计算平移量、平移量数组和切割面以及对应的平移量数组;

步骤s220:计算立体图形以及对应的切割面数组;

步骤s230:在切割过程中,立体图形按照平移量或平移数组、切割面以及对应的平移量数组还有立体图形以及对应的切割面数组进行动态展示。

进一步地,所述切割属性还包括切割面的索引i、切割参数的当前赋值u、切割立体图形的切割位移s和切割类型,所述步骤s210中计算平移量、平移量数组的方法为:在并行切割下,每个切割面对被切割立体图形的最终位移为u*s;在串行切割下,每个切割面对被切割立体图形的最终位移为(u-i)*s,所述每个切割面对被切割立体图形的最终位移的方向为对应的切割面的法向,串行切割下多个切割面的切割位移分别构成平移量数组。

进一步地,所述步骤s210中计算切割面以及对应的平移量数组的方法包括:

步骤s211:初始化切割面以及对应的平移量数组clips,设置clips的初始值为长度为0的空数组,对切割面的索引i初始赋值i=0;

步骤s212:遍历切割面数组planes,所述切割面数组planes为多个切割平面组成的数组,当i小于切割面数组planes的长度时,继续执行下一步,否则输出切割面以及对应的平移量数组clips并结束;clips为当前过程的切割面以及平移量的数组clip组成的数组;

步骤s213:定义length为切割面以及对应的平移量数组clips的长度,赋值自变量j=0;

步骤s214:当j小于length时,继续执行下一步;否则i=i+1,执行步骤s212;

步骤s215:设置当前过程的切割面以及平移量的数组clip=clips[j],clips[j]为复合对象,包含切割面数组planes和平移量translate;此时第i个切割面的平移量为translate[i],基于一个切割面切割一个立体图形,将立体图形分割成两部分,一部分由立体图形与切割面距离为正的部分组成,另一部分由立体图形沿着切割面的法向量平移-translate个单位距离与切割面为负的部分组成;将planes[i]和平移距离为0以及-planes[i]及平移量为translate[i]依次放入clip的尾部;再将clip放到clips的末尾;

步骤s216:j++;返回步骤s214。

进一步地,所述步骤s220具体包括:

步骤s221:初始化立体图形被切割后的部分组成的数组geomeshs=[];对切割面的索引i初始赋值i=0;

步骤s222:遍历切割面以及对应的平移量数组clips,当i小于clips的长度时,继续执行下一步;否则输出geomeshs并结束;

步骤s223:当前过程的切割面以及平移量数组clip=clips[i],遍历clip,计算当前过程最终要平移的平移量向量vector,平移量向量vector为clip中每个平面法向量与切割面平移距离相乘的向量和;

步骤s224:构造当前立体图形被切割后部分的切割面数组currentplanes=[],再次遍历clip,将平移vector后的切割面依次放入currentplanes,planes中;

步骤s225:将原立体图形mesh按照平移vector,并将currentplanes放入geomeshs中;i=i+1;返回步骤s222。

本发明与现有技术相比,具有以下优点及有益效果:

(1)本发明使用多个切割面对立体图形进行切割,通过参数动态地控制切割率达到动态切割效果,更具有说服力,符合教学需要。

(2)本发明扩展了切割序列,包括并行切割和串行切割,供用户选择。相对于一个切割面,多个切割面更符合教学实际需要;切割序列的多样性,支持制作构造更丰富的动画过程,符合循序渐进的认知规律。

附图说明

图1为本发明的流程图;

图2为计算切割面以及对应的平移量数组的流程图;

图3为计算立体图形以及对应的切割面数组的流程图。

具体实施方式

下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。

实施例1:

结合附图1所示,一种基于参数的动态几何三维图形切割实现方法,包括:

步骤s100:设置切割参数,切割参数包括切割面和切割类型,所述切割控制变量是切割动画关联的变量;所述切割位移为切割动画的最大位移;所述切割面为一个或多个平面;切割类型包括串行切割和并行切割,串行切割为多个切割面依次对被切割立体图形进行切割;并行切割为多个切割面同时对被切割立体图形进行切割;

步骤s200:根据所述切割控制变量和切割位移确定被切割立体图形在切割过程中的移动量,根据切割平面的法向确定被切割立体图形切割动画时的移动方向,动态展示立体图形的切割过程。

例如:用i表示切割面的索引,若有3个切割面,则i的取值范围为0,1,2,u表示切割参数的当前赋值,s表示切割面对被切割立体图形的切割位移:

如果为并行切割,则多个切割面同时对被切割立体图形进行切割,每个切割面对切割体平移的最终位移可以表示为:u*s。当对应的参数u在0-1范围的进行参数动画时,此时会产生被切割立体图形对多个切割面同时切割的动画,此时u的实际赋值确定了切割率,切割率乘以切割位移得到当前各个切割面对切割体平移的最终位移,如u当前赋值为0.5,切割位移设置为4,则当前各个切割面对被切割体的最终位移为0.5*4=2;切割位移方向为平面的法向。

如果为串行,则多个切割面依次对被切割立体图形进行切割。每个平面对切割体平移的实际位移可以表示为(u-i)*s。当对应的参数u在0-1范围动画时,产生第一个切割面对被切割立体图形进行切割动画,参数u在1-2范围动画时,产生第二个切割面对被切割立体图形进行切割的动画,依次类推。以上切割动画的最终位移,由构造的切割对象的中的位移属性确定。如u当前值为0.5,则为第一个切割面对被切割立体图形进行切割,第一个切割面的实际位移是0.5*4,得到第一个切割面的实际位移为2;当u的值运动到1时,第一个切割面切割完毕;开始第二个切割面进行切割,当u为赋值为1.5时,则第二个切割面的实际位移是(1.5-1)*4,得到第二个切割面的实际位移为2。

实施例2:

进一步地,所述步骤s200具体包括:

步骤s210:计算平移量、平移量数组和切割面以及对应的平移量数组;

步骤s220:计算立体图形以及对应的切割面数组;

步骤s230:在切割过程中,立体图形按照平移量或平移数组、切割面以及对应的平移量数组还有立体图形以及对应的切割面数组进行动态展示。

如果是并行切割,则需要根据切割参数计算所有切割面的平移的矢量距离,即平移量,由于并行切割下,所有切割面平移的矢量距离都一样,因此,只需要计算一次,再由平移量计算切割面以及对应的平移量数组,再计算立体图形以及对应的切割面数组;

如果是串行切割,每个切割面平移的矢量距离都不一样,这些平移量组成平移量数组,然后计算切割面以及对应的平移量数组,再计算立体图形以及对应的切割面数组。

如图2所示,计算切割面以及对应的平移量数组的方法包括:具体包括:

步骤s211:初始化切割面以及对应的平移量数组clips,设置clips的初始值为长度为0的空数组,对切割面的索引值i初始赋值i=0;

步骤s212:遍历切割面数组planes,所述切割面数组planes为多个切割平面组成的数组,当i小于切割面数组planes的长度时,继续执行下一步,否则输出切割面以及对应的平移量数组clips并结束;

步骤s213:定义length为切割面以及对应的平移量数组clips的长度,j=0;

步骤s214:当j小于length时,继续执行下一步;否则i=i+1,执行步骤s212;

步骤s215:复制clips[j]为clip,此时第i个切割面的平移量为translate,基于一个切割面切割一个立体图形,将立体图形分割成两部分,一部分由立体图形与切割面距离为正的部分组成,另一部分由立体图形与切割面沿着切割面的法向量平移-translate个单位距离的部分组成;将planes[i]和平移距离为0以及-planes[i]及平移量为translate依次放入clip的尾部;再将clip放到clips的末尾;

步骤s216:j++;返回步骤s214。

图2中的参数定义说明:

clips,切割面以及对应的平移量数组(二维数组);

clip,当前过程的切割面以及平移量的数组;clip是一个复合对象,包含切割面数组plane和平移量translate;

planes,切割面数组;

translate,平移量。串行为平移量数组索引为i的值。

如图3所示,计算立体图形以及对应的切割面数组的具体步骤包括:

步骤s221:初始化立体图形以及对应的切割面数组geomeshs=[];对切割面的索引i初始赋值i=0;

步骤s222:遍历切割面以及对应的平移量数组clips,当i小于clips的长度时,继续执行下一步;否则输出geomeshs并结束;

步骤s223:当前过程的切割面以及平移量数组clip=clips[i],遍历clip,计算当前过程最终要平移的平移量向量vector,平移量向量vector为clip中每个平面法向量与切割面平移距离相乘的向量和;

步骤s224:构造当前过程最终用于切割立体图形的切割面数组currentplanes=[],再次遍历clip,将平移vector后的切割面依次放入currentplanes中;

步骤s225:将原立体图形mesh按照平移vector,并将currentpanes放入geomeshs中;i=i+1;返回步骤s222。

图3中的参数定义说明:

geomeshs,立体图形以及对应的切割面数组;

clips,切割面以及对应的平移量数组(二维数组);

mesh,被切割的原立体图形;

clip[k].translate,切割面平移量;

clip[k].plane.normalvector,切割面的向量;

translatemesh(mesh,vector),立体图形按vector向量平移;

translateplane(clip.plane,vector),面按vector向量平移。

尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1