曲线绘制方法和系统的制作方法

文档序号:10657016阅读:200来源:国知局
曲线绘制方法和系统的制作方法
【专利摘要】本发明涉及一种曲线绘制方法和系统,获取用户连续输入的第一绘制点和第二绘制点的坐标;选取第一绘制点和第二绘制点之间连线上的两个参考点,并获取两个参考点的坐标。查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将第一绘制点的坐标作为起始控制点的坐标;提取两个参考点的坐标中靠近第一绘制点的坐标作为终结控制点的坐标,提取另一参考点的坐标作为终结点的坐标。根据起始点的坐标、起始控制点的坐标、终结控制点的坐标和终结点的坐标进行贝塞尔曲线绘制,得到本次绘制的曲线段。终结点与绘制点之间的部分在下一次曲线绘制时完成,下一段曲线通过上一个绘制点调整曲线的角度,使得多条曲线的连接处光滑无锯齿,提高了曲线的平滑度。
【专利说明】
曲线绘制方法和系统
技术领域
[0001]本发明涉及图像绘制技术领域,特别是涉及一种曲线绘制方法和系统。【背景技术】
[0002]在图像和视频处理的软件中通常都会带有绘制功能,用户可以根据自己的需求移动鼠标进行点的绘制,计算机根据各点进行图像绘制。
[0003]传统的曲线绘制方法是收到鼠标点击的消息后,记录下来点击坐标,然后获取到鼠标移动过程的坐标,收到第二个坐标的时候在前后两个点间画出直线。当收到第三个点的坐标使用第二个和第三个点的坐标画直线,由各小段不同方向的线段组合成曲线。由于画出的曲线衔接处转折太明显,当作为一条长曲线看时有明显的锯齿,传统的曲线绘制方法存在绘制的曲线平滑度低的缺点。
【发明内容】

