在计算机图形系统中三次Bezier控制点的产生的制作方法

文档序号:6602225阅读:265来源:国知局

专利名称::在计算机图形系统中三次Bezier控制点的产生的制作方法
技术领域
:简要且概括地说,本公开涉及用于计算机图形的计算机实现的方法和装置,尤其是涉及在计算机图形系统中从一系列点产生三次Bezier控制点。
背景技术
:Bezier曲线是在计算机图形系统中使用来模拟曲线的参数曲线。从点Ptl到点P3的三次Bezier曲线由那些点以及两个控制点P1和点P2定义。在点P。处的曲线的切线在控制点P1的方向上,而在点P3处的曲线的切线在控制点P2的方向上。曲线由下列参数方程定义B(t)=(1-t)3P0+3(1-t)2tP!+3(1-t)t2P2+t3P3,对于t,使得0≤t≤1。一些交互式计算机图形应用使用户能够通过使用鼠标来定义Bezier曲线。用户可点击并按住鼠标按钮以识别点Po,并接着在仍然按住按钮的同时拖动鼠标以指向控制点P1的期望位置。当用户放开鼠标按钮时,当前指针位置变成控制点Pi。该过程继续以定义点&(通过指向期望位置、点击并按住)和P2(通过将鼠标拖到期望位置并放开鼠标按钮)。以这种方式,用户可定义Bezier曲线。此外,一些交互式计算机图形应用使用户能够通过点击和拖动点Ptl和P3以及控制点P1和点P2来操纵所定义的Bezier曲线。以这种方式,用户可改进曲线以获得期望的形状。然而,对点和控制点识别的点击和拖动方法与徒手画图非常不同,且可能对于一些图不方便,抑制创造性。
发明内容总的来说,公开了一种能够从一系列点产生Bezier曲线的用于交互式计算机图形的系统。该系统包括用于数据逻辑处理的装置、用于接收用户输入的输入装置和计算机可读介质。一系列点由输入装置接收并传送到计算机可读介质以由用于数据逻辑处理的装置处理。用于数据逻辑处理的装置从计算机可读介质取回该系列点的点,并根据该系列的连续点之间的相对距离计算相应于一个或多个点的控制点。用于数据处理的装置使用所计算的控制点和该系列点产生Bezier曲线,并将所产生的Bezier曲线储存在计算机可读介质中。在一些实现中,从该系列中的连续点-点A、点B和点C以如下方式计算控制点⑴相应于点B并与段AB相关的控制点由方程B+RA*(RA*(B-C)+RC*(A-B))确定;以及(ii)相应于点B并与段BC相关的控制点由方程PBBC=B+RC*(RA*(C-B)+RC*(B-A))确定。为了该计算的目的,RA=|AB|/(|AB|+|BC|),且RC=|BC|/(|AB|+1BC|)。该技术提供了用于在计算机图形应用中定义Bezier曲线的改进的方法。例如,输入装置可被实现为计算机键盘、计算机指点设备(例如,鼠标)等。在一些实现中,用户使用鼠标指点并点击以定义该系列中的连续点,且因而产生的系列点根据该系列中的连续点的相对位置转换成Bezier曲线。所产生的Bezier曲线可例如储存在计算机可读介质中用于进一步处理和/或显示。此外,通常公开的是用于在交互式计算机图形系统的图形用户界面中定义Bezier曲线的方法,所述方法包括接收第一个点A、第二个点B和第三个点C,每个点由用户通过交互式计算机图形系统的图形用户界面识别。该系统配置成使用方程B+RA*(RA*(B-C)+Rc*(A-B))计算相应于点B并与段AB相关的控制点,其中Ra=|AB|/(|AB|+|BC|)且Rc=旧(|/(一|+_|),并使用方程8+1^*饥*(+1^*出-八))计算相应于点B并与段BC相关的控制点。该系统进一步配置成产生储存点A、点B和点C并储存与点B相关的第一控制点和与点B相关的第二控制点的Bezier曲线数据结构。Bezier曲线数据结构定义可被再现(rendered)用于由计算机图形系统显示并由用户操纵的曲线。此外,通常公开的是一种系统,其包括用于数据逻辑处理的装置、计算机可读介质以及接收路径数据并将路径数据储存在计算机可读介质上的输入设备。一系列点从路径数据被识别并储存在计算机可读介质上以由用于数据逻辑处理的装置处理。用于数据逻辑处理的装置从计算机可读介质取回所识别的系列点中的点,并根据所识别的系列点中的连续点之间的相对距离来计算相应于一个或多个点的控制点。用于数据处理的装置使用所计算的控制点和所识别的系列点产生Bezier曲线,且所产生的Bezier曲线储存在计算机可读介质中。该系列点可例如根据预定的间隔从路径数据被识别出,该间隔可为基于距离的、基于时间的、基于特征的等。输入设备可用任何方式接收路径数据,包括例如通过用户输入设备如鼠标、触摸屏等,或通过计算机可读介质如存储器、储存设备、网络接口等。下面在附图和说明书中阐述了一个或多个实现的细节。从说明书、附图和权利要求来看,其它特征和优点将是明显的。图IA是示出用于产生Bezier曲线的一序列点的图。图IB是示出根据段AB和BC的相对长度计算相对值Ra和Rc的图。图IC是示出计算相应于点B的控制点的图。图ID是示出控制点和端点的位置的Bezier曲线的图。图IE是具有如图ID所示的端点和控制点的Bezier曲线的图。图2是根据本发明的实施方式产生的控制点的图。图3是可用于从一序列点产生Bezier曲线的计算机系统的结构图。图4是用于从一序列点产生Bezier曲线的过程的流程图。图5是用于从一序列点产生Bezier曲线的系统的结构图。图6是用于将Bezier曲线储存在计算机可读介质上的数据结构的图。图7A是示出用于转变成Bezier曲线的示例性路径的图。图7B是示出沿着图7A所示的路径的控制点的位置的图。具体实施例方式参考图IA到1E,本说明书阐述了用于从一系列点产生Bezier曲线的各种技术。这些技术可例如用在交互式计算机图形应用(例如,基于矢量的计算机绘图工具、计算机辅助设计工具、可视化工具、计算机动画工具、图形设计工具等)中。用户可使用改进的图形用户界面通过简单地指点和点击以定义在期望Bezier曲线上的一系列点中的连续点,来将Bezier曲线插入交互式计算机图形应用的文档中。该系列点转换成Bezier曲线,例如,(i)当每个连续的点被输入时,或者(ii)在整个序列的点被输入之后。以这种方式,Bezier曲线可由用户定义,而不要求用户指定控制点。控制点根据某些点之间的相对距离被自动定义。这里所述的技术允许从两个相邻点的相对位置外推控制点,并提供稳定的控制点,而不考虑其位置。这些技术在简单性和数学完整性之间取得平衡。如这里使用的,短语“Bezier曲线”不应被只限制为在本说明书的背景部分中阐述的公式所定义的那些曲线。更确切地,申请人更广泛地使用短语“Bezier曲线”,以便包括例如单个Bezier曲线段以及端到端连接的一系列Bezier曲线段(有时称为Bezier样条)。作为例子,可从图IA所示的三个点点A12、点B14和点C16,通过根据相邻点的相对位置产生控制点以便创建被合理平滑地连接的一系列三次Bezier段而创建Bezier曲线。作为例子,我们如下描述相应于点B14的控制点的产生。与点B14相邻的控制点可根据点A12和点C16的相对位置产生。三次Bezier曲线段由两个端点和在每个端点处定义切线的两个控制点定义。该技术在点B14处外推促成两个三次Bezier段AB和BC的控制点,点B14通过段AB和BC被共享。我们将沿着段AB的两个控制点称为Paab和Pabb,并将沿着BC的两个控制点称为Pbtc和ΡΒ『从Α、Β和C的位置被外推的控制点是Pabb和PBBC。控制点的位置取决于AB和BC之间的距离的比率。IAB|和|BC|是线段AB和BC的长度。该比率可被定义为Ra=IABI/(IAB|+1BC|)Rc=IBCI/(IAB|+1BC|)A、B和C作为位置矢量被处理,且控制点Pabb和PBBe被如下定义Pabb=B+Ra*(Ra*(B-C)+Rc*(A-B))Pbbc=B+Rc*(Ra*(C-B)+Rc*(B-A))参考图1B,相应于点B14的控制点取决于点B14与相邻端点12和16之间的距离。图IB显示距离AB为2.24,而距离BC为2.82。距离AB|+|BC的和为5.06。计算Ra和‘我们得到Ra=IABI/(IAB|+1BC|)=2.24/5.06=0.44;以及Rc=BCI/(IAB|+1BC|)=2.82/5.06=0.56。参考图1C,这些比率Ra和Re用于计算控制点Pabb20和Pbbc18。控制点Pabb20由位置矢量PABB=B+RA*(RA*(B-C)+RC*(A-B))=0.44(0·44(B-C)+0.56(A-B))定义。图IC示出矢量Rc(A-B)*RA(B-C)的相加,其结果按比例缩小Ra=0.44倍。类似地,控制APbbc18由位置矢量Pbbc=B+Rc*(Ra*(C-B)+Rc*(B-A))定义。图IC示出矢量Rc(B-A)和Ra(C-B)的相加,其结果按比例缩小Re=0.56倍。以这种方式,矢量在点B14形成平滑的切线。相应于控制点20和18以及点A12,B14和C16的因而产生的Bezier曲线22在图ID中示出,而图IE中示出的Bezier曲线22将是其在计算机图形应用中所再现出的。通过从一序列端点隐式地产生控制点以创建Bezier曲线,可给用户提供直观的界面,以作为例子来说,便于徒手创建计算机图形。因而产生的端点和控制点可接着以传统方式被操纵,以由用户按需要改进Bezier曲线。该技术可应用于序列中的每个点。可更改上述技术以处理序列中的第一个和最后一个点。例如,与第一个点相关的控制点和与最后一个点相关的控制点可被设置为点本身。此外,上述技术可用在各种各样的计算机实现的系统中,包括例如计算机辅助设计工具、图形编辑器、字处理器、娱乐软件寸。图2示出关于点A和B的相对位置的控制点24和26的相对位置。例如,控制点24位于矢量(B-c)和(A-B)之间的线上。该线的方向由比率|ab||bc|确定,且控制点24沿着该线的位置由同一比率确定。类似地,控制点26的位置沿着此同一条线落在相对于点B相反的方向上。因点24和26沿着同一条线放置,点Β处的切线对于任何比率IABIIBCI是连续的。参考图3,其示出用于根据这里描述的技术产生Bezier曲线的计算机系统30。计算机系统30包括连接处理器34、存储器38、数据储存器40、显示器36和输入设备38的总线32。通常,这涉及传统冯诺依曼体系结构;然而,本领域技术人员应认识到,这里描述的技术同样适用于其它计算机体系结构,例如具有分离的数据和指令总线的计算机系统。计算机系统30包括储存在数据储存器40上或任何其它计算机可读介质上的指令。当被执行时,这些指令将计算机系统30配置成使处理器34能够将储存在存储器38中的一系列点转换成Bezier曲线并将Bezier曲线储存在存储器38中。处理器34通过以传统方式再现曲线来显示储存在存储器38中的Bezier曲线。可使用显示器36观看这样再现的曲线。在优选实现中,点是一系列并使用鼠标、键盘和/或其某种组合被输入。然而,输入设备38可体现为下列各项中的一个或多个键盘、鼠标、跟踪球、跟踪板、回转指点设备(gyroscopicpointingdevice)等。处理器34包括能够执行将一系列点转变成Bezier曲线的指令的任何设备,例如,通常在个人计算机、膝上型计算机和/或移动设备中使用的那些处理器。此外,处理器34可包括用于同时和并行执行的多个核心。参考图4,示出了用于从在序列中的第一个点开始的一系列点产生Bezier曲线的方法。该技术使用位于所关注的当前点之前的点和之后的点的相对位置;然而,对于第一个点,在序列中没有前面的点。因此,相应的控制点可保持未定义或控制点可被设置为与第一个点相同的位置。该过程通过移动到序列中的下一点而继续(42)。在这种情况下,是序列的第二个点。假定序列中有多于两个的点(即,第二个点不是序列中的最后一个点),则该过程通过系列中的中间点而重复,对每个点计算相关的控制点。当到达序列中的最后一个点时,该过程结束(44)。只要点保留,该过程就通过对序列中的当前点计算控制点而继续(46)。在计算出控制点之后,该过程转到序列中的下一个点(42),反复继续,直到到达序列中的最后一个点。与序列中的最后一个点相关的控制点可保持未定义,或它可被设置为与序列中的第一点相同的位置。—旦所有的点被输入就可执行该过程,或当点被输入时可顺序地执行它。例如,用户可点击第一个点和第二个点。当用户点击序列中的第三个点时,可计算相应于第二个点的控制点,且显示器可被更新以显示在第一个点开始的Bezier曲线,该曲线根据控制点行7进而通过第二个点并在第三个点终止。如果添加第四个点,则第二个点和第四个点可用于设置相应于第三个点的控制点,且显示器可被相应地更新。该过程可用于例如在计算机图形系统中从一系列点产生Bezier曲线。在一个实现中,系统使用户能够通过将指针指向Bezier曲线上点的期望位置并点击鼠标按钮以捕获该位置来定义Bezier曲线。以这种方式连续输入点,直到到达最后一个点。用户例如通过再次点击最后一个点、通过按键盘上的按钮、通过点击鼠标按钮等来指示已到达序列中的最后一个点。在另一实现中,用户创建由以特定的顺序或序列彼此连接的一系列点组成的路径。一旦创建了路径,用户就可选择菜单项来将路径转换成Bezier曲线。一旦产生Bezier曲线,用户就可用传统方式更改控制点和端点。参考图5,用于将一系列点转变成Bezier曲线的软件包括操作系统52,其为处理模块54提供与系统的各种部件和外围设备进行交互作用的环境。处理模块54、输入模块56和显示模块58每个都与操作系统52进行交互作用且彼此也进行交互作用,以便将一系列点60转变成Bezier曲线62。例如,处理模块54实现图形用户界面。用户输入由操作系统52接收并由输入模块56处理,以识别序列中的点。例如,当用户移动鼠标时,操作系统52处理该移动并在显示器上显示指针。当用户点击鼠标或其它输入设备上的按钮以便指示点将被添加到一系列时,输入模块56接收并处理输入,且处理模块54适当地更新数据结构。系列60中的点储存在计算机可读介质例如随机存取存储器、硬盘驱动器、闪存等上。存储器对于系统可位于本地或远程。处理模块54取回该系列点60并以上述方式计算用于Bezier曲线的控制点。因而产生的控制点与定义Bezier曲线62的端点储存在一起。Bezier曲线62可储存为例如图6阐述的数据结构。Bezier曲线数据结构64包括称为ptSequence型Bezier点66的数据元素,其识别一序列点中的第一个点。数据型的Bezier点66包括如下数据元素(i)指示Bezier端点的坐标的“loc”型点;(ii)分别指示序列中的下一个Bezier点和序列中的上一个Bezier点的“下一个”或“上一个”型bezier点;以及(iii)识别控制点的坐标的控制点“ptABB”和“ptBBC”型点。数据元素ptABB是在相应于段AB的B处的控制点;而数据元素ptBBC是在相应于段BC的B处的控制点。Bezier曲线数据结构64可在以以上讨论的方式计算控制点的过程中由处理逻辑产生。上面的例子描述了如何将一系列点转变成Bezier曲线;然而,也可能将任何给定的路径表示或近似为Bezier曲线。例如,图7A示出了将转变成Bezier曲线的示例性路径70。可使用输入设备例如触摸屏、笔式平板(pentablet)、鼠标、跟踪球、运动传感器、回转控制器等来产生路径70。如图7B所示,路径70在不同的点72处被采样。这些点72接着用于以上面关于图IA到IE讨论的方式产生Bezier曲线。点72可使用至少三种不同的方法来选择(1)基于时间的间隔;⑵基于距离的间隔;或(3)基于特征的间隔。使用基于时间的间隔,路径70在其被接收(例如,从输入设备)时被采样。沿着路径70的点72被周期性地(例如,每N秒)识别。因而产生的点72接着用于创建Bezier曲线。使用基于距离的间隔,点72沿着路径70以有规律的距离间隔被选择。例如,可沿着路径70每隔N英寸(或任何其它距离的测量单位)识别点72。类似地,因而产生的点72接着用于创建Bezier曲线。8使用基于特征的方法,点72在路径70的识别出的特征处或附近被更频繁地识别。本领域技术人员应理解用于识别路径70的特征的各种技术。例如,比如通过使用预定的时间间隔或距离间隔可周期性地识别沿着路径70的点。接着,确定从一个识别出的点到下一个点的矢量。连续的矢量可被比较并用于识别特征。连续的矢量越不同,额外的点72可能越有用。点72被识别,使得点72沿着路径70的特征的频率较大。相反,路径70越规则,就需要越少的点来表示它。不管用于定义点72的方式如何,都可按上面关于图1A-1E阐述的方法从那些点72创建Bezier曲线。因而产生的Bezier曲线提供了原始路径70的紧凑表示。不是将路径70表示为数百、数千或甚至更多的一系列点,路径70可被表示为定义Bezier曲线的紧凑的一系列点72,导致相当大的数据压缩。此外,以这种方式,Bezier曲线可在需要时使用上面关于图1A-1E描述的技术被表示为没有相关的控制点的一系列点72,因为控制点可被产生。例如,在一个实现中,Bezier曲线被储存为没有相应控制点的显式表示的一系列点。当这样的曲线被再现用于显示时(或当以其它方式是所希望的时),控制点被确定。只要控制点未被更改,就没有必要显式地表示它们,导致压缩的表示。描述了很多实现。然而,应理解,可进行各种更改而不偏离本发明的实质和范围。因此,其它实现在下列权利要求的范围内。权利要求一种能够从一系列点产生Bezier曲线的用于交互式计算机图形的系统,所述系统包括用于数据逻辑处理的装置;用于接收用户输入的输入装置;以及计算机可读介质,其中一系列点由所述用于接收用户输入的输入装置接收并传送到所述计算机可读介质以由所述用于数据逻辑处理的装置处理,且所述用于数据逻辑处理的装置从所述计算机可读介质取回该系列点的点,并根据该系列点的连续点之间的相对距离计算相应于一个或多个点的控制点,且所述用于数据处理的装置使用所计算的控制点和该系列点产生Bezier曲线,而所产生的Bezier曲线储存在所述计算机可读介质中。2.如权利要求1所述的系统,其中所述输入装置包括计算机指点设备。3.如权利要求1所述的系统,其中所述计算机可读介质是计算机存储器。4.如权利要求1所述的系统,其中点A、点B和点C是该系列点中的连续点,且其中相应于点B并与段AB相关的控制点由方程B+Ra*(Ra*(B-C)+Rc*(A-B))确定,以及相应于点B并与段BC相关的控制点由方程B+Rc*(Ra*(C-B)+Rc*(B-A))确定,其中Ra=|AB|/(|八8|+旧(|),且&=|BC|/(IABI+|BC|)。5.如权利要求1所述的系统,还包括计算机输出设备,其中所述用于数据逻辑处理的装置从所述计算机可读介质取回所产生的Bezier曲线,并在所述输出设备上再现所产生的Bezier曲线。6.如权利要求5所述的系统,其中所述用于数据逻辑处理的装置使用所述计算机输出设备和所述输入装置提供图形用户界面,所述图形用户界面使用户能够更改所述Bezier曲线的控制点。7.一种非暂时性计算机可读介质,其具有存储在其上的计算机指令,所述计算机指令可由计算机系统执行以实现用于从一系列点产生Bezier曲线的方法,所述方法包括从计算机可读介质取回点A、B和C,所述点A、B和C是所述计算机系统的用户使用计算机输入设备识别的一系列点中的连续点;在所述计算机系统的处理器中,从所取回的点A、B和C计算控制点,所述控制点由所取回的点A、B和C的相对位置确定;产生包括所述点A、B和C以及所计算的控制点的Bezier曲线数据结构;将所产生的Bezier曲线数据结构储存在计算机可读介质上;以及使用户能够使用图形用户界面操纵所产生的Bezier曲线。8.如权利要求7所述的计算机可读介质,其中相应于点B并与段AB相关的控制点由方程B+RA*(RA*(B-C)+Rc*(A-B))确定,以及相应于点B并与段BC相关的控制点由方程B+Rc*(Ra*(C-B)+Rc*(B-A))确定,其中Ra=IABI/(|AB|+1BC|),且Rc=|BC|/(|AB|+1BC|)。9.在交互式计算机图形系统的图形用户界面中,一种用于定义Bezier曲线的方法,所述方法包括通过所述交互式计算机图形系统的所述图形用户界面接收用户所识别的第一个点A;通过所述交互式计算机图形系统的所述图形用户界面接收用户所识别的第二个点B;通过所述交互式计算机图形系统的所述图形用户界面接收用户所识别的第三个点C;计算由方程B+Ra*(Ra*(B-C)+Rc*(A-B))确定的相应于点B并与段AB相关的控制点,其中Ra=|AB|/(|AB|+|BC|),且Rc=BC|/(|AB|+|BC|);计算由方程B+Rc*(RA*(C-B)+Rc*(B-A))确定的相应于点B并与段BC相关的控制点;产生储存点A、点B和点C并储存与点B相关的第一控制点和与点B相关的第二控制点的Bezier曲线数据结构,所述Bezier曲线数据结构用于再现Bezier曲线以显示在所述计算机图形系统的显示器上并由用户操纵。10.一种系统,包括用于数据逻辑处理的装置;计算机可读介质;以及接收路径数据并将所述路径数据储存在所述计算机可读介质上的输入设备,其中一系列点从所述路径数据被识别并储存在所述计算机可读介质上以由所述用于数据逻辑处理的装置处理,所述用于数据逻辑处理的装置从所述计算机可读介质取回所识别的系列点中的点,并根据所识别的系列点中的连续点之间的相对距离来计算相应于一个或多个点的控制点,所述用于数据处理的装置使用所计算的控制点和所识别的系列点产生Bezier曲线,且所产生的Bezier曲线储存在所述计算机可读介质中。11.如权利要求10所述的系统,其中所述系列点根据预定的间隔从所述路径数据被识别出。12.如权利要求11所述的系统,其中所述预定的间隔是基于距离的。13.如权利要求11所述的系统,其中所述预定的间隔是基于时间的。14.如权利要求11所述的系统,其中所述预定的间隔是基于特征的。15.如权利要求10所述的系统,其中所述输入设备从用户输入设备接收路径数据。16.如权利要求10所述的系统,其中所述输入设备从计算机可读介质接收路径数据。全文摘要一种用于交互式计算机图形的系统,能够根据一系列点中的连续点的相对位置从该系列点产生Bezier曲线。例如,对于系列中的连续点,点A、点B和点C是该系列点中的连续点,且其中相应于点B并与段AB相关的控制点由方程B+RA*(RA*(B-C)+RC*(A-B))确定;以及相应于点B并与段BC相关的控制点由方程PBBC=B+RC*(RA*(C-B)+RC*(B-A))确定,其中RA=|AB|/(|AB|+|BC|),且RC=|BC|/(|AB|+|BC|)。文档编号G06T11/80GK101923725SQ20101017051公开日2010年12月22日申请日期2010年4月21日优先权日2009年4月21日发明者岩本达也申请人:索尼电脑娱乐公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1