本发明涉及动态几何应用软件技术领域,具体的说,是一种动态几何软件中基于参数的坐标系实现方法。
背景技术:
基于动态几何的应用软件,主要用于数学、物理等理科的教学辅助软件。坐标系是理科常用辅助方法。常用的坐标系种类有笛卡尔直角坐标系、平面极坐标系、柱面坐标系和球面坐标系。平面中常使用直角坐标系和极坐标系。我们常常需要借助坐标系描述质点的位置和方向、在不同的坐标系中观察图形、在多个坐标系中进行图形对比、调整坐标系的范围等。现有的动态几何软件存在以下问题:
a.坐标系视图占据了整个画布页面,不能在同一工作环境下支持多坐标系;
b.不能动态的调整坐标系范围和坐标轴的1单位长度;
c.不能将原点o(0,0)进行偏移操作到非零位置;
因此,现有技术中的动态几何软件不满足不同场景的教学应用。
技术实现要素:
本发明的目的在于提供一种动态几何软件中基于参数的坐标系实现方法,用于解决现有技术中动态几何软件同一工作环境不支持多坐标系、不能动态调整坐标系范围和坐标轴的1单位长度以及不能将原点o(0,0)进行偏移操作到非零位置的问题。
本发明通过下述技术方案解决上述问题:
一种动态几何软件中基于参数的坐标系实现方法,包括:
创建用户自定义坐标系,用户自定义坐标系包括原点、x轴、y轴、端点控制点、单位长度控制点和数据转换模块;
所述单位长度控制点包括单位长度控制变量和单位控制点,用于根据单位控制点被拖动前后的位置变换修改x轴和/或y轴的单位长度;
所述端点控制点包括端点控制变量和端点,用于根据端点被拖动前后的位置变换修改坐标系在动态几何画布页面的范围;
还包括由x轴和y轴创建的网格对象axisgrid,根据x轴和y轴的属性计算出网格对象的左上角和右下角位置;
所述数据转换模块为世界坐标系坐标与目标坐标系坐标的矩阵变换,用于在动态几何变换中将世界坐标转换为目标坐标系坐标或者将目标坐标系坐标转换为世界坐标;
用户拖动端点控制点或单位长度控制点进行坐标转换时,根据位置坐标变换,计算出端点控制变量或单位长度控制变量,并根据计算结果修改轴的偏移量、轴、网格和数据转换模块;或者直接根据修改的轴的偏移量,修改轴、网格和重置数据转换模块。
进一步地,所述创建用户自定义坐标系的方法为:
a、选取一个点作为原点,记作o(o_x,o_y);
b、指定x轴半轴长为lx,y轴半轴长为ly,lx>0,ly>0;
c、分别创建x轴、y轴的两侧端点坐标:
创建x轴的端点控制变量ax,再由lx的长度乘以端点控制变量的值加上原点o的x坐标,求得x轴的右侧端点xr的x坐标(lx*ax+o_x),x轴右侧端点xr的y坐标为o_y,即x轴右侧端点xr(xr_x,xr_y)=xr(lx*ax+o_x,o_y);
同理,创建x轴的左侧端点xl(xl_x,xl_y)=xl(0_x-lx*ax,o_y);
创建y轴的端点控制变量ay,再由ly的长度乘以端点控制变量的值加上原点o的y坐标,求得y轴的上侧端点yt的y坐标(ly*ay+o_y),y轴上侧端点yt的x坐标为o_x,即y轴上侧端点yt(yt_x,yt_y)=yt(0_x,ly*ay+o_y);
同理,创建y轴的下侧端点yb(yb_x,yb_y)=yb(0_x,o_y-ly*ay);
d、分别创建x轴的单位长度控制变量u4和y轴的单位长度控制变量u5,由原点o的位置计算出x轴的控制点的位置记作xp(u4+o_x,o_y);y轴的单位控制点记作yp(o_x,u5+o_y);
e、创建x轴和y轴:
由点xl、原点o、点xp、点xr创建x轴,记作xz;
由点yl、原点o、点yp、点yr创建y轴,记作yz;
并为x轴、y轴分别设定了属性,属性包括间距、单位、是否显示数字、是否显示刻度、偏移量、间距控制刻度的位置、单位控制是否以π为单位和偏移量控制原点移动;
f、由x轴和y轴创建网格对象记作axisgrid,axisgrid根据x轴和y轴的属性计算出网格的左上角和右下角位置记作lefttop和rightbottom;其中:
axisgrid的原点坐标为(o_x-x轴偏移值*x轴的间距,o_y-y轴的偏移值*y轴的间距);
lefttop的坐标为(xl_x,yt_y)即(o_x-lx*ax,ly*ay+o_y);
rightbottom的坐标为(xr_x,yb_y)即(lx*ax+o_x,o_y-ly*ay);
并为网格设定属性,属性包括网格类型、是否显示网格属性和该坐标系是否为当前使用坐标系;
当用户拖动控制点调整轴单位长度和/或拖动端点控制点调整坐标系的范围时,根据拖动前后的位置,计算出单位长度控制变量和/或端点控制变量的值,并根据该值修改轴、网格、数据转换模块的属性。
当修改轴的偏移量时,需要修改轴和网格的属性,并重置数据转换模块。
进一步地,所述数据转换模块属性有x坐标偏移量、y坐标偏移量、x坐标缩放比、y坐标缩放比;所述属性分别由目标坐标系的原点的x坐标、y坐标、x轴单位、y轴单位控制;
数据转换模块提供接口有:
transgts,用于将世界坐标转换为目标坐标系坐标;
transsts,用于将目标坐标系坐标转换为世界坐标;
reset,用于重置数据转换模块。
本发明与现有技术相比,具有以下优点及有益效果:
本发明在同一工作环境下支持多坐标系,能够动态的调整坐标系的范围、单位长度以及创建不等比的坐标系;可实现坐标原点偏移的坐标系。
附图说明
图1为本发明的拖动端点控制点的坐标系实现流程图;
图2为拖动单位长度控制点的坐标系实现流程图;
图3为拖动x轴的单位长度控制点的坐标系实现效果图;
图4为设置非等比坐标系的效果图;
图5为轴坐标偏移的实现流程图;
图6为轴坐标偏移效果图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1所示,一种动态几何软件中基于参数的坐标系实现方法,创建用户自定义坐标系,用户自定义坐标系由一个原点、四个范围控制点、两个单位控制点、两根轴和一个数据转换模块构成。原点确定一个坐标系的位置。四个范围控制点控制x轴和y轴的范围。两个单位控制点控制x轴和y轴的单位长度。两根轴分别是坐标系的x轴和y轴,轴有间距、单位、是否显示数字、是否显示刻度、偏移属性。数据转换模块将元素的世界坐标转换为目标坐标系的坐标。
用户自定义坐标系创建实现流程如下:
选取一个点作为原点记作o(o_x,o_y);
指定一个具体数据作为坐标轴半轴长的默认值(该值必须是大于0的数字)记作l;
创建一个变量端点控制变量,再由l的长度乘以端点控制变量的值加上原点o的x坐标轴求得x轴的右侧点的x坐标(l*端点控制变量+0_x),x轴右侧点的y坐标为o_y,我们将该点记作记作xr(xr_x,xr_y)。
同理创建变量3个端点控制变量分别计算得x轴的左侧点y轴的两个端点并依次记作xl(xl_x,xl_y)、yt(yt_x,yt_y)、yb(yb_x,yb_y);
创建一个变量单位长度控制变量,再由原点的位置计算出x轴的控制点的位置记作xp,其x坐标的计算公式为单位长度控制变量+o_x;y轴的单位控制点记作yp,其y坐标的计算公式为单位长度控制变量+o_y;
由点xl、o、xp、xr创建x轴记作xz,由点yl、o、yp、yr创建y轴记作yz,并为轴设定了间距、单位、是否显示数字、是否显示刻度、偏移值属性,间距控制刻度的位置,单位控制是否以π为单位三角坐标系,偏移量控制原点移动;
由x轴和y轴创建一个网格对象记作axisgrid,axisgrid根据x轴和y轴的属性计算出网格的左上角和右下角位置记作lefttop和rightbottom;并为网格设定了网格类型(直角坐标系和极坐标系)、是否显示网格属性、该坐标系是否为当前使用坐标系;
数据转换模块是将世界坐标转换为目标系坐标的矩阵变化,模块属性有x坐标偏移量、y坐标偏移量、x坐标缩放比、y坐标缩放比。属性分别由目标坐标系的原点的x坐标、y坐标、x轴单位、y轴单位控制。模块提供接口有将世界坐标转换为目标坐标系坐标记作transgts、将目标坐标系坐标转换为世界坐标记作transstg、重置数据转换模块记作reset。
对用户自定义坐标系可执行下列操作:
1)拖动端点控制点调整坐标系范围,如图1所示;
拖动端点;
计算端点控制变量,
端点控制变量=(端点对应坐标值-原点对应坐标值)/l;其中l为端点所在轴的半轴长;
由计算出的端点控制变量,修改对应坐标值和网格;
修改数据转换模块;
修改元素位置。
例如:拖动x轴右侧的端点控制点调整坐标系范围,计算端点控制变量ax,
端点控制变量ax=(右侧端点对应x轴坐标值-原点对应x轴坐标值)/lx,其中lx为x轴的半轴长;
由计算出的端点控制变量ax,修改对应坐标值和网格;
若是拖动y轴上侧的端点控制点调整坐标系范围,计算端点控制变量ay,
端点控制变量ay=(上侧端点对应y轴坐标值-原点对应y轴坐标值)/ly,其中ly为y轴的半轴长;
由计算出的端点控制变量ay,修改对应坐标值、网格、数据转换模块和元素位置。
2)拖动控制点调整轴单位长度,如图2所述;
拖动轴上单位长度控制点;
计算单位长度控制变量值:
单位长度控制变量值=单位点对应坐标值-原点对应坐标值;
修改轴和网格;
修改数据转换模块。
这里如果是拖动x轴的控制点,则x轴的单位长度控制变量u4=单位点对应x轴坐标值-原点对应x轴坐标值;这里如果是拖动y轴的控制点,则y轴的单位长度控制变量u5=单位点对应y轴坐标值-原点对应y轴坐标值;如图3所述,为拖动x轴的控制点调整轴单位长度的前后对比图;
3)设置非等比坐标系
当x轴的单位长度控制变量u4≠y轴的单位长度控制变量u5时,当前坐标系为非等比坐标系,如图4所示;
4)实现轴坐标偏移,如图5所示;
修改轴的偏移量为2;
修改轴和网格;
重置数据转换模块。
如图6所示,为x轴向左偏移2个单位。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。