CN104423795B - 使用最大曲率来拟合参数曲线 - Google Patents

使用最大曲率来拟合参数曲线 Download PDF

Info

Publication number
CN104423795B
CN104423795B CN201410156177.0A CN201410156177A CN104423795B CN 104423795 B CN104423795 B CN 104423795B CN 201410156177 A CN201410156177 A CN 201410156177A CN 104423795 B CN104423795 B CN 104423795B
Authority
CN
China
Prior art keywords
curve
data point
point
segment
maximum curvature
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.)
Active
Application number
CN201410156177.0A
Other languages
English (en)
Other versions
CN104423795A (zh
Inventor
G·D·威伦斯基
N·A·卡尔
S·N·席勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Adobe Inc
Original Assignee
Adobe Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Adobe Systems Inc filed Critical Adobe Systems Inc
Publication of CN104423795A publication Critical patent/CN104423795A/zh
Application granted granted Critical
Publication of CN104423795B publication Critical patent/CN104423795B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Human Computer Interaction (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)

Abstract

本发明涉及用于使用最大曲率来拟合参数曲线的系统和方法。描述使用最大曲率技术的参数曲线拟合。在一个或者多个实现中,通过在被布置在第二数据点与第三数据点之间的第一数据点处设置用于参数曲线的、包括第一数据点的多个数据点的段的最大曲率点来向该段拟合曲线。由计算设备输出拟合的结果。

Description

使用最大曲率来拟合参数曲线
技术领域
背景技术
曲线拟合是指拟合在数据点之间的曲线(例如路径)。这可以用于多种不同目的、比如指示数据点的相互对应、用于电子表格、绘制动画路径、描绘温度等。
然而用来执行曲线拟合的常规技术可能从利用该功能的用户的预计偏离。例如可能在使用常规技术的在数据点之间的曲线拟合中观察到非预计峰、回路等,这些非预计峰、回路等未“跟随”数据点的如用户预计的那样表现的“流动”。因而,常规技术的用户经常被迫手动校正曲线,这可能让人受挫并且效率低。
发明内容
描述涉及到使用最大曲率技术的参数曲线拟合。在一个或者多个实现中,通过在被布置在第二数据点与第三数据点之间的第一数据点处设置用于参数曲线的、包括第一数据点的多个数据点的段的最大曲率点来向该段拟合曲线。由计算设备输出拟合的结果。
在一个或者多个实现中,在计算设备的用户界面中输出曲线,并且响应于经由用户界面接收到用于选择曲线的数据点的输入,将数据点设置为曲线的段的最大曲率点。响应于对数据点在用户界面中的随后移动进行定义的输入,拟合曲线的段,从而数据点保持为曲线的段的最大曲率点。
在一个或者多个实现中,一种系统包括至少部分以硬件实施的至少一个模块。至少一个模块被配置用于执行操作,这些操作包括:向多个数据点的多段拟合曲线,这些段中的每段包括被布置在第二数据点与第三数据点之间的第一数据点,第一数据点被设置作为该段的最大曲率点。响应于接收到用于沿着经由用户界面显示的曲线选择新数据点的输入,将新数据点设置为用于曲线的对应段的最大曲率点。响应于对新数据点在用户界面中的随后移动进行定义的输入,拟合曲线的对应段,从而新数据点保持为曲线的对应段的最大曲率点。
这一发明内容以简化形式介绍以下在具体实施方式中进一步描述的概念选集。这样,这一发明内容并不旨在于标识要求保护的主题内容的实质特征、也不旨在于在确定要求保护的主题内容的范围时用作辅助。
附图说明
参照附图描述具体实施方式。在各图中,标号的最左数位标识该标号在其中首次出现的图。在描述和各图中在不同实例中使用相同标号可以指示相似或者相同项。在各图中代表的实体可以指示一个或者多个实体,因此可以在讨论中可互换地指代实体的单个或者多个形式。
图1是示例实现中的环境的图示,该环境可操作用于运用这里描述的技术。
图2描绘示例实现中的系统,在该系统中至少部分基于最大曲率而向多个数据点拟合曲线。
图3描绘示例实现中的系统,在该系统中示出移动现有数据点为修改曲线的段。
图4描绘示例实现中的系统,在该系统中示出添加和随后移动新数据点为定义修改曲线的对应新段。
图5和6是示出使用常规技术和这里描述的最大曲率技术来创建的曲线的示例的示例实现。
图7是关于作为合成二次贝塞尔曲线的部分的三个曲线的示例。
图8是关于作为合成二次贝塞尔曲线的一部分的两个曲线的示例。
图9是关于作为合成二次贝塞尔曲线的一部分的两个曲线的示例。
图10是闭合曲线的示例。
图11是二次k曲线算法的示例。
图12是描绘示例实现中的过程的流程图,在该过程中通过利用最大曲率技术来拟合和修改曲线。
图13图示示例系统,该系统包括示例设备的各种部件,可以实施该设备为如参照图1-12描述和/或利用的任何类型的计算设备任何类型的计算设备,以实施这里描述的技术的实施例。
具体实施方式
概述
用来向数据点拟合曲线的常规技术在提供高程度的数学控制之时可能缺乏充分的直观交互和易于使用。另外,这些常规技术也可能产生比如由于包括峰、回路等而从用户的预计偏离的曲线,这些峰、回路显现为未跟随数据点中的其余数据点。
运用最大曲率的参数曲线拟合技术被描述。在一个或者多个实现中,向具有区间的数据点拟合曲线,这些区间包括至少三个数据点。对于每个区间,设置区间的被布置在至少两个其它数据点之间的中央数据点作为用于该区间的最大曲率点。此外,通过使用参数技术,可以使用简单表达式、例如点、切线、法线、曲率等来方向评估曲线上的每点,该形式使用闭合形式表达式。以这一方式,向数据点的曲线拟合可以通过避免包括峰、回路等来符合用户的预计,这些峰、回路等看上去并不跟随数据点中的其余数据点。
此外,这些技术可以被配置用于支持在用户这一部分上与曲线的直观交互。例如用户可以通过沿着曲线选择点来进行对曲线的改变。然后设置选择的点作为用于该区间的新最大曲率点,然后可以用直观方式根据期望移动(例如经由手势或者光标控制设备)该点。因此,用户可以通过简单地沿着曲线抓取希望的点并且移动它们来根据期望进行对曲线的改变。也可以支持多种其它功能,可以关于以下章节发现这些功能的进一步讨论。
在以下讨论中,首先描述可以运用这里描述的技术的示例环境。然后描述可以在示例环境以及其它环境中执行的示例过程。因而,示例过程的执行不限于示例环境,并且示例环境不限于示例过程的执行。
示例环境
图1是示例实现中的环境100的图示,该环境可操作用于运用这里描述的技术。所示环境100包括可以用多种方式配置的计算设备102。
可以例如配置计算设备102为桌面型计算机、膝上型计算机、移动设备(例如假设手持配置、比如写字板或者移动电话)等。例如如图所示,在移动配置中配置计算设备102为包括显示设备104的写字板,该显示设备具有被配置用于识别触摸输入、比如来自用户的手部106的触摸输入的触屏功能。因此,计算设备102可以范围从具有大量存储器和处理器资源的全资源设备(例如个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(例如移动设备等)。此外,虽然示出单个计算设备102,但是计算设备102可以代表多个不同设备、比如多个服务器,这些服务器如关于图11进一步描述的那样由企业用来“通过云”执行操作。
图示计算设备102为包括曲线拟合模块108。曲线拟合模块108代表涉及向多个数据点110拟合曲线的功能以及涉及交互(例如修改)曲线的功能。虽然图示为在计算设备102上实施,但是可以用多种方式实施曲线拟合模块108、比如经由“在云上”经由网络112可访问的服务提供者的web服务远程实施曲线拟合模块108、在服务提供者与计算设备102之间分布曲线拟合模块108等。
在所示示例中,图示多个数据点116、118、120、122为经由手势输入,该手势经由显示设备104的触屏功能、比如通过使用一个或者多个电容传感器来检测。这可以作为多种不同功能的一部分来执行、比如指定对象将被动画的路径、用来指定用于图像处理的接缝等。也其它示例、比如从电子表格、传感器读数、演示软件等接收的数据点110。
曲线拟合模块108在接收数据点116-122时继而可以在没有用户交互的情况下基于数据点116-122自动拟合曲线124。这可以用多种方式来执行、比如利用最大曲率技术,从而设置被布置在端点(例如数据点116、122)之间的数据点118、120为用于包括数据点的区间的最大曲率,可以关于图2发现这一点的进一步讨论。此外,曲线拟合模块108可以支持用于以直观方式与曲线124交互的技术、比如修改曲线,可以关于图3和图4发现这一点的进一步讨论。
图2描绘示例实现中的系统200,在该系统中至少部分基于最大曲线向多个数据点拟合曲线。系统200包括图1的用户界面114的图示,该用户界面示出自动曲线拟合的第一和第二阶段202、204。
在第一阶段202,利用光标控制设备以操控光标在用户界面中指定数据点206、208、210。在第一阶段202中的数据点206-210定义曲线的区间使得数据点208被布置在至少两个其它数据点206、210之间。作为响应,曲线拟合模块108拟合相继连接数据点206、208、210的曲线以形成单个连续线。
可以利用多种技术以拟合曲线。例如在所示示例中,该技术涉及到最大曲率,从而将数据点设置于曲线的用于该区间的最大曲率点。例如曲率可以视为在圆的半径之上的可以与该位置相切拟合的曲率。因此,在曲线的包括数据点206、208、210的段的数据点208的曲率按照最大曲率技术在数据点208为最大。因此,曲率的切线的斜率从数据点206到数据点208增加、然后从数据点208到数据点210减少,从而数据点208为最大。
在第二阶段204,用户通过使用光标控制设备以在用户界面114中操控光标来指定附加数据点212、214。在这一示例中,曲线拟合模块108使用每个相继数据点(例如212、214)以定义曲线的新区间。数据点212例如一旦被添加就定义数据点210被布置在数据点208、212之间的区间。因此,对于这一段拟合曲线,其中数据点210在用于该段的最大曲率点。一旦添加数据点214,将数据点212设置于用于如下段的最大曲率点,该段包括数据点210、212、214。
因此,可以实施在第二阶段204的曲线以包括第一区间、第二区间和第三区间,该第一区间包括数据点206-210,该第二区间包括数据点208-212,该第三区间包括数据点210-214。也设想附加示例、比如合成曲线示例,其中一段的结束是另一段的开始、但是并不重叠。
用来连接曲线的一段与另一段的数据点可以视为接合点。在一个或者多个实现中,包括接合点的段(例如用于包括数据点206-210的段以及包括数据点210-214的段的数据点210)的斜率是逐一相接的、大体上连续的。例如添加数据点214以定义涉及到数据点210、212、214的区间也可以引起调整在数据点208、210之间的段的部分的斜率。以这一方式,曲线的段也可以通过提高在段之间的一致来对应于预计。可以关于以下实施示例章节发现这一功能的进一步讨论。虽然在这一示例中描述使用光标控制设备以指定数据点,但是也如先前描述的那样设想其它示例。曲线拟合模块114也可以支持用于修改曲线的技术,如下描述并且在对应图中示出这些技术的示例。
图3描绘示例实现中的系统300,在该系统中示出移动现有数据点为修改曲线的段。系统300包括图1的用户界面114的图示,该用户界面示出自动曲线拟合和修改曲线的第一阶段302、第二阶段304和第三阶段306。在第一阶段302,使用光标以选择被布置在数据点310、312之间的数据点308。数据点308在用于如下区间的最大曲率点,该区间包括数据点308、310、312。
一旦被选择,光标就被用来以如通过使用虚线所示箭头图示的那样在用户界面114中上移数据点308。在第二阶段304中示出这一移动的结果。如图所示,重新计算曲线的段,从而数据点308保持于在曲线的拟合对于该段继续时保持于用于该段的最大曲率点。另外,在移动数据点308期间约束该段的端点(例如数据点310、312)移动。虽然未移动数据点310、312,但是曲线拟合模块仍然由于配置数据点310、312为曲线的相接段的接合点而可以保存相接段的曲率斜率的大体一致。
在第二阶段304中,使用光标以也如通过使用虚线所示箭头图示的那样在用户界面114中继续上移数据点308。在第三阶段306中示出这一移动的结果。如图所示,继续重新计算曲线的段,从而数据点308在曲线的拟合对于该段继续时保持于用于该段的最大曲率点。另外,即使在这一示例中在移动数据点308期间约束端点(例如数据点310、312)移动,相邻区间的拟合也可以被配置用于维持在区间之间的斜率连续。在这一示例中,移动现有数据点。也设想其它示例、比如添加数据点以有助于修改曲线,如下描述并且在对应图中示出这一点的示例。
图4描绘示例实现中的系统400,在该系统中示出添加和随后移动新数据点为定义修改曲线的对应新段。系统400包括图1的用户界面114的图示,该用户界面示出自动曲线拟合和修改曲线的第一阶段402、第二阶段404和第三阶段406。在第一阶段402,使用光标以指定先前未作为曲线的一部分而包括的被布置在数据点310、312之间的新数据点408。数据点408在用于如下区间的最大曲率点,该区间包括数据点308、408、312。
一旦选择,光标被使用以如通过使用虚线所示箭头图示的那样在用户界面114中下移数据点408。在第二阶段404中示出这一移动的结果。如图所示,重新计算曲线的段,从而数据点408在曲线的拟合对于该段继续时保持于用于该段的最大曲率点。另外,同前在移动数据点408期间约束该段的端点(例如数据点308、312)移动。虽然未移动数据点308、312,但是曲线拟合模块仍然由于配置数据点308、312为曲线的相接段的接合点而可以保存相接段的曲率斜率的大体一致。
在第三阶段406中,使用光标以也如通过使用虚线所示箭头图示的那样在用户界面114中上移数据点408。如图所示,继续重新计算曲线的段,从而数据点308在曲线的拟合对于该段继续时保持于用于该段的最大曲率点。另外,相邻区间的拟合也可以被配置用于维持在区间之间的斜率连续。
因此,呈现用于实现直观控制合成曲线的技术。用户可以“抓取”曲线上的任何点并且移动它而保证每个这样的点落在局部(最大)曲率的位置。然后固定和约束每个这样的最大曲率点未移动,除非具体移动它。这使得能够在比先前标准更少的步骤中且用更直观的手势来创建和调整复杂曲线。
图5和图6是示例实现500、600,这些实现示出使用常规技术和这里描述的最大曲率技术来创建的曲线的示例。如图5中所示,例如使用最大曲率技术来拟合曲线502,这些最大曲率技术在拟合该曲线时跟随用户的预计。然而使用常规技术来拟合的另一曲线504包括从用户的预计偏离的峰。类似地,使用图6的最大曲率技术的曲线602大体地跟随预计,而使用常规技术的曲线604引入为预计的回路。
另外,用来与曲线交互的常规技术通常涉及到从曲线“脱离”排列的控制点、比如用于调整切线的控制点。因而,使用常规技术的曲线的改变是改变这些控制点的间接结果。因此,常规技术未充分地直观并且需要比用于实现创建和编辑曲线这样的简单目标的最少用户操作数目更多的用户操作。
然而这里描述的技术中,向用户呈现曲线,该曲线可以是直或者曲线段。用户可以抓握曲线上的任何位置并且移动它。重新计算曲线以跟随移动而位置是保持于最大曲率的数据点。例如为了移动曲线上的块,最大曲率标记放置于块并且被移动。每个这样的手势产生最大曲率标记,而这些标记除非被具体地标定移动,否则保持固定。体验是直接在曲线上简单地移动点的体验,并且保证稳定性,因为约束点没有移动。
使用贝塞尔曲线的实施示例
可以描述合成曲线为系列二次贝塞尔曲线段。该系列可以连续,因为一端的结束是下一端的开始等。这一合成曲线的两个端点是约束点,这意味着点除非被用户移动,否则保持固定。
每个二次贝塞尔曲线具有最大曲率点,它可以在曲线段的端点或者在曲线段之间。如果曲线是直的,则这一最大曲率点可以默认视为落在两个端点之间的中点或者在它们之间的任何处。用户操控的每点变成约束最大曲率点。数学问题简化成确定用于系列二次贝塞尔曲线的参数的数学问题,该数学问题被约束从而使得给出端点并且给出最大曲率点。以下提供对这一问题的求解,该求解保持在接合点的斜率连续并且保证每个指示的最大曲率点确实实际上落在合成曲线上的局部最大曲线位置。另外,可以配置接合点,从而曲线的段的随后移动大于对于与该段相邻的另一端执行的移动。以这一方式,移动一段中的新数据点(最大曲率点)引起从这一段的曲线段的移动减少。
可以在指定的两个总端点和指定的最大曲率点给定时以用于未知贝塞尔控制点的耦合非线性方程集这样的形式算出该求解。对于“N”个最大曲率点,存在“N”个曲线段,并且该求解涉及到对“NxN”矩阵求逆。描述涉及到不同贝塞尔曲线的多种不同示例如下。
单个二次贝塞尔曲线
考虑如下形式的二次贝塞尔曲线:
1)r(t)=(1-t)2r0+2t(1-t)rm+t2r1
粗体字符指示二维矢量。在以上表达式中,“r(t)”指定曲线的如时间参数“t”参数化的坐标轨迹,该参数的值在“0”与“1”之间变化。值“r0”是曲线的“t=0”端点,“r1”是曲线的“t=1”端点,并且“rm”是中间控制点,该中间控制点如下确定曲线轨迹的速率矢量:
2)
Figure GDA0002131627100000091
这按照在两个端点的速率,
3)v0=2(rm-r0)=2rm,0
4)v1=2(r1-rm)=2r1,m
在这一讨论中,使用下标符号表示如下:
ra,b=ra-r
按照沿着曲线的恒定加速度α0给出速率的等效呈现:
5)v(t)=v0+ta0
6)a0=v1-v0
Figure GDA0002131627100000101
可以如下利用在用于贝塞尔坐标的公式中的伯恩斯坦多项式系数的完整性:
7)1=(1-t)2+2t(1-t)+t2
以用备选形式算出轨迹:
8)r(t)=r0+2t(1-t)rm,0+t2r1,0
该形式使用差值矢量,
9)rm,0=rm-r0
以及
10)r1,0=r1-r0·。
轨迹公式的另一变形是:
11)r(t)=r0+t[(1--t)v0+t(v0+v1)/2];
这等效于物体在恒定加速度之下的如下运动方程:
12)
Figure GDA0002131627100000103
最大曲率时间
可以指定点“rc”,该点沿着曲线落放并且该点的曲率最大。移动这一最大曲率点提供一种用于如以上描述的那样与曲率交互并且对曲率重新整形的直观方式。
对于一般参数曲线,沿着轨迹的任何点的曲率矢量“k(t)”按照定义是曲线的切线矢量的每单位弧长“ds”的改变速率
Figure GDA0002131627100000102
其中“v(t)”(非粗体)是速度,矢量速率的量值“v(t)”
13)
Figure GDA0002131627100000111
这一矢量的带符号量值是在时间t的带符号标量曲率。由于我们仅考虑二维曲线,所以将交叉乘积v(t)xa(t)引入未使用的第三维度中,该第三维度可以由单位矢量“e3”指定。因而,曲率矢量的量值是曲率矢量向第三尺度(如果在x、y平面中指定曲线则为z轴)上的投影(点乘积)。
14)
Figure GDA0002131627100000112
从一般二维曲线具体化成二次贝塞尔曲线提供如下简化:在曲率公式中的分子是独立于时间“t”的常量。
15)v(t)xa(t)=v(t)xa0=v0xa0
并且速率矢量在时间上为线性。这产生用于二次贝塞尔曲线的曲率的公式:
16)
Figure GDA0002131627100000113
然后找到在曲线上的如下点并且因此发现它的对应时间参数,该点的这一曲率最大。这等效于最小化在以上公式中的分母。最小化速度或者等效地最小化它的平方就足够了。然后根据下式找到时间“tc”,该时间确定最大曲率点:
17)0=d/dt(v0+ta0)2
18)0=d/dt(v0 2+2tv0·a0+a0 2t2)=2(v0·a0+a0 2t)
然后简单地确定最大曲率时间参数为:
19)
Figure GDA0002131627100000114
然后通过在轨迹公式中使用这一时间来发现对应最大曲率点。
20)rc=(1-tc)2r0+2tc(1-tc)rm+tc 2r1
因此,如果指定确定曲线参数“r0、rm和r1”,则可以找到最大曲率点。
然而可以指定最大曲率点而不是指定目标控制点“rm”,并且根据这一最大曲率点确定贝塞尔参数,这些贝塞尔参数将这一MC点置于指定的位置。这产生用于对于MC时间“tc”求解的三次方程。
指定的最大曲率点;单个曲线段
为了重申当前考虑的问题,与最大曲率坐标“rc”一起向二次贝塞尔曲线提供固定端点“r0”和“r1”。然后可以找到产生这一状态的标准中间控制点“rm”。
这通过与定义3)、4)和6)一起将方程19)和20)组合在一起来实现:
21)
Figure GDA0002131627100000121
22)
Figure GDA0002131627100000122
23)
Figure GDA0002131627100000123
24)
Figure GDA0002131627100000124
方程19)、22)和24)产生用于最大曲率时间“tc”的方程。
25)
Figure GDA0002131627100000125
这是可以对于“tc”求解的三次方程。
26)r1,0 2tc 3-3rc,0·r1,0tc 2+(2rc,0 2+rc,0·r1,0)tc-rc,0 2=0
概括而言,给定曲率端点“r0”和“r1”,以及指定的最大曲率点“rc”,针对最大曲率时间“tc”求解三次方程26,并且在方程21中使用这一时间以确定二次贝塞尔曲线标准中间控制点“rm”。
通过移位时间来提供三次方程26的备选形式,从而相对于半时间值1/2表达它。
27)
Figure GDA0002131627100000131
三次方程的求解相对地简单直接。然而近似求解就可以足够了。具体而言,用于寻根的哈雷法的单个迭代给出良好近似:
27)
Figure GDA0002131627100000132
28)
Figure GDA0002131627100000133
Figure GDA0002131627100000134
p=p/24
可以备选地按照以下参数:
29)β1,0=[3r1,0 2-8r1,c0·rc0,0]/[r1,0·(r1,c0-rc0,0)]
表达求解为
30)
Figure GDA0002131627100000135
合成二次贝塞尔曲线;三个曲线
在下文中,将三个二次贝塞尔曲线与向调整用于中间曲线的最大曲率点给予的考虑一起结合。以下符号表示用来移位用于每个曲线的时间参数的原点:
t0≡t
t1≡t-1
t2≡t-2
可以表达三个曲线为:
31)
r0(t)=(1-t0)2r0+2t0(1-t0)rm+t0 2r1
r1(t)=(1-t1)2r1+2t1(1-t1)rm′+t1 2r2
r2(t)=(1-t2)2r2+2t2(1-t2)rm″+t2 2r3
在图7的示例700中示出曲线的示意图,其中实心方块代表的端点固定。示出中间控制点为符号
Figure GDA0002131627100000141
并且自由到处移动的中间端点表示为点圆。
曲线被设计为连续。通过设置如下来实行在接合点“r1”和“r2”的切线矢量的连续强制。
32)rm′=r11(r1-rm)
以及
33)rm″=r22(r2-rm′)=r22(r2,11r1,m)
然后表达曲线为:
34)
r0(t)=r0+2t0(1-t0)rm,0+t0 2r1,0
r1(t)=r1+2t1(1-t11r1,m+t1 2r2,1
r2(t)=r2-2t2(1-t22(r11r1,m)+t2 2r3,2
参数“λ1”和“λ2”可以分别用来缩放在点“r1”和“r2”的切线矢量的量值。可以进行假设两个端点r0和r3固定。在这一形式清楚的是未固定变量是“r1,r2,rm”并且缩放参数是“λ1”和“λ2”。由于矢量是二维的,这是总共八个未知数。
可以指定三个最大曲率点,每个最大曲率点是在三个曲线中的每个曲线上用于控制曲线的最大曲率点。这提供三个约束方程,每个约束方程为二维。通过设置时间常数等于对应最大曲率时间来找到最大曲率点:
35)
Figure GDA0002131627100000151
Figure GDA0002131627100000152
Figure GDA0002131627100000153
这6个约束足以对于指定的缩放常数确定“r1、r2和rm”。然而约束问题的求解为非线性,因为最大曲率时间依赖于正在发现的矢量。用于最大曲率时间参数的三次方程是:
36)
Figure GDA0002131627100000154
Figure GDA0002131627100000155
Figure GDA0002131627100000156
挑战然后是在约束端点和最大曲率点以及固定切线速率缩放参数给定时对于未知坐标r1、r2、rm求解耦合非线性方程35)和36)。
可以用近似三次求解替换方程集34):
37)
Figure GDA0002131627100000157
Figure GDA0002131627100000158
Figure GDA0002131627100000159
可以按照29)和30)重申这为:
38)
Figure GDA0002131627100000161
Figure GDA0002131627100000162
Figure GDA0002131627100000163
其中
39)
Figure GDA0002131627100000164
Figure GDA0002131627100000165
Figure GDA0002131627100000166
对这些耦合非线性方程的求解可以通过对于“rm,0”求解方程35)中的第一方程来开始。
40)
Figure GDA0002131627100000167
添加第一端点“r0”产生切线矢量“rm”的表达式为:
41)
Figure GDA0002131627100000168
Figure GDA0002131627100000169
这意味着:
41)
Figure GDA00021316271000001610
将这代入方程35)中的第二方程中参数:
Figure GDA00021316271000001611
而定义为:
42)
Figure GDA0002131627100000171
这可以改写为:
Figure GDA0002131627100000172
据此可以求解“r1”如下:
Figure GDA0002131627100000173
以下定义:
43)
Figure GDA0002131627100000174
产生公式:
Figure GDA0002131627100000175
并且减去“r0”将这简化成:
Figure GDA0002131627100000176
或者
44)
Figure GDA0002131627100000177
可以通过在从右到左而不是从左到右对点重新编号时认识对称性来获得互补方程。
这产生:
45)
Figure GDA0002131627100000178
而定义为:
46)
Figure GDA0002131627100000179
并且
47)
Figure GDA0002131627100000181
因此,可以对于两个矢量未知数r1,0和r2,0获得两个联立矢量方程。
48)
Figure GDA0002131627100000182
Figure GDA0002131627100000183
49)
Figure GDA0002131627100000184
通过对暗示的二维矩阵求逆而获得的求解是:
50)
Figure GDA0002131627100000185
Figure GDA0002131627100000186
Figure GDA0002131627100000187
51)
Figure GDA0002131627100000188
Figure GDA0002131627100000189
Figure GDA00021316271000001810
净结果是在最大曲率约束点时间以及两个端点“r0”和“r3”给定时用于二次贝塞尔控制点的方程集。转而根据控制点确定时间。迭代两个集合若干次经常收敛。
合成二次贝塞尔曲线,两个曲线
已经呈现用于三个曲线的合成系统的求解,现在呈现用于两个曲线这一合成的简化问题的求解。
在图8中示出配置的示例800,其中最大曲率点由开圆标示。
如在三个曲线的情况下那样按照下式确定控制点“r1”:
52)
Figure GDA0002131627100000191
但是现在除了“r0”之外还固定“r2”。相似地,给定用于第一曲线段的中间控制点为:
53)
Figure GDA0002131627100000192
用于最大曲率时间参数的三次方程为:
54)
Figure GDA0002131627100000194
而近似求解为:
55)
Figure GDA0002131627100000195
Figure GDA0002131627100000196
其中:
56)
Figure GDA0002131627100000197
Figure GDA0002131627100000198
合成二次贝塞尔曲线,多个曲线
已经找到用于由一个、两个和三个曲线段构成的合成曲线这些特殊情况的求解,现在描述一般情况,并且呈现用于任意数目的曲线的求解。可以描述问题如下:与一个或者更多最大曲率点一起呈现两个曲线端点。将发现在一个端点开始、在另一端点结束并且实际上在最大曲率点触及最大曲率约束点中的每个最大曲率约束点的系列二次贝塞尔曲线段。在图9中示出示例900,其中方形是指定的约束点并且将确定与单个切线控制点一起的开圆。
对于“N”个最大曲率点,有“N”个二次贝塞尔曲线段和“N”个对应约束方程。定义二次贝塞尔系数为:
57)
Figure GDA0002131627100000201
这支持书写以下耦合方程集:
58)
Figure GDA0002131627100000202
Figure GDA0002131627100000203
Figure GDA0002131627100000204
Figure GDA0002131627100000205
斜率在每个端点连续意味着(确定在每个端点的切线或者速率的)贝塞尔中间控制点各自根据第一个来确定。在下文中,这通过将缩放参数“λn”中的每个缩放参数设置成一来简化:
59)
Figure GDA0002131627100000206
Figure GDA0002131627100000207
Figure GDA0002131627100000208
Figure GDA0002131627100000209
Figure GDA00021316271000002010
注意这些遵循递推关系:
60)
Figure GDA00021316271000002011
这两个方程集58)和59)的结果是矩阵方程,该矩阵方程将被求逆以获得“N-1”个未知贝塞尔端点和单个第一段中间控制点“rm”。
用于最大曲率时间的方程如更早在36)、37)和38)中呈现的
那样;有用于每个最大曲率约束点的一个方程。将“N”个最大曲率矢
量的集合表示为:
61)
Figure GDA0002131627100000211
并且将“N”个未知矢量的集合表示为:
62)
π={rm,r1,r2,...,rN-1}
根据“NxN”维矩阵“M”的逆矩阵获得求解为:
63)
π=M-1πe
该逆矩阵可以由它的非零元素定义:
64)
Figure GDA0002131627100000212
Figure GDA0002131627100000213
Figure GDA0002131627100000214
Figure GDA0002131627100000215
For:对于
具体示例有助于阐明求解。考虑曲线的特殊情况,该曲线除了两个端点“r0”和“r5”之外还包含五个最大曲率约束点“rc0、rc1、rc2、rc3和rc4”。这一曲线由五个二次贝塞尔曲线段组成;换而言之,“N=5”。
表达五个约束矢量为:
65)
Figure GDA0002131627100000216
并且五个未知坐标矢量是:
66)
π={rm,r1,r2,r3,r4}
表达5x5维矩阵“M”为:
67)
Figure GDA0002131627100000221
并且用于未知二维坐标矢量的求解需要对这一矩阵求逆:
68)
π=M-1πc
收敛
已经找到三个固定最大曲率点的系统在以下初始化方案之下良好收敛。首先通过平均中间邻居最大曲率点来确定曲线端点。根据这些曲线端点估计最大曲率时间。在这些时间估计给定时计算未知二次贝塞尔曲线段端点和切线控制点。这可以迭代若干次。虽然在这一示例中描述使用贝塞尔曲线,但是应当容易清楚可以运用广泛多种其它技术以确定最大曲率而未脱离其精神实质和范围。
合成二次贝塞尔k曲线
在这一节中,将多个二次贝塞尔段连接在一起以形成连续k曲线。对于“N”个最大曲率点,有“N”个二次贝塞尔曲线段和“N”个对应约束方程。为了简化在这一示例中的以后方程,可以定义二次贝塞尔系数如下:
Figure GDA0002131627100000222
Figure GDA0002131627100000223
Figure GDA0002131627100000224
其中“tci”表示用于“N”个指定的最大曲率位置中的每个最大曲率位置的最大曲率时间,每个最大曲率位置由索引“i”编索引。
对于每个二次贝塞尔曲线,可以书写以下耦合方程:
Figure GDA0002131627100000231
Figure GDA0002131627100000232
Figure GDA0002131627100000233
“G1”连续意味着切线方向和量值(例如速率)在曲线段之间的接合点连续。这一条件意味着贝塞尔端点在它们的相邻中间控制点之间途中:
Figure GDA0002131627100000234
Figure GDA0002131627100000235
Figure GDA0002131627100000236
可以求解中间控制点以制定求解,然后可以根据该求解推断对贝塞尔端点的求解。使用以上表达式,这一方式对于这些控制点产生递推关系如下:
Figure GDA0002131627100000237
已知边界端点“r0”和“rN-1”的约束产生在边界的方程。
Figure GDA0002131627100000238
并且:
Figure GDA0002131627100000239
这些一起产生可以按照已知约束数量“b”对于以下未知矢量求解的矩阵方程“Axm=b”:
Figure GDA00021316271000002310
矩阵具有以下三角形式:
Figure GDA0002131627100000241
对于闭合曲线(例如如图10的示例实现1000中所示无端点的曲线),矩阵A可以采用循环三角形式,其中矩阵的第一行和末行二者包含三个非零元素。也可以高效地求解这一略有修改的矩阵从而提供用于开放和闭合曲线二者的求解。
Figure GDA0002131627100000242
应当注意除了第一行和末行之外,在行上的每个元素子u和根据以下完整关系为一:
αnnn=1
与下式等效的对角元素的值范围也从1/2到3/4。
(1+βn)/2
最大值3/4在对应最大曲率时间为1/2时出现。另外,矩阵以对角为主,并且只要时间参数都没有值“0”或者“1”,那么矩阵严格地以对角为主。在这样的情况下,根据Levy-Desplanques理论已知矩阵为非奇异“(det(A)≠0)”。
图11描绘用于二次k曲线的算法的示例1100。如描述的算法在性质上为线性。注意矩阵“A”和右侧矢量“b”的构造假设已知用于最大曲率点中的每个最大曲率点的最大曲率时间。计算最大曲率时间“tci”涉及到已知贝塞尔端点“ri”的未知,这些是对矩阵系统的求解。优化方案如图11的算法1中所示。
算法始于通过平均相邻最大曲率点来估计曲线的初始位置“ri”。内循环包括更新用于最大曲率时间的估计、继而通过求解以上描述的矩阵方程来更新坐标位置。子例程“计算最大曲率时间”对于最大曲率时间求解三次方程。可以改进、然后使用时间估计以产生更佳位置。这些新位置然后可以用来重新计算新时间估计集合等直至系统达到收敛。在一个或者多个实现中,定义收敛标准为时间值“tci”在两个相继迭代期间保持接近不变。
因此,在这一示例中,三角矩阵比前例更稀疏并且求解很快而稳定性增加,因为涉及到更少数学运算以求解系统。虽然以上描述“开放”曲线,但是也设想“闭合”曲线,其中每个点在内部,因此曲线未包括“边界点”。
示例过程
以下讨论描述可以利用先前描述的系统和设备来实施的曲线技术。可以在硬件、固件或者软件或者其组合中实施过程中的每个过程的方面。示出过程为对一个或者多个设备执行的操作进行指定的块集合而未必限于示出的用于相应块执行操作的顺序。在以下讨论的部分中,将参照图1-10。
图12描绘示例实现中的过程1200,在该过程中通过利用最大曲率技术来拟合和修改曲线。向多个数据点的多段拟合曲线,这些段中的每段包括被布置在第二与第三数据点之间的第一数据点,第一数据点被设置作为用于该段的最大曲率点(块1202)。同前,曲线拟合模块108可以从不同来源获得数据点110并且通过利用最大曲率技术、比如贝塞尔曲线向那些数据点拟合曲线。
响应于用于经由用户界面选择曲线的数据点的输入,设置数据点作为用于曲线的段的最大曲率点(块1204)。数据点可以是用来初始地形成如关于图2和3描述的曲线、如关于图4描述的新数据点等的数据点之一。
响应于对数据点在用户界面中的随后移动进行定义的输入,拟合曲线的段,从而数据点保持为用于曲线的段的最大曲率点(块1206)。以这一方式,曲线的拟合可以继续跟随移动,从而数据点保持于用于该段的最大曲率点。也设想多种其它示例。
示例系统和设备
图13在1300一般地图示示例系统,该系统包括代表可以实施这里描述的各种技术的一个或者多个计算系统和/或设备的示例计算设备1302。通过包括被配置用于拟合和/或操控涉及到数据点的曲线的曲线拟合模块108来图示这一点。计算设备1302可以例如是服务器提供者的服务器、与客户端关联的设备(例如客户端设备)、片上系统和/或任何其它适当计算设备或者计算系统。
示例计算设备1302如图所示包括相互通信地耦合的处理系统1304、一个或者多个计算机可读介质1306和一个或者多个I/O接口1308。虽然未示出,但是计算设备1302还可以包括相互耦合各种部件的系统总线或者其它数据和命令传送系统。系统总线可以包括不同总线结构、比如存储器总线或者存储器控制器、外围总线、通用串行总线和/或利用多种总线架构中的任何总线架构的处理器或者本地总线中的任何总线结构或者组合。也设想多种其它示例、比如控制和数据线。
处理系统1304代表用于使用硬件来执行一个或者多个操作的功能。因而图示处理系统1304为包括可以配置为处理器、功能块等的硬件单元1310。这可以包括比如专用集成电路或者使用一个或者多个半导体来形成的其它逻辑器件的硬件实现。硬件单元1310不受形成它们的材料或者在其中运用的处理机制限制。例如处理器可以由半导体和/或晶体管(例如电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
图示计算机可读存储介质1306为包括存储器/存储装置1312。存储器/存储装置1312代表与一个或者多个计算机可读介质关联的存储器/存储容量。存储器/存储部件1312可以包括易失性介质(比如随机存取存储器(RAM))和/或非易失性介质(比如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置1312可以包括固定介质(例如RAM、ROM、固定硬驱动等)以及可拆卸介质(例如闪存、可拆卸硬驱动、光盘等)。可以用如以下进一步描述的多种其它方式配置计算机可读介质1306。
输入/输出接口1308代表用于允许用户向计算设备1302录入命令和信息并且也允许使用各种输入/输出设备向用户和/或其它部件或者设备呈现信息的功能。输入设备的示例包括键盘、光标控制设备(例如鼠标)、麦克风、扫描仪、触摸功能(例如被配置用于检测物理触摸的电容或者其它传感器)、相机(例如该相机可以运用可见光或者不可见光波长、比如红外线频率以识别移动为未涉及到触摸的手势)等。输出设备的示例包括显示设备(例如监视器或者投影仪)、扬声器、打印机、网卡、触觉-响应设备等。因此,可以用如以下进一步描述的多种方式配置计算设备1302以支持用户交互。
这里可以在软件、硬件单元或者程序模块的一般背景中描述各种技术。一般而言,这样的模块包括执行特定任务或者实现特定抽象数据类型的例程、程序、对象、单元、部件、数据结构等。如这里所用术语“模块”、“功能”和“部件”一般代表软件、固件、硬件或者其组合。这里描述的技术的特征独立于平台,这意味着可以在具有多种处理器的多种商用计算平台上实现技术。
可以在某个形式的计算机可读介质上存储或者跨越该计算机可读介质传输描述的模块和技术的实现。计算机可读介质可以包括计算设备1302可以访问的多种介质。举例而言而无限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
“计算机可读存储介质”可以是指与仅信号传输、载波或者信号本身对照实现持久和/或非持久存储信息的介质和/或设备。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括硬件、比如在适合用于存储信息、比如计算机可读指令、数据结构、程序模块、逻辑元件/电路或者其它数据的方法或者技术中实施的易失性和非易失性、可拆卸和非可拆卸介质和/或存储设备。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或者其它存储器技术、CD-ROM、数字万用盘(DVD)或者其它光存储、硬盘、磁盒、磁带、磁盘存储装置或者其它磁存储设备或者适合用来存储希望的信息并且可以由计算机访问的其它存储设备、有形介质或者制造品。
“计算机可读信号介质”可以是指被配置用于比如经由网络向计算设备1302的硬件发送指令的信号承载介质。信号介质通常可以在调制的数据信号、比如载波、数据信号或者其它传送机制中体现计算机可读指令、数据结构、程序模块或者其它数据。信号介质也包括任何信息递送介质。术语“调制的数据信号”意味着如下信号,该信号让它的特性中的一个或者多个特性以对信号中的信息进行编码这样的方式来设置或者改变。举例而言而无限制,通信介质包括有线介质如有线网络或者直接有线连接和无线介质如声学、RF、红外线和其它无线介质。
如先前描述的那样,硬件单元1310和计算机可读介质1306代表以如下硬件形式实现的模块、可编程器件逻辑和/或固定器件逻辑,可以在一些实施例中运用该硬件形式以实现这里描述的技术的至少一些方面、比如执行一个或者多个指令。硬件可以包括集成电路或者片上系统的部件、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)和在硅或者其它硬件中的其它实现。在本文中,硬件可以作为处理设备操作,该处理设备执行指令定义的程序任务和/或硬件体现的逻辑以及作为用来存储用于执行的指令的硬件、例如先前描述的计算机可读存储介质。
可以运用前述各项的组合以实现这里描述的各种技术。因而可以实现软件、硬件或者可执行模块为在某个形式的计算机可读存储介质上和/或由一个或者多个硬件单元1310体现的一个或者多个指令和/或逻辑。计算设备1302可以被配置用于实现与软件和/或硬件模块对应的特定指令和/或功能。因而,可以至少部分在硬件中、例如通过使用计算机可读存储介质和/或处理系统1304的硬件单元1310来实现作为软件可由计算设备1302执行的模块的实现。指令和/或功能可由一个或者多个制造品(例如一个或者多个计算设备1302和/或处理系统1304)可执行/可操作以实施现这里描述的技术、模块和示例。
这里描述的技术可以由计算设备1302的各种配置支持而不限于这里描述的技术的具体示例。也可以全部或者部分通过使用分布式系统、比如经由如以下描述的平台1316通过“云”1314实施这一功能。
云1314包括和/或代表用于资源1318的平台1316。平台1316抽象化云1314的硬件(例如服务器)和软件资源的下层功能。资源1318可以包括可以在从计算设备1302远离的服务器上执行计算机处理之时利用的应用和/或数据。资源1318也可以包括通过因特网和/或通过用户网络、比如蜂窝或者Wi-Fi网络提供的服务。
平台1316可以抽象化用于连接计算设备1302与其它计算设备的资源和功能。平台1316也可以服务于抽象化资源伸缩以提供与对于经由平台1316实施的资源1318的所遇需求对应的伸缩级别。因而在一个互连设备实施例中,可以遍布系统1300分布这里描述的功能的实现。例如可以部分在计算设备1302上以及经由抽象化云1316的功能的平台1316实现功能。
结论
虽然已经用结构特征和/或方法动作特有的言语描述本发明,但是将理解在所附权利要求中定义的本发明未必限于描述的具体特征或者动作。实际上,公开具体特征和动作作为实施要求包含的本发明的示例形式。

Claims (20)

1.一种由一个或多个计算设备实施的方法,所述方法包括:
从触摸屏、电子表格、传感器读数、演示软件中的至少一个接收多个数据点;以及
向在所述一个或多个计算设备生成的用户界面中显示的所述多个数据点的段拟合参数曲线,所述参数曲线包括被布置在所述曲线上的第二数据点与第三数据点之间的所述曲线上的第一数据点,所述拟合所述参数曲线包括在被布置在所述第二数据点和第三数据点之间的所述曲线的所述第一数据点处设置所述曲线的所述段的最大曲率点,使得被布置在所述第二数据点和第三数据点之间的所述曲线上的所述第一数据点在被布置在所述第二数据点和第三数据点之间的所述曲线上的所述第一数据点在所述用户界面中的随后自由移动期间保持所述曲线的所述段的所述最大曲率点,所述第二数据点和第三数据点在被布置在所述第二数据点和第三数据点之间的所述曲线上的所述第一数据点在所述用户界面内的所述随后自由移动期间被限制为不移动;以及
由所述一个或多个计算设备输出所述拟合的结果以用于在所述用户界面中显示所述曲线;以及
其中所述曲线指示所述多个数据点的相互对应关系。
2.如权利要求1所述的方法,其中所述显示所述曲线包括显示对被配置用于响应于从用户接收的一个或者多个输入而在所述用户界面中移动的所述多个数据点的指示。
3.如权利要求1所述的方法,还包括:
响应于经由所述用户界面接收到用于沿着所述曲线选择新数据点的输入,将所述新数据点设置为所述曲线的对应段的最大曲率点;以及
响应于对所述新数据点在所述用户界面中的随后自由移动进行定义的输入,拟合所述曲线的所述对应段,从而所述新数据点保持为所述曲线的所述对应段的所述最大曲率点。
4.如权利要求2所述的方法,其中也定义所述对应段的至少两个其它数据点在所述新数据点的所述随后移动期间保持固定。
5.如权利要求1所述的方法,其中所述曲线包括多个所述段,每段经由接合点相互链接,从而包括所述接合点的段具有逐一相接的、大体上连续的斜率。
6.如权利要求5所述的方法,其中执行所述拟合从而所述曲线的随后移动大于对于与所述段相邻的另一段执行的移动。
7.如权利要求5所述的方法,其中所述第二数据点或者第三数据点中的至少一项是接合点。
8.如权利要求1所述的方法,其中通过拟合一个或者多个参数曲线以形成所述曲线来执行所述拟合。
9.如权利要求7所述的方法,其中所述一个或者多个参数曲线包括二次贝塞尔曲线。
10.一种用于曲线拟合的方法,包括:
从触摸屏、电子表格、传感器读数、演示软件中的至少一个接收多个数据点;以及
在计算设备的用户界面中输出具有参数形式的曲线;
响应于经由所述用户界面接收到用于选择作为所述曲线的一部分、且被布置在所述曲线上的第二数据点和第三数据点之间的第一数据点的输入,将作为所述曲线的一部分、且被布置在所述曲线上的第二数据点和第三数据点之间的所述第一数据点设置为所述曲线的段的最大曲率点;以及
响应于对作为所述曲线的一部分、且被布置在所述曲线上的第二数据点和第三数据点之间的所述第一数据点在所述用户界面中的随后自由移动进行定义的输入,拟合所述曲线的所述段,从而作为所述曲线的一部分、且被布置在所述曲线上的第二数据点和第三数据点之间的所述第一数据点保持为所述曲线的一部分且位于所述曲线的所述段的所述最大曲率点,所述第二数据点和第三数据点在作为所述曲线的一部分、且被布置在所述曲线上的所述第二数据点和第三数据点之间的所述第一数据点在所述用户界面内的所述随后自由移动期间被限制为不移动;以及
其中所述曲线指示所述多个数据点的相互对应关系。
11.如权利要求10所述的方法,其中所述曲线的所述段包括被布置在作为所述曲线的一部分而包括的至少两个其它数据点之间的所述数据点。
12.如权利要求11所述的方法,其中所述至少两个其它数据点在所述数据点的所述随后自由移动期间作为所述曲线的所述段的一部分保持固定。
13.如权利要求10所述的方法,其中所述曲线包括多个所述段,每段经由接合点相互链接,从而包括所述接合点的段具有逐一相接的、大体上连续的斜率。
14.一种包括至少部分以硬件实施的至少一个模块的系统,所述至少一个模块被配置用于执行操作,所述操作包括:
从触摸屏、电子表格、传感器读数、演示软件中的至少一个接收多个数据点;以及
向所述多个数据点的多段拟合具有参数形式的曲线,所述段中的每段包括被布置在第二数据点与第三数据点之间的第一数据点,所述拟合所述曲线包括被布置在所述第二数据点和所述第三数据点之间的所述第一数据点被设置作为所述段的最大曲率点;
响应于经由用户界面接收到用于选择所显示的所述曲线上的新数据点的输入,将所述曲线上的所述新数据点设置为所述曲线的对应段的最大曲率点;以及
响应于对所述曲线上的所述新数据点在所述用户界面中的随后自由移动进行定义的输入,拟合所述曲线的所述对应段,从而所述曲线上的所述新数据点保持为所述曲线的所述对应段的所述最大曲率点,邻近所述曲线上的所述新数据点的数据点在所述曲线上的所述新数据点在所述用户界面内的所述随后自由移动期间被限制为不移动;以及
其中所述曲线指示所述多个数据点的相互对应关系。
15.如权利要求14所述的系统,还包括显示所述曲线以包括对被配置用于响应于从用户接收的一个或者多个输入而在所述用户界面中移动的所述多个数据点的指示。
16.如权利要求15所述的系统,其中也定义所述对应段的至少两个其它数据点在所述新数据点的所述随后自由移动期间保持固定。
17.如权利要求14所述的系统,其中所述多个段经由相应接合点相互链接,从而包括所述接合点的段具有逐一相接的、大体上连续的斜率。
18.如权利要求14所述的系统,其中所述曲线也包括被配置用于支持对所述曲线重新进行拟合并操控的、未沿着所述曲线包括的至少一个新数据点。
19.如权利要求14所述的系统,其中用于沿着所述曲线选择新数据点的所述输入是经由光标控制设备、命令或者手势提供的。
20.如权利要求17所述的系统,其中执行所述拟合以使得所述曲线的随后移动比针对邻近所述段的另一段执行的移动更大。
CN201410156177.0A 2013-09-03 2014-04-16 使用最大曲率来拟合参数曲线 Active CN104423795B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/016,987 US9501848B2 (en) 2013-09-03 2013-09-03 Fitting a parametric curve using maximum curvature
US14/016,987 2013-09-03

Publications (2)

Publication Number Publication Date
CN104423795A CN104423795A (zh) 2015-03-18
CN104423795B true CN104423795B (zh) 2020-05-15

Family

ID=51752392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410156177.0A Active CN104423795B (zh) 2013-09-03 2014-04-16 使用最大曲率来拟合参数曲线

Country Status (4)

Country Link
US (2) US9501848B2 (zh)
CN (1) CN104423795B (zh)
DE (1) DE102014011900A1 (zh)
GB (1) GB2520120B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501848B2 (en) 2013-09-03 2016-11-22 Adobe Systems Incorporated Fitting a parametric curve using maximum curvature
US9727987B2 (en) 2014-05-12 2017-08-08 Adobe Systems Incorporated Blending techniques for curve fitting
EP3136192A1 (de) * 2015-08-24 2017-03-01 Siemens Aktiengesellschaft Steuerungsverfahren für die bewegung eines werkzeugs und steuerungsvorrichtung
CN105488827B (zh) * 2015-12-04 2018-01-26 网易(杭州)网络有限公司 一种闭合曲线的编辑方法及装置
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves
US10163244B2 (en) * 2016-02-03 2018-12-25 Adobe Systems Incorporation Creating reusable and configurable digital whiteboard animations
US9984480B2 (en) 2016-03-21 2018-05-29 Adobe Systems Incorporated Enhancing curves using non-uniformly scaled cubic variation of curvature curves
US10810769B2 (en) * 2017-11-27 2020-10-20 Adobe Inc. Continuous-curvature rational curves for drawing applications
US10936792B2 (en) 2017-12-21 2021-03-02 Monotype Imaging Inc. Harmonizing font contours
US11004249B2 (en) 2019-03-18 2021-05-11 Apple Inc. Hand drawn animation motion paths
KR102338018B1 (ko) * 2019-07-30 2021-12-10 주식회사 힐세리온 초음파 이미지상의 특징점들을 이용한 초음파 지방간 자동 진단 장치 및 이를 이용한 원격 의료 진단 방법
US11385781B2 (en) * 2019-09-27 2022-07-12 Apple Inc. Multi-display alignment through observed interactions
CN113033085B (zh) * 2021-03-11 2023-02-03 中山大学 基于粒子群优化与贝塞尔曲线的颗粒形状模拟方法及系统
KR20230059333A (ko) * 2021-10-26 2023-05-03 주식회사 엘엑스세미콘 터치 센싱 장치, 터치 센싱 장치를 포함하는 터치 센싱 디스플레이 시스템 및 터치 센싱 방법
CN115086551A (zh) * 2022-05-19 2022-09-20 上海艾为电子技术股份有限公司 对应关系、马达位移获取方法和系统、马达驱动芯片

Family Cites Families (25)

* Cited by examiner, † Cited by third party
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
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
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
US6882958B2 (en) 2001-06-28 2005-04-19 National Instruments Corporation System and method for curve fitting using randomized techniques
US7042457B2 (en) * 2001-07-03 2006-05-09 Dassault Systemes Method and system for real-time analysis and display of curve connection quality
US6641456B2 (en) 2001-10-18 2003-11-04 Jar Chen Wang Independent wheel arrangement for toy vehicle
EP1330000A1 (en) 2002-12-06 2003-07-23 Agilent Technologies Inc Operating point determination for mode-selection laser
EP1562138B1 (en) * 2004-02-06 2009-08-19 Dassault Systèmes A process for drafting a curve in a computer-aided design system
CN100576214C (zh) 2006-12-13 2009-12-30 上海华虹Nec电子有限公司 二极管多种仿真器格式的spice模型建模方法
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
US8102428B2 (en) 2008-08-28 2012-01-24 Adobe Systems Incorporated Content-aware video stabilization
US8730241B2 (en) 2008-09-08 2014-05-20 Fair Isaac Corporation Techniques for drawing curved edges in graphs
JP2012518519A (ja) 2009-02-25 2012-08-16 モハメッド ラシュワン マーフォーズ カスタマイズされた整形外科用インプラント及び関連方法並びに変形可能な関節テンプレート
GB0903404D0 (en) 2009-03-02 2009-04-08 Rolls Royce Plc Surface profile evaluation
US8515694B1 (en) 2009-04-09 2013-08-20 The Boeing Company Methods and systems for gauging multiple hydrocarbon fuel mixtures
US8373702B2 (en) * 2009-05-15 2013-02-12 Stmicroelectronics S.R.L. System and method for adaptive tessellation of a curve
US10146427B2 (en) 2010-03-01 2018-12-04 Nri R&D Patent Licensing, Llc Curve-fitting approach to high definition touch pad (HDTP) parameter extraction
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
US9727987B2 (en) 2014-05-12 2017-08-08 Adobe Systems Incorporated Blending techniques for curve fitting

Also Published As

Publication number Publication date
GB2520120B (en) 2016-05-11
US9501848B2 (en) 2016-11-22
US20170039740A1 (en) 2017-02-09
DE102014011900A1 (de) 2015-03-05
CN104423795A (zh) 2015-03-18
US20150062129A1 (en) 2015-03-05
US10388038B2 (en) 2019-08-20
GB2520120A (en) 2015-05-13
GB201415391D0 (en) 2014-10-15

Similar Documents

Publication Publication Date Title
CN104423795B (zh) 使用最大曲率来拟合参数曲线
US9727987B2 (en) Blending techniques for curve fitting
US8994736B2 (en) Methods and apparatus for freeform deformation of 3-D models
JP5033216B2 (ja) コンピュータグラフィックスシステムにおける立方ベジェ制御点の生成
US10410317B1 (en) Digital image transformation environment using spline handles
US10127720B2 (en) Object modeling in multi-dimensional space
CN105409196A (zh) 用于视频稳定的自适应路径平滑
US9955065B2 (en) Dynamic motion path blur user interface
WO2015096205A1 (zh) 图表分析系统及图表分析方法
US20150113453A1 (en) Methods and devices for simplified graphical object editing
US8358311B1 (en) Interpolation between model poses using inverse kinematics
US10657682B2 (en) Drawing curves in space guided by 3-D objects
US8363054B2 (en) Localized layout and routing in an interactive diagramming system
CN108507563B (zh) 巡航路径生成方法及装置
Valenzuela et al. Using Simulated Annealing for knot placement for cubic spline approximation
US11049296B2 (en) Dynamic path modification and extension
US11132821B1 (en) Providing graphical user interface tools for efficiently selecting handles in vector artwork on touch-based devices
Jordan et al. Isotopic equivalence by bézier curve subdivision for application to high performance computing
US10249067B2 (en) Control of shape interaction in a user interface
US11682146B2 (en) Vector object path segment editing
US20240126427A1 (en) Constrained stroke editing for digital content
US20220301263A1 (en) Digital Object Surface Inflation
US20240135607A1 (en) Nonlinear representations for vector objects

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant