一种动态几何中迭代对象的几何变换实现方法与流程

文档序号:31716772发布日期:2022-10-04 22:05阅读:47来源:国知局
一种动态几何中迭代对象的几何变换实现方法与流程

1.本发明涉及教育技术领域,涉及教学软件,具体涉及一种动态几何中迭代对象的几何变换实现方法。


背景技术:

2.动态地拖动几何图形中的自由点来生动地得到几何图形维持约束关系的动态过程,从而更好的了解几何图形中所蕴含的几何性质,具备这样特点的系统被称为动态几何。动态几何是几何约束求解的重要应用,被广泛应用于教学辅助中,是深入基础数学学科的教育信息化工具。有研究表明,利用动态几何软件可交互性的特点,可有效降低学生学习过程中的认知负荷,提高学习效果。
3.动态几何软件是面向教育的立体几何教学辅助软件,使用该类软件进行辅助教学,可直观地建立真实的三维空间与立体图形,降低学生在学习过程中的思考难度,对于学生建立空间图形提升空间思维能力具有显著作用。
4.迭代是动态几何系统中一个重要功能,也称为迭代映射。是依据已有构造规则进行重复性图元映射规则。运用迭代可以大幅降低自相似等分形图像的构造工作量,提高构造性作图的工作效率。
5.现有动态几何系统的迭代功能技术方案包括如下步骤:用户指定原像集与映射集的映射关系,可同时设置多个映像关系,实现多分枝迭代,并设置迭代深度系统寻找原像集中的元素所有构造性对象,作为迭代参与对象,形成迭代对象序列,并将当前迭代深度设置为1将原像集中的元素的几何属性,依次替换为映像集中下一个分枝映射关系中对应的元素的几何属性;计算迭代对象序列中的所有的元素,并记录新的迭代结果;重复3)4)步骤,直到替换至映像集中最后一个分枝映射关系,当前迭代深度加1重复3)4)5)步骤当前直到迭代深度等于步骤1)中设置的迭代深度;将步骤4)记录的迭代结果统一为一个输出对象进行输出显示。
6.通过上述方法得到的迭代输出对象为无法参与后续计算和变换的整体,这限制了迭代对象进一步构造性作图。也增加了多分枝的自相似的图形的构造性难度。


技术实现要素:

7.为克服现有技术存在的缺陷,本发明公开了一种动态几何中迭代对象的几何变换实现方法。
8.本发明所述包括如下步骤:s1.用户选定原像,映像集;设置最终迭代深度 k,并初始化当前迭代深度p = 0,映射集为f = [0],复合元素ce={0};
s2.遍历原像到映像集的构造关系,构建出映像规则r,所述映像规则r记录原像到映像集中每个构造过程的约束规则列表;s3.判定当前迭代深度p 是否等于最终迭代深度 k,是则结束并返回当前复合元素ce0;否则进入步骤s4;s4.遍历输入对象,依次根据映像规则r生成映射集和复合元素对象;其中映射集为输入对象根据映像规则r生成的映射关系集合,复合元素对象为映射集中几何元素的元素集合;当前迭代深度p 加1;其中第一次迭代的输入对象为原像,后续迭代的输入对象为上一次迭代得到的映射集的映射结果;返回步骤s3。
[0009]
优选的:所述复合元素对象为不同几何元素按照类型分类组成的元素集合。
[0010]
优选的:还包括以下步骤:s5.对步骤s3返回的复合元素ce0,对其进行后续变换,变换规则为t,变换方法为ce1=t(ce0,f1),其中f1表示变换规则t的具体规则。
[0011]
本发明使得用户在设计映像规则时,无需提前考虑几何变换类的几何约束;使得设计映像规则的思维难度和深度降低。
[0012]
本发明通过迭代的变换,可以在一定程度上实现以前只有通过多分枝映射以及迭代的迭代才能实现功能;相较于多分枝迭代,复合元素的变换运行效率更高,内存占用更小。
附图说明
[0013]
图1为本发明具体实施例1的原始图形示意图,图2为本发明具体实施例1中迭代次数k=1、k=2、k=3分别得到的图形示意图;图3为本发明具体实施例2的迭代示意图;图4为本发明具体实施例3的迭代示意图;图5为本发明具体实施例1中的步骤s42-1得到的图形示意图;图6为本发明具体实施例1中的步骤s42-2得到的图形示意图。
具体实施方式
[0014]
下面结合具体实施例来进一步描述本发明,但实施例仅是范例性的,并不对本发明的范围构成任何限制。本领域技术人员应该理解的是,在不偏离本发明的精神和范围下可以对本发明技术方案的细节和形式进行修改或替换,但这些修改和替换均落入本发明的保护范围内。
[0015]
为更好的理解本发明,首先对部分涉及概念进行定义:像:由n个点组成有序集合,称为像,用oi表示;即oi = {pi | i = 1, 2, ..., n}。其中n称为像的长度。
[0016]
例如像i = {p1, p2 , p3},长度为3,由p1, p2 , p3三个点组成;
像集:由像组成的集合,成为像集。用is表示,即:is = {ii | i = 1, 2, ..., m}其中ii 为像,m成为像集的长度。
[0017]
映射:存在一个像oi与像集is,其中像oi 与像集 is中每一个像ii 的长度相同,则oi 与 is存在按顺序的一一对应关系,将这种关系称之为映射,记为f。此时称 oi 为原像, is为映像集。
[0018]
具体的,从原像到映像集的构造序列gsp,称为映像规则r。映射及其规则可表示为:f:oi
ꢀ→ꢀ
mis | r,如图1所示,若原像 oi = {p1, p2, p3}, 映像集 mis = {{p1, p4, p6}, {p4, p2, p5}, {p6, p5, p3}},二者之间的映射f: oi
ꢀ→ꢀ
mis ,具体为:{{p1
ꢀ→ꢀ
p1, p2
ꢀ→ꢀ
p4, p3
ꢀ→ꢀ
p6}, {p1
ꢀ→ꢀ
p4, p2
ꢀ→ꢀ
p2, p3
ꢀ→ꢀ
p5}, {p1
ꢀ→ꢀ
p6, p2
ꢀ→ꢀ
p5, p3
ꢀ→ꢀ
p3}}映像规则:r = [p1: freepoint(), p2: freepoint(), p3: freepoint(), l1: segment(p1, p2), l2: segment(p2, p3), l3: segment(p1, p3), p4: midpoint(p1, p2), p5: midpoint(p2, p3), p6: midpoint(p1, p3) ].构造序列:从自由点出发,通过一系列构造步骤形成的序列称为构造序列(gsp):gsp = [c1, c2 .., cn] (n = 1, 2, ...)。
[0019]
如图1所示的图形,其构造序列如下:gsp = [p1: freepoint(),p2: freepoint(),p3: freepoint(),l1: segment(p1, p2), l2: segment(p2, p3), l3: segment(p1, p3),p4: midpoint(p1, p2), p5: midpoint(p2, p3), p6: midpoint(p1, p3) ]其中freepoint()表示自由点,segment()表示由括号内端点构成的线段;midpoint表示括号内端点构成线段的中点;复合元素对象:由多个几何元素按照类型分类组成的元素集合,记为ce。其中几何元素类型包括且不局限于点(point)、线段(segment)、圆(circle)、多边形(polygon)、曲线(curve)等。
[0020]
将构造序列中的元素按照不同分类归类后可得到复合元素对象;例如:ce = {point: [p1, p2, ..., pn], segment: [l1, l2, ..., ln]}p1, p2, ..., pn表示不同的点,l1, l2, ..., ln表示不同的线段;本发明中,所述迭代计算为输出结果能够用1个或多个输入对象形式所表示的计算形式。例如,输入对象为{p1, p2, p3},输出结果可以包括一个或多个其相同形式,如{p1, p4, p6}或{p4, p2, p5}, {p6, p5, p3}。
[0021]
具体实施例:一个三角形经历三次迭代,即迭代深度k=3,映像规则为:三角形三条边的中点,和三角形原有的顶点组成形成新的三角形,每次迭代,一个三角形的三个顶点及三条边的中点可以组合成三个三角形。
[0022]
本实施例中,对每一次迭代,原像oi = {p1, p2, p3},p1, p2, p3表示三角形的顶点,映像集mis = {{p1, p4, p6}, {p4, p2, p5}, {p6, p5, p3}},初始状态下映射集为空,即f = [],复合元素对象ce为空,即ce = {};原像oi到映像集mis的映射 f:oi
ꢀ→ꢀ
mis | r ,其中:映像规则r = [p1: freepoint(),p2: freepoint(),p3: freepoint(),l1: segment(p1, p2),l2: segment(p2, p3),l3: segment(p1, p3),p4: midpoint(p1, p2),p5: midpoint(p2, p3),p6: midpoint(p1, p3)]其中freepoint()表示自由点,segment()表示由括号内端点构成的线段;midpoint表示括号内端点构成线段的中点。
[0023]
通过上述分析,原像oi = {p1, p2, p3},映像集mis = {{p1, p4, p6}, {p4, p2, p5}, {p6, p5, p3}}及原像到映像集之间的映像规则r均已得到。
[0024]
以下开始具体迭代。
[0025]
步骤s41.第一次迭代,原像oi = {p1, p2, p3},映像集mis = {{p1, p4, p6}, {p4, p2, p5}, {p6, p5, p3}},映像规则为r,迭代次数p=1,步骤s42.第二次迭代, 迭代次数p=2,以第一次迭代得到的映像集作为第二次迭代输入,遍历第一次迭代得到的映像集的全部像,继续使用映像规则r进行迭代,具体为:步骤s42-1.从映像集mis中取出第一个像 {p1, p4, p6},作为第二次迭代的第一个原像oi1 = {p11, p21, p31},其中p11=p1, p21= p4, p31=p6。
[0026]
对oi1依次代入映像规则r计算,可得第二次迭代中第一个像完成计算后的复合元素对象;ce = {point: {p11, p21, p31, p41, p51, p61}, segment: {l11, l21, l31}}映射集f = {{p11, p21, p31}
ꢀ→ꢀ
{p11, p41, p61}, {p41, p21, p51}, {p61, p51, p31}}segment表示线段,point表示点,l11为segment(p1, p4), l21为 segment(p4, p6), l31为 segment(p1, p6);p41, p51, p61分别为l11, l21, l31的中点;本步骤结束后得到的图形如图5所示。
[0027]
步骤s42-2.从mis中取出第二个像 {p4, p2, p5},作为第二次迭代的第二个原像oi2= {p12, p22, p32},其中p12=p4, p22= p2, p32=p5;依次计算r,可得第二次迭代中第二个像完成计算后的复合元素对象和映射集,在第一个像计
算完成的基础上,增加了第二个像对应的点和线段;复合元素对象ce = {point: {p11, p21, p31, p41, p51, p61, p12, p22, p32, p42, p52, p62,},segment: {l11, l21, l31, l12, l22, l32}}映射集f = {{p11, p21, p31}
ꢀ→ꢀ
{p11, p41, p61}, {p41, p21, p51}, {p61, p51, p31},{p12, p22, p32}
ꢀ→ꢀ
{p12, p42, p62}, {p42, p22, p52}, {p62, p52, p32}}l12为segment(p4, p2), l22为 segment(p2, p5), l32为 segment(p5, p4),p42, p52, p62分别为线段l12, l22, l32的中点;本步骤结束后得到的图形如图6所示。
[0028]
步骤s42-3.从mis中取出第三个像{p6, p5, p3},作为第二次迭代的第三个原像oi3= {p13, p23, p33},其中p13=p6, p23= p5, p33=p3;依次计算r 。
[0029]
可得第二次迭代中第三个像完成计算后的复合元素对象和映射集,在第一、二个像计算完成的基础上,增加了第三个像对应的点和线段;复合元素对象ce = {point: {p11, p21, p31, p41, p51, p61, p12, p22, p32, p42, p52, p62, p13, p23, p33, p43, p53, p63},line: {l11, l21, l31, l12, l22, l32, l13, l23, l33}}f = {{p11, p21, p31}
ꢀ→ꢀ
{p11, p41, p61}, {p41, p21, p51}, {p61, p51, p31},{p12, p22, p32}
ꢀ→ꢀ
{p12, p42, p62}, {p42, p22, p52}, {p62, p52, p32},{p13, p23, p33}
ꢀ→ꢀ
{p13, p43, p63}, {p43, p23, p53}, {p63, p53, p33}}l13为segment(p6, p5), l23为 segment(p5, p3), l33为 segment(p3, p6),p43, p53, p63分别为线段l13, l23, l33的中点;至此输出映射集f 中映射结果{{p11, p41, p61}, {p41, p21, p51}, {p61, p51, p31},{p12, p42, p62}, {p42, p22, p52}, {p62, p52, p32},{p13, p43, p63}, {p43, p23, p53}, {p63, p53, p33}},作为下一次迭代的输入。
[0030]
s43.第三次迭代, 迭代次数p=3,遍历第二次迭代输出的映射结果中的全部映像,依然以r为映像规则进行计算,得到复合元素对象和映射集;由于p=3,本步骤结束后,全部迭代过程结束,本步骤结束后的复合元素对象为ce0。
[0031]
具体实施例2
对图3箭头右边所示的迭代结果再次进行向右平移操作迭代,以p2、p3组成的向量进行平移变换,得到如图3所示图像:此时对本次迭代所使用的复合元素ce1,可以采用如下形式直接调用上具体实施例1迭代得到的复合元素ce0,并结合本次迭代所需要的元素p2、p3,进行变换得到,具体变换式为:ce1 = translate (ce0, p2, p3),即变换规则t为translate(),f1中定义的具体规则为:起点和终点分别为p2和p3。
[0032]
变换后的形式仍然如 {point: [...], segment: [,...]};表示将复合元素ce0按照p2到p3的规则进行平移操作,其中translate()表示平移,第一个元素为平移对象,第二个对象为平移起点,第三个对象为平移终点;具体实现方式为:s51.指定具体实施例1中得到的复合元素ce0作为迭代对象;s52. 初始化新的复合元素ce1用于存储变换的迭代元素,ce1= {point: [...], segment: [,...]},s53. 遍历复合元素ce0,根据元素类型获取待变换的元素列表;s54. 根据类型,选取对应的变换算法对元素进行变换;本实施例中,迭代的算法为平移,即ce1 = translate (ce0, p2, p3);例如对ce0中的点和线段,则逐个按照p3到p2所定义的矢量进行平移;s55. 变换后的元素根据类型,存储得到新的复合元素ce1;具体实施例3再次选中具体实施例2中得到的图3所示的图像,以p1、p5组成的向量进行平移,采用类似的组合方法,得到图4所示,ce2 = translate (ce1, p1, p5),即变换规则t为translate(),定义的具体规则f1为:起点和终点分别为p2和p3。
[0033]
由具体实施例2、3可见, 如果没有迭代的变换并得到复合元素ce0和ce1,要实现该效果则需要将p1、p2、p3 ,按照p1、p3组成的向量进行平移,得到p7,p8,p9;按照p1、p5为向量进行平移,得到p10,p11,p12并以[p1, p2, p3]为原像集,[[p7, p8, p9], [p10, p11, p12 ]] 为映像集,再次进行两个分支迭代变换,迭代深度为2;这种迭代基础上再次迭代的方式计算方式复杂,具体运算时调用硬件资源大,运算时间长;本发明直接对迭代元素进行平移变换,降低了映像规则的思维难度。
[0034]
以上为本发明的一种实施方式,其描述较为具体和详细,但不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明的构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1