CN102859556A - 矢量图形形状的限界框的计算方法 - Google Patents
矢量图形形状的限界框的计算方法 Download PDFInfo
- Publication number
- CN102859556A CN102859556A CN2009801634389A CN200980163438A CN102859556A CN 102859556 A CN102859556 A CN 102859556A CN 2009801634389 A CN2009801634389 A CN 2009801634389A CN 200980163438 A CN200980163438 A CN 200980163438A CN 102859556 A CN102859556 A CN 102859556A
- Authority
- CN
- China
- Prior art keywords
- point
- curve
- contact
- bounding box
- thickness
- 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
Images
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)
- Processing Or Creating Images (AREA)
Abstract
一种确定包含以矢量模式描述的一个或多个图元的计算机化图形形状的限界框的方法,其中,通过把解析数学公式应用于构成所述形状的图元的矢量描述来计算限界框,而不通过组成所述图形的矢量图元的分解预先进行所述形状的描绘和显示阶段。
Description
技术领域
本发明涉及计算机图形学和矢量图像处理。更具体地说,本发明涉及在矢量图像处理的上下文中,矢量图形形状的限界框的计算方法;术语“限界框”意指当把数字图形形状置于页面(例如,网页)上,或者显示在屏幕,例如个人计算机的屏幕上,或者打印在纸张或其它材料上时,确定该数字图形形状的界限的最小矩形。
背景技术
Web和图形界面领域的最新发展趋势是朝向宣告型解决方案。应用软件是利用越来越复杂的语义并在较高级别编写的,以便方便和加速项目和实施任务。由于高级并且越来越完善和复杂的语言的解释引擎的可用性,使之成为可能。这些引擎中的许多引擎是在Web领域开发的,因为对复杂的软件应用程序的开发来说,HTML(超文本标记语言)范例最常见。这种引擎的例子有几个。通常由用户用于在万维网中导航的Web浏览器本身是HTML语法(或其演进)的解释器,HTML语法(或其演进)是XML(可扩展标记语言)语法的特殊化。Flash技术是另一个例子,并不限于图形方面,而且具有应用智能的功能性。Microsoft的XAML(可扩展应用程序标记语言)和Mozilla的XUL(XML用户界面语言)是通过能够扩展功能(例如允许查询远程数据库、访问Web服务或者使用网络接口)的脚本编写语言,把应用程序逻辑与图形用户界面(GUI)的创建相关联的引擎的其它例子。
所有这些解决方案的基础是能够解释XML式语法、把其变换成符合使用的渲染库的图元的二维(2D)向量图形解释引擎(在计算机图形学的领域中,术语“渲染”指的是渲染处理,即,从用确定的语言提供并用图形引擎解释的图像的描述,例如,数学描述开始生成图像的处理)。
本领域中已知,矢量模态规定将通过一个或多个原始图形形状(原始曲线),比如线段、圆等表现的通用数字图形形状。每个原始曲线是通过基于适合于单意地识别该原始曲线的参数(所谓的“控制点”)的相应数学方程式描述的。
图形形状的向量表示模态是有利的,因为它使用连续函数操作并允许全面控制图元,于是允许全面控制要表现的图形形状。特别地,通过修改图元的控制点的数目和位置,可以描绘几乎任何图形形状。另外,与其它表示模态(比如光栅模态)相比,向量表示模态占用较少的存储器资源,另外,要传送的数据(例如,通过网络连接传送的数据)的量也有限。
图形解释引擎,尤其是矢量型图形解释引擎的用途是向程序员提供高级语义结构,以便开发精致的图形界面。可用下述大类总结提供的功能:
-二维形状:预见基本的几何图像(图元),比如圆、具有圆角边缘的矩形、椭圆形、线条、多边形和多角线(未闭合的折线)。另外,预见被称为“路径”的复合图像,所述复合图像被描述成基本几何图像的集合外加Bezier曲线,目的在于允许最大的可能图形灵活性。变换的概念与图元相关联,在2D情况下,所述变换是仿射2D变换;
-“填充和笔划”:该术语意指利用轮廓和填充的独立概念显示的图元。这些结构具有彼此不同的矢量特性:轮廓用厚度、影线、接合点模式和终点模式来表征;而填充使填充模式的概念与之相关联(对非凸起图像来说,这尤其有意义)。然而,这些结构还具有被称为“上色服务器”的共同矢量特性,所述“上色服务器”识别描绘与语义结构相对应的形状的颜色。颜色可以具有简单的特性(像在纯色的情况下)或者复杂的特性(像在线性或径向颜色梯度的情况下)。在后一种情况下,梯度通过描述颜色的变化方向的矢量以及通过“过渡色”的列表来描述,所述“过渡色”以两个相邻过渡色之间的内插为线性的折曲线的形式来描述颜色的趋势;
-视频、图像和音频:重要的语义功能是在显示的图形场景内插入和检查多媒体内容的能力;
-动画:存在以预定方式修改图元的性质的时间演变的语义结构;
-交互作用:图形引擎能够管理用户事件(比如鼠标的移动、点击、键盘命令的输入)和触发动画的时间演变的开始、结束、或者一般而言修改动画的时间演变;
-脚本和DOM(文档对象模型):即使非常强大,上述结构也不能覆盖作者所需的各种可能的功能。利用图形引擎执行解释的高级代码,比如Java或Javascript的能力,使通过程序描述非预定行为的能力成为可能。利用解释代码的可能性涉及在读取和写入图元的语义信息时,代码能够调用以便访问的API(应用编程接口)的可用性。为了能够利用程序来输入和更新这种信息的内容,通常使用所谓的DOM,DOM是作为面向对象的模型构成的文档的表示模式。
主要的特征是矢量性:始终用矢量模式来描述和使用所有的图元和轮廓结构(动画、交互、脚本编写)。
提供与上面所述的有关的语义功能的标准化或者专用引擎的例子很多;这些例子中的一个是W3C(万维网联盟)的可缩放矢量图形(SVG)引擎。
通常,矢量图形引擎接收待描绘的矢量图形场景的描述。图形场景通常是用XML描述的,并且它由利用继承树表示的节点(父节点和子节点)的分层结构构成。节点可以是“容器”型节点,即,它们不容许图形表示,而是充当其它节点的容器,或者节点可以是形状或图元,即,它们确实具有图形表示。
相当大的复杂性的一个问题是图元的限界框的计算。由于以下原因,这种功能是必需的:
-供解释的脚本代码使用:为了能够处理复合图元的性质或者多组复合图元的性质,需要能够在DOM的API上计算限界框,这使作者可以检查复杂的合成图元的保留数(encumbrance);
-以相对方式表述的矢量特征:例如可在复合图元的坐标系中表示矢量的梯度(而不是在采用它的图元所使用的用户参考系中或者甚至在文档坐标中表示);
-通过WYSIWYG(所见即所得)型可视编辑工具的图形对象的处理:利用指示工具,比如鼠标和键盘,通过可视范例的场景内的图元的维度的缩放通常利用环绕用户在给定时间选择的图元画出的限界框的概念。
限界框,在文献中也被称为“最小限界矩形”(MBR)具有以下特征:
-它必须被计算成包含复合图像而不与所述复合图像相交的最小矩形;
-它不应考虑复合图像从包含它的图元继承地接收的变换。这归因于SVG的强分级语义。图元可被其它元素(父节点)包含。取决于各种性质,节点性质从父节点到子节点的传播遵循不同的规则:在仿射变换的情况下,应用的规则是积累。
限界框信息并不严格链接到场景的当前绘图。特别地,也向在场景内执行的脚本代码提供限界框信息的必要性预示着就随后不可见的图元而论,也可能要求限界框的计算,所述图元不在描述所述场景的树的绘图分枝中,或者具有不遵循树的继承规则的一系列继承参数。例如,可能必须使一组图元的限界框考虑到从其父节点继承的变换。这意味着在把复合图元投射到一般场景中的每次变换之前可以获得复合图元的保留数。表示为什么可能需要不可见的合成图元的限界框的计算的另一个例子是通过程序(通过脚本代码)创建场景的描述分枝的情况:在这种情况下,代码能够创建场景的描述分枝,并且在把所述分枝插入主树中之前,需要其限界框。
从功能的观点来看,计算复合图元的限界框的任务要与管理绘图的那部分图形引擎相关联,即,与把存在于场景的树形描述中的信息变换成二维绘图、图元的阶段相关联。
在现代渲染技术中,由于待绘制的场景的复杂性不断增大,采用利用图形处理器(例如,图形处理单元-GPU)而使之成为可能的硬件加速。以复合处理链(管道)的形式,专用于图形管理的机器被供给图元系列。存在多种类型的处理管道,最常见的是通过被称为Direct3D(Microsoft)和OpenGL(Linux等)的API在三维视频游戏中使用的那些处理管道。通常,渲染处理受到不同于主CPU的处理单元的控制,或者受到与管理应用程序的剩余部分的任务不同的处理任务的控制。
通常,例如如在S.Conversy J.D.Fekete的“The svgl toolkit:enabling fast rendering of rich 2D graphics”(Technical Report02/1/INFO,Ecole des Mines de Nantes,2002)中所述,为了能够要求渲染器(进行渲染所需操作的硬件处理单元或者固件或软件任务)计算限界框,需要向其发送图元的列表和相关性质,随后等待渲染器任务接收所述信息,并提供给绘图处理管道;处理管道之后将执行等待在队列中的所有操作,最终它提供结果。特别地,为了计算限界框,渲染器模拟其中存在图元的树的分枝的渲染处理,好像渲染器应当显示通过该图元描述的图形形状,即使该图元的屏幕显示不是必需的。
由于处理管道通常只能够描绘像素而不能描绘用矢量方式表示的图元,因此必须(通过软件或者利用在管道中设置的硬件功能)把矢量图元分解成与管道的操作方式兼容的简单线性图元(例如,线条或三角形);这种操作被称为曲面细分。在曲面细分之后,限界框的计算相对简单,因为它是曲面细分操作结果的副产品(在于所有生成的顶点之中在所选坐标系中的最小值和最大值的识别)。
US 6,512,847说明了一种计算环绕Bezier曲线的框架的技术。所述框架对应于近似隔开任意距离的原始Bezier曲线的趋势的Bezier曲线。在这种情况下,采用通过已知算法和把曲线分解成较短长度的子曲线的新“控制点”的相关计算而最终把“中点”的定义加在曲线内的近似。
WO2004/100071提出了一种Bezier曲线的解析变形方法;在使初始控制点和最终控制点保持固定并分割或结合不同曲线以便最佳地近似期望变形的情况下,通过与用户的交互来设定所述变形。未考虑提供与原始曲线平行的曲线的必要条件。
发明内容
申请人注意到,由于数据传送(图元)、上下文的改变(在CPU上运行的具有有限特权-所谓的“用户空间模式”-的程序必须能够访问图形卡的资源,因此所述程序必须能够以内核模式,一般在驱动器内执行具有较高特权的代码)和等待渲染器的运行等一系列较长操作,利用诸如专用图形CPU(例如,GPU)之类的渲染器计算限界框的传统技术涉及较长的处理时间。这些操作通常涉及较长的时间,甚至与在屏幕上显示若干帧的时间相等。
进一步加重限界框的计算的一个方面是绘图管道所实现的曲面细分阶段。该操作非常费时,并且在某些方面无用,因为在曲面细分期间进行的所有操作目的仅仅在于计算所计算的坐标的最小值和最大值。
鉴于概述的现有技术的状态,申请人面临从计算的观点来看,使限界框的计算处理不太繁重并因此也更快的问题。
本质上,按照本发明,限界框不是在描绘或显示图形形状的下游计算的,而是利用解析算法从存在于场景的树形描述中的信息开始直接计算的。因此:
-显示系统不必进行唯一用途是允许计算不可见或者性质已为渲染器所知的图元的限界框的假想绘图阶段;
-不必进行曲面细分操作,即,把每个单独图元分解成用作每个渲染系统的基本元素的一系列三角形。
所有这些转化为负担和计算时间的显著减少。特别地,通过减轻计算负担,还可在不是特别强大、未配备图形加速器的设备(比如现在越来越经常用于Web冲浪的智能电话)上实现所述处理。
按照本发明的一个方面,提供一种确定包含以矢量模式描述的一个或多个图元的计算机化图形形状的限界框的方法,其中,通过把解析数学公式应用于构成所述形状的图元的矢量描述来计算限界框,而不通过组成所述形状的矢量图元的分解而预先进行所述形状的描绘和显示阶段。
矢量图元可包括以下基本矢量图元:
-描述可能具有厚度的一段直线的基本矢量图元,和
-描述可能具有厚度的三次Bezier曲线的基本矢量图元。
描述线段的基本矢量图元的限界框的计算例如包括在参考坐标系中确定可能具有厚度的线段的各个顶点的最小坐标和最大坐标。
描述三次Bezier曲线的基本矢量图元的限界框的计算例如可包括:
-计算Bezier曲线的水平切点和垂直切点;
-如果所述水平切点和垂直切点在曲线上,则把所述切点在参考坐标系中的坐标作为限界框的各边的坐标;而
-如果水平切点和/或垂直切点不在曲线上,则把曲线的更接近于不在所述曲线上的切点的极值点的坐标作为限界框的边的坐标。
在三次Bezier曲线具有厚度的情况下,所述方法可包括:
-计算无厚度的理想三次Bezier曲线的第一垂直切点和第一水平切点,
-确定位于理想三次Bezier曲线的第一垂直切点和第一水平切点的垂线上并且与所述第一垂直切点和第一水平切点的距离对应于曲线的厚度的第二点。
在对具有厚度的三次Bezier曲线应用仿射变换的情况下,限界框的计算可包括:
-确定从变换前的厚度一致的曲线的变换获得的厚度一致的三次Bezier曲线上的水平切点和/或垂直切点;
-确定从所述变换获得的厚度一致的三次Bezier曲线的曲线坐标的值,所述值对应于厚度一致的曲线的水平切点和/或垂直切点;
-计算与曲线坐标的值对应的变换前的厚度一致曲线上的各个点的坐标;
-确定位于与曲线坐标的值对应的变换前的理想曲线上的各个点的垂线上的点,垂线上的所述点被置于等于曲线厚度的距离处;和
-对如此确定的各个点应用变换。
最好,对限界框的计算来说,考虑基本图元之间的接合点模式和/或基本图元的终点模式。
如果图形形状包括多于一个的以矢量模式描述的图元,那么最好对每个图元进行限界框的计算,随后通过合并来组合各个图元的限界框。
本发明的另一个方面涉及一种包含可由计算机执行的代码部分的计算机程序,当所述计算机执行所述程序时,所述代码部分适合于允许计算机执行按照本发明的前述方面的方法。
附图说明
根据仅仅作为非限制性例子提供的本发明的一个实施例的以下详细说明,本发明的特征和优点将变得明显。为了更好地理解所述说明,应参考附图,附图中:
图1是可以实现按照本发明实施例的方法的设备的例子的功能方框图;
图2示出描述要显示的图形场景的树形结构的例子;
图3举例说明对应于矩形的基本矢量图元的限界框的计算;
图4示出具有厚度的三次Bezier曲线;
图5示出理想的三次Bezier曲线(无厚度);
图6A、6B和6C示出具有厚度的椭圆形(通过三次Bezier曲线的4条弧线近似)的仿射变换;
图7示出两条基本图元曲线之间的3种典型接合点模式;
图8示出基本图元曲线的3种典型终点模式;
图9示出考虑到两个基本图元之间的特定接合点模式的限界框的计算过程;以及
图10示出考虑到基本图元的特定终点模式的限界框的计算过程。
具体实施方式
图1中,利用主功能块的形式示意行示出了能够实现按照本发明实施例的方法的数据处理设备100。
数据处理设备100,例如个人计算机(可能是笔记本计算机、膝上型计算机、上网本、掌上型计算机)或者智能电话,包括并联连接到系统总线103的多个单元。
连接到系统总线103的一个(或者可能多个)处理单元(μp)106控制数据处理设备的操作。数据处理单元106可以直接访问的内部存储器被用作工作存储器;特别地,内部存储器可包括一个或多个(可能全部)的以下单元:直接位于数据处理单元106中的一组存储寄存器108和一个高速缓冲存储器109-例如,多级分层高速缓冲存储器,和通过系统总线103连接到数据处理单元106的主存储器110-例如包含一组随机存取存储体(RAM)。系统总线103还连接到只读存储器(ROM)111,ROM 111适合于保存用于启动数据处理设备的基本代码。
外围单元(通过相应接口)被连接到局域总线113。特别地,数据处理单元106不能直接访问的外部存储器被用作大容量存储器;外部存储器可包括一个或多个(可能全部)的以下单元:一个或多个硬盘115,CD-ROM/DVD-ROM驱动器116,半导体存储设备117,可拆卸或不可拆卸单元(比如USB闪速存储器读取器),和磁带单元118。
数据处理设备100还包括数据输入设备121,例如键盘和鼠标,和输出设备123,例如显示器(监视器)和打印机。
网络接口卡125用于把数据处理设备连接到数据网络,例如以太网。另一方面或者另外,可以预见调制解调器,例如ADSL类调制解调器。
桥接单元129使系统总线103连接到局域总线113,在存在多于一个的数据处理单元106的情况下,判优器单元131管理对系统总线103的访问。
对本领域的技术人员来说,显然取决于特定的数据处理设备及其相应功能,示出的结构可被缩减或者增加。例如,除了数据处理单元106之外,可以预见由GPU构成的图形加速器。
在下面的详细说明中,将仅仅作为例子,提及按照W3C的SVG标准的矢量图形引擎;然而,按照本发明的解决方案并不局限于和这样的引擎一起使用。
已知并且如上所述,矢量图形引擎接收和处理要绘制并且例如要显示在屏幕上或者要打印在纸张或其它材料上的场景的利用XML语言的描述;所述场景的描述由通过继承树表示的节点(父节点和子节点)的分层结构构成。在图2中,以继承树200的形式示出了要显示的图形场景的描述的例子。树200包括根节点205。在根节点205之下,有两个子节点210和215:节点210是与要显示的场景的元素的图形表示相对应的节点,即,对应于一个或多个矢量图元的节点,而节点215是容器节点,即,不对应于任何图形表示而只是其它节点(在该例子中,其它两个节点220和225)的容器的节点。节点220是具有图形表示的节点,而节点225又是容器节点,并在该例子中包含两个节点230和235,节点230和235都具有图形表示。
按照本发明,为了计算场景的对应于代表相同场景的树形结构的确定节点(基本节点),例如,图2的树形结构200的节点215的给定图形元素的限界框,对所述给定基本节点的子节点(在这里考虑的例子中,子节点220和225)进行递归过程;对于基本节点215的每个子节点220和225,计算和积累各自的限界框。换句话说,通过从所选基本节点开始并扫描所考虑节点的子节点的列表,穿过代表图形场景的树,并对相对于基本节点在较低层级的每个节点,计算和积累相应的限界框。在所考虑的例子中,从基本节点215开始,穿过树200并遇到子节点220,子节点220是具有图形表示的节点:计算通过包含在节点220中的图元描述的形状的限界框,并积累这样计算的限界框(例如,所述计算的限界框被保存在计算机的工作存储器中)。过程随后返回基本节点215,从而下行到子节点225;由于子节点225是容器节点,因此继续树200的探索,从而到达子节点230,子节点230对应于可显示的图形形状:计算相应的限界框,并积累到已保存在存储器中的限界框(所述积累对应于刚刚计算的限界框与先前计算并保存在存储器中的限界框的合并操作)。随后,过程再次返回节点225,然后沿着树下行,从而遇到也对应于可显示图形形状的子节点235;计算并积累限界框。在如此完成树200的在基本节点215之下的那部分的搜索之后,保存在存储器中的积累的限界框对应于通过基本节点215和基本节点215下面的各个节点描述的图形形状的限界框。
上面刚刚描述的递归过程例如可以按以下方式用伪代码表述:
用伪代码描述的函数CalculateBBox因此通过调用它自己进行树的单个节点的子节点上的限界框的计算,管理树的所述单个节点上的限界框的计算。当函数CalculateBBox被调用时,将被处理的树的基本节点的标识符Node,即期望为其计算限界框的节点的标识符被传递给该函数(在该例子中,起始节点是节点215,在每次递归地调用函数CalculateBBox时,在较低层级的节点的标识符被传递给该函数);函数CalculateBBox在作为结果的输出中提供通过积累AccumulatedBBox计算的限界框。
在递归过程中,对于不是容器节点的每个节点,即,对于与可描绘图元相对应的每个节点,例如图2中的节点220、230和235,如果这样的可描绘图元是合成或复合图元,那么它被分解成基本图元或初级图元的有序列表;基本图元的列表的排序顺序对应于为了构成整个图元而描绘基本图元的顺序。例如,具有圆角边缘的矩形被分解成具有为闭合列表的性质的8个基本图元(与矩形的各边相对应的4条线和与矩形的各个顶点处的倒圆相对应的4条1/4周角的圆弧)。
源自通过两个限界框的合并(上述伪代码中的函数union)的积累的限界框通过包含这两个限界框的最小矩形表示;通过从与要合并的两个限界框相对应的两个矩形中选择沿着被取为参考的坐标系的两个轴的最小坐标和最大坐标,可以获得作为结果的限界框。
下面为了简单起见而考虑的基本图元是线段和三次Bezier曲线:借助这些基本图元,事实上能够以适当的精度来表述或近似任何复合图元以及凹面。特别地,借助于描述线段的基本图元,可以表述直线、多边形、折线的片段,并且利用定义线段的厚度的性质,能够表述矩形和正方形的片段;利用三次Bezier曲线,尤其能够近似圆和椭圆。关于组成复合图元的基本图元的列表,通过对各个基本图元进行迭代并合并积累为不同基本图元计算的不同限界框,来计算限界框。
基本图元的限界框的计算取决于所考虑的基本图元的类型。
如果基本图元是线段,可能还具有厚度(以便定义矩形),那么如图3中所示,对于限界框305的计算,使用点PA,PB,PC和PD(在确定的参考坐标系300中)的坐标(xA,yA),(xB,yB),(xC,yC),(xD,yD)。因此,限界框是具有由直线x=min(xA,xB,xC,xD)的垂直线段(与坐标系300的轴y平行)给出的第一边305a,由直线x=max(xA,xB,xC,xD)的垂直线段给出的第二边305b,由直线y=min(yA,yB,yC,yD)的水平线段(与坐标系300的轴x平行)给出的第三边,和由直线y=max(yA,yB,yC,yD)的水平线段给出的第四边的矩形。
如果基本图元是三次Bezier曲线,那么它可用以下方程式解析表示:
B(t)=P0*(1-t)3+3*P1*t*(1-t)2+3*P2*t2(1-t)+P3*t3
t∈[0,1]
其中t是定义曲线坐标的参数。
通过确定该曲线的水平切点和垂直切点,该曲线的限界框的计算是可能的。从上面的方程式开始,可以按照以下方式来计算水平切点Thor1(x1,y1),Thor2(x2,y3)和垂直切点Tvert3(x3,y3),Tvert4(x4,y4):
切点可以属于或者可不属于曲线本身。事实上,只为参数t的以下值:0≤t≤1定义三次Bezier曲线。
在参数t的值在曲线上,使得曲线的切线水平和垂直的情况下,水平切点和垂直切点会影响限界框的计算;如果情况不是这样,那么在确定限界框时,将只使用曲线的极值。从而,下述点被用于限界框的计算:
·水平切点(如果这样的点有效的话,即,如果它位于曲线上);
·垂直切点(如果所述点有效的话);
·Bezier曲线的极值。
限界框将由上述各个点的坐标之中的最小坐标和最大坐标限定。
假定考虑未被定义厚度并且未被应用任何变换的Bezier曲线。该曲线被定义成理想厚度的曲线,即,以一致厚度描绘的曲线。当对理想厚度的曲线应用厚度、终点和接合点的性质时,该曲线被定义成“被修饰”。
假定考虑具有厚度的曲线的情况。在图4中,表示了理想厚度的三次Bezier曲线A及其由与曲线A相距距离d的三次Bezier曲线B构成的外缘。
在如图4的曲线A的三次Bezier曲线的条件下,与曲线A相距距离d的三次Bezier曲线B的方程式的计算(即,控制点的确定)是一个不能通过解析求解的问题。
然而,由于目的是计算由这两条曲线A和B限定的形状的限界框,因此通过确定曲线B上的水平切点和垂直切点,能够简化该问题。由于曲线B被定义成对于参数t的每个值与曲线A相距距离d的曲线,因此例如,曲线B上的水平切点PT B可被确定为与曲线A上的水平切点PT A相距距离d的点。从而,可以利用曲线A的水平切点和垂直切点(或者曲线A的极值点,如果对其来说,存在垂直相切或水平相切的参数t的值不在曲线A上的话),并且按照以下方式来计算沿着在所述切点或极值点垂直于曲线A的垂线移动距离d的曲线B(PT B)上的水平切点和垂直切点,能够继续进行限界框的计算。
参见图5,令P0,P1,P2和P3是三次Bezier曲线C的控制点;按照以下方式确定与点PA相距距离d并且位于曲线上点PA处的切线的垂线上的点PB和PC。假定:
直线PA-PB具有方程式:
y=D′A*x+yA-D′A*xA
沿着直线的两个泛点P1(x1,y1)和P2(x2,y2)之间的距离由下式给出:
距离
从而,为了获得图5中所示的点PB的坐标,必须求解以下方程式:
方程式的解对应于两个点(图5的两个PB和PC)。为了确定就使曲线延伸(t的值不断增大)的意义而论满足该方程式的两个点中的哪个点位于左侧,哪个点位于右侧,有:
如果三次Bezier曲线的厚边缘经历仿射变换,那么水平切点和垂直切点的位置根据变换参数而变化。
图6A-6C中示出了近似椭圆的由4条Bezier曲线的弧线构成的具有厚度的曲线的仿射变换的3种情况:本体,这是在应用变换之前的曲线(图6A),旋转(图6B)和倾斜(图6C);变换前后的理想厚度的曲线用605、605'和605″表示;围绕曲线605、605'和605″的阴影区代表曲线的厚度。在这些情况下,为了确定水平切点和垂直切点而要进行的操作是下述操作。
1.在理想厚度的曲线605的变换之后获得的理想厚度的曲线605'或605″上,识别切点,例如,水平切点PT A。
2.确定对其来说存在相切(例如,水平相切)的参数t的值
4.计算位于在垂直于切线(这种情况下,水平切线)的方向上与曲线605上的点P'T A相距距离d处的点P'T B。
5.通过应用所述变换,点P′T B被变换,从而获得点PT B。
为了正确计算通过单独的基本图元描述的曲线的限界框,还应考虑曲线的具体接合点模式和/或终点模式。
接合点模式一般为3种:斜角接合点、斜削接合点和圆角接合点,如图7中所示。另外,终点模式一般是平接终点、直角终点和圆形终点,如图8中所示。
在限界框的计算中,为了考虑构成复合图元的基本图元的接合点模式,在对基本图元的每次迭代时,使用描述在前基本图元(按照描绘复合图元的顺序)的末端部分的参数,和使用描述下一个基本图元的起始部分的参数。为了计算在基本图元的起始点的接合点,事实上必须知道在前基本图元的切线和引入方向。为了计算在基本图元的终结点的接合点,必须计算下一个基本图元的切线和退出方向。另外考虑到复合图元可能是或者可能不是闭合曲线的事实:在复合图元未闭合的情况下,一些接合点变成复合图元的终点。强调的是只有当相对于被修饰曲线计算限界框时,接合点和终点的信息才有意义。
在图9中,从几何学的观点示出了具有非理想厚度的两条三次Bezier曲线(未示出)之间的接合点的各种情况;图9中,点P0和P'1分别是引入的三次Bezier曲线的终点和第二控制点;点P0和P1分别是引出的三次Bezier曲线的起点和第一控制点。线段905和910代表曲线在其端点的相应圆弧的切线:引入曲线在端点P的切线(P0-P'1)和引出曲线的切线P0-P1。通过点PB的曲线915对应于斜角接合点的情况;通过点PD的曲线920对应于圆角接合点的情况;通过点PF的曲线925对应于斜削接合点的情况。就两条曲线之间的接合点来说,引入曲线的终点和引出曲线的起点重合。通过其厚度PA-P0=P0-PC=W/2表示这两条切线,其中W是图元的轮廓的厚度。
为了考虑组成复合图元的基本图元之间的接合点,在限界框的计算中,还按照接合点的类型,插入与使用的接合点相对应的曲线:
1.在斜角接合点类型的情况下,两条线段PC-PB和PA-PB。其中斜角接合点的长度大于场景的作者所施加的限制(MiterLimit)的情况例外。
PB-P0*sin(θ/2)=W/2=斜角接合点的长度的一半
如果斜角接合点的长度大于MiterLimit,那么斜角接合点变成斜削接合点。
2.在圆角接合点的情况下,经过PC-PD-PA的圆的弧线。
3.在斜削接合点的情况下,线段PC-PF-PA。
在组成复合图元的基本图元的列表未被封闭的情况下,两个接合点被转换成终点。在这种情况下,在计算限界框时,同样插入与建立的终点相对应的曲线。参见图10,在平接终点的情况下,与该终点相对应的曲线是线段PA-PB;在直角终点的情况下,是以点PA,PB,PD和PC作为顶点的矩形;在圆形终点的情况下,是连接点PA和PB的圆弧。
计算复合图元的限界框的一般程序可用以下伪代码描述:
虽然在上面的说明中,为了简单起见,只考虑了两种基本图元,即,基本线段和基本三次Bezier曲线,然而,限界框的解析计算技术并不局限于这样的形状,例如,它也可被应用于代表圆和椭圆(可能被修饰)的基本图元的限界框的计算。在这种情况下,同样将通过确定曲线的水平切点和垂直切点来计算限界框。在具有非一致厚度的圆或椭圆的情况下,限界框的计算仍然基于定义所述形状的外缘的曲线的水平切点和垂直切点,并且与被修饰的三次Bezier曲线的情况相比,这种切点结果的确定被简化,因为对圆和椭圆来说,解析地表述外缘的方程式是已知的(与理想曲线的距离分别为d的圆和椭圆)。在仿射变换的情况下,可以应用结合图6A-6C说明的相同技术。
这里参考本发明的一些可能实施例说明了本发明。显然,本领域的技术人员能够对说明的实施例进行各种修改,以及设计出备选实施例,而不脱离在附加权利要求中限定的保护范围。
Claims (10)
1.一种确定包含以矢量模式描述的一个或多个图元的计算机化图形形状的限界框的方法,其中,通过把解析数学公式应用于构成所述形状的图元的矢量描述来计算限界框,而不通过组成所述图形的矢量图元的分解预先进行所述形状的描绘和显示阶段。
2.按照权利要求1所述的方法,其中,矢量图元包括以下基本矢量图元:
-描述可能具有厚度的一段直线的基本矢量图元,和
-描述可能具有厚度的三次Bezier曲线的基本矢量图元。
3.按照权利要求2所述的方法,其中,描述线段的基本矢量图元的限界框的计算包括:在参考坐标系中确定可能具有厚度的线段的各个顶点的最小坐标和最大坐标。
4.按照权利要求2或3所述的方法,其中,描述三次Bezier曲线的基本矢量图元的限界框的计算包括:
-计算Bezier曲线的水平切点和垂直切点;
-如果所述水平切点和垂直切点在曲线上,则把所述切点在参考坐标系中的坐标作为限界框的各边的坐标;而
-如果水平切点和/或垂直切点不在曲线上,则把曲线的更接近于不在所述曲线上的切点的极值点的坐标作为限界框的边的坐标。
5.按照权利要求4所述的方法,包括在三次Bezier曲线具有厚度的情况下:
-计算无厚度的理想三次Bezier曲线的第一垂直切点和第一水平切点,
-确定位于理想三次Bezier曲线的第一垂直切点和第一水平切点的垂直线上,并且与所述第一垂直切点和第一水平切点的距离对应于曲线的厚度的第二点。
6.按照权利要求5所述的方法,其中,在对具有厚度的三次Bezier曲线应用仿射变换的情况下,限界框的计算包括:
-确定在变换前厚度一致的曲线的变换后获得的厚度一致的三次Bezier曲线上的水平切点和/或垂直切点;
-确定在变换后获得的厚度一致的三次Bezier曲线的曲线坐标的值,所述值对应于厚度一致的曲线的水平切点和/或垂直切点;
-计算与曲线坐标的值相对应的变换前的厚度一致的曲线上的各个点的坐标;
-确定位于与曲线坐标的值相对应的变换前的理想曲线上的各个点的垂线上的点,垂线上的所述点被置于等于曲线厚度的距离处;以及
-对如此确定的各个点应用变换。
7.按照前述权利要求之一所述的方法,包括:对限界框的计算,考虑基本图元之间的接合点的模式。
8.按照前述权利要求之一所述的方法,包括:对限界框的计算,考虑基本图元的终点的模式。
9.按照前述权利要求任意之一所述的方法,包括:在图形形状包括以矢量模式描述的多于一个的图元的情况下,计算每个图元的限界框,以及通过合并来组合各个图元的限界框。
10.一种包括可由数据处理器执行的代码部分的计算机程序,当所述处理器执行所述程序时,所述代码部分适合于允许数据处理器执行按照前述权利要求任意之一所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IT2009/000595 WO2011080776A1 (en) | 2009-12-30 | 2009-12-30 | Method for the calculation of the bounding box of vectorial graphic shapes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102859556A true CN102859556A (zh) | 2013-01-02 |
CN102859556B CN102859556B (zh) | 2016-02-10 |
Family
ID=42664860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980163438.9A Active CN102859556B (zh) | 2009-12-30 | 2009-12-30 | 矢量图形形状的限界框的计算方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9013487B2 (zh) |
EP (1) | EP2519933B1 (zh) |
CN (1) | CN102859556B (zh) |
WO (1) | WO2011080776A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927934A (zh) * | 2013-01-14 | 2014-07-16 | 北京中交兴路信息科技有限公司 | 一种闭合围栏绘制的方法及系统 |
CN106709982A (zh) * | 2016-10-20 | 2017-05-24 | 哈尔滨安天科技股份有限公司 | 一种基于连续折线形三维管道的绘制方法及系统 |
CN115723570A (zh) * | 2022-12-27 | 2023-03-03 | 无锡车联天下信息技术有限公司 | 一种汽车智能座舱显示屏中的油耗量展示方法及装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9619853B2 (en) | 2012-08-09 | 2017-04-11 | Qualcomm Incorporated | GPU-accelerated path rendering |
CN103713891B (zh) | 2012-10-09 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种在移动设备上进行图形渲染的方法和装置 |
EP3100177A1 (en) * | 2014-01-30 | 2016-12-07 | Huawei Technologies Co., Ltd. | Method for recognizing objects |
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 |
CN113239100A (zh) * | 2021-03-19 | 2021-08-10 | 济宁鲁科检测器材有限公司 | 基于手机的工件测厚数据成像方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6201549B1 (en) * | 1998-12-30 | 2001-03-13 | Microsoft Corporation | System and method for drawing and painting with bitmap brushes |
US6512847B1 (en) * | 1999-01-19 | 2003-01-28 | Heidelberger Druckmaschinen Aktiengesellschaft | Method for generating a frame for graphic objects that are described by Bezier curves |
US6784884B1 (en) * | 2000-09-29 | 2004-08-31 | Intel Corporation | Efficient parametric surface binning based on control points |
AU2007202027A1 (en) * | 2007-05-04 | 2008-11-20 | Canon Kabushiki Kaisha | Path Optimisation |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100219072B1 (ko) * | 1996-04-02 | 1999-09-01 | 김영환 | 중심축 변환을 이용한 폰트 및 그 폰트 서체의 변형 및 라스터라이징 방식 |
EP1623384A1 (en) | 2003-05-09 | 2006-02-08 | Digital Video S.r.l. | Method for manipulating vectorial curves |
US20050264554A1 (en) * | 2004-05-25 | 2005-12-01 | Deming James L | Tile based rendering of smooth points using polygons |
US7554602B2 (en) * | 2004-07-12 | 2009-06-30 | Canon Kabushiki Kaisha | Processing interlaced video in a frame based rendering system |
US7313463B2 (en) * | 2005-03-31 | 2007-12-25 | Massachusetts Institute Of Technology | Biomimetic motion and balance controllers for use in prosthetics, orthotics and robotics |
US7596536B2 (en) * | 2005-12-01 | 2009-09-29 | Exent Technologies, Ltd. | System, method and computer program product for dynamically measuring properties of objects rendered and/or referenced by an application executing on a computing device |
US8514238B2 (en) * | 2008-11-21 | 2013-08-20 | Adobe Systems Incorporated | System and method for adding vector textures to vector graphics images |
US8217962B2 (en) * | 2009-01-29 | 2012-07-10 | Microsoft Corporation | Single-pass bounding box calculation |
-
2009
- 2009-12-30 CN CN200980163438.9A patent/CN102859556B/zh active Active
- 2009-12-30 EP EP09809076.4A patent/EP2519933B1/en active Active
- 2009-12-30 WO PCT/IT2009/000595 patent/WO2011080776A1/en active Application Filing
- 2009-12-30 US US13/520,140 patent/US9013487B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6201549B1 (en) * | 1998-12-30 | 2001-03-13 | Microsoft Corporation | System and method for drawing and painting with bitmap brushes |
US6512847B1 (en) * | 1999-01-19 | 2003-01-28 | Heidelberger Druckmaschinen Aktiengesellschaft | Method for generating a frame for graphic objects that are described by Bezier curves |
US6784884B1 (en) * | 2000-09-29 | 2004-08-31 | Intel Corporation | Efficient parametric surface binning based on control points |
AU2007202027A1 (en) * | 2007-05-04 | 2008-11-20 | Canon Kabushiki Kaisha | Path Optimisation |
Non-Patent Citations (1)
Title |
---|
TIM HAITHCOAT: "Affine & Curvilinear Transformations", 《MISSOURI SPATIAL DATA INFORMATION SERVICE》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927934A (zh) * | 2013-01-14 | 2014-07-16 | 北京中交兴路信息科技有限公司 | 一种闭合围栏绘制的方法及系统 |
CN103927934B (zh) * | 2013-01-14 | 2017-02-15 | 北京中交兴路信息科技有限公司 | 一种闭合围栏绘制的方法及系统 |
CN106709982A (zh) * | 2016-10-20 | 2017-05-24 | 哈尔滨安天科技股份有限公司 | 一种基于连续折线形三维管道的绘制方法及系统 |
CN106709982B (zh) * | 2016-10-20 | 2020-03-17 | 哈尔滨安天科技集团股份有限公司 | 一种基于连续折线形三维管道的绘制方法及系统 |
CN115723570A (zh) * | 2022-12-27 | 2023-03-03 | 无锡车联天下信息技术有限公司 | 一种汽车智能座舱显示屏中的油耗量展示方法及装置 |
CN115723570B (zh) * | 2022-12-27 | 2024-01-26 | 无锡车联天下信息技术有限公司 | 一种汽车智能座舱显示屏中的油耗量展示方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2519933B1 (en) | 2020-04-01 |
WO2011080776A1 (en) | 2011-07-07 |
US20120299932A1 (en) | 2012-11-29 |
CN102859556B (zh) | 2016-02-10 |
US9013487B2 (en) | 2015-04-21 |
EP2519933A1 (en) | 2012-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102859556A (zh) | 矢量图形形状的限界框的计算方法 | |
CN105637563B (zh) | 在屏幕上显示3d场景图的方法 | |
US9262848B2 (en) | Method for stroking paths | |
US20060294460A1 (en) | Generating a text layout boundary from a text block in an electronic document | |
CN115048088A (zh) | 自动确定布局约束的系统和方法 | |
US20080068383A1 (en) | Rendering and encoding glyphs | |
KR101618381B1 (ko) | 선언적인 프리젠테이션 프레임워크를 위한 셰이더-기반의 확장 | |
US9858708B2 (en) | Convex polygon clipping during rendering | |
US20150325022A1 (en) | Technique for processing a character string for graphical representation on a man/machine interface | |
US6868524B1 (en) | Method and apparatus for text layout across a region | |
CN104111913A (zh) | 一种流式文档的处理方法及装置 | |
CN101819641B (zh) | 将字符与图像的采样网格对齐的方法 | |
US9846825B2 (en) | Method, apparatus and system for generating an intermediate region-based representation of a document | |
US9779528B2 (en) | Text realization | |
JP5612556B2 (ja) | オブジェクトの周囲にテキストをレイアウトする際のパスフィルアルゴリズムの適用 | |
JPH02224078A (ja) | 線図形の特徴抽出方法 | |
CN111091620A (zh) | 基于图形学的地图动态路网处理方法及系统、计算机设备 | |
US10134184B2 (en) | Method of rendering object including path and rendering apparatus for performing path rendering | |
Clark | Rendering molecular sketches for publication quality output | |
CN114692240A (zh) | Cad图纸绘制方法、装置、存储介质及计算机设备 | |
Bahoo et al. | Polygon simplification by minimizing convex corners | |
CN106548501A (zh) | 一种图像绘制方法及设备 | |
Chamra | Algorithms for automatic label placement | |
Telea | Image-based graph visualization: advances and challenges | |
Michaelsen et al. | Closure—Hierarchies of Gestalten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |