CN105095560A - 用于曲线拟合的混合技术 - Google Patents
用于曲线拟合的混合技术 Download PDFInfo
- Publication number
- CN105095560A CN105095560A CN201510232704.6A CN201510232704A CN105095560A CN 105095560 A CN105095560 A CN 105095560A CN 201510232704 A CN201510232704 A CN 201510232704A CN 105095560 A CN105095560 A CN 105095560A
- Authority
- CN
- China
- Prior art keywords
- data point
- curve
- curvature
- point
- curve fitting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
描述了用于曲线拟合的混合技术。在一个或者多个实现方式中,接收三个或者更多个数据点的指示。基于三个或者更多个数据点相互的空间关系来计算混合因子。通过使用计算的混合因子混合多个曲线拟合技术来将曲线拟合到三个或者更多个数据点。
Description
有关申请
本申请要求于2014年5月12日提交的并且名称为“BlendingTechniquesforCurveFitting”的美国临时专利申请第61/992,083号的优先权以及于2014年5月28日提交的并且名称为“BlendingTechniquesforCurveFitting”的美国专利申请第14/289,408号的优先权,它们的全部公开内容通过引用被特此并入于此。
背景技术
曲线拟合是指在数据点之间的曲线(例如,路径)的拟合。这可以被用于多种不同目的,诸如指示用于电子表格的数据点相互的对应性以绘制动画路径、描绘温度等。
然而,用来执行曲线拟合的常规技术可能偏离利用该功能的用户的预期。例如,在使用常规技术的曲线拟合中,在数据点之间可能观察到意料之外的尖峰、回路等,这些尖峰、回路等没有“跟随流动”,该流动如用户预期的那样由数据点来展现。因此,常规技术的用户经常被迫人工地校正曲线,这可能是令人气馁和低效的。
发明内容
描述了用于曲线拟合的混合技术。在一个或者多个实现方式中,接收三个或者多个数据点的指示。基于三个或者更多个数据点相互的空间关系来计算混合因子。通过使用计算的混合因子混合多个曲线拟合技术来将曲线拟合到三个或者更多个数据点。
在一个或者多个实现方式中,一种系统包括至少部分在硬件中实现的一个或者多个模块。该一个或者多个模块被配置为执行操作,这些操作包括接收用以将曲线拟合到多个数据点的指示,确定多个数据点相互的空间关系以及混合多个曲线拟合技术以执行曲线的拟合,该混合使用基于确定的空间关系的至少一个试探。
在一个或者多个实现方式中,一个或者多个计算机可读存储介质包括在其上存储的指令,这些指令响应于由计算设备执行来使得计算设备执行操作,这些操作包括基于曲线将被拟合到的多个数据点的空间关系来选择应用多个曲线拟合技术中的哪些曲线拟合技术,以及使用多个曲线拟合技术中的选择的曲线拟合技术来将曲线拟合到多个数据点。
在一个或者多个实现方式中,一种系统包括至少部分地在硬件中实现的一个或者多个模块,该一个或者多个模块被配置为执行操作,这些操作包括通过以下步骤配置用户接口以支持复杂曲线的直接编辑:配置直接地设置在复杂曲线上的接触点以支持由用户指定的移动,以及自动地并且在没有用户干预的情况下调整复杂曲线的相应的所述曲线,使得相应的所述曲线维持相对于复杂曲线的斜率和曲率连续性。
本发明内容以简化的形式介绍以下在具体实施方式中进一步描述的概念选集。这样,本发明内容不旨在于标识要求保护的主题内容的实质特征,它也不旨在于用作辅助确定要求保护的主题内容的范围。
附图说明
参照附图来描述具体实施方式。在图中,标号的最左位标识了标号首次出现的图。在描述和图中的不同实例中使用相同标号可以指示相似或者完全相同的项。在图中表示的实体可以指示一个或者多个实体,并且因此在讨论中可以可互换地参照实体的单数或者复数形式。
图1是在示例实现方式中可操作为运用在此描述的技术的环境的图示。
图2更具体地描绘了示例实现方式中的系统,连同可以由曲线拟合模块运用的曲线拟合技术的示例,该系统示出了图1的混合模块。
图3描绘了用以由混合模块生成混合因子的对称性试探的使用示例,该对称性试探指定使用曲线拟合技术中的不同曲线拟合技术。
图4描绘了图3的数据点中的一个数据点与用来将曲线拟合到数据点的混合因子的作为结果的改变的空间关系的重新布置的示例。
图5描绘了用以由混合模块生成混合因子的平坦度试探的使用示例,该平坦度试探指定使用曲线拟合技术中的不同曲线拟合技术。
图6描绘了用以由混合模块生成混合因子的符号试探的使用示例,该符号试探指定使用曲线拟合技术中的不同曲线拟合技术。
图7示出了复合曲线的示例的构造示例,在该复合曲线中通过将具有G1连续性的多个二次贝塞尔段组成在一起来构造更长的κ曲线(κCurve)。
图8描绘了如示例算法中所示可以用公式表示的优化方案。
图9描绘了模式的局部行为的示例。
图10描绘了用于求解包含多达一万个随机地生成的点的κ曲线的示例系统。
图11描绘了使用在此描述的技术与三次Catmull-Rom样条插值技术来比较样条曲线的示例。
图12是描绘了示例实现方式中的过程的流程图,在该过程中利用混合因子以将曲线拟合到三个或者更多个数据点。
图13是描绘了示例实现方式中的过程的流程图,在该过程中选择多个曲线拟合技术中的一个曲线拟合技术以将曲线拟合到多个数据点。
图14图示了包括示例设备的各种部件的示例系统,该设备可以被实现为如描述的任何类型的计算设备和/或参照图1-13用来实施在此描述的技术的实施例。
具体实施方式
概述
用来将曲线拟合到数据点的常规技术可能缺乏充分直观的交互和易用性。进一步地,这些常规技术也可能产生诸如由于包括尖峰、回路等而偏离用户的预期的曲线,这些尖峰、回路等没有表现为跟随其余数据点并且因此偏离用户对曲线的拟合的预期。
描述了用于曲线拟合的混合技术。在一个或者多个实现方式中,运用混合技术来混合不同曲线拟合技术,以将曲线拟合到诸如用于电子表格的多个数据点以绘制动画路径、描绘温度等。例如,计算设备可以接收连续数据点的指示,通过这些数据点,曲线将被拟合为点之间的路径。试探被用来基于数据点相互的空间关系,诸如基于对称性、平坦度、曲率符号等来计算混合因子。
然后,该混合因子可以被用来选择多个曲线拟合技术中的哪些曲线拟合技术将被用来拟合曲线以及如何将两个或者更多技术中混合在一起。例如,计算设备可以使用二次贝塞尔曲线拟合技术来进行估计,例如估计用于数据点的曲线的切线方向和曲率半径。然后,这些估计可以用作基础以确定如何将其它曲线拟合技术,诸如三次贝塞尔曲线拟合技术与圆形曲线估计技术混合在一起。这样,混合可以被用来以直观方式拟合曲线,可以关于以下章节来发现其进一步的讨论。
在以下讨论中,首先描述了可以运用在此描述的混合技术的示例环境。然后描述了示例过程,该示例过程可以在示例环境以及其它环境中被执行。因此,示例过程的执行不限于示例环境,并且示例环境不限于执行示例过程。
示例环境
图1是在示例实现方式中可操作为运用在此描述的技术的环境100的示图。所示的环境100包括可以以多种方式来配置的计算设备102。
例如,计算设备102可以被配置为桌上型计算机、膝上型计算机、移动设备(例如,采用诸如平板或者移动电话的手持配置)等。例如如图所示,计算设备102在移动配置中被配置为平板,该平板包括具有触屏功能的显示设备104,该触屏功能被配置为识别触摸输入,诸如来自用户的手106的触摸输入。因此,计算设备102的范围可以从具有大量存储器和处理器资源的全资源设备(例如,个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(例如,移动设备)。此外,尽管示出了单个计算设备102,但是计算设备102可以代表多个不同设备,诸如企业用来如关于图14进一步描述的那样“通过云”来执行操作的多个服务器。
计算设备102被图示为包括曲线拟合模块108。该曲线拟合模块108代表与将曲线拟合到多个数据点110有关的功能以及与曲线的交互(例如,修改)有关的功能。尽管图示为在计算设备102上实现,但是曲线拟合模块108可以以多种方式来实现,诸如远程地经由“在云上”经由网络112可访问的服务提供商的web服务、分布在服务提供商与计算设备102之间等。
在所示的示例中,用户接口114被图示为显示多个数据点116、118、120、122作为经由手势的输入,该手势经由显示设备104的触屏功能来检测,诸如通过使用一个或者多个电容传感器。这可以作为各种不同功能的一部分来执行,诸如指定路径、经由该路径将使对象成为动画,用来指定用于图像处理的接缝等。还设想了其它示例,诸如从电子表格接收的数据点110、传感器读数、演示软件等。
曲线拟合模块108在接收到数据点116-122时,然后可以自动地并且在没有用户干预的情况下基于数据点116-122来拟合曲线124。例如,曲线拟合模块108可以被配置为运用多个不同曲线拟合技术126,诸如二次贝塞尔曲线技术、三次贝塞尔曲线技术和圆形曲线估计技术。在面对数据点110的不同空间关系时,这些曲线拟合技术126中的每个曲线拟合技术可以具有优势和弱点。因此,曲线拟合模块108可以运用混合模块128,该混合模块代表用以选择曲线拟合技术126中的哪些曲线拟合技术用于特定数据点集合110,以及如何将多个曲线拟合技术126混合到一起以实现被拟合到点的曲线124的最终结果的功能。这样,曲线拟合模块108可以被配置为拟合曲线124,该曲线124既可视地怡人又被曲线拟合模块108的用户“所预期”,其进一步的讨论如下并且在对应的图中示出。
图2更具体地描绘了示例实现方式中的系统20,连同可以由曲线拟合模块108运用的曲线拟合技术126的示例,该系统20示出了图1的混合模块128。曲线拟合模块108被图示为接收指定数据点110的输入并且输出被拟合到那些数据点的曲线124。为了执行该拟合,曲线拟合模块108可以运用混合模块128,该混合模块128代表用以选择曲线拟合技术126中的哪些(以及甚至“多少”)曲线拟合技术将被应用于拟合曲线124的功能。
为了辅助该选择,混合模块128可以运用试探模块202,该试探模块202代表用以运用一个或者多个试探以指导曲线的拟合的功能。例如,试探可以基于数据点110相互的空间关系以便于拟合曲线,诸如基于数据点110的指定的顺序和那些数据点中的每个数据点与先前和/或后续数据点的范围的关系。这样的试探的示例包括对称性204、平坦度206和符号208,在以下图中进一步描述了它们的使用。
然后,如由试探模块202计算的这些试探可以被用来生成混合因子,该混合因子可以指定将在曲线的拟合中运用曲线拟合技术126中的哪些曲线拟合技术、可以指定将向曲线拟合技术126中的每个曲线拟合技术给予的权值等。这样的曲线拟合技术126的示例包括二次贝塞尔曲线210、三次贝塞尔曲线212、圆形曲线估计214等,也可以在以下示例中发现它们的进一步讨论。
图3描绘了用以由混合模块128生成混合因子的对称性204试探的使用示例,该对称性204试探指定使用曲线拟合技术126中的不同曲线拟合技术。示出了拟合到数据点310、312、314、316的曲线306、308的第一示例302和第二示例304。在第一示例302中,使用图2的二次贝塞尔曲线210来将曲线306拟合到数据点310、312、314、316。在相应数据点310、312、314、316处图示了具有控制的切线,这些控制指定用于在相邻曲线之间的曲率一致的缩放因子。
在曲线306的内部内绘制的圆形图示在相应数据点310-316的曲率半径。因此,如圆形所示,在第一示例302中在数据点310-316之间绘制的曲线具有变化的曲率,例如,该曲率朝着中点减少并且然后在接近另一数据点时增加回来。因此,该曲线306可以不同于用户对圆形的预期。
然而,在第二示例304中,曲线308也在数据点310-316之间被拟合,但是在该情况下利用了圆形曲线估计214。圆形曲线估计技术214针对三个连续数据点的每个汇集来估计圆形。因此,如图所示,在相应数据点310-316处的曲率半径(例如,内圆)也跟随由曲线308定义的圆形,这可以用来实现用户的期望的结果,例如,在该示例中绘制圆形的可能性。
图2的混合模块128的试探模块202可以运用各种不同试探来得到混合因子,该混合因子可以描述使用曲线拟合技术126中的哪些曲线拟合技术以及甚至将向不同因子指派的权值。如在第二示例204中所示,例如,可以连续地定义三个数据点310、312、314。可以在第一数据点310与第三数据点314之间定义基线318,并且第二数据点312(即,在其它两个数据点310、314之间连续地定义的数据点)与基线318的关系320被用来定义混合因子。例如,可以基于从基线318到第二数据点312近似地垂直的点来定义关系320。这可以被用来确定第二数据点312是否落在沿着基线318的第一数据点310与第三数据点314之间,并且如果是,则圆形曲线估计214曲线拟合技术26被给予优先权,例如,与二次贝塞尔曲线210技术相比更高的加权。
例如,可以基于关系320到基线318的中点的接近度来应用加权,例如,与中点更近就向圆形曲线估计214给予更大的加权。一旦在第一数据点310与第三数据点314之间的该基线318“以外”,更大的加权可以被给予不同的曲线拟合技术126,诸如二次贝塞尔曲线210技术。其示例被描述如下并且在对应图中示出。
图4描绘了图3的数据点312中的一个数据点和用来将曲线拟合到数据点310-316的混合因子的作为结果的改变的空间关系的重新布置的示例400。如图所示,在该示例中光标控制设备(例如,鼠标)将数据点310从如图3中所示原始位置移向如由虚箭头所示的新位置。
这产生在数据点310、312、314之间的新的对称关系,其中第二数据点312到在第一数据点310和第三数据点314之间形成的基线318的关系402落在点“以外”,即未被设置在沿着基线318的这些数据点310、314之间。因此,混合模块128可以得到混合因子,在该示例中该混合因子向二次贝塞尔曲线210技术给予比圆形曲线估计214技术更大的权值以拟合与用户的可能的直觉对应的曲线。因此,可以通过对不同曲线拟合技术加权基于数据点310-316多好地近似圆形来执行混合。
图5描绘了用以由混合模块128生成混合因子的平坦度206试探的使用的示例500,该平坦度206试探指定使用曲线拟合技术126中的不同曲线拟合技术。在该示例中,朝着由第一数据点310和第三数据点314定义的基线318移动第二数据点312。这使得曲率针对由第一数据点、第二数据点和第三数据点310-312和312-314定义的曲线段“变平坦”。为了这样做,混合模块128可以在第二数据点312变得更接近基线318时,例如,一旦超过预定的阈值,向二次贝塞尔曲线210给予比圆形曲线估计214技术更大的权值。因此,如从图3-5的讨论中容易变得明显的那样,多个试探可以并行地用来计算用于多个曲线拟合技术126的混合因子。
图6描绘了用以由混合模块128生成混合因子的符号208试探的使用的示例600,该符号208试探指定使用曲线拟合技术126中的不同曲线拟合技术。所示示例600包括曲线608被拟合到的第一数据点602、第二数据点604和第三数据点606。在该示例中,混合模块128检查在相邻数据点处的曲率符号以帮助计算混合因子。
如针对第一数据点602和第二数据点604所示,例如,用于第一数据点602的曲率符号602不同于用于第二数据点604的曲率符号。换言之,曲线在相反方向上弯曲。在该示例中,混合模块128因此可以生成其中未使用圆形曲线估计214技术的混合因子,从而选择另一技术,诸如二次贝塞尔曲线210技术。这样,在该示例中,可以避免使用圆形曲线估计214技术而可能引起的外来曲率,这些外来曲率可能使得曲线604从数据点602-606“突然离开”。可以在以下讨论中发现曲线拟合技术的其它示例。
在以下讨论中,更具体地描述了试探和曲线拟合技术的示例。
二次贝塞尔κ曲线
考虑以下形式的二次贝塞尔曲线:
r(t)=(1-t)2r0+2t(1-t)rm+t2r1.(1)
函数r(t)指定如由时间参数t参数化的坐标轨迹,该时间参数t的值在0与1之间变化。注意,在t=0时,曲线恰好穿过控制点r0,而在t=1时,曲线穿过控制点r1。然而,曲线一般不穿过中间控制点rm。
二次插值贝塞尔曲线
可以构造三点二次贝塞尔插值方案,在该方案中点rc的位置被控制以在最大曲率的定位处落在曲线上。例如,对于数据点集合r0、rc、r1,曲线在r0处开始,穿过rc并且在r1处结束。任何时间值tc∈(0,1)可以被选择并且求解中间贝塞尔控制点rm。这里并且贯穿其余讨论,符号(0,1)被用来表示从0到1的开区间,即不包括端点的区间。
因此,从方程(1)可以记作以下表达式:
从方程2的项的简单重新排列产生:
从方程(3),示出了对于tc∈(0,1)的值的解总是存在。等于0或者1的tc的退化情况是直线段。
弧长
如下通过曲线的速度对时间积分来给出曲线的弧长s(t):
注意,上撇号指示关于时间参数的导数。
最大曲率
连续空间曲线的曲率κ(t)被定义为沿着曲线的单位切线矢量的每单位弧长的改变的速率。单位切线矢量由以下方程给出:
T(t)=r′(t)/|r′(t)|.(5)
按照定义,以下方程可以被表示:
对于2D曲线,方程(6)可以被重新用公式表示为如下更简单的表达式:
其中运算符表示叉积运算符(即,给定的两个矢量p=[px,py]和q=[qx,qy],p×q=pxqy-pyqx)。然后,由方程1给出的二次贝塞尔可以求微分以产生:
r′(t)=v(t)=(2t-2)r0+2(1-2t)rm+(2t)r1(8)
r″(t)=a(t)=2r0-4rm+2r1.(9)
这里变量v(t)和a(t)被用来分别表示曲线的速率和加速度。分母给出在时刻t的曲线的“速度”。注意,对于二次贝塞尔,加速度项是恒定的。在时刻t=0和t=1时,曲线的速率然后由以下方程给出:
v0=2(rm-r0)(10)
v1=2(r1-rm)(11)
对于二次贝塞尔曲线,速率随时间t线性地变化如下:
v(t)=v0+ta0(12)
因此,可以在用于曲率的表达式(7)中包括这些值以得到:
注意,表达式(13)的分子是恒定的。然而,如先前描述的那样,可能令人期望的是在曲率达到其最大值的近似位置处放置控制点。这需要确定达到该最大曲率值的时间参数。由于表达式(13)中的分子是恒定的,所以可以通过最小化分母来得到函数的最大值。等效地,速度的平方可以通过对其进行微分并且将其设置成零来最小化:
通过求解tc,曲线在以下时刻达到其最大曲率值:
最大曲率时刻
假设给定了三个点用于插值:r0、rc、r1,其中rc恰好落在沿着二次贝塞尔曲线的最大曲率点处。从方程(3)可以注意到对于任何时间值tc∈[0,1]曲线恰好对三个点进行插值。因此,可以求解tc∈[0,1]的时间值,对于该时间值,二次贝塞尔曲线在时刻tc达到局部曲率最大值(即,该时刻tc满足方程(15))。
使用方程(10)和方程(15),用于新曲线的速率矢量可以表示为:
这里,符号ri,j被用来表示定位的差值,即ri,j=ri-rj。可以如下使用方程(9)和(3)来计算加速度:
该加速度是跨曲线的常数。最后,将方程(15)与用于速率的表达式(16)和加速度的表达式(18)组合,可以对于时刻tc获得以下表达式,在该时刻tc最大曲率在二次贝塞尔中出现:
方程(19)是三次方程:
该三次方程可以使用三次公式或者数值求解器来求解。为了简化,可以使用哈雷法的多次迭代,该方法提供对解的三次收敛。因此,现在获得对三点二次贝塞尔κ曲线的求解。概括而言,给定任何三个点r0、rc、r1,其中rc被定义为最大曲率位置,可以求解方程(20)以计算最大曲率时刻tc,然后使用方程(3)来求解中间贝塞尔控制点rm的位置。
单个求解的证明
应当注意,三次方程(20)拥有在感兴趣的时域0≤t≤1内的单个实根。这种情况是因为,如(12)所示,二次贝塞尔曲线跟随与物体在恒定加速度下移动的轨迹等效的轨迹,该轨迹被称为抛物线路径。这样,可以仅存在单个曲线最大值。这可以通过探索三次方程的根的性质来直接地证明,该性质可以通过将方程改写为以下方程而容易被看见:
f(t)=t3-3λcos(θ)t2+λ(2λ+cos(θ))t-λ2=0(21)
其中:
λ=|rc,0|/|r1,0|(22)
并且
cos(θ)=r1,0·rc,0/(|rc,0||r1,0|)(23)
f(t)在两个端点t=0和t=1时的值
f(0)=-λ2(24)
以及
f(1)=1-2λcos(θ)+λ2=(1-λ)2+(2λsin(θ/2))2(25)指示了,忽略λ=0和tc=0的平凡特殊情况,函数f(t)在tc=0时严格地为负,而忽略λ=1、λ=0和tc=1的特殊情况,它在t=1时严格地为正。接着存在落在t=0与t=1之间的至少一个实根。
现在可以示出仅存在单个实根。三个实根的备选情形可以被排除如下。假设在指定的范围中实际上存在三个实根。然后,导函数df(t)=dt必须在该范围中具有两个零并且二阶导函数d2f(t)/dt2也必须在该范围中变成零。后一个条件意味着:
d2f(t)/dt2=6(t-λcos(θ))=0(26)
其意味着:
0≤τ≤1(27)
其中变量τ被定义为:
τ=λcos(θ).(28)
导函数为零的要求
df(t)/dt=3t2-6λcos(θ)t+λ(2λ+cos(θ))=0(29)
产生两个根:
在平方根以内的项可以改写为:
-[τ(1-τ)+2λ2sin2(θ)]/3(31)
忽略以上提到的特殊情况,该项为负,暗示了在t的期望的范围中不存在导函数的实根。因此,三个实根的假设无效,并且仅存在落在该期望范围内的三次方程(21)的一个单个实根。
还要注意,如果λ>0,则三次方程不能在t=0时具有根。因此,只要r0和rc不同,则tc将被限制为远离0。类似地,按照对称性,如果r1和r1不同,则tc将被限制为远离1。
复合二次贝塞尔κ曲线
以上讨论具体说明如何构造三点二次贝塞尔κ曲线。在本节中,讨论涉及如何将多个二次贝塞尔段连接在一起以形成C1个连续κ曲线。图7示出了复合曲线的示例的构造示例700,在该复合曲线中通过将具有G1连续性的多个二次贝塞尔段组合在一起来构造更长的κ曲线。
对于N个最大曲率点,存在N个二次贝塞尔曲线段和N个对应的约束方程。为了简化后一种方程,二次贝塞尔系数被定义如下:
其中表示用于N个指定的最大曲率位置中的每个最大曲率位置的最大曲率时刻,每个最大曲率位置以索引i来索引。
对于每个二次贝塞尔曲线,耦合的方程可以如下记为:
…
G1连续性要求切线方向和量值(速率)在曲线段之间的接合点处是连续的。该条件意味着贝塞尔端点在它们的相邻的中间控制点之间的途中:
...
rN-1=(r(N-2)+r(N-1))/2(34)
为了用公式表示求解,求解了中间控制点,然后可以从这些中间控制点推断出对贝塞尔端点的求解。使用方程33和34,该方法针对这些控制点产生递推关系:
已知的边界端点r0和rN-1的约束导致在边界处的以下方程:
以及
这些一起产生了矩阵方程Axm=b,该矩阵方程可以按照已知的约束矢量b对于以下未知矢量来求解:
该矩阵具有三对角形式:
注意,除了第一行和最后一行之外,根据完整性关系行上的所有元素之和为一:αn+βn+γn=1。同样,等于(1+βn)/2的对角元素的值的范围也从1/2到3/4。最大值3/4出现在对应的最大曲率时刻为1/2时。另外,矩阵是对角占优的,并且只要没有时间参数具有0或者1的值,则矩阵是严格对角占优的。在这样的情况下,根据Levy-Desplanques理论矩阵被称为非奇异(det(A)≠0)。
用于二次κ曲线的算法
以上描述的系统在本质上是非线性的。注意,矩阵A和右侧矢量b的构造假设用于最大曲率点中的每个最大曲率点的最大曲率时刻的知识。计算最大曲率时刻涉及贝塞尔端点ri的位置的知识,这些端点是对矩阵系统的求解。该非线性依赖妨碍用公式表示分析的求解。作为替代,可以如图8中示出的示例算法800中所示用公式来表示优化方案。
该分析通过平均相邻最大曲率点来估计曲线的初始定位ri而开始。内循环涉及更新对最大曲率时间的估计,继而通过求解以上描述的矩阵方程来更新坐标定位。子例程“计算最大曲率时间”求解三次方程(20)。直观的理解是,可以改进并且然后使用时间估计以产生改进的位置。然后,这些位置可以被用来重新计算新的时间估计集合等,直至系统达到收敛。可以使用各种不同收敛准则,诸如当时间值在连续迭代期间保持几乎不变时。
用于共线约束点的局部性
以上描述的二次贝塞尔公式化表示意味着全局求解。对于这样的求解,随着点的数目在曲线上增加,对应的计算增长。此外,求解的全局性质意味着对插值点的局部改变将对曲线的形状具有全局影响。在一些实例中,这样的行为从性能角度来看和从设计角度来看都是不期望的。在实践中,求解被认为是稳定的和局部的,而非局部影响随着沿着从贝塞尔段到贝塞尔段的路径进一步移动而递减。在本节中,通过聚焦于点的特殊布置来为这些观察提供理论支持,该布置阐述了在特殊情况下的振荡行为,但是在更通常情况下该布置支持呈指数下降的行为。
可以通过考虑由共线的κ点(κPoints)的集合形成的曲线的具体示例来理解对曲线的改变的传播的该特性,其中该κ点(κPoints)的符号用来指代最大曲率点。可以取全部处于沿着具有为零的竖轴坐标值的水平线的点。同样地,也将这样约束最后的曲线端点。例如,想象最大曲率点的长链,其中考虑了未包括任一端点的部分的行为。然后,κ点是以下形式:
然后假定该形式的求解:
这样的求解对于正λ具有呈指数减少的幅度。对于等于一的ω,行为是振荡的。该振荡行为被限于κ点曲线的特定布置。从(35)可以看出,在减去具有被递减了一的索引n的相同方程时,并且在应用完整性关系的情况下,以下方程成立:
该方程使用以下定义:
δζn=ζn-ζn-1(44)
以及
δηn=ηn-ηn-1(45)
用于η的强制振荡衰减求解产生用于δηn的以下形式:
δηn=ηn(1+ω)/ω(46)
以及等效地用于δηn+1的以下形式:
δηn+1=-ηn(1+ω)(47)
因此,
为了得到以下条件:
该条件在存在有共线的κ点问题的振荡或者振荡衰减求解时被满足。对于特殊振荡情况,对于该情况,贝塞尔控制点的垂直分量的量值以恒定幅度在κ点的线以上和以下振荡,“衰减”因子ω是一,这导致以下要求:
振荡:1=αn+γn(50)
对于对应最大曲率时刻的两个值,即在t=0和t=1时该要求被满足。t=0的求解与三次时间方程一致,该方程将约束点约束为实际上在最大曲率点处。例如,在该情况下,三次方程化简成:
-λ2=0(51)
这在最大曲率点精确地落在其t=0的端点的位置处时是成立的。在另一方面,t=1的情形导致如下的三次方程:
1-2λcos(θ)+λ2=0(52)
该方程仅对于特殊情况λ=1和θ=0具有用于λ的实解。在该情形中,最大曲率点精确地落在其t=1的端点。
振荡幅度被二次贝塞尔曲线的属性所限制。考虑具有端点r0自由变化但是具有最大曲率控制点rc和端点r1二者固定的二次贝塞尔曲线段。不失一般性,这些后者的点可以被放置在水平线上而它们之间的间距为d=rc,1=|rc,1|。点rc被放置在坐标系原点处。对于落在rc与r1之间的曲线部分的最大垂直偏差的求解由用于第一端点的以下形式给出:r0=(0,y0),而用于最大曲率点的时间参数tc被表示为:
曲线段竖直程度由以下方程给定:
并且随着点间距距离d线性地伸缩。该表达式通过选择y0=1、tc=1/2和最大曲线垂直偏差来最大化。中间贝塞尔控制点的最大垂直幅度ηmax被给定为ηmax=1/2d。换言之,当四处移动第一端点时的最大曲线段竖直“摆动(wiggle)”被限于点间距d的八分之一,该点间距d是贝塞尔控制点的最大垂直幅度的四分之一。这是针对单个二次贝塞尔曲线的结果。随着更多曲线被添加到这样的路径,该最大“摆动”一般如共线约束点示例指示的那样,通常以呈指数衰减方式减少。
回顾通用振荡衰减求解,在显式地将αn和γn表示为对应时间参数的函数之后,得出将tn与ω相关的以下方程:
该方程具有以下求解:
时间参数因此独立于点索引并且因此除了没有包括在这里的端点之外沿着曲线恒定。要求0≤tn≤1也将ω约束为落在0与1之间。用于t的兴趣值是针对的值而出现的t=1/2。在该情况下,贝塞尔控制点垂直幅度针对增加的点索引指数地减少为近似(0.171573...)n=exp(-1.76275n)。一般而言,t越接近零衰减速率就越慢,而t越接近一该速率就越大。
现在解决水平分量以理解求解对点间距的依赖性。聚焦于贝塞尔曲线中间控制点的相等水平间距δζ的情形:
δζn=δζn+1=δζn(57)
这产生了:
最后一项描述了贝塞尔中间控制点的水平定位相对于其关联的κ点的偏差。因此,在tn=0,ω=1的情况下的振荡求解具有在κ点之间中途间隔的贝塞尔控制点,即偏移是κ点间距的一半。
先前提到的特殊情况tn=1/2未产生偏移。针对该呈指数衰减的情况,贝塞尔中间控制点落在与最大曲率约束点相同的水平位置。
因此,描述了示例曲线,该曲线支持曲线幅度的指数衰减以及以恒定有限的幅度振荡的病态情况。因此,尽管二次贝塞尔公式产生具有曲线改变的非局部传播的可能的全局求解,但是在实践中,局部曲线改变极大地衰减,例如具有针对点的共线布置的指数级下降。如在图9的示例900中所见,模型的可见行为在本质上是相当局部的。对曲线的局部改变趋向于在有限的局部区域中影响曲线。
示例实现方式
各种不同三次求解器可以被用来求解方程(20),诸如直接三次求解器以及哈雷法。在实践中,哈雷法提供了最好的性能水平以及稳定性。这部分地来自用以使该方法以初始猜测为起始的能力,该初始猜测处于接近如下的真实求解:
tc=|rc,0|/(|rc,0|+|rc,1|)(62)
这里的观察是插值二次方程紧跟着穿过r0、rc、r1的折线。例如,当三点共线时,初始猜测可以甚至是准确的。在一个或者多个实现方式中,执行哈雷法的迭代直至tc的改变降至1.0e-6以下。
为了求解矩阵系统A,使用了顺序的三对角求解器的基本实现方式,该三对角求解器具有熟知的O(n)的运行时间以及O(n)的存储。对于图8的示例800中的算法1中的收敛准则,执行迭代直至计算的最大曲率时刻的改变对于每个二次贝塞尔段降至1.0e-6以下。
在图10的示例1000中,示出了用于求解κ曲线的示例系统,该κ曲线在区间[0,1]中包含多达一万个随机地生成的点。注意,求解时间都是亚秒级,并且由于选择的矩阵求解器的收敛速率和效率性能伸缩与曲线的大小呈近似线性关系。
图11描绘了使用在此描述的技术与三次Catmull-Rom样条插值方法[Catmull和Rom1974]来比较样条曲线的示例1100。参数化的选择可以影响来自Catmull-Rom模型的结果的质量。图11示范如下配置,其中默认张力选择表现欠佳从而产生在控制顶点之间的回路和摆动(以虚线示出),而在此描述的技术(示为实线)产生平滑和直观的结果。尽管用户可以全局地调整张力参数以避免常规技术中的这些回路和摆动,但是这通过在控制顶点处集中高曲率而减少了曲线的光顺性。用户也可以人工地在每个顶点处分离地调整张力以产生更好的结果,但是这涉及人工调节。
美观的G2三次贝塞尔曲线
在先前章节中描述了可以用来用公式表示C1连续二次κ曲线的技术。尽管对二次κ曲线的求解提供了优雅的形式,但是通常希望达到更高阶的连续性。例如,对于CAD应用,G2连续性被通常视为最小要求。然而,对于二维绘图包,这样的连续性不是必需的。此外,熟知的是,更高阶的平滑性并非总是等于更美观的曲线。
对于二维绘图系统,曲线表示的美学和控制能力比总连续性发挥了更大的作用。不幸地,没有用以评估曲线的良好已知的光顺性测量,尽管已经提出了建议,比如最小化曲率的总变化。最小化曲率变化导致不一定满足艺术家的预期的过于圆润或者圆形的曲线。注意到,二次κ曲线在产生美观曲线时可能具有迅速地改变的曲率。因此,可以利用更少的曲率变化来追求拥有更高阶连续性(即,G2)的曲线以产生视觉上更令人愉悦的曲线模型。
为了这样做,可以运用三次贝塞尔曲线。三次贝塞尔曲线形成用于许多曲线建模包的基础并且被表示在标准渲染系统中。存在用以在图形处理单位上高效地渲染三次贝塞尔曲线的库。然而,如以下所示,对于这样的曲线的数学要求可能分析起来是复杂的。为了应对这些问题,在下文中描述了用以解决该问题并且证明在多数条件之下可以生成既美观又具有低曲率变化而最大曲率位于控制顶点附近的G2曲线的技术。
三次贝塞尔曲线采用如下形式:
r(t)=(T-t)3r0+3t(1-t)2rm0+3t2(1-t)rm1+t3r1(63)
它的一阶和二阶导数给定如下:
v(t)=-3(t2-2t+1)r0+(9t2-12t+3)rm-(9t2+t)rn+3t2r1(64)
a(t)=6(1-t)r0+6(3t-2)rm+6(1-3t)rn+6tr1(65)
a′(t)=-6r0-12rm-12rn+6r1(66)
在开始和结束时的速率和加速度可以被表达如下:
v(0)=3(rm-r0)(67)
v(1)=3(r1-rn)(68)
a(0)=6(r0-2rm+rn)(69)
a(1)=6(r1-2rn+rm)(70)
现在给出在t=0和t=1时的曲率:
这进一步简化成:
假设两个点r0和r1与分别在两个点处的单位长度切线方向T0和T1一起给出。还假设在r0和r1处指定的曲率κ0和κ1。然后以下两个表达式可以被记为:
简化这些表达式,获得以下表达式:
其进一步化简为:
展开:
相乘:
最后:
适当的切线伸缩因子λ0和λ1现在可以通过首先按照λ0求解λ1并且然后使用该值以得到降次的四阶多项式来求解:
其中:
α1=-T0×T1(89)
α2=-T0×r10(90)
β1=-T0×T1(92)
β2=-T1×r10(93)
试探系统技术
可以采用实用的方法以求解具有在控制点处集中的曲率的G2三次曲线。可以制定大的非线性优化,该大的非线性优化同时寻求对所有自由参数的求解,这些参数满足由(85)和(86)给出的方程系统。该方法是昂贵的并且搜索空间很大。作为替代,试探可以被用来估计用于三次贝塞尔曲线的末端的切线方向和曲率。
给定在曲线的两端的固定切线方向(T0和T1)以及期望的曲率(κ0和κ1),可以求解两个切线伸缩项λ0和λ1。注意,方程(87)变成二次函数。因此,可以存在满足G2属性的多达四个求解。另一种用于识别这一点的方式是看到方程(85)和(86)形成抛物线并且找到这些抛物线的交点。然而,求解空间被限于λ0,λ1>0,即切线矢量的伸缩为正。这导致确定选择有效求解中的哪个有效求解以及更重要是在求解不存在的情况下做什么的问题。
切线和曲率指派
简单试探可以被用来指派目标曲率和切线。在每个控制点pi处,二次κ曲线通过控制点序列pi-2…pi+2被拟合以计算在点pi处的切线矢量Ti和曲率估计ki。在pi周围的更宽窗口也可以被用来计算二次κ曲线,而代价为具有更少局部的模型。通过限制窗口,保证了对控制点的局部改变仅产生对曲线的局部改变。
在一些实例中,即使二次κ曲线切线估计良好,曲率变化仍然可能高于将令人期望的曲率变化。例如,如果点的序列沿着圆形,则艺术家可能期望作为结果的曲线在本质上是圆形的,即具有零曲率变化。然而,当控制点没有沿着圆形时,用户可以优选具有与二次κ曲线的曲率变化更相似的曲率变化的曲线。
这激发了使用混合的模型技术用于向这些点指派曲率。将向共圆点指派与在圆形的半径之上的曲率值匹配的曲率值。对于非圆形的点,使用二次kappa曲线曲率估计。在它们之间的点得到两个曲率值的混合形式。混合曲率估计的过程可以被称为光顺(fairing),因为它提高了结果的美感。
为了实现这一点,可以计算单个混合因子(即,混合项),该混合因子是三个分离混合因子(例如,基线混合、角度混合和曲率混合)的乘积。这些因子中的每个因子定义了对于使用圆形曲率切线和曲率而言充分的条件,该条件定义点在圆形图案中处于何处。针对每项,如果条件被满足,则混合因子是一。由于最终混合因子是所有三者的乘积,所以当充分地满足所有三个条件时使用圆形估计。此外,使用控制可以通过取这些混合因子的幂γi来支持每个混合因子。用户可以调整这些因子以产生不同混合。下文具体描述这些条件的示例。
对于基线混合因子,每个点ri被投影到段ri-1和ri+1上。可以施加条件,该条件是被投影的点p(ri)(其中p(·)是投影运算符)理想地投影到由ri-1和ri+1给定的段的中点上。如果确实如此,则混合项是一。相反,如果被投影的点落在段以外(或者落在段的端点处),则混合项被降至零。令b为从ri-1到ri+1的基线矢量而为b的归一化形式。然后,基线混合被给定如下:
要考虑的下一项是角度项。理想配置将使在两个矢量riri-1和riri+1之间产生的角度恰好为九十度。令:
角度混合项变成:
对于曲率混合项,在实践中发现到,使用在给定的控制点处的圆形曲率估计在相邻控制点具有相似圆形曲率时是有意义的。换言之,点序列将沿着圆形。在两个曲率集合之间的对称的曲率混合函数可以被定义如下:
令分别是在ri-1,ri,ri+1处的圆形曲率。最终组合的曲率混合函数由以下各项的乘积给定:和注意,如果圆形曲率没有在控制点ri的任一侧上匹配,则组合的角度混合项是零。
所有三个混合项可以被组合到一起,这是四个混合函数的乘积。例如,可以作出各种不同选择,诸如γ0=1、γ1=6和γ2=1,但是给定了在用户希望曲线多么激进地追求更圆地圆润形式方面的用户口味,其他选择也可以被设想。
切线和曲率指派
在指派了在每个控制点处的目标曲率和切线方向之后,使用方程(87)来求解切线量值λ0,λ1>0。由于这是降次的二次方程,所以可以引导Ferrari求解,该求解用来分析地求解实根。对于实根中的每个实根,删除其中λ0<0或者λ1<0的求解。从剩余求解中选择具有最大最小λ的求解,即优选其中λ因子被限制为远离零的求解。
然而,在一些实例中,诸如当在切线在“C”配置中时,例如作为结果的曲线形成“C”形状,可能没有找到可采纳的求解。备选的“S”配置产生有效求解。然而,在“C”配置之下,G2连续性被抛弃。一种技术涉及寻求使在两个端点处的曲率的导数最小化的求解。这可以通过使从目标曲率和受制于不等式约束λ0,λ1>0的求解曲率的平方的距离的和最小化以简单直接的方式来完成。然而,在实践中,运行该优化产生了其中λ0或者λ1为接近零的解。
在另一种技术中,在曲线的具有最小曲率量值的末端处λ伸缩因子是固定的。在一个或者多个实现方式中,在两个控制点之间使用了基线的长度的三分之一。给定在曲线的一端处的λ因子,另一个可以通过在曲线的更高曲率末端处施加G2来直接地求解。该策略隐藏在曲线的最不明显末端处的G2不连续。该方法是合理的选择,因为失败情况通常是具有在曲线的一端指定的高曲率而在另一端指定的低曲率的结果。
如讨论的那样,可能并非总是有可能对于切线、曲率和控制点位置的指定的集合具有G2连续性。附加地,问题可能出现在于并非所有G2求解是美观的和令人期望的。例如,在一些‘C’曲线配置之下,作为结果的曲线满足G2,但是在一端处的曲率上的改变如此迅速使得结果接近尖端似的行为而作为结果的曲线应当跟随在每个端点附近的密切圆。
在一个或者多个实现方式中,可以利用用以检测这样的情况而不允许λ伸缩因子在曲线的任一端处的曲率半径之上降至一以下的技术。如果这样的情况发生,则曲率被钳住并且在曲线的另一端满足G2的λ伸缩项是唯一的。
示例过程
以下讨论描述了可以利用先前描述的系统和设备来实现的曲线技术。可以在硬件、固件或者软件或者其组合中实现过程中的每个过程的方面。过程被示为指定操作的块的集合,这些操作由一个或者多个设备执行而不一定被限于用于由相应块执行操作的所示的顺序。在以下讨论的部分中,将参照图1-11。
图12描绘了示例实现方式中的过程1200,其中混合因子被用来将曲线拟合到三个或者更多个数据点。接收了三个或者更多个数据点的指示(块1202)。例如,可以通过与用户接口交互从用户接收、从电子表格获得、经由网络远程地接收该指示等。
基于三个或者更多个数据点相互的空间关系来计算混合因子(块1204)。例如,可以在序列中布置三个或者更多个数据点。序列和数据点相互的空间关系可以被用来,诸如如先前描述的那样基于一个或者多个试探来计算混合因子。也设想了仅依赖于空间关系而不依赖于序列的其它示例。
通过使用计算的混合因子混合多个曲线拟合技术来将曲线拟合到三个或者更多个数据点(块1206)。继续之前的示例,混合因子可以被用来向曲线拟合技术中的不同曲线拟合技术指派权值,并且因此曲线拟合和用来执行该拟合的技术可以至少部分基于数据点相互的空间关系。
图13描绘了示例实现方式中的过程1300,其中选择了多个曲线拟合技术中的一个曲线拟合技术来将曲线拟合到多个数据点。基于曲线将被拟合到的多个数据点的空间关系来做出要应用多个曲线拟合技术中的哪些曲线拟合技术的选择(块1302)。例如,曲线拟合模块108可以检查多个数据点110以确定有可能产生与用户的期望的输出相符的曲线的曲线拟合技术。这可以基于数据点的关系、数据点的来源(例如,由用户输入、电子表格、数据类型)等来执行。
使用多个曲线拟合技术中的选择的曲线拟合技术来将曲线拟合到多个数据点(块1304)。继续之前的示例,然后可以应用选择的曲线拟合技术以形成曲线。选择也可以包括多于一个曲线拟合技术的选择,并且因此在这样的实例中,可以将这些技术混合在一起以实现最后结果。也设想了多个其它示例而不偏离其精神和范围。
示例系统和设备
图14在1400一般地图示了包括示例计算设备1402的示例系统,该计算设备1402代表可以实现在此描述的各种技术的一个或者多个计算系统和/或设备。这通过包括曲线拟合模块108来图示,该曲线拟合模块108可以被配置为拟合和/或操纵涉及数据点的曲线。例如,计算设备1402可以是服务提供商的服务器、与客户端关联的设备(例如,客户端设备)、片上系统和/或任何其它适当计算设备或者计算系统。
如图所示,示例计算设备1402包括相互通信地耦合的处理系统1404、一个或者多个计算机可读介质1406和一个或者多个I/O接口1408。尽管未示出,但是计算设备1402进一步可以包括相互耦合各种部件的系统总线或者其它数据和命令传送系统。系统总线可以包括不同总线结构中的任何总线结构或者组合,诸如存储器总线或者存储器控制器、外围总线、通用串行总线和/或利用各种总线架构中的任何总线架构的处理器或者本地总线。还设想了各种其它示例,诸如控制和数据线。
处理系统1404代表用以使用硬件来执行一个或者多个操作的功能。因此,处理系统1404被图示为包括可以被配置为处理器、功能块等的硬件单元1410。这可以包括在硬件中实现为专用集成电路或者使用一个或者多个半导体而形成的其它逻辑器件。硬件单元1410不被形成它们的材料或者其中运用的处理机制所限制。例如,处理器可以由半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子地可执行指令。
计算机可读存储介质1406被图示为包括存储器/存储1412。存储器/存储1412代表与一个或者多个计算机可读介质关联的存储器/存储容量。存储器/存储部件1412可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储部件1412可以包括固定介质(例如,RAM、ROM、固定硬盘驱动等)以及可拆卸介质(例如,闪存、可拆卸硬盘驱动、光盘等)。可以以如下进一步描述的各种其它方式配置计算机可读介质1406。
输入/输出接口1408代表用以允许用户向计算设备1402录入命令和信息并且也允许向用户和/或使用各种输入/输出设备的其它部件或者设备呈现信息的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风、扫描仪、触摸功能(例如,配置为检测物理触摸的电容或者其它传感器)、相机(例如,该相机可以运用可见或者不可见波长,诸如红外线频率以将移动识别为不涉及触摸的手势)等。输出设备的示例包括显示设备(例如,监视器或者投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,可以以如以下进一步描述的各种方式来配置计算设备1402以支持用户交互。
在此可以在软件、硬件单元或者程序模块的一般上下文中描述各种技术。一般而言,这样的模块包括执行特定任务或者实施特定抽象数据类型的例程、程序、对象、单元、部件、数据结构等。如在此所用的术语“模块”、“功能”和“部件”一般地表示软件、固件、硬件或者其组合。在此描述的技术的特征是独立于平台的,这意味着可以在具有各种处理器的各种商用计算平台上实现技术。
描述的模块和技术的实现方式可以被存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质来传输。计算机可读介质可以包括可以由计算设备1402访问的各种介质。通过举例而非限制的方式,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
“计算机可读存储介质”可以指代与仅信号传输、载波或者信号本身对照而言启用信息的持久和/或非瞬态存储的介质和/或设备。因此,计算机可读存储介质指代非信号承载介质。计算机可读存储介质包括硬件,诸如以适合用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑单元/电路或者其它数据)的方法或者技术实现的易失性和非易失性、可拆卸和不可拆卸介质以及存储设备。计算机可读存储介质的示例可以包括但不限于,RAM、ROM、EEPROM、闪存或者其它存储器技术、CD-ROM、数字通用盘(DVD)或者其它光存储、硬盘、磁盒、磁带、磁盘存储装置或者其它磁存储设备、或者适合用来存储期望的信息并且可以由计算机访问的其它存储设备、有形介质或者制品。
“计算机可读信号介质”可以指代信号承载介质,该信号承载介质被配置为诸如经由网络向计算设备1402的硬件传输指令。信号介质通常可以在调制的数据信号,诸如载波、数据信号或者其它传送机制中体现计算机可读指令、数据结构、程序模块或者其它数据。信号介质也包括任何信息递送介质。术语“调制的数据信号”意指如下信号,该信号使其特性中的一个或者多个特性以对信号中的信息进行编码的这种方式来设置或者改变。通过举例而非限制的方式,通信介质包括诸如有线网络或者直接有线连接的有线介质和诸如声学、RF、红外线和其它无线介质的无线介质。
如先前描述的那样,硬件单元1410和计算机可读介质1406代表以硬件形式实现的模块、可编程逻辑器件或者固定器件逻辑,可以在一些实施例中运用该硬件形式以实现在此描述的技术的至少一些方面,诸如执行一个或者多个指令。硬件可以包括集成电路或者片上系统的部件、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)和在硅或者其它硬件中的其它实现方式。在本文中,硬件可以操作为处理设备,该处理设备执行由指令定义的程序任务和/或由硬件体现的逻辑以及用来存储用于执行的指令的硬件,例如,先前描述的计算机可读存储介质。
还可以运用前述各项的组合以实施在此描述的各种技术。因此,软件、硬件或者可执行模块可以被实现为在某个形式的计算机可读存储介质上和/或由一个或者多个硬件单元1410体现的一个或者多个指令和/或逻辑。计算设备1402可以被配置为实现与软件和/或硬件模块对应的特定指令和/或功能。因此,可以至少部分地在硬件中实现作为软件由计算设备1402可执行的模块的实现方式,例如,通过使用计算机可读存储介质和/或处理系统1404的硬件单元1410。指令和/或功能可以由一个或者多个制品(例如,一个或者多个计算设备1402和/或处理系统1404)可执行/可操作以实现在此描述的技术、模块和示例。
在此描述的技术可以由计算设备1402的各种配置支持并且不限于在此描述的技术的具体示例。也可以全部或者部分通过使用分布式系统,诸如如以下描述的那样经由平台1416通过“云”1414来实现该功能。
云1414包括和/或代表用于资源1418的平台1416。平台1416将云1414的硬件(例如,服务器)和软件资源的下层功能抽象化。资源1418可以包括在远离计算设备1402的服务器上执行计算机处理时能够利用的应用和/或数据。资源1418也可以包括通过因特网和/或通过订户网络,诸如蜂窝或者Wi-Fi网络提供的服务。
平台1416可以将用以连接计算设备1402与其它计算设备的资源和功能抽象化。平台1416也可以服务于将资源的缩放抽象化以提供与对于经由平台1416实现的资源1418的遇到的需求相对应的规模的级别。因此,在一个互连设备实施例中,可以遍及系统1400来分布在此描述的功能的实现方式。例如,可以部分地在计算设备1402上以及经由将云1412的功能抽象化的平台1416实现该功能。
结论
尽管已经以特定于结构特征和/或方法动作的语言描述了本发明,但是将会理解,在所附权利要求中定义的本发明不一定限于描述的具体特征或者动作。更确切地说,具体特征和动作被公开作为实现要求保护的本发明的示例形式。
Claims (23)
1.一种由一个或者多个计算设备实现的方法,所述方法包括:
接收三个或者更多个数据点的指示;
基于所述三个或者更多个数据点相互的空间关系来计算混合因子;以及
通过使用计算的所述混合因子混合多个曲线拟合技术来将曲线拟合到所述三个或者更多个数据点。
2.根据权利要求1所述的方法,其中所述多个曲线拟合技术包括二次贝塞尔曲线技术、三次贝塞尔曲线技术和圆形曲线估计技术。
3.根据权利要求1所述的方法,其中所述拟合包括计算切线方向和曲率半径。
4.根据权利要求1所述的方法,其中所述空间关系描述所述三个或者更多个数据点相互的对称性。
5.根据权利要求4所述的方法,其中所述三个或者更多个数据点相互的所述对称性基于对于被连续定义的第一所述数据点、第二所述数据点和第三所述数据点,所述第二所述数据点是否落在由所述第一所述数据点和所述第三所述数据点定义的基线之间。
6.根据权利要求1所述的方法,其中所述空间关系描述所述三个或者更多个数据点相互的平坦度。
7.根据权利要求6所述的方法,其中所述三个或者更多个数据点相互的所述平坦度基于对于被连续定义的第一所述数据点、第二所述数据点和第三所述数据点,所述第二所述数据点到由所述第一所述数据点和所述第三所述数据点定义的基线的接近度。
8.根据权利要求1所述的方法,其中所述空间关系至少部分基于相邻的所述数据点的曲率符号。
9.根据权利要求8所述的方法,其中通过确定相邻的所述数据点的所述曲率符号是否与用于当前所述数据点的符号不同来运用所述曲率符号。
10.根据权利要求1所述的方法,其中对于定义在当前所述数据点之前和之后被定位的多个数据点的窗口执行所述计算。
11.一种系统,所述系统包括:
至少部分在硬件中实现的一个或者多个模块,所述一个或者多个模块被配置为执行操作,所述操作包括:
接收用以将曲线拟合到多个数据点的指示;
确定所述多个数据点相互的空间关系;以及
混合多个曲线拟合技术以执行所述曲线的所述拟合,所述混合使用基于确定的所述空间关系的至少一个试探。
12.根据权利要求11所述的系统,其中所述多个曲线拟合技术包括二次贝塞尔曲线技术、三次贝塞尔曲线技术和圆形曲线估计技术。
13.根据权利要求11所述的系统,其中所述试探运用二次贝塞尔曲线技术。
14.根据权利要求11所述的系统,其中所述试探基于所述多个数据点相互的对称性,所述对称性基于对于连续定义的第一所述数据点、第二所述数据点和第三所述数据点,所述第二所述数据点是否落在由所述第一所述数据点和所述第三所述数据点定义的基线之间。
15.根据权利要求11所述的系统,其中所述试探基于所述多个数据点相互的平坦度,所述平坦度基于对于连续定义的第一所述数据点、第二所述数据点和第三所述数据点,所述第二所述数据点到由所述第一所述数据点和所述第三所述数据点定义的基线的接近度。
16.根据权利要求11所述的系统,其中所述试探基于确定相邻的所述数据点的曲率符号是否与用于当前所述数据点的符号不同。
17.一个或者多个计算机可读存储介质,所述一个或者多个计算机可读存储介质包括在其上存储的指令,所述指令响应于由计算设备执行来使得所述计算设备执行操作,所述操作包括:
基于曲线将被拟合到的多个数据点的空间关系来选择应用多个曲线拟合技术中的哪些曲线拟合技术;以及
使用所述多个曲线拟合技术中的选择的所述曲线拟合技术来将所述曲线拟合到所述多个数据点。
18.根据权利要求17所述的一个或者多个计算机可读存储介质,其中所述选择包括使用二次贝塞尔曲线技术来计算估计,并且所述多个曲线拟合技术包括三次贝塞尔曲线技术和圆形曲线估计技术。
19.根据权利要求17所述的一个或者多个计算机可读存储介质,其中使用试探来描述所述空间关系,所述试探包括所述多个数据点的对称性或者平坦度。
20.根据权利要求17所述的一个或者多个计算机可读存储介质,其中使用试探来描述所述空间关系,所述试探包括在相邻的所述数据点处的曲率符号是否与在当前所述数据点处的曲率符号不同。
21.一种系统,所述系统包括:
至少部分地在硬件中实现的一个或者多个模块,所述一个或者多个模块被配置为执行操作,所述操作包括:
配置被直接地设置在用户接口中的复杂曲线上的接触点以支持由用户指定的移动;以及
响应于由所述用户指定的相对于相应的所述接触点的所述移动,自动地并且在没有用户干预的情况下调整所述复杂曲线的相应的所述曲线,使得所述相应的所述曲线维持相对于所述复杂曲线的斜率和曲率连续性。
22.根据权利要求21所述的系统,其中通过所述移动来维持与由所述用户指定的所述移动对应的所述接触点。
23.根据权利要求22所述的系统,其中执行所述调整,使得在所述移动之后,在所述移动中涉及的所述接触点落在相应的所述曲线的最大曲率位置附近。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461992083P | 2014-05-12 | 2014-05-12 | |
US61/992,083 | 2014-05-12 | ||
US14/289,408 | 2014-05-28 | ||
US14/289,408 US9727987B2 (en) | 2014-05-12 | 2014-05-28 | Blending techniques for curve fitting |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095560A true CN105095560A (zh) | 2015-11-25 |
CN105095560B CN105095560B (zh) | 2019-09-13 |
Family
ID=53489226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510232704.6A Active CN105095560B (zh) | 2014-05-12 | 2015-05-08 | 用于曲线拟合的混合技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9727987B2 (zh) |
CN (1) | CN105095560B (zh) |
DE (1) | DE102015005834A1 (zh) |
GB (1) | GB2528157A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488827A (zh) * | 2015-12-04 | 2016-04-13 | 网易(杭州)网络有限公司 | 一种闭合曲线的编辑方法及装置 |
CN107831935A (zh) * | 2017-09-27 | 2018-03-23 | 深圳市天英联合教育股份有限公司 | 基于拟合的触摸点轨迹追踪方法、装置及智能设备 |
CN114038203A (zh) * | 2022-01-12 | 2022-02-11 | 成都四方伟业软件股份有限公司 | 一种交通仿真中两点路口车道的曲线拟合方法及装置 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014205632A1 (en) * | 2013-06-24 | 2014-12-31 | Adobe Systems Incorporated | Gravity point drawing method |
US9501848B2 (en) | 2013-09-03 | 2016-11-22 | Adobe Systems Incorporated | Fitting a parametric curve using maximum curvature |
CN105046059B (zh) * | 2015-06-24 | 2017-09-29 | 深圳市腾讯计算机系统有限公司 | 游戏运动轨迹确定方法及装置 |
CN106570864B (zh) * | 2016-10-26 | 2019-08-16 | 中国科学院自动化研究所 | 基于几何误差优化的图像中二次曲线拟合方法 |
US11310121B2 (en) * | 2017-08-22 | 2022-04-19 | Moovila, Inc. | Systems and methods for electron flow rendering and visualization correction |
US10810769B2 (en) | 2017-11-27 | 2020-10-20 | Adobe Inc. | Continuous-curvature rational curves for drawing applications |
US11188917B2 (en) * | 2018-03-29 | 2021-11-30 | Paypal, Inc. | Systems and methods for compressing behavior data using semi-parametric or non-parametric models |
EP3745240B1 (en) | 2018-04-19 | 2022-08-31 | Shenzhen Goodix Technology Co., Ltd. | Coordinate smoothing method, touch control chip, and electronic terminal |
CN109035363B (zh) * | 2018-07-05 | 2023-11-10 | 凌云光技术股份有限公司 | 一种快速迭代的线圆最优拟合方法 |
CN113033085B (zh) * | 2021-03-11 | 2023-02-03 | 中山大学 | 基于粒子群优化与贝塞尔曲线的颗粒形状模拟方法及系统 |
KR20230059333A (ko) * | 2021-10-26 | 2023-05-03 | 주식회사 엘엑스세미콘 | 터치 센싱 장치, 터치 센싱 장치를 포함하는 터치 센싱 디스플레이 시스템 및 터치 센싱 방법 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5940083A (en) * | 1997-04-01 | 1999-08-17 | Novell, Inc. | Multi-curve rendering modification apparatus and method |
US20040109479A1 (en) * | 2002-12-06 | 2004-06-10 | Agilent Technologies, Inc. | Operating point determination for mode-selection laser |
US6829380B1 (en) * | 2000-04-28 | 2004-12-07 | Advanced Micro Devices, Inc. | Optimization of OPC design factors utilizing an advanced algorithm on a low voltage CD-SEM system |
CN101201851A (zh) * | 2006-12-13 | 2008-06-18 | 上海华虹Nec电子有限公司 | 二极管多种仿真器格式的spice模型建模方法 |
US20100060642A1 (en) * | 2008-09-08 | 2010-03-11 | Gaurav Chhaparwal | Techniques For Drawing Curved Edges In Graphs |
CN101969527A (zh) * | 2008-08-28 | 2011-02-09 | 奥多比公司 | 内容感知的视频稳定 |
US20110210943A1 (en) * | 2010-03-01 | 2011-09-01 | Lester F. Ludwig | Curve-fitting approach to hdtp parameter extraction |
US8515694B1 (en) * | 2009-04-09 | 2013-08-20 | The Boeing Company | Methods and systems for gauging multiple hydrocarbon fuel mixtures |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6268871B1 (en) | 1997-04-30 | 2001-07-31 | Silicon Graphics, Inc. | Generating a curve for computer graphics through points residing on underlying geometries in a three dimensional space |
US6067094A (en) * | 1998-04-07 | 2000-05-23 | Adobe Systems Incorporated | Brushstroke envelopes |
US6614456B1 (en) | 2000-01-19 | 2003-09-02 | Xerox Corporation | Systems, methods and graphical user interfaces for controlling tone reproduction curves of image capture and forming devices |
US6882958B2 (en) | 2001-06-28 | 2005-04-19 | National Instruments Corporation | System and method for curve fitting using randomized techniques |
US6641456B2 (en) | 2001-10-18 | 2003-11-04 | Jar Chen Wang | Independent wheel arrangement for toy vehicle |
EP1562138B1 (en) | 2004-02-06 | 2009-08-19 | Dassault Systèmes | A process for drafting a curve in a computer-aided design system |
US7868887B1 (en) * | 2007-10-18 | 2011-01-11 | Adobe Systems Incorporated | Rendering rational quadratic Bézier curves on a GPU |
US20090141038A1 (en) | 2007-11-02 | 2009-06-04 | Newaskar Saket Prashant | Bezier Curves for Low Memory Embedded Graphics Systems |
WO2010099360A1 (en) * | 2009-02-25 | 2010-09-02 | Mohamed Rashwan Mahfouz | Customized orthopaedic implants and related methods |
GB0903404D0 (en) * | 2009-03-02 | 2009-04-08 | Rolls Royce Plc | Surface profile evaluation |
US8373702B2 (en) | 2009-05-15 | 2013-02-12 | Stmicroelectronics S.R.L. | System and method for adaptive tessellation of a curve |
CN102147600B (zh) | 2011-04-30 | 2012-09-19 | 上海交通大学 | 实时生成曲率连续路径的数控插补系统 |
US9286703B2 (en) * | 2013-02-28 | 2016-03-15 | Microsoft Technology Licensing, Llc | Redrawing recent curve sections for real-time smoothing |
US9501848B2 (en) | 2013-09-03 | 2016-11-22 | Adobe Systems Incorporated | Fitting a parametric curve using maximum curvature |
US9204319B2 (en) * | 2014-04-08 | 2015-12-01 | Cellco Partnership | Estimating long term evolution network capacity and performance |
-
2014
- 2014-05-28 US US14/289,408 patent/US9727987B2/en active Active
-
2015
- 2015-05-07 GB GB1507781.1A patent/GB2528157A/en not_active Withdrawn
- 2015-05-07 DE DE102015005834.7A patent/DE102015005834A1/de active Pending
- 2015-05-08 CN CN201510232704.6A patent/CN105095560B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5940083A (en) * | 1997-04-01 | 1999-08-17 | Novell, Inc. | Multi-curve rendering modification apparatus and method |
US6829380B1 (en) * | 2000-04-28 | 2004-12-07 | Advanced Micro Devices, Inc. | Optimization of OPC design factors utilizing an advanced algorithm on a low voltage CD-SEM system |
US20040109479A1 (en) * | 2002-12-06 | 2004-06-10 | Agilent Technologies, Inc. | Operating point determination for mode-selection laser |
CN101201851A (zh) * | 2006-12-13 | 2008-06-18 | 上海华虹Nec电子有限公司 | 二极管多种仿真器格式的spice模型建模方法 |
CN101969527A (zh) * | 2008-08-28 | 2011-02-09 | 奥多比公司 | 内容感知的视频稳定 |
US20100060642A1 (en) * | 2008-09-08 | 2010-03-11 | Gaurav Chhaparwal | Techniques For Drawing Curved Edges In Graphs |
US8515694B1 (en) * | 2009-04-09 | 2013-08-20 | The Boeing Company | Methods and systems for gauging multiple hydrocarbon fuel mixtures |
US20110210943A1 (en) * | 2010-03-01 | 2011-09-01 | Lester F. Ludwig | Curve-fitting approach to hdtp parameter extraction |
Non-Patent Citations (1)
Title |
---|
ILYA BARAN ET AL.: "Sketching Clothoid Splines Using Shortest Paths", 《EUROGRAPHICS 2010》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488827A (zh) * | 2015-12-04 | 2016-04-13 | 网易(杭州)网络有限公司 | 一种闭合曲线的编辑方法及装置 |
CN105488827B (zh) * | 2015-12-04 | 2018-01-26 | 网易(杭州)网络有限公司 | 一种闭合曲线的编辑方法及装置 |
CN107831935A (zh) * | 2017-09-27 | 2018-03-23 | 深圳市天英联合教育股份有限公司 | 基于拟合的触摸点轨迹追踪方法、装置及智能设备 |
CN107831935B (zh) * | 2017-09-27 | 2021-01-12 | 深圳市天英联合教育股份有限公司 | 基于拟合的触摸点轨迹追踪方法、装置及智能设备 |
CN114038203A (zh) * | 2022-01-12 | 2022-02-11 | 成都四方伟业软件股份有限公司 | 一种交通仿真中两点路口车道的曲线拟合方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US9727987B2 (en) | 2017-08-08 |
US20150325016A1 (en) | 2015-11-12 |
GB201507781D0 (en) | 2015-06-17 |
DE102015005834A1 (de) | 2015-11-12 |
GB2528157A (en) | 2016-01-13 |
CN105095560B (zh) | 2019-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095560A (zh) | 用于曲线拟合的混合技术 | |
US10388038B2 (en) | Fitting a parametric curve using maximum curvature | |
US10325035B2 (en) | Interactive dimensioning of parametric models | |
US8248428B2 (en) | Parallel computation of computationally expensive parameter changes | |
KR101076902B1 (ko) | 시스템 오디오 설정을 관리하는 방법 | |
CN106471525A (zh) | 增强神经网络以生成附加输出 | |
US11048335B2 (en) | Stroke operation prediction for three-dimensional digital content | |
Wortmann | Surveying design spaces with performance maps: A multivariate visualization method for parametric design and architectural design optimization | |
US11069099B2 (en) | Drawing curves in space guided by 3-D objects | |
JP2017220225A (ja) | 複雑なグラフ検索のための局所的な視覚グラフ・フィルタ | |
US20150287226A1 (en) | Generating a tree map | |
CN111202986A (zh) | 游戏中虚拟赛道的生成方法、装置、处理器及电子装置 | |
Jackson et al. | Yea big, yea high: A 3D user interface for surface selection by progressive refinement in virtual environments | |
Heaton et al. | Extending distributed lag models to higher degrees | |
KR101949493B1 (ko) | 멀티미디어 콘텐츠의 재생을 제어하기 위한 방법 및 시스템 | |
CN111185013B (zh) | 基于虚拟赛道的游戏数据获取方法、处理器及电子装置 | |
US20160314612A1 (en) | Removing Redundant Volumetric Information From A Volume-Based Data Representation | |
CN102939586B (zh) | 交互图表系统中的局部化布局和布线 | |
US20040211071A1 (en) | Estimation of overlap of polygons | |
JP5718934B2 (ja) | 光散乱を推定するための方法 | |
CN108090110A (zh) | 推荐软件动作以创建图像和推荐图像以示范软件动作的效果 | |
Yoo et al. | A hybrid level set method for modelling detonation and combustion problems in complex geometries | |
Tubb et al. | A zoomable mapping of a musical parameter space using hilbert curves | |
KR102520732B1 (ko) | 유동해석 데이터 처리장치 및 그 장치에서 각 기능을 실행시키기 위해 매체에 저장된 컴퓨터 프로그램 | |
US20170177759A1 (en) | Method and apparatus for modeling movement of target object by interaction with fluid |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |