基于多控制点的矢量图形上下边界线形状自动调整方法

文档序号:6625260阅读:369来源:国知局
基于多控制点的矢量图形上下边界线形状自动调整方法
【专利摘要】本发明涉及一种基于多控制点的矢量图形上下边界线形状自动调整方法,采用本发明在调整矢量图形边界线形状时,只需要确定建模线上有限个数的控制点位置,所有矢量图形的边界线自动依据建模线的形态调整自己的边界线形状,无需手动调整边界线上的每一个控制点,通过该方法可以绘制平滑、美观的边界线,从而大大降低了工作量,进而提高了工作效率。因此,本发明可以适用于计算机矢量图形绘制及图形上、下边界线形状的调整。
【专利说明】基于多控制点的矢量图形上下边界线形状自动调整方法

【技术领域】
[0001]本发明涉及一种矢量图形调整方法,特别是关于一种基于多控制点的矢量图形上下边界线形状自动调整方法。

【背景技术】
[0002]目前,计算机辅助绘制的工程地质剖面图是由很多的矢量图形单元构成。对于复杂的矢量图形形状,调整矢量图形的边界形状时,需要手工在边界线上添加很多控制点,通过上下左右调整这些控制点的位置使得矢量图形的边界线形状达到想要的效果。但是,如果需要调整的边界线很多,并且这些边界线的形态基本是一致的情况下,手工调整边界线上每一个控制点不仅需要大量的工作量,也不能保证调整后所有边界线的形态一致。


【发明内容】

[0003]针对上述问题,本发明的目的是提供一种不仅能够一次调整多个矢量图形的上下边界线形状,而且能够使得所有被调整的边界线的形态一致的基于多控制点的矢量图形上下边界线形状自动调整方法。
[0004]为实现上述目的,本发明采取以下技术方案:一种基于多控制点的矢量图形上下边界线形状自动调整方法,其包括以下步骤:1)在计算机显示的视图范围内,在矢量图形的外围,任意选取控制点,并利用贝塞尔曲线逼近算法及得到的控制点坐标数据绘制建模线,且建模线经过计算机显示的视图范围内的每个控制点;2)通过计算机显示的视图范围中显示的建模线,循环所有矢量图形,以得到需求的矢量图形边界线。
[0005]所述步骤I)中,建模线的形状调整通过改变控制点上下位置,或者在两个控制点之间添加新的控制点,或者删除已有的某个控制点实现。
[0006]所述步骤2)包括以下步骤:1、获取计算机显示的视图范围内的矢量图形上、下边界线对应的开始端点startl、start2和结束端点endl、end2 ; I1、获取控制计算机显示的视图范围内的矢量图形上、下边界线形状的建模线;111、获取以startl、start2为开始端点,以endl、end2为结束端点对应的待求上、下边界线段中控制点数据;IV、根据控制计算机显示的视图范围内的矢量图形上、下边界线形状的建模线及上、下边界线上的控制点数据,对应计算上、下边界线的均匀加密的曲线数据点,以得到需求的矢量图形边界线。
[0007]所述步骤2)的步骤II中包括以下内容:循环计算机显示的视图范围内的所有建模线,求经过上/下边界的开始端点的垂线与对应的每一建模线的交点;选取所有交点中的Y坐标值与上/下边界的开始端点的Y坐标值的差值最小并且交点的Y坐标值大于上/下边界的开始端点的Y坐标值的交点,该交点所在的建模线就是所求的控制计算机显示的视图范围内的矢量图形上/下边界形状的建模线。
[0008]所述步骤2)的步骤IV中包括以下内容:①取上边界线上的控制点数据中的第I个数据ptl、第2个数据pt2 ;②获取控制计算机显示的视图范围内的矢量图形上边界线形状的建模线上均匀加密的数据点;③利用建模线上均匀加密的数据点,计算上边界线上任意相邻两点Ptl点与pt2点之间的线段上的数据点取上边界线上的控制点数据中的第2个数据点Pt2、第3个数据点pt3 ;重复步骤②、步骤③计算上边界线上此两点之间的均匀加密的曲线数据点;以此类推,求出上边界线上所有相邻两控制点之间的均匀加密的曲线数据点,并按照先后顺序保存均匀加密的曲线数据点,形成需求的矢量图形的上边界线。
[0009]本发明由于采取以上技术方案,其具有以下优点:本发明利用贝塞尔曲线逼近算法及得到的控制点坐标数据确定建模线;然后,根据建模线均匀加密的曲线数据,依据三角形相似性质,计算与建模线形态一致的矢量图形边界线的均匀加密的曲线数据点;再利用贝塞尔曲线逼近算法及边界线完整的均匀加密的曲线数据点,向当前图形添加边界线曲线。因此在调整矢量图形边界线形状时,只需要确定建模线上有限个数的控制点位置,所有矢量图形的边界线自动依据建模线的形态调整自己的边界线形状,无需手动调整边界线上的每一个控制点,通过该方法可以绘制平滑、美观的边界线,从而大大降低了工作量,进而提高了工作效率。因此,本发明可以适用于计算机矢量图形绘制及图形上、下边界线形状的调整。

