CN105190697A - 用于呈现自由形式绘图的***和方法 - Google Patents
用于呈现自由形式绘图的***和方法 Download PDFInfo
- Publication number
- CN105190697A CN105190697A CN201380073400.9A CN201380073400A CN105190697A CN 105190697 A CN105190697 A CN 105190697A CN 201380073400 A CN201380073400 A CN 201380073400A CN 105190697 A CN105190697 A CN 105190697A
- Authority
- CN
- China
- Prior art keywords
- point
- beziers
- article
- reference mark
- line
- 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.)
- Pending
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
- 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)
- Controls And Circuits For Display Device (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
描述了用于呈现自由形式绘图的***和方法。在一些方面,接收来自自由形式绘图中的输入曲线的第一点、第二点和第三点。确定第一二次贝塞尔曲线,其中,第一二次贝塞尔曲线的控制点包括第二点,并且第一二次贝塞尔曲线的端点包括第一点和第三点。第一二次贝塞尔曲线的第一部分被提供以进行显示,其中,第一二次贝塞尔曲线的第一部分的端点包括第一点和第二终端点,并且第一二次贝塞尔曲线的第一部分不包括第三点。
Description
相关申请
本申请要求于2012年12月21日提交的美国专利申请No.13/723,907的优先权;其全部教导通过引用的方式并入本文。
技术领域
本题述技术大体上涉及用户界面。更具体地,本题述技术涉及呈现自由形式绘图。
背景技术
通常,使用笔和纸进行绘图的用户可以容易地绘制平滑线和曲线。然而,使用触摸屏或其他电子设备(例如,结合非触摸屏操作的鼠标)进行平滑绘制可能较困难,这是因为一些触摸屏可能以低分辨率(例如,60帧每秒)接收触摸输入,这使得输入到触摸屏的曲线或线不会表现为平滑或连续的。
发明内容
在一些方面,提供了一种用于呈现自由形式绘图的计算机执行方法。所述方法包括:从自由形式绘图中的输入曲线接收第一点、第二点、以及第三点。所述方法包括:确定第一二次贝塞尔曲线,其中所述第一二次贝塞尔曲线的控制点包括所述第二点,并且所述第一二次贝塞尔曲线的端点包括所述第一点和所述第三点。所述方法包括:提供对所述第一二次贝塞尔曲线的第一部分的显示,其中所述第一二次贝塞尔曲线的所述第一部分的端点包括所述第一点和第二终端点,并且所述第一二次贝塞尔曲线的所述第一部分不包括所述第三点。所述方法包括:从所述输入曲线接收第四点。所述方法包括:确定第二控制点,所述第二控制点包括第一条线和第二条线的交点,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点。所述方法包括:确定第二二次贝塞尔曲线,其中,所述第二二次贝塞尔曲线的控制点包括所述第二控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点。所述方法包括:提供对所述第二二次贝塞尔曲线的第一部分的显示,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
在一些方面,提供了一种用于呈现自由形式绘图的非瞬时性计算机可读介质。所述计算机可读介质包括指令。所述指令包括:用于从自由形式绘图中的输入曲线接收第一点、第二点、以及第三点的代码。所述指令包括:用于确定第一二次贝塞尔曲线的代码,其中所述第一二次贝塞尔曲线的控制点包括所述第二点,并且所述第一二次贝塞尔曲线的端点包括所述第一点和所述第三点。所述指令包括:用于提供对所述第一二次贝塞尔曲线的第一部分的显示的代码,其中所述第一二次贝塞尔曲线的所述第一部分的端点包括所述第一点和第二终端点,并且所述第一二次贝塞尔曲线的所述第一部分不包括所述第三点。
在一些方面,提供了一种用于呈现自由形式绘图的***。所述***包括:一个或多个处理器以及存储器。所述存储器包括指令。所述指令包括:用于从自由形式绘图中的输入曲线接收第一点、第二点、以及第三点的代码。所述指令包括:用于确定第一二次贝塞尔曲线的代码,其中所述第一二次贝塞尔曲线的控制点包括所述第二点,并且所述第一二次贝塞尔曲线的端点包括所述第一点和所述第三点。所述指令包括:用于提供对所述第一二次贝塞尔曲线的第一部分的显示的代码,其中所述第一二次贝塞尔曲线的所述第一部分的端点包括所述第一点和第二终端点,并且所述第一二次贝塞尔曲线的所述第一部分不包括所述第三点。所述指令包括:用于从所述输入曲线接收第四点的代码。所述指令包括:用于确定第二控制点的代码,所述第二控制点包括第一条线和第二条线的交点,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点。所述指令包括:用于确定第二二次贝塞尔曲线的代码,其中,所述第二二次贝塞尔曲线的控制点包括所述第二控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点。所述指令包括:用于提供对所述第二二次贝塞尔曲线的第一部分的显示的代码,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
附图说明
通过以下结合附图给出的对本发明的详细描述,将更容易理解前述讨论,在附图中:
图1A示出了自由形式绘图中的第一示例性曲线。
图1B示出了自由形式绘图中的第二示例性曲线。
图1C示出了与自由形式绘图中的曲线相关联的第一示例性矢量。
图1D示出了与自由形式绘图中的曲线相关联的第二示例性矢量。
图1E示出了与自由形式绘图中的曲线相关联的第三示例性矢量。
图1F示出了与自由形式绘图中的曲线相关联的示例性距离。
图1G示出了自由形式绘图中的第三示例性曲线。
图2示出了被配置为呈现自由形式绘图的示例性计算设备。
图3A至图3E示出了用于呈现自由形式绘图中的曲线的示例性过程。
图4概念性地示出了实现本题述技术的一些方面的示例性电子***。
具体实施方式
如上所述,可能期望用于呈现自由形式绘图的新方法,其中自由形式绘图是使用输入设备输入的并且被呈现在屏幕或其他显示设备上。
本题述技术提供了用于呈现曲线的技术,该曲线是在使用输入设备输入的并且被呈现在屏幕或其他显示设备上的自由形式绘图内输入的。屏幕可以是触摸屏或结合鼠标、操纵杆、或任何其他输入设备操作的屏幕。如文本所使用的,术语“曲线”涵盖其一般且普通的含义,包括但不限于:在输入绘图、直线、曲线、图形等的同时基于经由输入设备(例如,手指、手写笔、或鼠标)的操作而接收的时间点序列得到的、经由显示设备(例如,屏幕)显示的路径。在一些方面,当绘制曲线时,输入设备可能不会离开或抬离屏幕或者“鼠标按下”可能不会终止。所显示的曲线可能表现为从起点到终点的路径。所显示的曲线可以在存储器中表示为连续贝塞尔曲线,但是可以经由光栅化显示在离散像素上。如本文所使用的,术语“鼠标按下”涵盖其一般且普通的含义,包括但不限于:主鼠标按钮(例如,被手指)下压。主鼠标按钮可以是例如单个按钮鼠标上的单个按钮或者具有多个按钮的右手鼠标中被配置为由用户的右手食指操作的按钮。
根据一些方面,计算机经由输入设备从自由形式绘图中的输入曲线接收第一点、第二点和第三点。输入曲线可以与通过输入设备(例如,手指、手写笔、或鼠标)得到的路径相对应。每一个点可以与屏幕上的一个或多个像素或位置相对应。第一点可以在第二点之前被输入,第二点可以在第三点之前被输入。计算机确定第一二次贝塞尔曲线,该第一二次贝塞尔曲线在第二点处具有控制点并且在第一点和第三点处具有端点。计算机提供在屏幕上对第一二次贝塞尔曲线的从第一点延伸到第二终端点的前半段的显示,其中,第二终端点沿着第一二次贝塞尔曲线在第一点和第三点之间的近似中间。如本文所使用的,短语“近似中间”涵盖其一般且普通的含义,包括但不限于:在路线的35%与65%之间。
计算机从输入曲线接收第四点。计算机确定第二控制点。第二控制点在第一条线和第二条线的交点处。第一条线包括第一二次贝塞尔曲线的前半段的控制点和第二终端点。第二条线包括第三点和第四点。计算机确定第二二次贝塞尔曲线。第二二次贝塞尔曲线在第二控制点处具有控制点并且在第二终端点和第四点处具有端点。计算机提供在屏幕上对第二二次贝塞尔曲线的从第二终端点延伸到第三终端点的前半段的显示,其中,第三终端点沿着第二二次贝塞尔曲线在第二终端点和第四点之间的近似中间。
如本文所使用的,短语“二次贝塞尔曲线”涵盖其一般且普通的含义,包括但不限于:可以根据下面的等式(1)或(2)表达的曲线,其中,等式(1)定义二次贝塞尔曲线,等式(2)是根据等式(1)导出的并等同于等式(1)。
B(t)=(1-t)[(1-t)P0+tP1]+t[(1-t)P1+tP2],t∈[0,1](1)
B(t)=(1-t)2P0+2(1-t)tP1+t2P2,t∈[0,1](2)
在等式(1)和(2)中,t是0与1之间的参数化变量。B(t)表示二次贝塞尔曲线。P0和P2是二次贝塞尔曲线的端点。P1是二次贝塞尔曲线的控制点。可以根据下面的等式(3)来表达二次贝塞尔曲线B(t)的-阶导数B’(t)。
B′(t)=2(1-t)(P1-P0]+2t(P2-P1)(3)
基于等式(3),曲线B(t)在点P0和P2处的切线在P1处相交。随着t从0增加到1,曲线B(t)在P1的方向上偏离P0,然后在远离P1的方向上弯曲到达P2。
有利地,本题述技术提供了用于呈现自由形式绘图中的曲线的实时在线技术,从而提高了用户体验并且使利用手指或手写笔在屏幕设备上绘图的用户体验类似于用笔在纸上绘图的用户体验。如本文所使用的,术语“实时”涵盖其一般且普通的含义,包括但不限于:在用户输入曲线之后不久显示曲线,而不存在处理***造成的任何故意延迟(但是考虑由于硬件的有限处理速度引起的延迟)。如本文所使用的,术语“在线”涵盖其一般且普通的含义,包括但不限于:不显示稍后用曲线的不同部分替换的曲线的临时部分。换言之,一旦在屏幕上显示了曲线的一部分,就不替换该部分,除非用户擦除该部分或者采取另一肯定动作来移除该部分。
根据一些方面,所呈现的曲线是C1连续的。如本文所使用的,类别C0包括每一个连续函数。类别C1是其一阶导数是类别C0中的函数的函数类别。因此,换言之,所呈现的曲线具有连续一阶导数。在一些方面,所呈现的曲线可能不是C1连续的或者可以在C1连续中具有一个或多个中断。在一些方面,用户可能故意绘制非C1连续的曲线。例如,用户可能绘制理想的“V”。
图1A示出了自由形式绘图100中的第一示例性曲线。
例如,可以通过用户在点105.1、105.2和105.3处使用输入设备(例如,手指、手写笔、或鼠标)提供针对屏幕的输入来输入自由形式绘图100。用户可以使用输入设备得到连续路径,并且针对计算机的经由输入设备接收输入的组件(例如,触摸屏或鼠标)的驱动器可以提供关于通过输入设备得到的路径包括点105.1、105.2和105.3的指示。在一些情况下,针对计算机的组件的驱动器可能不准确,这在显示的曲线中引起缺陷,如上所述。作为响应,计算机利用点105.2处的控制点生成从点105.1到点105.3的二次贝塞尔曲线。二次贝塞尔曲线的近似中点是点110.2。作为这些输入点的结果,二次贝塞尔曲线的从点105.1到点110.2的部分被绘制在屏幕上,如从点105.1到点110.2的实线所示。
如本文所使用的,短语“二次贝塞尔曲线的近似中点”涵盖其简单且普通的意义,包括但不限于:二次贝塞尔曲线B(t)上的点,其中,t=0.5,t≈0.5,或0.35≤t≤0.65。二次贝塞尔曲线B(t)的参数化变量t沿着曲线B(t)在0与1之间变化。
图1B示出了自由形式绘图100中的第二示例性曲线。
如图1B中所示,除了前三个点105.1-105.3之外,用户还已经(例如,经由触摸屏或鼠标)在第四点105.4处提供了针对屏幕的输入。作为响应,计算机确定点115.1为点105.1与点105.2之间的二次贝塞尔曲线的控制点。点115.2被确定为响应于点105.4的输入而绘制的新的二次贝塞尔曲线(该曲线从点110.2到点110.3)的控制点。点115.2对应于第一条线与第二条线之间的交点。第一条线包括点115.1和点110.2。第二条线包括点105.3和点105.4。计算机确定在点115.2处具有控制点并且在点110.2和105.4处具有端点的二次贝塞尔曲线。如前所述,计算机确定新的二次贝塞尔曲线的近似中点为点110.3,其中近似中点在点110.2和点105.4的中间。然后,计算机绘制新的二次贝塞尔曲线的从点110.2到点110.3的部分。
图1B示出了用于响应于第四点105.4的输入来完成曲线的一种可能的技术。然而,在一些情况下,上文结合图1B所述的完成曲线可能不是有利的,这是因为这种完成可能导致难看的曲线。图1C至图1F示出了可以用于确定可能期望用于完成曲线的不同技术(例如,如图1G所示)的各种值。
图1C示出了与自由形式绘图100中的曲线相关联的第一示例性矢量120.1和120.2。
矢量120.1从曲线的第三输入点105.3延伸到曲线的第四输入点105.4。矢量120.2从新的控制点115.2延伸到曲线的第四输入点105.4。如果矢量120.1和矢量120.2的点积小于0,则可以使用结合图1G所述的曲线完成技术替代结合图1B所述的曲线完成技术。
图1D示出了与自由形式绘图100中的曲线相关联的第二示例性矢量120.3和120.4。
矢量120.3从曲线的第三输入点105.3延伸到第二终端点110.2。矢量120.4从新的控制点115.2延伸到第二终端点110.2。如果矢量120.3和矢量120.4的点积小于0,则可以使用结合图1G所述的曲线完成技术替代结合图1B所述的曲线完成技术。
图1E示出了与自由形式绘图100中的曲线相关联的第三示例性矢量120.5和120.6。
矢量120.5从第二终端点110.2延伸到从点105.1到点110.2的二次贝塞尔曲线的控制点115.1。矢量120.6从新的控制点115.2延伸到第二终端点110.2。如果矢量120.5和矢量120.6的点积小于0,则可以使用结合图1G所述的曲线完成技术替代结合图1B所述的曲线完成技术。
图1F示出了与自由形式绘图100中的曲线相关联的示例性距离125.1和125.2。
距离125.1表示新的控制点115.2与第三点105.3之间的距离。距离125.2表示第二终端点110.2与第四点105.4之间的距离。如果距离125.1超过距离125.2,则可以使用结合图1G所述的曲线完成技术替代结合图1B所述的曲线完成技术。
图1G示出了自由形式绘图100中的第三示例性曲线。
如图1G所示,除了前三个点105.1-105.3之外,用户还已经在第四点105.4处触摸了屏幕,并且计算机已经确定结合图1C至图1F所述的条件中的至少一个适用。作为响应,计算机确定点115.1是点105.1和105.2之间的二次贝塞尔曲线的控制点。点115.2-p被确定为响应于点105.4的输入而绘制的新的二次贝塞尔曲线(该曲线从点110.2到点110.3-p)的控制点。点115.2-p对应于第一条主线与第二条线之间的交点。第一条主线包括点115.1和点105.2(而不是结合图1B所述的第一条线中的点110.2)。第二条线包括点105.3和点105.4。计算机确定在点115.2处具有控制点并且在点110.2和点105.4处具有端点的二次贝塞尔曲线。如前所述,计算机确定新的二次贝塞尔曲线的近似中点为点110.3-p,该近似中点在点110.2和点105.4的中间。然后,计算机绘制新的二次贝塞尔曲线的从点110.2到点110.3-p的部分。在由于绘图引起的一些配置中,点115.2-p可以不验证结合图1C至图1F所述的点115.2的四个条件。在这些配置中,点105.3可以替代点115.2-p或点115.2用作新的二次贝塞尔曲线的控制点。在一些方面,点105.4可以是由用户提供的输入中的最后一个输入点(例如,可以在输入了点105.4之后终止触摸屏的触摸或鼠标按下事件)。在这些方面,可以在屏幕上显示整个新的二次贝塞尔曲线而不是新的二次贝塞尔曲线的一直到点110.3-p或110.3的部分。
在图1A至图1G中,实线表示可以在屏幕上显示的线。虚线表示可以存储在计算机的存储器中但是不在屏幕上显示的线或曲线。
图1A至图1G结合具有四个输入点105.1-105.4的曲线描述了本题述技术。然而,可以使用任意数量的输入点来实现本题述技术。例如,曲线可以包括100或1000个输入点。可以如上文例如结合图1B或图1G对第四点105.4进行处理一样对前三个点之后的每一个附加点进行处理。在一些方面,当正在屏幕上基于屏幕的处理速度(例如,以60个点每秒或120个点每秒的速率)移动手指或手写笔时,点被添加到曲线。
图2示出了被配置为呈现自由形式绘图的示例性计算设备200。计算设备200可以是例如膝上型计算机、台式计算机、移动电话、个人数字助理(PDA)、平板计算机、笔记本、其中嵌入有或耦合有一个或多个处理器的电视、物理机、或虚拟机。
如图所示,计算设备200包括中央处理单元(CPU)202、网络接口204、触摸屏206、以及存储器208。CPU202包括一个或多个处理器。CPU202被配置为执行计算机指令,这些计算机指令被存储在诸如存储器208等的计算机可读介质中。网络接口204被配置为允许计算设备200在网络(例如,互联网、有线网络、或无线网络)中发送和接收数据。网络接口204可以包括一个或多个网络接口卡(NIC)。触摸屏206被配置为接收经由触摸的输入。可以通过诸如手指或手写笔等的输入设备来完成触摸。触摸屏206可以具有单个触摸界面或多触摸界面。触摸屏206还被配置为显示可视输出。触摸屏206可以在计算设备200的内部,或者计算设备200可以与外部触摸屏206耦合在一起。存储器208存储数据或指令。存储器208可以是以下各项中的一项或多项:缓存单元、存储单元、内部存储单元、或者外部存储单元。如图所示,存储器208包括触摸屏驱动器210和绘图应用212。结合图2将计算设备200描述为包括触摸屏206和触摸屏驱动器210。然而,可以结合非触摸屏来实现本主题的各个方面,其中,非触摸屏结合除了手指或手写笔之外的输入设备(例如,鼠标或操纵杆)操作或者结合针对非触摸屏和输入设备的相应驱动器操作。在一些方面,可以经由具有相关联的驱动器的相机来捕获用于在屏幕上绘图的输入设备(例如,手指或笔)的二维或三维空间中的移动。
触摸屏驱动器210包括用于与触摸屏206接口连接的指令。例如,触摸屏驱动器210被配置为使触摸数据经由触摸屏206被输入到计算设备200并且使可视输出或图像经由触摸屏206被显示。
绘图应用212是用于经由触摸屏206绘制图像的应用。例如,用户可以以与用户在纸板上移动笔来绘图或书写的方式类似的方式沿着触摸屏206移动手指或手写笔。绘图应用212经由触摸屏驱动器210接收用户在其处触摸触摸屏206的点的表示,并且响应于接收的点的表示经由触摸屏提供输出。例如,绘图应用212可以显示连接点的曲线。
如图所示,绘图应用212包括输入曲线呈现模块214。输入曲线呈现模块214被配置为接收用户在触摸屏206上触摸的点,并且经由触摸屏206提供对与用户触摸的点相对应的曲线的显示。在一些示例中,输入曲线呈现模块214可以根据下文结合图3A-3E所述的或上文结合图1A-1G所述的过程300操作。
图3A-3E示出了用于呈现自由形式绘图中的曲线的示例性过程300。
如图3A所示,过程300从步骤302开始,在步骤302,计算机(例如,计算设备200)从自由形式绘图中的输入曲线(例如,经由触摸屏206或经由鼠标)接收第一点(例如,点105.1)、第二点(例如,点105.2)、和第三点(例如,点105.3)。第一点、第二点和第三点可以与触摸屏上的连续触摸或由与鼠标相对应的光标在屏幕上通过的点相对应。第一点可以在第二点之前被触摸,第二点可以在第三点之前被触摸。可以使用针对屏幕的任何输入设备(例如,手指或手写笔)或使用与屏幕上显示的光标耦合的鼠标来完成每一次触摸。
在步骤304,计算机确定第一二次贝塞尔曲线。第一二次贝塞尔曲线的控制点是第二点。第一二次贝塞尔曲线的端点是第一点和第三点。
在步骤306,计算机提供在屏幕上对第一二次贝塞尔曲线的第一部分的显示。第一二次贝塞尔曲线的第一部分的端点包括第一点和第二终端点(例如,点110.2)。第一二次贝塞尔曲线的第一部分不包括第三点。在一些方面,第二终端点是第一二次贝塞尔曲线的近似中点。
在步骤308,计算机从来自屏幕的输入曲线接收第四点(例如,点105.4)。第四点可以与屏幕上的触摸相对应。
在步骤310,计算机定义第一条线,该第一条线包括第一二次贝塞尔曲线的第一部分的控制点(例如,点115.1)和第二终端点(例如,点110.2)。
在步骤312,计算机定义第二条线,该第二条线包括第三点和第四点。
如图3B所示,在步骤314,计算机确定第一条线和第二条线是否相交。如果第一条线和第二条线相交,则过程300继续步骤316。如果第一条线和第二条线不相交,则过程300继续图3D的步骤336。
在步骤316,计算机确定第二控制点(例如,点115.2)。第二控制点在第一条线和第二条线的交点处。
在步骤318,计算机定义从第三点到第四点的第一矢量(例如,矢量120.1)。
在步骤320,计算机定义从第二控制点到第四点的第二矢量(例如,矢量120.2)。
在步骤322,计算机定义从第三点到第二终端点的第三矢量(例如,矢量120.3)。
在步骤324,计算机定义从第二控制点到第二终端点的第四矢量(例如,矢量120.4或矢量120.6)。
在步骤326,计算机定义从第二终端点到第一二次贝塞尔曲线的第一部分的第一部分的控制点(例如,点115.1)的第五矢量(例如,矢量120.5)。
如图3C所示,在步骤328,计算机确定第一矢量和第二矢量的点积是否小于0。如果是,则过程300继续图3D的步骤336。如果否,则过程300继续步骤330。
在步骤330,计算机确定第三矢量和第四矢量的点积是否小于0。如果是,则过程300继续图3D的步骤336。如果否,则过程300继续步骤332。
在步骤332,计算机确定第五矢量和第四矢量的点积是否小于0。如果是,则过程300继续图3D的步骤336。如果否,则过程300继续图3D的步骤334。
如图3D所示,在步骤334,计算机确定第二控制点和第三控制点之间的距离是否超过第二终端点和第四点之间的距离。如果是,则过程300继续步骤336。如果否,则过程300继续图3E的步骤342。
在步骤336,计算机确定第二主控制点(例如,点115.2-p)。第二主控制点处于第一条主线和第二条线的交点处。第一条主线包括第一二次贝塞尔曲线的第一部分的控制点(例如,点115.1)和第二点(例如,点105.2)。图3A的步骤312中定义的第二条线包括第三点和第四点。在一些方面,计算机可以使用第二主控制点替代第二控制点重复步骤318-334。在使用第二主控制点重复步骤318-334时返回步骤336之后,计算机可以使用自由形式绘图中的输入曲线的第三点(例如,点105.3)替代第二主控制点,并且第三点可以用作下一个贝塞尔曲线的控制点,如下所述。
在步骤338,计算机确定第二主二次贝塞尔曲线。第二主二次贝塞尔曲线的控制点是第二主控制点(例如,点115.2-p)。第二主二次贝塞尔曲线的端点包括第二终端点(例如,点110.2)和第四点。
在步骤340,计算机提供在屏幕上对第二主二次贝塞尔曲线的第一部分的显示。第二主二次贝塞尔曲线的第一部分的端点是第二终端点和第三主渲染点(例如,点110.3-p)。第二主二次贝塞尔曲线的第一部分不包括第四点。在一些方面,第三主渲染点是第二主二次贝塞尔曲线的近似中点。在步骤340之后,过程300结束。
如图3E所示,在步骤342,如果(如在图3D的步骤334中确定的)第二控制点和第三控制点之间的距离未超过第二终端点和第四点之间的距离,则计算机确定第二二次贝塞尔曲线。第二二次贝塞尔曲线的控制点是第二控制点(例如,点115.2)。第二二次贝塞尔曲线的端点包括第二终端点和第四点。
在步骤344,计算机提供在屏幕上对第二二次贝塞尔曲线的第一部分的显示。第二二次贝塞尔曲线的第一部分的端点是第二终端点和第三终端点(例如,点110.3)。第二二次贝塞尔曲线的第一部分不包括第四点。在一些方面,第三终端点是第二二次贝塞尔曲线的近似中点。在步骤344之后,过程300结束。
在图3A至图3E中将过程300描述为由单个计算机来执行。然而,在一些方面,经由网络或另一连接彼此相连的多个计算机可以实现过程300的步骤中的一个或多个步骤。例如,可以在与屏幕耦合的客户端计算设备处执行显示和输入接收步骤,而可以在客户端计算设备远端的服务器处执行确定、定义和计算步骤。
将过程300的步骤302-344描述为根据特定顺序按顺序执行。然而,在一些方面,可以并行执行过程300的步骤中的两个或更多个步骤或者可以以任意顺序执行过程300的步骤。
此外,根据一些方面,可以跳过过程300的步骤302-344中的一个或多个步骤。例如,过程300可以执行图3A的步骤302-312,然后直接跳至图3E的步骤342-344,而无需执行步骤314-340中的一个或多个步骤,或者无需执行步骤314-340中的每一个步骤。
根据一些方面,过程300的步骤302-344中的一个或多个步骤可以重复多次。例如,当在图3A的步骤308中接收到来自输入曲线的第四点之后,还可以接收附加点(例如,第五点),这使得针对附加点重复过程300的步骤302-344中的一些步骤。当到达用户提供的输入中的最后一个输入点时(例如,当终止对触摸屏的触摸或鼠标按下事件时),在屏幕上显示整个最后一个二次贝塞尔曲线而不是最后一个二次贝塞尔曲线曲线的第一部分。
图4概念性地示出了实现了题述技术的一些实现的电子***400。例如,可以使用电子***400的布置来实现计算设备200。电子***400可以是计算机(例如移动电话、PDA)或任意其他类型的电子设备。这种电子***包括各种类型的计算机可读介质和用于各种其他类型的计算机可读介质的接口。电子***400包括总线405、处理单元410、***存储器415、只读存储器420、永久存储设备425、输入设备接口430、输出设备接口435和网络接口440。
总线405统一表示通信地连接电子***400的多个内部设备的所有***、外设和芯片组总线。例如,总线405通信地将处理单元410与只读存储器420、***存储器450和永久存储设备425连接在一起。
处理单元410从这些多个存储器单元获取要执行的指令和要处理的数据,以便执行题述技术的过程。在不同方面,处理单元可以是单个处理器或多核处理器。
只读存储器(ROM)420存储处理单元410和电子***的其他模块所需的静态数据和指令。另一方面,永久存储设备425是读写存储器设备。该设备是非易失存储单元,其即使在电子***400关闭时也存储指令和数据。题述技术的一些方面使用大容量存储设备(例如磁或光盘及其相应的盘驱动器)作为永久存储设备425。
其他方面使用可移除存储设备(例如软盘、闪存驱动器及其相应磁盘驱动器)作为永久存储设备425。像永久存储设备425一样,***存储器415是读写存储器设备。然而,与存储设备425不同的是,***存储器415是易失性的读写存储器,比如随机存取存储器。***存储器415存储处理器在运行时间需要的一些指令和数据。在一些方面,将题述技术的过程存储在***存储器415、永久存储设备425或只读存储器420中。例如,各个存储器单元包括根据一些方面用于呈现自由形式绘图的指令。处理单元410从这些多个存储器单元获取要执行的指令和要处理的数据,以便执行一些方面的过程。
总线405还连接到输入和输出设备接口430和435。输入设备接口430使用户能够向电子***传送信息并选择命令。与输入设备接口430一起使用的输入设备包括例如字母数字键盘和定点设备(也称为“光标控制设备”)。输出设备接口435使得能够例如显示由电子***400生成的图像。与输出设备接口435一起使用的输出设备包括例如打印机和显示设备,例如阴极射线管(CRT)或液晶显示器(LCD)。一些方面包括诸如屏幕等的设备,其既充当输入设备又充当输出设备。
最后,如图4所示,总线405还通过网络接口440将电子***400耦合到网络(未示出)。通过这种方式,电子***400可以是计算机网络(例如局域网(LAN)、广域网(WAN)或内联网)或网络网络(例如因特网)的一部分。电子***400的任何或全部组件可结合题述技术使用。
上述特征和应用可被实现为软件过程,其被规定为记录在计算机可读存储介质(也被称为就计算机可读介质)上的指令集合。当由一个或多个处理单元(例如一个或多个处理器、处理器的内核或其他处理单元)执行这些指令时,它们使处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于CD-ROM、闪存驱动器、RAM芯片、硬盘驱动器、EPROM等。计算机可读介质不包括无线地或通过有线连接传递的载波和电子信号。
在本说明书中,术语“软件”旨在包括位于只读存储器中的固件或存储在磁存储设备或闪存存储设备(例如固态驱动器)中的应用,其可被读取到存储器中供处理器处理。此外,在一些方面,多个软件技术在保持不同软件技术的同时可被实现为较大程序的子部分。在一些方面,多个软件技术也可被实现为分离的程序。最后,一起实现这里描述的软件技术的分离程序的任何组合在题述技术的范围内。在一些方面,软件程序(当在一个或多个电子***上被安装以便进行操作时)限定实施和执行软件程序的操作的一个或多个具体的机器实现。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可用任意形式的编程语言来编写,包括汇编或解释语言、说明或过程语言,并且其可被部署为任意的形式,包括独立程序或模块、组件、子例程、对象或适于在计算环境中使用的其他单元。计算机程序可以但不必对应于文件***中的文件。程序可存储在保存其他程序或数据(例如存储在标记语言文档中的一个或多个脚本)的文件的一部分中、在专用于所考虑的程序的单一文件中或在多个协调文件(例如存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可被部署为在一个计算机上或在位于一个站点或分布在多个站点且由通信网络互连的多个计算机上执行。
以上描述的这些功能可被实现在数字电子电路、计算机软件、固件或硬件中。可使用一个或多个计算机程序产品实现技术。可编程处理器和计算机可被包括在移动设备中或封装为移动设备。可由一个或多个可编程处理器和由一个或多个可编程逻辑电路来执行过程和逻辑流。可通过通信网络互连通用和专用计算设备和存储设备。
一些方面包括电子组件,例如微处理器、在机器可读或计算机可读介质(备选地,被称为计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指令的存储设备和存储器。这种计算机可读介质的一些示例包括RAM、ROM、只读压缩光盘(CD-ROM)、可记录压缩光盘(CD-R)、可重写压缩光盘(CD-RW)、只读数字多功能光盘(例如DVD-ROM、双层DVD-ROM)、多种可记录/可重写DVD(例如DVD-RAM、DVD-RW、DVD+RW等)、闪存存储器(例如SD卡、微型SD卡、微SD卡等)、磁或固态硬盘驱动器、只读和可记录 光盘、超高密度光盘、任意其他光或磁介质和软盘。计算机可读介质可存储可由至少一个处理单元执行的包括用于执行多个操作的指令集合的计算机程序。计算机程序或计算机代码的示例包括机器代码(例如由编译器制作)和文件(包括由计算机、电子组件或微处理器使用解译器执行的高级别代码)。
虽然上述讨论主要涉及执行软件的微处理器和多核处理器,但是一些方面是由一个或多个集成电路执行的,例如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。在一些方面,这种集成电路执行存储在电路本身上的指令。
说明书和本申请中的任意权利要求中使用的术语“计算机”、“服务器”、“处理器”和“存储器”都指代电子设备或其他技术设备。这些术语不包括人或人群。为了本说明书的目的,术语显示或正在显示意思是在电子设备上显示。说明书和本申请中的任意权利要求中使用的术语“计算机可读介质”整体限于有形的物理对象,其存储可由计算机读取的形式的信息。这些术语不包括任意无线信号、有线下载信号、和任意其他短暂信号。
为了提供与用户的交互,对本说明书中所述的主题的方面可以实现于计算机上,该计算机具有显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监控器)(以用于向用户显示信息)以及键盘和定点设备(例如鼠标或轨迹球)(用户可通过其向计算机提供输入)。也可使用其他类型的设备来提供与用户的交互,例如向用户提供的反馈可以是任意形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;以及可采用任何形式从用户接收输入,包括声学、语言或触觉输入。此外,计算机可通过向由用户使用的设备发送文档或从其接收文档来与用户进行交互;例如,通过响应于从用户的客户端设备上的网络浏览器接收的请求向网络浏览器发送网页。
本说明书中所述的主题可实现于计算***中,该计算***包括后端组件(例如数据服务器)、或包括中间件组件(例如应用服务器)、或包括前端组件(例如客户端计算机,该客户端计算机具有用户可用来与本说明书中所述的主题的方面进行交互的图形用户界面或网络浏览器)、或一个或多个这种后端、中间件或前端组件的任意组合。***组件可被任意形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(LAN)和广域网(WAN)、互连网络(例如因特网)和对等网络(例如专用对等网络)。
计算***可包括客户端和服务器。客户端和服务器一般彼此远离且通常通过通信网络交互。客户端和服务器之间的关系源于运行于相应计算机上的并且彼此具有客户端-服务器关系的计算机程序。在所公开的主题的一些方面中,服务器(例如为了向与客户端设备交互的用户显示数据并且从其接收用户输入)向客户端设备发送数据(例如HTML页面)。可在服务器处从客户端设备接收在客户端设备处生成的数据(例如用户交互的结果)。
应该理解的是,所公开的过程中的步骤的具体顺序或层级是示例方法的示出。基于设计偏好,应该理解的是,可以对过程中的步骤的具体顺序或层级重新进行安排,或执行所有示出的步骤。一些步骤可同时执行。例如,在一些情况下,多任务并行处理可以是有利的。此外,上文示出的各个***组件的分离不应被理解为需要这一分离,应该理解的是,所描述的程序组件和***一般可被集成在单个软件产品中或封装成多个软件产品。
对这些方面的各种修改是明显的,且这里所限定的一般原理可适用于其他方面。从而,权利要求不限于这里示出的方面,而是符合与书面权利要求相一致的完整范围,其中除非特别表明,否则对单数形式的元素的提及并不意味着“一个且仅是一个”,而是“一个或多个”。除非另外表明,否则术语“一些”指一个或多个。男性代词(例如他的)包括女性和中性(例如她的和它的),反之亦然。标题和小标题(如果有的话)只是为了方便而使用的而并不限制题述技术。
例如,短语“方面”并不意味着所述方面对题述技术是必不可少的或所述方面适用于题述技术的所有配置。涉及一个方面的公开可以适用于所有配置或一个或多个配置。例如,短语方面可指一个或多个方面,反之亦然。例如,短语“配置”并不意味着这一配置对题述技术是必不可少的或所述配置适用于题述技术的所有配置。涉及一个配置的公开可以适用于所有配置或一个或多个配置。例如,短语配置可指一个或多个配置,反之亦然。
这里使用的词语“示例性”意思是“充当示例或说明”。这里描述为“示例性”的任意方面或设计不必被理解为比其他方面或设计更优选或更有利。
Claims (20)
1.一种用于呈现自由形式绘图的计算机执行的方法,所述方法包括:
从自由形式绘图中的输入曲线接收第一点、第二点、以及第三点;
确定第一二次贝塞尔曲线,其中所述第一二次贝塞尔曲线的控制点包括所述第二点,并且所述第一二次贝塞尔曲线的端点包括所述第一点和所述第三点;
提供对所述第一二次贝塞尔曲线的第一部分的显示,其中所述第一二次贝塞尔曲线的所述第一部分的端点包括所述第一点和第二终端点,并且所述第一二次贝塞尔曲线的所述第一部分不包括所述第三点;
从所述输入曲线接收第四点;
确定第二控制点,所述第二控制点包括第一条线和第二条线的交点,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点;
确定第二二次贝塞尔曲线,其中,所述第二二次贝塞尔曲线的控制点包括所述第二控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点;以及
提供对所述第二二次贝塞尔曲线的第一部分的显示,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
2.根据权利要求1所述的方法,其中,所述第二终端点包括所述第一二次贝塞尔曲线的近似中点,并且所述第三终端点包括所述第二二次贝塞尔曲线的近似中点。
3.根据权利要求1所述的方法,还包括:
从所述输入曲线接收第五点;
确定第三控制点,所述第三控制点包括第三条线和第四条线的交点,所述第三条线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三终端点,所述第四条线包括所述第四点和所述第五点;
确定第三二次贝塞尔曲线,其中,所述第三二次贝塞尔曲线的控制点包括所述第三控制点,并且所述第三二次贝塞尔曲线的端点包括所述第三终端点和所述第五点;以及
提供对所述第三二次贝塞尔曲线的第一部分的显示,其中,所述第三二次贝塞尔曲线的所述第一部分的端点包括所述第三终端点和第四终端点,并且所述第三二次贝塞尔曲线的所述第一部分不包括所述第五点。
4.根据权利要求1所述的方法,还包括:
从所述输入曲线接收第五点;
确定第三条线和第四条线不相交,所述第三条线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三终端点,所述第四条线包括所述第四点和所述第五点;
确定第三主控制点,所述第三主控制点包括第三条主线和所述第四条线的交点,所述第三条主线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三点;
确定第三二次贝塞尔曲线,其中,所述第三二次贝塞尔曲线的控制点包括所述第三主控制点,并且所述第三二次贝塞尔曲线的端点包括所述第三终端点和所述第五点;以及
提供对所述第三二次贝塞尔曲线的第一部分的显示,其中,所述第三二次贝塞尔曲线的所述第一部分的端点包括所述第三终端点和第四终端点,并且所述第三二次贝塞尔曲线的所述第一部分不包括所述第五点。
5.根据权利要求1所述的方法,还包括:
从所述输入曲线接收第五点;
确定第三控制点,所述第三控制点包括第三条线和第四条线的交点,所述第三条线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三终端点,所述第四条线包括所述第四点和所述第五点;
确定第一矢量和第二矢量的点积小于0,所述第一矢量从所述第四点到所述第五点,所述第二矢量从所述第三控制点到所述第五点;
确定第三主控制点,所述第三主控制点包括第三条主线和所述第四条线的交点,所述第三条主线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三点;
确定第三二次贝塞尔曲线,其中,所述第三二次贝塞尔曲线的控制点包括所述第三主控制点,并且所述第三二次贝塞尔曲线的端点包括所述第三终端点和所述第五点;以及
提供对所述第三二次贝塞尔曲线的第一部分的显示,其中,所述第三二次贝塞尔曲线的所述第一部分的端点包括所述第三终端点和第四终端点,并且所述第三二次贝塞尔曲线的所述第一部分不包括所述第五点。
6.根据权利要求1所述的方法,还包括:
从所述输入曲线接收第五点;
确定第三控制点,所述第三控制点包括第三条线和第四条线的交点,所述第三条线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三终端点,所述第四条线包括所述第四点和所述第五点;
确定第一矢量和第二矢量的点积小于0,所述第一矢量从所述第四点到所述第三终端点,所述第二矢量从所述第三控制点到所述第三终端点;
确定第三主控制点,所述第三主控制点包括第三条主线和所述第四条线的交点,所述第三条主线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三点;
确定第三二次贝塞尔曲线,其中,所述第三二次贝塞尔曲线的控制点包括所述第三主控制点,并且所述第三二次贝塞尔曲线的端点包括所述第三终端点和所述第五点;以及
提供对所述第三二次贝塞尔曲线的第一部分的显示,其中,所述第三二次贝塞尔曲线的所述第一部分的端点包括所述第三终端点和第四终端点,并且所述第三二次贝塞尔曲线的所述第一部分不包括所述第五点。
7.根据权利要求1所述的方法,还包括:
从所述输入曲线接收第五点;
确定第三控制点,所述第三控制点包括第三条线和第四条线的交点,所述第三条线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三终端点,所述第四条线包括所述第四点和所述第五点;
确定第一矢量和第二矢量的点积小于0,所述第一矢量从所述第三终端点到所述第二二次贝塞尔曲线的所述第一部分的所述控制点,所述第二矢量从所述第三控制点到所述第三终端点;
确定第三主控制点,所述第三主控制点包括第三条主线和所述第四条线的交点,所述第三条主线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三点;
确定第三二次贝塞尔曲线,其中,所述第三二次贝塞尔曲线的控制点包括所述第三主控制点,并且所述第三二次贝塞尔曲线的端点包括所述第三终端点和所述第五点;以及
提供对所述第三二次贝塞尔曲线的第一部分的显示,其中,所述第三二次贝塞尔曲线的所述第一部分的端点包括所述第三终端点和第四终端点,并且所述第三二次贝塞尔曲线的所述第一部分不包括所述第五点。
8.根据权利要求1所述的方法,还包括:
从所述输入曲线接收第五点;
确定第三控制点,所述第三控制点包括第三条线和第四条线的交点,所述第三条线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三终端点,所述第四条线包括所述第四点和所述第五点;
确定所述第三控制点和所述第四点之间的距离超过所述第三终端点和所述第五点之间的距离;
确定第三主控制点,所述第三主控制点包括第三条主线和所述第四条线的交点,所述第三条主线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三点;
确定第三二次贝塞尔曲线,其中,所述第三二次贝塞尔曲线的控制点包括所述第三主控制点,并且所述第三二次贝塞尔曲线的端点包括所述第三终端点和所述第五点;以及
提供对所述第三二次贝塞尔曲线的第一部分的显示,其中,所述第三二次贝塞尔曲线的所述第一部分的端点包括所述第三终端点和第四终端点,并且所述第三二次贝塞尔曲线的所述第一部分不包括所述第五点。
9.一种用于呈现自由形式绘图的非瞬时性计算机可读介质,所述计算机可读介质包括指令,当一个或多个处理器执行所述指令时,所述指令使所述一个或多个计算机执行方法,所述方法包括:
从自由形式绘图中的输入曲线接收第一点、第二点、以及第三点;
确定第一二次贝塞尔曲线,其中所述第一二次贝塞尔曲线的控制点包括所述第二点,并且所述第一二次贝塞尔曲线的端点包括所述第一点和所述第三点;以及
提供对所述第一二次贝塞尔曲线的第一部分的显示,其中所述第一二次贝塞尔曲线的所述第一部分的端点包括所述第一点和第二终端点,并且所述第一二次贝塞尔曲线的所述第一部分不包括所述第三点。
10.根据权利要求9所述的计算机可读介质,所述方法还包括:
从所述输入曲线接收第四点;
确定第二控制点,所述第二控制点包括第一条线和第二条线的交点,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点;
确定第二二次贝塞尔曲线,其中,所述第二二次贝塞尔曲线的控制点包括所述第二控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点;以及
提供对所述第二二次贝塞尔曲线的第一部分的显示,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
11.根据权利要求10所述的计算机可读介质,其中,所述第二终端点包括所述第一二次贝塞尔曲线的近似中点,并且所述第三终端点包括所述第二二次贝塞尔曲线的近似中点。
12.根据权利要求9所述的计算机可读介质,所述方法还包括:
从所述输入曲线接收第四点;
确定第一条线和第二条线不相交,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点;
确定第二主控制点,所述第二主控制点包括第一条主线和所述第二条线的交点,所述第一条主线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二点;
确定第二二次贝塞尔曲线,其中,所述第二二次贝塞尔曲线的控制点包括所述第二主控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点;以及
提供对所述第二二次贝塞尔曲线的第一部分的显示,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
13.根据权利要求9所述的计算机可读介质,所述方法还包括:
从所述输入曲线接收第四点;
确定第二控制点,所述第二控制点包括第一条线和第二条线的交点,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点;
确定第一矢量和第二矢量的点积小于0,所述第一矢量从所述第三点到所述第四点,所述第二矢量从所述第二控制点到所述第四点;
确定第二主控制点,所述第二主控制点包括第一条主线和所述第二条线的交点,所述第一条主线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二点;
确定第二二次贝塞尔曲线,其中,所述第二二次贝塞尔曲线的控制点包括所述第二主控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点;以及
提供对所述第二二次贝塞尔曲线的第一部分的显示,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
14.根据权利要求9所述的计算机可读介质,所述方法还包括:
从所述输入曲线接收第四点;
确定第二控制点,所述第二控制点包括第一条线和第二条线的交点,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点;
确定第一矢量和第二矢量的点积小于0,所述第一矢量从所述第三点到所述第二终端点,所述第二矢量从所述第二控制点到所述第二终端点;
确定第二主控制点,所述第二主控制点包括第一条主线和所述第二条线的交点,所述第一条主线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二点;
确定第二二次贝塞尔曲线,其中,所述第二二次贝塞尔曲线的控制点包括所述第二主控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点;以及
提供对所述第二二次贝塞尔曲线的第一部分的显示,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
15.根据权利要求9所述的计算机可读介质,所述方法还包括:
从所述输入曲线接收第四点;
确定第二控制点,所述第二控制点包括第一条线和第二条线的交点,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点;
确定第一矢量和第二矢量的点积小于0,所述第一矢量从所述第二终端点到所述第一二次贝塞尔曲线的所述第一部分的所述控制点,所述第二矢量从所述第二控制点到所述第二终端点;
确定第二主控制点,所述第二主控制点包括第一条主线和所述第二条线的交点,所述第一条主线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二点;
确定第二二次贝塞尔曲线,其中,所述第二二次贝塞尔曲线的控制点包括所述第二主控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点;以及
提供对所述第二二次贝塞尔曲线的第一部分的显示,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
16.根据权利要求9所述的计算机可读介质,所述方法还包括:
从所述输入曲线接收第四点;
确定第二控制点,所述第二控制点包括第一条线和第二条线的交点,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点;
确定所述第二控制点和所述第三点之间的距离超过所述第二终端点和所述第四点之间的距离;
确定第二主控制点,所述第二主控制点包括第一条主线和所述第二条线的交点,所述第一条主线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二点;
确定第二二次贝塞尔曲线,其中,所述第二二次贝塞尔曲线的控制点包括所述第二主控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点;以及
提供对所述第二二次贝塞尔曲线的第一部分的显示,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
17.一种用于呈现自由形式绘图的***,所述***包括:
一个或多个处理器;以及
存储器,包括指令,当由所述一个或多个处理器执行所述指令时,所述指令使所述一个或多个处理器执行方法,所述方法包括:
从自由形式绘图中的输入曲线接收第一点、第二点、以及第三点;
确定第一二次贝塞尔曲线,其中所述第一二次贝塞尔曲线的控制点包括所述第二点,并且所述第一二次贝塞尔曲线的端点包括所述第一点和所述第三点;
提供对所述第一二次贝塞尔曲线的第一部分的显示,其中所述第一二次贝塞尔曲线的所述第一部分的端点包括所述第一点和第二终端点,并且所述第一二次贝塞尔曲线的所述第一部分不包括所述第三点;
从所述输入曲线接收第四点;
确定第二控制点,所述第二控制点包括第一条线和第二条线的交点,所述第一条线包括所述第一二次贝塞尔曲线的所述第一部分的控制点和所述第二终端点,所述第二条线包括所述第三点和所述第四点;
确定第二二次贝塞尔曲线,其中,所述第二二次贝塞尔曲线的控制点包括所述第二控制点,并且所述第二二次贝塞尔曲线的端点包括所述第二终端点和所述第四点;以及
提供对所述第二二次贝塞尔曲线的第一部分的显示,其中,所述第二二次贝塞尔曲线的所述第一部分的端点包括所述第二终端点和第三终端点,并且所述第二二次贝塞尔曲线的所述第一部分不包括所述第四点。
18.根据权利要求17所述的***,其中,所述第二终端点包括所述第一二次贝塞尔曲线的近似中点,并且所述第三终端点包括所述第二二次贝塞尔曲线的近似中点。
19.根据权利要求17所述的***,所述方法还包括:
从所述输入曲线接收第五点;
确定第三控制点,所述第三控制点包括第三条线和第四条线的交点,所述第三条线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三终端点,所述第四条线包括所述第四点和所述第五点;
确定第三二次贝塞尔曲线,其中,所述第三二次贝塞尔曲线的控制点包括所述第三控制点,并且所述第三二次贝塞尔曲线的端点包括所述第三终端点和所述第五点;以及
提供对所述第三二次贝塞尔曲线的第一部分的显示,其中,所述第三二次贝塞尔曲线的所述第一部分的端点包括所述第三终端点和第四终端点,并且所述第三二次贝塞尔曲线的所述第一部分不包括所述第五点。
20.根据权利要求17所述的***,所述方法还包括:
从所述输入曲线接收第五点;
确定第三条线和第四条线不相交,所述第三条线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三终端点,所述第四条线包括所述第四点和所述第五点;
确定第三主控制点,所述第三主控制点包括第三条主线和所述第四条线的交点,所述第三条主线包括所述第二二次贝塞尔曲线的所述第一部分的控制点和所述第三点;
确定第三二次贝塞尔曲线,其中,所述第三二次贝塞尔曲线的控制点包括所述第三主控制点,并且所述第三二次贝塞尔曲线的端点包括所述第三终端点和所述第五点;以及
提供对所述第三二次贝塞尔曲线的第一部分的显示,其中,所述第三二次贝塞尔曲线的所述第一部分的端点包括所述第三终端点和第四终端点,并且所述第三二次贝塞尔曲线的所述第一部分不包括所述第五点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/723,907 US9224219B2 (en) | 2012-12-21 | 2012-12-21 | Systems and methods for presenting a free-form drawing |
US13/723,907 | 2012-12-21 | ||
PCT/US2013/074347 WO2014099536A1 (en) | 2012-12-21 | 2013-12-11 | Systems and methods for presenting a free-form drawing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105190697A true CN105190697A (zh) | 2015-12-23 |
Family
ID=49877068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380073400.9A Pending CN105190697A (zh) | 2012-12-21 | 2013-12-11 | 用于呈现自由形式绘图的***和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9224219B2 (zh) |
EP (1) | EP2936437A1 (zh) |
CN (1) | CN105190697A (zh) |
WO (1) | WO2014099536A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107748639A (zh) * | 2017-10-19 | 2018-03-02 | 广州视睿电子科技有限公司 | 一种曲线的编辑方法、装置、设备和存储介质 |
CN109101171A (zh) * | 2017-06-21 | 2018-12-28 | 北京易真学思教育科技有限公司 | 一种在触摸屏设备中生成滑动轨迹的方法 |
CN109671133A (zh) * | 2018-12-12 | 2019-04-23 | 成都四方伟业软件股份有限公司 | 轨迹的生成方法、装置、电子设备及存储介质 |
CN111127590A (zh) * | 2019-12-26 | 2020-05-08 | 新奥数能科技有限公司 | 一种二阶贝塞尔曲线绘制方法及装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9418454B1 (en) | 2015-07-23 | 2016-08-16 | Axure Software Solutions, Inc. | Generating markup encodings for the compact rendering of curves in interactive graphical designs |
US10347016B2 (en) * | 2016-01-12 | 2019-07-09 | Monotype Imaging Inc. | Converting font contour curves |
US10269150B1 (en) | 2016-07-15 | 2019-04-23 | Lucid Software, Inc. | Curve editing based on inferred control points |
US11488053B2 (en) | 2017-10-06 | 2022-11-01 | Adobe Inc. | Automatically controlling modifications to typeface designs with machine-learning models |
US10339680B2 (en) | 2017-10-06 | 2019-07-02 | Adobe Inc. | Graphics control data for performing skeleton-based modifications of a typeface design |
US10983679B2 (en) * | 2017-10-06 | 2021-04-20 | Adobe Inc. | Selectively enabling trackpad functionality in graphical interfaces |
US10936792B2 (en) | 2017-12-21 | 2021-03-02 | Monotype Imaging Inc. | Harmonizing font contours |
CN109130855A (zh) * | 2018-08-03 | 2019-01-04 | 浙江中科领航汽车电子有限公司 | 一种液晶仪表显示元素渐变效果的辅助方法、***及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050238244A1 (en) * | 2004-04-26 | 2005-10-27 | Canon Kabushiki Kaisha | Function approximation processing method and image processing method |
US20060044305A1 (en) * | 2004-08-31 | 2006-03-02 | Agfa Corporation | Methods for generating control points for cubic bezier curves |
CN101764943A (zh) * | 2008-11-04 | 2010-06-30 | 新奥特(北京)视频技术有限公司 | 根据交点分割字幕对象矢量轮廓中二次贝塞尔曲线的方法 |
CN101923725A (zh) * | 2009-04-21 | 2010-12-22 | 索尼电脑娱乐公司 | 在计算机图形***中三次Bezier控制点的产生 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241654A (en) | 1988-12-28 | 1993-08-31 | Kabushiki Kaisha Toshiba | Apparatus for generating an arbitrary parameter curve represented as an n-th order Bezier curve |
JPH0458378A (ja) * | 1990-06-28 | 1992-02-25 | Mitsubishi Heavy Ind Ltd | ベジエ曲線を分割して展開する方法 |
JP3226734B2 (ja) * | 1994-10-19 | 2001-11-05 | キヤノン株式会社 | データ変換装置および方法 |
US5553083B1 (en) | 1995-01-19 | 2000-05-16 | Starburst Comm Corp | Method for quickly and reliably transmitting frames of data over communications links |
US5845265A (en) | 1995-04-26 | 1998-12-01 | Mercexchange, L.L.C. | Consignment nodes |
JPH08329261A (ja) * | 1995-05-31 | 1996-12-13 | Canon Inc | パラメータ曲線発生器 |
US5826025A (en) | 1995-09-08 | 1998-10-20 | Sun Microsystems, Inc. | System for annotation overlay proxy configured to retrieve associated overlays associated with a document request from annotation directory created from list of overlay groups |
US6249291B1 (en) | 1995-09-22 | 2001-06-19 | Next Software, Inc. | Method and apparatus for managing internet transactions |
DE69627014T2 (de) | 1995-12-11 | 2003-11-27 | Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto | Verfahren zur bereitstellung von fernmeldediensten |
US5956027A (en) | 1995-12-12 | 1999-09-21 | At&T Corp | Method and apparatus for sharing a web page |
KR19990072122A (ko) | 1995-12-12 | 1999-09-27 | 바자니 크레이그 에스 | 실시간 영상 전송 방법 및 장치 |
US6081829A (en) | 1996-01-31 | 2000-06-27 | Silicon Graphics, Inc. | General purpose web annotations without modifying browser |
US7013327B1 (en) | 1996-02-16 | 2006-03-14 | G&H Nevada -Tek | Method and apparatus for computing within a wide area network |
US6167432A (en) | 1996-02-29 | 2000-12-26 | Webex Communications, Inc., | Method for creating peer-to-peer connections over an interconnected network to facilitate conferencing among users |
US5764235A (en) | 1996-03-25 | 1998-06-09 | Insight Development Corporation | Computer implemented method and system for transmitting graphical images from server to client at user selectable resolution |
US6343313B1 (en) | 1996-03-26 | 2002-01-29 | Pixion, Inc. | Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability |
US5940083A (en) * | 1997-04-01 | 1999-08-17 | Novell, Inc. | Multi-curve rendering modification apparatus and method |
JPH10293854A (ja) * | 1997-04-18 | 1998-11-04 | Koubundou:Kk | 曲線表示方法及び装置、同曲線を表すデータの作成方法及び装置、並びに同表示方法及び作成方法を実現するためのプログラムを記録した記録媒体 |
US6674435B1 (en) * | 1998-09-16 | 2004-01-06 | Texas Instruments Incorporated | Fast, symmetric, integer bezier curve to polygon conversion |
GB2406028A (en) * | 2003-09-11 | 2005-03-16 | Autodesk Canada Inc | Tangent handle adjustment for Bezier curves |
CA2776678C (en) * | 2011-05-12 | 2017-05-09 | Research In Motion Limited | Method and device for rendering areas bounded by curves using a gpu |
-
2012
- 2012-12-21 US US13/723,907 patent/US9224219B2/en active Active
-
2013
- 2013-12-11 CN CN201380073400.9A patent/CN105190697A/zh active Pending
- 2013-12-11 WO PCT/US2013/074347 patent/WO2014099536A1/en active Application Filing
- 2013-12-11 EP EP13811753.6A patent/EP2936437A1/en not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050238244A1 (en) * | 2004-04-26 | 2005-10-27 | Canon Kabushiki Kaisha | Function approximation processing method and image processing method |
US20060044305A1 (en) * | 2004-08-31 | 2006-03-02 | Agfa Corporation | Methods for generating control points for cubic bezier curves |
CN101764943A (zh) * | 2008-11-04 | 2010-06-30 | 新奥特(北京)视频技术有限公司 | 根据交点分割字幕对象矢量轮廓中二次贝塞尔曲线的方法 |
CN101923725A (zh) * | 2009-04-21 | 2010-12-22 | 索尼电脑娱乐公司 | 在计算机图形***中三次Bezier控制点的产生 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101171A (zh) * | 2017-06-21 | 2018-12-28 | 北京易真学思教育科技有限公司 | 一种在触摸屏设备中生成滑动轨迹的方法 |
CN109101171B (zh) * | 2017-06-21 | 2020-12-11 | 北京易真学思教育科技有限公司 | 一种在触摸屏设备中生成滑动轨迹的方法 |
CN107748639A (zh) * | 2017-10-19 | 2018-03-02 | 广州视睿电子科技有限公司 | 一种曲线的编辑方法、装置、设备和存储介质 |
CN109671133A (zh) * | 2018-12-12 | 2019-04-23 | 成都四方伟业软件股份有限公司 | 轨迹的生成方法、装置、电子设备及存储介质 |
CN111127590A (zh) * | 2019-12-26 | 2020-05-08 | 新奥数能科技有限公司 | 一种二阶贝塞尔曲线绘制方法及装置 |
CN111127590B (zh) * | 2019-12-26 | 2023-06-20 | 新奥数能科技有限公司 | 一种二阶贝塞尔曲线绘制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2936437A1 (en) | 2015-10-28 |
US9224219B2 (en) | 2015-12-29 |
US20140176560A1 (en) | 2014-06-26 |
WO2014099536A1 (en) | 2014-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105190697A (zh) | 用于呈现自由形式绘图的***和方法 | |
US10878175B2 (en) | Portlet display on portable computing devices | |
CN102221974B (zh) | 指示笔设置 | |
US8847961B2 (en) | Geometry, speed, pressure, and anti-aliasing for ink rendering | |
CN102306174B (zh) | 一种基于网页元素与用户进行互动的方法与设备 | |
US20110242007A1 (en) | E-Book with User-Manipulatable Graphical Objects | |
US20120096345A1 (en) | Resizing of gesture-created markings for different display sizes | |
US10521249B1 (en) | Gesture Fingerprinting | |
US11256388B2 (en) | Merged experience of reading and editing with seamless transition | |
CN105493023A (zh) | 对表面上的内容的操纵 | |
CN105531657B (zh) | 呈现打开窗口和选项卡 | |
CN104081318A (zh) | 在触摸屏上开启和关闭全屏模式 | |
US8856675B1 (en) | User interface with hierarchical window display | |
CN102221971A (zh) | 自由形式数学计算 | |
US8542207B1 (en) | Pencil eraser gesture and gesture recognition method for touch-enabled user interfaces | |
CN101419624A (zh) | 用来浏览web网页的移动信息设备和方法 | |
CN102411614A (zh) | 图像搜索结果的显示 | |
AU2015315402A1 (en) | Parametric inertia and apis | |
CN102985904A (zh) | 跳转、复选标记和删除姿势 | |
US10310715B2 (en) | Transition controlled e-book animations | |
US10572137B2 (en) | Intuitive document navigation with interactive content elements | |
CN105335383A (zh) | 输入信息的处理方法及装置 | |
CN105094669A (zh) | 浏览器多标签页的切换方法及装置 | |
CN109074209B (zh) | 用户界面的细节窗格 | |
US10877780B2 (en) | Visibility detection using gesture fingerprinting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170330 Address after: American Florida Applicant after: Geiger company Address before: American Florida Applicant before: Citrix System Co., Ltd. |
|
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20180828 |