动态虚拟标尺模块和线段长度计算模块以及矢量图画图模块
系统和画图方法
技术领域
本发明涉及画图设计技术领域,尤其涉及一种动态虚拟标尺模块和线段长度计算模块以及矢量图画图模块系统和画图方法。
背景技术
矢量图又叫向量图,是用一系列计算机指令来描述和记录一幅图,一幅图可以解为一系列由点、线、面等到组成的子图,它所记录的是对象的几何形状、线条粗细和色彩等。生成的矢量图文件存储量很小,特别适用于文字设计、图案设计、版式设计、标志设计、计算机辅助设计(CAD)、工艺美术设计、插图等。矢量图和位图相比,其最大的优点就是放大多少倍都不会出现马赛克,永远都能保持清晰的线条,而且占用的磁盘空间也很小。
在画矢量图的设计领域中,如:房间设计、交通路段设计、工业模具设计等,为了使得通过矢量图更好地模拟真实世界中的物体尺寸,人们需要时常需要对图中的各个线段的长度进行设置。目前对于矢量图中各个线段的长度进行设置的方式有如下两种:第一种,对两节点之间的长度挨个设置,一般常见的方式为:每画一根线段的时候,都需要用户设置线段的长度,随后,先画的点保持不变,后画的点需要根据所设计的长度进行自动调整,但这种方式会导致操作繁琐且画图过程被线段长度设置不停地打断的问题;第二种基于预先设置的固定两节点对应固定长度的标尺进行展示,一般常见的方式有:地图绘制方式,但这种方式会存在如果只知道非此两个固定节点的长度则无法对该线段的长度进行设置的问题。
中国专利,公布号CN102737393B,公开日:2015.01.21的专利文献公开了一种架空线路矢量图绘制方法和系统,所述方法包括以下步骤:确定起点坐标与准终点坐标,利用所述起点坐标与准终点坐标计算起点与准终点间距离;预先设置支撑点间档距;自起点开始向准终点方向,每间隔与档距相等的距离则建立一个支撑点;直到离准终点最近的支撑点到准终点的距离小于第二阈值,则将所述离准终点最近的支撑点作为实际终点;使用线段连接起点与起点相邻的支撑点,连接任意两个相邻的支撑点,连接实际终点与实际终点相邻的支撑点,并根据支撑点与线段的关联,实现对矢量图的快速编辑修改。但该发明仅限于简单的架空线路矢量图的绘制,对于复杂线条的矢量图由于需要频繁的建立过多的支撑点而起不到快速编辑的效果。
发明内容
1.发明要解决的技术问题
针对现有技术中存在的画线段矢量图时,线段的长度设置操作繁琐和画图过程被线段长度设置不停地打断以及只知道非此两个固定节点的长度则无法对该线段的长度进行设置的问题,本发明提供了一种动态虚拟标尺模块和线段长度计算模块以及矢量图画图模块系统和画图方法。它通过画图与线段长度设置操作分离,可以实现画图过程只关注图形设计本身,对于线段长度设置只需要在图形完成后对其中任意一个线段进行一次长度设置的目的。
2.技术方案
为达到上述目的,本发明提供的技术方案为:
一种动态虚拟标尺模块,能够根据被设置的线段长度以及线段两端节点对应的坐标计算标尺值,标尺值为单位坐标下的长度值K或者单位长度下的坐标值1/K,并将计算后的标尺值传输给线段长度计算模块;其中,所述被设置的线段长度以及线段两端节点对应的坐标从线段长度设置模块中获取。
进一步地,长度值K为不等于0的正实数;所述坐标为二维或三维坐标。
一种线段长度计算模块:能够根据所述标尺值以及任意两个节点的坐标值计算对应线段的长度值;所述任意两个节点的坐标值从节点拾取模块中获取作为两个基准点,并将所有计算后的线段长度值和对应的两节点坐标值一并传输给线段渲染模块。
一种矢量图画图模块系统,包括节点拾取模块、线段长度设置模块、所述动态虚拟标尺模块、所述线段长度计算模块和线段渲染模块;其中:所述节点拾取模块是指能对智能终端屏幕上的所有节点的坐标进行拾取,记录对应节点的坐标,并将所记录的节点坐标传输给线段长度设置模块和线段长度计算模块;所述线段长度设置模块是指能从节点拾取模块中获取任意两个节点的坐标作为基准点,对这两个基准点所对应的线段的长度进行设置,并将线段的长度以及两基准点的坐标传输给动态虚拟标尺模块;所述线段渲染模块是指根据线段长度计算模块中获取的所有线段长度和对应两节点坐标对所有线段进行绘制。
一种矢量图画图方法,步骤为:
步骤一、获取节点坐标:通过节点拾取模块获取屏幕中需要计算的相关节点坐标,并将所获取的节点坐标按操作的先后顺序记录;
步骤二、对任意线段设置长度值:从节点拾取模块中选择任意两个节点作为基准点,通过线段长度设置模块对该两个基准点所形成的线段的长度值进行设置,并将该两个基准点的坐标以及该两基准点间线段设置的长度值一并传给动态虚拟标尺模块;
步骤三、计算标尺值:动态虚拟标尺模块将步骤二中所述两个基准点的坐标以及该两节点间线段设置的长度值计算标尺值;
步骤四、对其它线段的长度进行计算:通过线段长度计算模块从节点拾取模块中读入其它线段对应的两个节点坐标,通过步骤三的标尺值计算该线段的长度值;并将所有计算后的线段长度值以及对应两节点坐标一并传输给线段渲染模块;
步骤五、线段绘制:线段渲染模块根据线段长度计算模块中获取的所有线段长度和对应两节点坐标对所有线段进行绘制。
进一步地,步骤三中所述标尺值计算公式为:
其中,K为两个基准点单位坐标下的标尺值;len为两基准点间线段设置的长度值;(x1,y1,z1)和(x2,y2,z2)为两基准点坐标值。
进一步地,步骤四中其它线段长度计算公式为:
其中,K为步骤三计算出的标尺值;(xa,ya,za)和(xb,yb,zb)为从节点拾取模块读入的其它线段对应的两个节点坐标。
进一步地,步骤三中所述基准点坐标为二维时,Z值为零,同样的步骤四中其它线段对应的两个节点坐标Z值也为零。
进一步地,所述智能终端包括但不仅限于台式电脑、手机、平板电脑、笔记本电脑。
3.有益效果
采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:
(1)本发明的一种动态虚拟标尺模块,能够在任何时刻可以对任意两个节点进行设置长度并将所设设置的长度与系统坐标相映射,还可以相互转换的动态虚拟标尺,解决了现有标尺只能对固定两节点的长度进行预先设置,如果只知道非此两个固定节点的长度则无法对该线段的长度进行设置的问题;
(2)本发明的一种线段长度计算模块,可以根据统一的标尺对所有线段进行自动计算的方法,解决了现有技术中需要对两节点之间的长度进行挨个设置而导致操作繁琐且画图过程被线段长度设置不停地打断的问题;
(3)本发明的一种矢量图画图模块系统,可以对图中任意两节点的长度进行动态设置以达到全图中任意两节点之间的长度一起变更的画图系统,这种系统用户只需要对任意线段长度一次设置即全图线段长度的自动更新;
(4)本发明的一种矢量图画图方法,提供了一种全新的画图方法,使得画图与线段长度设置操作分离,因此可以做到画图过程只关注图形设计本身,对于线段长度设置只需要在图形完成后对其中任意一个线段进行一次长度设置即可,全图中其他所有线段会自动根据已被设置的线段长度进行计算自己线段对应的长度,这样便大大降低了操作成本,提升了良好的操作体验;
(5)本发明的一种矢量图画图方法,适用于所有二维和三维矢量图的绘制,适应面广,通用性强。
附图说明
图1为本发明的矢量图画图方法操作示意图。
图2为本发明的矢量图画图模块系统的模块设计图。
具体实施方式
为进一步了解本发明的内容,结合附图对本发明作详细描述。
实施例1
本实施例的一种矢量图画图模块系统,包括节点拾取模块、线段长度设置模块、动态虚拟标尺模块、线段长度计算模块和线段渲染模块;其中:
节点拾取模块是指能对智能终端屏幕上的所有节点的坐标进行拾取,记录对应节点的坐标,并将所记录的节点坐标传输给线段长度设置模块和线段长度计算模块;
线段长度设置模块是指能从节点拾取模块中获取任意两个节点的坐标作为基准点,对这两个基准点所对应的线段的长度进行设置,并将线段的长度以及两基准点的坐标传输给动态虚拟标尺模块;
动态虚拟标尺模块是指能够根据被设置的线段长度以及线段两端节点对应的坐标计算标尺值,标尺值为单位坐标下的长度值K或者单位长度下的坐标值1/K,并将计算后的标尺值传输给线段长度计算模块;其中,被设置的线段长度以及线段两端节点对应的坐标从线段长度设置模块中获取;
线段长度计算模块,根据标尺值以及任意两个节点的坐标值计算对应线段的长度值;任意两个节点的坐标值从节点拾取模块中获取作为两个基准点,并将所有计算后的线段长度值和对应的两节点坐标值一并传输给线段渲染模块;
线段渲染模块是指根据线段长度计算模块中获取的所有线段长度和对应两节点坐标对所有线段进行绘制。
本实施例的一种矢量图画图方法,如图1和2所示:
步骤一、获取节点坐标:通过节点拾取模块将屏幕中需要计算的相关节点坐标,并将所获取的节点坐标按操作的先后顺序记录下来,如果是三维世界的坐标即为(x,y,z),x为X轴上的坐标,y为Y轴上的坐标,z为Z轴上的坐标;如果是二维世界的坐标即为(x,y),x为X轴上的坐标,y为Y轴上的坐标;节点拾取器对屏幕的操作节点获取方式可以但不限于以中断方式或者定时轮循的方式,节点拾取模块对节点坐标的存储方式包括但不限于链表或者数组;
步骤二、对任意线段设置长度值:通过线段长度设置模块从节点拾取模块中选择任意两个节点作为基准点,假设两基准点分别为:节点1坐标值为(x1,y1,z1),假设x1=1.0,y1=1.0,z1=1.0,节点2的坐标值为(x2,y2,z2),假设x2=4.0,y2=5.0,z2=6.0并对这两个节点所形成的线段的长度进行设置,假设被设置的长度值为len=10.5,最后将这两个节点的坐标以及这两节点间线段的长度len一并传给动态虚拟标尺模块;
步骤三、计算标尺值:动态虚拟标尺模块根据从线段长度设置器获取的两基准点的坐标,即节点1坐标值为(x1,y1,z1),节点2的坐标值为(x2,y2,z2),以及对应线段的长度(len)计算标尺值,算法如下:
K为单位坐标下的长度值,其取值获取为正实数,1/K为单位长度下的坐标值;由于x1=1.0,y1=1.0,z1=1.0,x2=4.0,y2=5.0,z2=6.0,len=10.5,则计算后K=1.48;
以上是三维坐标世界的计算公式,如果是二维世界的,需要将x,y,z坐标轴中任意一个坐标值设置为0即可,公式其他部分保持不变,假设二维世界中取x,y坐标轴的算法为:
最后将已计算的标尺值传输给线段长度计算器;
步骤四、对其它线段的长度进行计算:线段长度计算模块从节点拾取模块读入线段对应的两个节点坐标,分别为节点A坐标为(xa,ya,za),假设xa=2.0,ya=2.0,za=2.0,节点B坐标为(xb,yb,zb),假设xb=2.0,yb=3.0,zb=2.0,节点C坐标为(xc,yc,zc),假设xc=3.0,yc=3.0,zc=2.0,即线段AB的两端节点分别为节点A和节点B,线段BC的两端节点分别为节点B和节点C,线段CA的两端节点分别为节点C和节点A;根据标尺值计算后的的线段AB的长度值为:
即Lab=1.48;线段BC的长度值为:
即Lbc=1.48;线段CA的长度值为:
即Lca=2.09;并将所有计算后的线段长度和对应两节点坐标一并传输线段渲染模块;如将线段长度Lab以及节点坐标(xa,ya,za)和(xb,yb,zb)一并传输给线段渲染模块,将线段长度Lbc以及节点坐标(xb,yb,zb)和(xc,yc,zc)一并传输给线段渲染模块,将线段长度Lca以及节点坐标(xc,yc,zc)和(xa,ya,za)一并传输给线段渲染模块;
步骤五、线段绘制:线段渲染模块根据线段长度计算模块中获取的所有线段长度和对应两节点坐标对所有线段进行绘制。
本实施例的矢量图画图方法,通过安装相应软件,可以在台式电脑、手机、平板电脑、笔记本电脑等智能终端上使用。
以上示意性的对本发明及其实施方式进行了描述,该描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。所以,如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。