[0004]基于此,有必要针对上述问题,提供一种曲线平滑度高的曲线绘制方法和系统。
[0005]—种曲线绘制方法,包括以下步骤:
[0006]获取用户连续输入的第一绘制点和第二绘制点的坐标;
[0007]选取所述第一绘制点和所述第二绘制点之间连线上的两个参考点,并获取所述两个参考点的坐标;
[0008]查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将所述第一绘制点的坐标作为起始控制点的坐标;
[0009]提取所述两个参考点的坐标中靠近所述第一绘制点的坐标作为终结控制点的坐标,提取另一参考点的坐标作为终结点的坐标;
[0010]根据所述起始点的坐标、所述起始控制点的坐标、所述终结控制点的坐标和所述终结点的坐标进行贝塞尔曲线绘制,得到本次绘制的曲线段。
[0011]—种曲线绘制系统,包括:
[0012]绘制点获取模块,用于获取用户连续输入的第一绘制点和第二绘制点的坐标;
[0013]参考点获取模块,用于选取所述第一绘制点和所述第二绘制点之间连线上的两个参考点,并获取所述两个参考点的坐标;
[0014]起始坐标获取模块,用于查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将所述第一绘制点的坐标作为起始控制点的坐标;
[0015]终点坐标获取模块,用于提取所述两个参考点的坐标中靠近所述第一绘制点的坐标作为终结控制点的坐标,提取另一参考点的坐标作为终结点的坐标;
[0016]曲线绘制模块,用于根据所述起始点的坐标、所述起始控制点的坐标、所述终结控制点的坐标和所述终结点的坐标进行贝塞尔曲线绘制,得到本次绘制的曲线段。
[0017]上述曲线绘制方法和系统,获取用户连续输入的第一绘制点和第二绘制点的坐标;选取第一绘制点和第二绘制点之间连线上的两个参考点,并获取两个参考点的坐标。查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将第一绘制点的坐标作为起始控制点的坐标;提取两个参考点的坐标中靠近第一绘制点的坐标作为终结控制点的坐标,提取另一参考点的坐标作为终结点的坐标。根据起始点的坐标、起始控制点的坐标、终结控制点的坐标和终结点的坐标进行贝塞尔曲线绘制,得到本次绘制的曲线段。使用贝塞尔曲线来连接坐标点,在进行曲线绘制时每次只绘制一部分,终结点与绘制点之间的部分在下一次曲线绘制时完成。由于下一段曲线通过上一个绘制点调整曲线的角度,使得多条曲线的连接处光滑无锯齿,提高了曲线的平滑度。【附图说明】
[0018]图1为一实施例中曲线绘制方法的流程图;
[0019]图2为另一实施例中曲线绘制方法的流程图;
[0020]图3为一实施例中曲线绘制系统的结构图;
[0021]图4为另一实施例中曲线绘制系统的结构图。【具体实施方式】
[0022]—种曲线绘制方法,如图1所示,包括以下步骤:
[0023]步骤S110:获取用户连续输入的第一绘制点和第二绘制点的坐标。接收用户输入的绘制点,并获取连续输入的第一绘制点和第二绘制的坐标。第一绘制点和第二绘制点是用户连续输入的两个绘制点,可以理解,在进行曲线绘制时,随着用户不断输入绘制点,第一绘制点和第二绘制点具体所指的点也会随之发生变化。也就是说第一绘制点和第二绘制点仅用于区分不同的点,并没有限定具体位置。例如在上一次绘制曲线时,则第一绘制点是上一次绘制时的第二绘制点。
[0024]用户具体可通过点击或拖动鼠标来输入绘制点,也可以是通过触控笔、手指等点击或滑动触控屏来进行绘制点的输入,即用户输入绘制点的方式并不唯一。本实施例中第一绘制点和第二绘制点的坐标为用户点击的位置坐标,或用户操作所产生的运动轨迹的起点和终点的坐标,例如,当第一次绘制曲线段时,将鼠标点击的位置作为第一绘制点,然后获取到鼠标移动结束后点击的坐标,作为第二绘制点的坐标。而在后续的曲线段绘制过程中,可直接将用户拖动鼠标时在屏幕产生的运动轨迹的起点和终点分别作为第一绘制点和第二绘制点。[〇〇25]步骤S120:选取第一绘制点和第二绘制点之间连线上的两个参考点,并获取两个参考点的坐标。在确定第一绘制点和第二绘制点的坐标后,可对两者进行虚拟连线,选取连线上的两个点作为参考点并进行坐标提取。
[0026]参考点在连线上的位置可根据实际情况调节,本实施例中步骤S120具体包括:获取第一绘制点和第二绘制点之间距离的三等分点作为参考点,并获取两个参考点的坐标。 对第一绘制点和第二绘制点之间的距离三等分,得到中间的两个坐标作为两个参考点的坐标,便于坐标计算和提取,且在后续的曲线绘制时只画出2/3的曲线,剩余1/3的距离用作对下一段曲线进行曲线角度的调整,使得各曲线段的连接处光滑过度。[〇〇27]步骤S150:查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将第一绘制点的坐标作为起始控制点的坐标。
[0028]上一次绘制的曲线段是指在同一次曲线绘制中的上一曲线段,可将鼠标停止点击或移动作为绘制停止指令,两次绘制停止指令之间用户连续点击鼠标或移动鼠标的动作作为同一次曲线绘制。曲线段的终点坐标即指在一次曲线段绘制完成后,该曲线段的绘制终点的坐标。以同一次曲线绘制中的第一个曲线段为基础,每次确定两个连续的绘制点以及绘制点之间的参考点之后,找到上一次曲线绘制时得到的曲线段,并获取曲线段的终点坐标作为起始点的坐标,并将第一绘制点的坐标作为起始控制点的坐标,用作后续进行曲线绘制。[〇〇29]步骤S160:提取两个参考点的坐标中靠近第一绘制点的坐标作为终结控制点的坐标,提取另一参考点的坐标作为终结点的坐标。在得到两个绘制点之间的参考点的坐标之后,将靠近前一绘制点的坐标作为终结控制点的坐标,靠近后一绘制点的坐标作为终结点的坐标,用作后续进行曲线绘制。
[0030]步骤S170:根据起始点的坐标、起始控制点的坐标、终结控制点的坐标和终结点的坐标进行贝塞尔曲线绘制,得到本次绘制的曲线段。根据前面步骤确定的起始点的坐标、起始控制点的坐标、终结控制点的坐标和终结点的坐标进行贝塞尔曲线绘制,即可完成本次的曲线段绘制。起始点和终结点分别为曲线段的绘制起点和绘制终点,起始控制点和终结控制点为绘制曲线段时的控制节点,用于提供方向资讯,在由起始点到终结点绘制曲线段的过程中牵制曲线形状路径。
[0031]贝塞尔曲线绘制是依据四个位置任意的点坐标绘制出的一条光滑曲线,使用贝塞尔曲线公式画曲线来消除锯齿。曲线起于起始点走向起始控制点,并从终结控制点的方向来到终结点,一般不会经过起始控制点和终结控制点,这两个点用作提供方向资讯,起始点与起始控制点之间的间距决定了曲线在转而趋进终结点之前,走向终结控制点方向的“长度有多长”。利用三次贝塞尔曲线原理进行曲线段的绘制,避免曲线出现锯齿,提高曲线平滑度,操作简便且可靠性高。[〇〇32]在其中一个实施例中,如图2所示,步骤S120之后,步骤S150之前,曲线绘制方法还包括步骤S130。[〇〇33]步骤S130:判断是否存在上一次绘制的曲线段;若是,则进行步骤S150。[〇〇34]在步骤S150之前进行查找,检测是否存在上一次绘制的曲线段,若是,则说明本次曲线绘制不是第一次绘制,进行步骤S150,将上一次绘制的曲线段的终点坐标作为起始点的坐标进行本次曲线绘制,确保曲线的连续性。
[0035]进一步地,继续参照图2,若不存在上一次绘制的曲线段,曲线绘制方法还可包括步骤S140。[〇〇36]步骤S140:将第一绘制点的坐标作为起始点和起始控制点的坐标。若不存在上一次绘制的曲线段,则说明本次绘制为第一次曲线绘制,直接将第一绘制点的坐标作为起始点和起始控制点的坐标后进行步骤S160。
[0037]以下结合具体的实施例对上述曲线绘制方法进行进一步地解释说明。[〇〇38]使用三次贝塞尔公式画出曲线,三次贝塞尔曲线由4个点决定,起始点P0,起始控制点P1、终结控制点P2、终结点P3。[0039 ]在收到鼠标点击的消息后,记录下点击坐标(X0,Y0),将起始点P0、起始控制点P1 设为点击坐标(X0,Y0)。然后获取到鼠标移动过程的坐标,收到第二个坐标(X3,Y3)。将前后两个鼠标坐标(XO,YO)和坐标(X3,Y3)之间的距离三等分,得到中间的两个坐标(X1,Y1), (父2,¥2)。将终结控制点?2设为01,¥1),将终结点?3设为02,¥2),画出贝塞尔曲线。
[0040]继续获取鼠标移动过程的坐标,收到第三个坐标(X6,Y6)。将起始点P0重新设为之前的终结点P3的坐标(X2,Y2),将起始控制点P1重新设为之前的鼠标移动坐标(X3,Y3)。将前后两个鼠标坐标(X3,Y3)和坐标(X6,Y6)之间的距离三等分,得到中间的两个坐标(X4, Y4)、(X5,Y5)。将终结控制点P2重新设为(X4,Y4),将终结点P3重新设为(X5,Y5),画出贝塞尔曲线。如此,当用户持续控制鼠标移动,重复上述步骤便可持续进行各个曲线段的绘制。
[0041]上述曲线绘制方法,使用贝塞尔曲线来连接坐标点,在进行曲线绘制时每次只绘制一部分,终结点与绘制点之间的部分在下一次曲线绘制时完成。由于下一段曲线通过上一个绘制点调整曲线的角度,使得多条曲线的连接处光滑无锯齿,提高了曲线的平滑度。
[0042]本发明还提供了一种曲线绘制系统,如图3所示,包括绘制点获取模块110、参考点获取模块120、起始坐标获取模块150、终点坐标获取模块160和曲线绘制模块170。
[0043]绘制点获取模块110用于获取用户连续输入的第一绘制点和第二绘制点的坐标。 接收用户输入的绘制点,并获取连续输入的第一绘制点和第二绘制的坐标。第一绘制点和第二绘制点是用户连续输入的两个绘制点,可以理解,在进行曲线绘制时,随着用户不断输入绘制点,第一绘制点和第二绘制点具体所指的点也会随之发生变化。也就是说第一绘制点和第二绘制点仅用于区分不同的点,并没有限定具体位置。例如在上一次绘制曲线时,则第一绘制点是上一次绘制时的第二绘制点。
[0044]用户具体可通过点击或拖动鼠标来输入绘制点,也可以是通过触控笔、手指等点击或滑动触控屏来进行绘制点的输入,即用户输入绘制点的方式并不唯一。本实施例中第一绘制点和第二绘制点的坐标为用户点击的位置坐标,或用户操作所产生的运动轨迹的起点和终点的坐标,例如,当第一次绘制曲线段时,将鼠标点击的位置作为第一绘制点,然后获取到鼠标移动结束后点击的坐标,作为第二绘制点的坐标。而在后续的曲线段绘制过程中,可直接将用户拖动鼠标时在屏幕产生的运动轨迹的起点和终点分别作为第一绘制点和第二绘制点。
[0045]参考点获取模块120用于选取第一绘制点和第二绘制点之间连线上的两个参考点,并获取两个参考点的坐标。在确定第一绘制点和第二绘制点的坐标后,可对两者进行虚拟连线,选取连线上的两个点作为参考点并进行坐标提取。
[0046]参考点在连线上的位置可根据实际情况调节,本实施例中参考点获取模块120选取第一绘制点和第二绘制点之间连线上的两个参考点,并获取两个参考点的坐标包括:获取第一绘制点和第二绘制点之间距离的三等分点作为参考点,并获取两个参考点的坐标。 对第一绘制点和第二绘制点之间的距离三等分,得到中间的两个坐标作为两个参考点的坐标,便于坐标计算和提取,且在后续的曲线绘制时只画出2/3的曲线,剩余1/3的距离用作对下一段曲线进行曲线角度的调整,使得各曲线段的连接处光滑过度。
[0047]起始坐标获取模块150用于查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将第一绘制点的坐标作为起始控制点的坐标。
[0048]上一次绘制的曲线段是指在同一次曲线绘制中的上一曲线段,可将鼠标停止点击或移动作为绘制停止指令,两次绘制停止指令之间用户连续点击鼠标或移动鼠标的动作作为同一次曲线绘制。曲线段的终点坐标即指在一次曲线段绘制完成后,该曲线段的绘制终点的坐标。以同一次曲线绘制中的第一个曲线段为基础,每次确定两个连续的绘制点以及绘制点之间的参考点之后,找到上一次曲线绘制时得到的曲线段,并获取曲线段的终点坐标作为起始点的坐标,并将第一绘制点的坐标作为起始控制点的坐标,用作后续进行曲线绘制。
[0049]终点坐标获取模块160用于提取两个参考点的坐标中靠近第一绘制点的坐标作为终结控制点的坐标,提取另一参考点的坐标作为终结点的坐标。在得到两个绘制点之间的参考点的坐标之后,将靠近前一绘制点的坐标作为终结控制点的坐标,靠近后一绘制点的坐标作为终结点的坐标,用作后续进行曲线绘制。[0050 ]曲线绘制模块170用于根据起始点的坐标、起始控制点的坐标、终结控制点的坐标和终结点的坐标进行贝塞尔曲线绘制,得到本次绘制的曲线段。根据前面确定的起始点的坐标、起始控制点的坐标、终结控制点的坐标和终结点的坐标进行贝塞尔曲线绘制,即可完成本次的曲线段绘制。起始点和终结点分别为曲线段的绘制起点和绘制终点,起始控制点和终结控制点为绘制曲线段时的控制节点,用于提供方向资讯,在由起始点到终结点绘制曲线段的过程中牵制曲线形状路径。利用三次贝塞尔曲线原理进行曲线段的绘制,避免曲线出现锯齿,提高曲线平滑度,操作简便且可靠性高。[0051 ]在其中一个实施例中,如图4所示,曲线绘制系统还可包括曲线段查找模块130。 [〇〇52]曲线段查找模块130用于在参考点获取模块120选取第一绘制点和第二绘制点之间连线上的两个参考点,并获取两个参考点的坐标之后,起始坐标获取模块150查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将第一绘制点的坐标作为起始控制点的坐标之前,判断是否存在上一次绘制的曲线段;若是,则控制起始坐标获取模块150查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将第一绘制点的坐标作为起始控制点的坐标。[〇〇53]检测是否存在上一次绘制的曲线段,若是,则说明本次曲线绘制不是第一次绘制, 控制起始坐标获取模块150查找上一次绘制的曲线段的终点坐标作为起始点的坐标进行本次曲线绘制,确保曲线的连续性。[〇〇54]进一步地,继续参照图4,曲线绘制系统还可包括起始坐标确定模块140。
[0055]起始坐标确定模块140用于在不存在上一次绘制的曲线段时,将第一绘制点的坐标作为起始点和起始控制点的坐标,并控制终点坐标获取模块160提取两个参考点的坐标中靠近第一绘制点的坐标作为终结控制点的坐标,提取另一参考点的坐标作为终结点的坐标。若不存在上一次绘制的曲线段,则说明本次绘制为第一次曲线绘制,直接将第一绘制点的坐标作为起始点和起始控制点的坐标后继续曲线绘制。
[0056]上述曲线绘制系统,使用贝塞尔曲线来连接坐标点,在进行曲线绘制时每次只绘制一部分,终结点与绘制点之间的部分在下一次曲线绘制时完成。由于下一段曲线通过上一个绘制点调整曲线的角度,使得多条曲线的连接处光滑无锯齿,提高了曲线的平滑度。
[0057]以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0058]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【主权项】
1.一种曲线绘制方法,其特征在于,包括以下步骤:获取用户连续输入的第一绘制点和第二绘制点的坐标;选取所述第一绘制点和所述第二绘制点之间连线上的两个参考点,并获取所述两个参 考点的坐标;查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将所述第一绘制点的坐标 作为起始控制点的坐标;提取所述两个参考点的坐标中靠近所述第一绘制点的坐标作为终结控制点的坐标,提 取另一参考点的坐标作为终结点的坐标;根据所述起始点的坐标、所述起始控制点的坐标、所述终结控制点的坐标和所述终结 点的坐标进行贝塞尔曲线绘制,得到本次绘制的曲线段。2.根据权利要求1所述的曲线绘制方法,其特征在于,所述选取所述第一绘制点和所述 第二绘制点之间连线上的两个参考点,并获取所述两个参考点的坐标的步骤包括:获取所 述第一绘制点和所述第二绘制点之间距离的三等分点作为参考点,并获取两个所述参考点 的坐标。3.根据权利要求1所述的曲线绘制方法,其特征在于,所述选取所述第一绘制点和所述 第二绘制点之间连线上的两个参考点,并获取所述两个参考点的坐标的步骤之后,所述查 找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将所述第一绘制点的坐标作为起 始控制点的坐标的步骤之前,还包括以下步骤:判断是否存在上一次绘制的曲线段;若是,则进行所述查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将所述 第一绘制点的坐标作为起始控制点的坐标的步骤。4.根据权利要求3所述的曲线绘制方法,其特征在于,若不存在上一次绘制的曲线段, 还包括以下步骤:将所述第一绘制点的坐标作为起始点和起始控制点的坐标,并进行所述提取所述两个 参考点的坐标中靠近所述第一绘制点的坐标作为终结控制点的坐标,提取另一参考点的坐 标作为终结点的坐标的步骤。5.根据权利要求1所述的曲线绘制方法,其特征在于,所述第一绘制点和第二绘制点的 坐标为用户点击的位置坐标,或用户操作所产生的运动轨迹的起点和终点的坐标。6.—种曲线绘制系统,其特征在于,包括:绘制点获取模块,用于获取用户连续输入的第一绘制点和第二绘制点的坐标;参考点获取模块,用于选取所述第一绘制点和所述第二绘制点之间连线上的两个参考 点,并获取所述两个参考点的坐标;起始坐标获取模块,用于查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并 将所述第一绘制点的坐标作为起始控制点的坐标;终点坐标获取模块,用于提取所述两个参考点的坐标中靠近所述第一绘制点的坐标作 为终结控制点的坐标,提取另一参考点的坐标作为终结点的坐标;曲线绘制模块,用于根据所述起始点的坐标、所述起始控制点的坐标、所述终结控制点 的坐标和所述终结点的坐标进行贝塞尔曲线绘制,得到本次绘制的曲线段。7.根据权利要求6所述的曲线绘制系统,其特征在于,所述参考点获取模块选取所述第一绘制点和所述第二绘制点之间连线上的两个参考点,并获取所述两个参考点的坐标包 括:获取所述第一绘制点和所述第二绘制点之间距离的三等分点作为参考点,并获取所述 两个参考点的坐标。8.根据权利要求6所述的曲线绘制系统,其特征在于,还包括:曲线段查找模块,用于在所述参考点获取模块选取所述第一绘制点和所述第二绘制点 之间连线上的两个参考点,并获取所述两个参考点的坐标之后,所述起始坐标获取模块查 找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将所述第一绘制点的坐标作为起 始控制点的坐标之前,判断是否存在上一次绘制的曲线段;若是,则控制所述起始坐标获取 模块查找上一次绘制的曲线段的终点坐标作为起始点的坐标,并将所述第一绘制点的坐标 作为起始控制点的坐标。9.根据权利要求8所述的曲线绘制系统,其特征在于,还包括:起始坐标确定模块,用于在不存在上一次绘制的曲线段时,将所述第一绘制点的坐标 作为起始点和起始控制点的坐标,并控制所述终点坐标获取模块提取所述两个参考点的坐 标中靠近所述第一绘制点的坐标作为终结控制点的坐标,提取另一参考点的坐标作为终结 点的坐标。10.根据权利要求6所述的曲线绘制系统,其特征在于,所述第一绘制点和第二绘制点 的坐标为用户点击的位置坐标,或用户操作所产生的运动轨迹的起点和终点的坐标。
【文档编号】G06T11/20GK106023279SQ201610308020
【公开日】2016年10月12日
【申请日】2016年5月9日
【发明人】薄景仁
【申请人】广州视睿电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1