【专利附图】

【附图说明】
[0010]图1是边界线均匀加密的曲线数据点的计算过程的流程图

【具体实施方式】
[0011]下面结合附图和实施例对本发明进行详细的描述。
[0012]计算机辅助绘制的工程地质剖面图是由很多的矢量图形构成,生成的矢量图形的上下边界线形状可能与需求的形状不一致,并且视图中可能会有很多的矢量图形,尤其是那些在位置上具有上下关系的矢量图形的上下边界线的形态是一致的,此时需要针对显示在计算机显示的视图范围内的每一个矢量图形的边界线上的控制点进行调整,以实现其边界线的调整,进而得到需求的最终的矢量图形边界线。
[0013]本发明基于多控制点的矢量图形上下边界线形状自动调整方法,其包括以下步骤:
[0014]I)在计算机显示的视图范围内,在矢量图形的外围,一般是在矢量图形的上面的空白区域,任意选取控制点并得到其位置坐标。将控制点的位置坐标转换为设备坐标,并保证控制点的坐标系统与矢量图形的坐标系统一致,以便与实际应用情况相符。
[0015]利用贝塞尔曲线逼近算法及得到的控制点坐标数据,向计算机显示的视图范围内添加的一段样条曲线,即建模线,该建模线经过视图范围内的每个控制点。上述建模线的形状调整能够通过改变控制点的上下位置,或者在两个控制点之间添加新的控制点,或者删除已有的某个控制点实现。
[0016]需要说明的是,由于在计算机显示的视图范围内绘制的矢量图形很多,如果上下两个矢量图形的上、下边界线的形态不一致,就分别在两个矢量图形各自的上部外围区域绘制一条建模线。如果几个矢量图形的上、下边界线的形态是一致的,就在最上面的那个矢量图形的上部外部区域绘制一条建模线,所以在计算机显示的视图范围内可能会有多条建模线,每一条建模线只是控制此建模线与下面那条建模线之间区域内绘制的矢量图形的上、下边界线形状,即每个矢量图形的上下边界线形状只是被在它上面且距离最近的那条建模线控制,通常控制矢量图形的建模线在矢量图形的上部外围区域。通过建模线调整矢量图形边界线,从而得到需求的矢量图形边界线。
[0017]在工程地质剖面图中,矢量图形不重叠,所以绘制的这些建模线之间也不会重叠。
[0018]2)通过计算机显示的视图范围内显示的建模线循环所有矢量图形,以得到需求的矢量图形边界线。
[0019]1、获取计算机显示的视图范围内的矢量图形上边界线开始端点与结束端点startl、endl,下边界线开始端点与结束端点start2、end2,且每个端点都有一对(x, y)坐标;
[0020]I1、获取控制计算机显示的视图范围内的矢量图形上、下边界线形状的建模线;
[0021]在计算机显示的视图范围内,在矢量图形的上部外围区域内可能会有多条建模线,而且矢量图形的上、下边界线的形状都是由选择的建模线控制,所以在本发明中选取矢量图形的上边界线端点数据进行计算,并得到控制计算机显示的视图范围内的矢量图形上、下边界线形状的建模线,其过程如下:
[0022]循环计算机显示的视图范围内的所有建模线,求经过startl点的垂线(经过startl点且与X轴垂直的直线)与每一建模线的交点。选取所有交点中的Y坐标值与startl的Y坐标值的差值最小并且交点的Y坐标值大于startl的Y坐标值,那么此交点所在的建模线就是所求的控制计算机显示的视图范围内的矢量图形上边界形状的建模线。
[0023]同理,得到控制计算机显示的视图范围内的矢量图形下边界形状的建模线。
[0024]II1、获取以startl为开始端点、以endl为结束端点的待求上边界线段中控制点数据,并获取以start2为开始端点、以end2为结束端点的待求下边界线段中控制点数据;以便结合开始端点、结束端点成为计算需求的边界线上的控制点数据;
[0025]在工程地质剖面图中,绘制的最初始的矢量图形的上、下边界线是直线段,只有开始端点、结束端点,此时控制点个数为O。但是为了控制边界线的形态,需要在边界线的端点之间其它位置上添加新的控制点。在端点与控制点之间的其它位置上可以添加新的控制点,在两个相邻的控制点之间也可以添加新的控制点,此时控制点个数大于O。如果在两个相邻的控制点PT1、PT2之间添加一个新的控制点PT3,原来以PTl为开始端点、以PT2为结束端点的直线段L就被分解为两个新的直线段,其中一边新的直线段以PTl为开始端点、以PT3为结束端点,另一边新的直线段以PT3为开始端点、以PT2为结束端点,再通过PT3点将两个新的直线段连接在一起构成矢量图形的边界线,此时的边界线由多个直线段首尾相连构成。所以矢量图形的边界线可能是一条直线,也可能是一条由多个直线段首尾相连构成的折线。然后通过改变控制点的上下位置,进而调整边界线形状。
[0026]由于控制计算机显示的视图范围内的矢量图形上边界形状的建模线计算需求的边界线数据时,需要按照边界线上的线段分别进行计算,因此设端点startl、endl及上边界线上添加的控制点数据成为后续计算需求的上边界线上的控制点数据;端点start2、end2及下边界线上添加的控制点数据成为后续计算需求的下边界线上的控制点数据。
[0027]IV、根据获取控制计算机显示的视图范围内的矢量图形上边界线形状的建模线及上边界线上的控制点数据,计算上边界线的均匀加密的曲线数据点,从而得到矢量图形需求的上边界线,同理得到矢量图形需求的下边界线。
[0028]由于上、下边界线的均匀加密的曲线数据点的过程相同,故只以上边界线的均匀加密的曲线数据点的求解过程为例进行说明,如图1所示,其步骤如下:
[0029]①取上边界线上的控制点数据中的第I个数据ptl、第2个数据pt2 ;
[0030]②获取控制计算机显示的视图范围内的矢量图形上边界线形状的建模线上均匀加密的数据点;
[0031]因为绘制出来的原始建模线上的数据点是不均匀的,在计算矢量图形边界线的时候需要建模线上的数据点是均匀的,这样计算出来的矢量图形边界线上的数据也是均匀的。为了获取均匀的建模线数据,首先需要在建模线的原始线条上两侧再增加更多的数据点,形成建模线加宽后的路径。然后,获取建模线加宽后的绘图路径边界上各点的数据。最后,根据获取的建模线加宽后的绘图路径边界上的各点数据,在Ptl的X坐标及pt2的X坐标范围内的数据点,将这些数据点按照每N个为一组,且N为正整数,计算每组数据的X坐标和Y坐标的均值,每组的X均值、Y均值构成一个曲线数据点temp,这些曲线数据点就是所求的建模线上均匀加密的数据点。
[0032]需要说明的是,将数据点以N个为标准分为一组,不是固定的,取决于绘图的需要,也可以取每10个或者20个数据点为一组,但是这样增加了计算量,同时也增加了所求数据的个数。在本发明中取每50个数据为一组就可以达到绘图的需要。
[0033]③利用建模线上均匀加密的数据点,计算上边界线上任意相邻两点ptl点与pt2点之间的线段上的数据点。
[0034]设建模线上均匀加密的数据点构成的曲线为已知曲线段;
[0035]建模线上均匀加密的数据点中的两个端点数据构成的直线段为已知直线段1,长度为d;
[0036]ptl点与pt2点之间的直线段为已知直线段2,长度为dCal ;
[0037]以ptl为起点、以pt2为结束点并且形态与已知曲线段一致的曲线为待求曲线段,其原理如下:
[0038]首先,根据X坐标按照从小到大顺序排序已知直线段2的两个端点ptl、pt2,以便按照从小到大的顺序。
[0039]然后,计算已知直线段2的直线距离与已知直线段I的直线段距离的比例系数ratel ;
[0040]利用已知曲线段上的均匀加密数据点Ci,其中,第一个数据表示为C1点,...,最后一个数据表示为Cn点,计算待求曲线段上与已知曲线段形态一致的均匀加密的曲线数据点,其具体步骤如下:
[0041]a、计算已知曲线段上的数据点中第一个数据C1到已知直线段I的垂足intersect,过程如下:
[0042]已知直线段I的两个端点分别为:点C1,坐标为(Xpy1);点(V坐标为(Xn,yn)。已知曲线段上的数据点中任意一点,坐标为(m, η)。
[0043]由C1, Cn 两点确定的直线方程为 Ax+By+C = 0,其中,A = Yn-Y1, B = X1-Xn, C =Υι* (χη-χι) -Xi* (yn-yi)。
[0044]求已知曲线段上的数据点中第一个数据C1至已知直线段I的垂足intersect,垂足 intersect 的坐标(xf,yf),其计算公式:xf = _0*D+A*C)/ (B'2+A"2),其中 D = A*n_B*m ;yf = B*(χ-m)/A+n ;
[0045]b、计算已知曲线段上的数据点中第一个数据C1到已知直线段I的最短距离Distance ;
[0046]已知曲线段上的数据点中第一个数据C1与垂足intersect的距离,已知曲线段上的数据点中第一个数据C1坐标为(m, η),垂足的坐标为(xf, yf),则采用Distance =squrt ((yf-n) '2+ (xf-m) "2)计算最短距离 Distance ;
[0047]C、计算垂足intersect与已知直线段I起点构成的直线段占整个已知直线段I的比例系数rate ;
[0048]已知直线段I的两个端点分别为:点C1,坐标为(Xpy1),点(V坐标为(xn,yn)。垂足的坐标为(xf,yf) ο 采用 rate = squrt ((Yf-Y1) '2+(Xf-X1) ~2)/squrt ((Yn-Y1) ~2+(Xn-X1) ~2)计算比例系数rate ;
[0049]d、计算已知直线段2上,以ptl为起点,与rate比例一致的线段长度radius =dCal*rate ;
[0050]e、计算已知直线段2上与ptl的距离为radius的点intersectCal ;
[0051]设ptl 点的坐标(Px1, Py1),pt2 点的坐标(px2, py2)。点 intersectCal 是待求曲线段上的点到已知直线段2的垂足,坐标(X。,y。),此点同时也是已知直线段2上的点。通过公式(yc-pyi) ^+(Xc-PX1) '2 = radius~2 和(Yc-Py1)/ (Xc-PX1) = (Py2-Py1) / (PX2-PX1)计算点 intersectCal 的坐标(x。,yc);
[0052]f、计算待求曲线段上的曲线数据点ptCal ;
[0053]已知直线段2的两个端点ptl点的坐标(Px1, Py1), pt2点的坐标(px2, py2),又已知垂足点intersectCal的坐标(x。,y。),求曲线数据点ptCal,坐标为(px3, py3),具体过程如下:
[0054]首先,求出已知直线段2的法向量V,即过点ptCal与点intersectCal直线的斜率V = (px「px2) / (Py2-Py1);
[0055]然后,利用公式(py3-yc)/(px3-xc)= V 和 Squrt ((py3-yc) '2+ (px3-xc) '2)=ratel氺distance 计算点 ptCal ;
[0056]重复步骤a)?f),依次求出并保存已知曲线段上的数据点中第二个数据C2相对应的待求曲线段上的曲线数据点PtCal,以此类推,直到得到待求曲线上所有的数据点。
[0057]④采用相同方法,取上边界线上的控制点数据中的第2个数据点pt2、第3个数据点Pt3。按照第②步、第③步的方法计算上边界线上此两点之间的均匀加密的曲线数据点。以此类推,求出上边界线上所有相邻两控制点之间的均匀加密的曲线数据点,并按照先后顺序保存均匀加密的曲线数据点,这些形成需求的矢量图形的上边界线。同理得到需求的矢量图形的下边界线,从而得到需求的矢量图形边界线。
[0058]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
【权利要求】
1.一种基于多控制点的矢量图形上下边界线形状自动调整方法,其包括以下步骤: 1)在计算机显示的视图范围内,在矢量图形的外围,任意选取控制点,并利用贝塞尔曲线逼近算法及得到的控制点坐标数据绘制建模线,且建模线经过计算机显示的视图范围内的每个控制点; 2)通过计算机显示的视图范围中显示的建模线,循环所有矢量图形,以得到需求的矢量图形边界线。
2.如权利要求1所述的基于多控制点的矢量图形上下边界线形状自动调整方法,其特征在于:所述步骤I)中,建模线的形状调整通过改变控制点上下位置,或者在两个控制点之间添加新的控制点,或者删除已有的某个控制点实现。
3.如权利要求1所述的基于多控制点的矢量图形上下边界线形状自动调整方法,其特征在于:所述步骤2)包括以下步骤: 1、获取计算机显示的视图范围内的矢量图形上、下边界线对应的开始端点startl、start2 和结束端点 endl、end2 ; I1、获取控制计算机显示的视图范围内的矢量图形上、下边界线形状的建模线; II1、获取以startl、start2为开始端点,以endl、end2为结束端点对应的待求上、下边界线段中控制点数据; IV、根据控制计算机显示的视图范围内的矢量图形上、下边界线形状的建模线及上、下边界线上的控制点数据,对应计算上、下边界线的均匀加密的曲线数据点,以得到需求的矢量图形边界线。
4.如权利要求2所述的基于多控制点的矢量图形上下边界线形状自动调整方法,其特征在于:所述步骤2)包括以下步骤: 1、获取计算机显示的视图范围内的矢量图形上、下边界线对应的开始端点startl、start2 和结束端点 endl、end2 ; I1、获取控制计算机显示的视图范围内的矢量图形上、下边界线形状的建模线; II1、获取以startl、start2为开始端点,以endl、end2为结束端点对应的待求上、下边界线段中控制点数据; IV、根据控制计算机显示的视图范围内的矢量图形上、下边界线形状的建模线及上、下边界线上的控制点数据,对应计算上、下边界线的均匀加密的曲线数据点,以得到需求的矢量图形边界线。
5.如权利要求3或4所述的基于多控制点的矢量图形上下边界线形状自动调整方法,其特征在于:所述步骤2)的步骤II中包括以下内容:循环计算机显示的视图范围内的所有建模线,求经过上/下边界的开始端点的垂线与对应的每一建模线的交点;选取所有交点中的Y坐标值与上/下边界的开始端点的Y坐标值的差值最小并且交点的Y坐标值大于上/下边界的开始端点的Y坐标值的交点,该交点所在的建模线就是所求的控制计算机显示的视图范围内的矢量图形上/下边界形状的建模线。
6.如权利要求3或4所述的基于多控制点的矢量图形上下边界线形状自动调整方法,其特征在于:所述步骤2)的步骤IV中包括以下内容: ①取上边界线上的控制点数据中的第I个数据ptl、第2个数据pt2; ②获取控制计算机显示的视图范围内的矢量图形上边界线形状的建模线上均匀加密的数据点; ③利用建模线上均匀加密的数据点,计算上边界线上任意相邻两点Ptl点与pt2点之间的线段上的数据点; ④取上边界线上的控制点数据中的第2个数据点pt2、第3个数据点pt3;重复步骤②、步骤③计算上边界线上此两点之间的均匀加密的曲线数据点;以此类推,求出上边界线上所有相邻两控制点之间的均匀加密的曲线数据点,并按照先后顺序保存均匀加密的曲线数据点,形成需求的矢量图形的上边界线。
7.如权利要求5所述的基于多控制点的矢量图形上下边界线形状自动调整方法,其特征在于:所述步骤2)的步骤IV中包括以下内容: ①取上边界线上的控制点数据中的第I个数据ptl、第2个数据pt2; ②获取控制计算机显示的视图范围内的矢量图形上边界线形状的建模线上均匀加密的数据点; ③利用建模线上均匀加密的数据点,计算上边界线上任意相邻两点Ptl点与pt2点之间的线段上的数据点; ④取上边界线上的控制点数据中的第2个数据点pt2、第3个数据点pt3;重复步骤②、步骤③计算上边界线上此两点之间的均匀加密的曲线数据点;以此类推,求出上边界线上所有相邻两控制点之间的均匀加密的曲线数据点,并按照先后顺序保存均匀加密的曲线数据点,形成需求的矢量图形的上边界线。
【文档编号】G06T1/00GK104200423SQ201410432790
【公开日】2014年12月10日 申请日期:2014年8月27日 优先权日:2014年8月27日
【发明者】谢兄, 张维石, 史金余, 曹志英, 李辉, 翟华伟, 陈修权 申请人:大连海事大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1