專利名稱:矢量圖形形狀的限界框的計算方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)圖形學(xué)和矢量圖像處理。更具體地說,本發(fā)明涉及在矢量圖像處理的上下文中,矢量圖形形狀的限界框的計算方法;術(shù)語“限界框”意指當(dāng)把數(shù)字圖形形狀置于頁面(例如,網(wǎng)頁)上,或者顯示在屏幕,例如個人計算機(jī)的屏幕上,或者打印在紙張或其它材料上時,確定該數(shù)字圖形形狀的界限的最小矩形。
背景技術(shù):
Web和圖形界面領(lǐng)域的最新發(fā)展趨勢是朝向宣告型解決方案。應(yīng)用軟件是利用越來越復(fù)雜的語義并在較高級別編寫的,以便方便和加速項目和實施任務(wù)。由于高級并且越來越完善和復(fù)雜的語言的解釋引擎的可用性,使之成為可能。這些引擎中的許多引擎是在 Web領(lǐng)域開發(fā)的,因為對復(fù)雜的軟件應(yīng)用程序的開發(fā)來說,HTML(超文本標(biāo)記語言)范例最常見。這種引擎的例子有幾個。通常由用戶用于在萬維網(wǎng)中導(dǎo)航的Web瀏覽器本身是HTML語法(或其演進(jìn))的解釋器,HTML語法(或其演進(jìn))是XML (可擴(kuò)展標(biāo)記語言)語法的特殊化。Flash技術(shù)是另一個例子,并不限于圖形方面,而且具有應(yīng)用智能的功能性。Microsoft的XAML (可擴(kuò)展應(yīng)用程序標(biāo)記語言)和Mozilla的XUL (XML用戶界面語言)是通過能夠擴(kuò)展功能(例如允許查詢遠(yuǎn)程數(shù)據(jù)庫、訪問Web服務(wù)或者使用網(wǎng)絡(luò)接口)的腳本編寫語言,把應(yīng)用程序邏輯與圖形用戶界面(GUI)的創(chuàng)建相關(guān)聯(lián)的引擎的其它例子。所有這些解決方案的基礎(chǔ)是能夠解釋XML式語法、把其變換成符合使用的渲染庫的圖元的二維(2D)向量圖形解釋引擎(在計算機(jī)圖形學(xué)的領(lǐng)域中,術(shù)語“渲染”指的是渲染處理,即,從用確定的語言提供并用圖形引擎解釋的圖像的描述,例如,數(shù)學(xué)描述開始生成圖像的處理)。本領(lǐng)域中已知,矢量模態(tài)規(guī)定將通過一個或多個原始圖形形狀(原始曲線),比如線段、圓等表現(xiàn)的通用數(shù)字圖形形狀。每個原始曲線是通過基于適合于單意地識別該原始曲線的參數(shù)(所謂的“控制點”)的相應(yīng)數(shù)學(xué)方程式描述的。圖形形狀的向量表示模態(tài)是有利的,因為它使用連續(xù)函數(shù)操作并允許全面控制圖元,于是允許全面控制要表現(xiàn)的圖形形狀。特別地,通過修改圖元的控制點的數(shù)目和位置,可以描繪幾乎任何圖形形狀。另外,與其它表示模態(tài)(比如光柵模態(tài))相比,向量表示模態(tài)占用較少的存儲器資源,另外,要傳送的數(shù)據(jù)(例如,通過網(wǎng)絡(luò)連接傳送的數(shù)據(jù))的量也有限。圖形解釋引擎,尤其是矢量型圖形解釋引擎的用途是向程序員提供高級語義結(jié)構(gòu),以便開發(fā)精致的圖形界面??捎孟率龃箢惪偨Y(jié)提供的功能-二維形狀預(yù)見基本的幾何圖像(圖元),比如圓、具有圓角邊緣的矩形、橢圓形、線條、多邊形和多角線(未閉合的折線)。另外,預(yù)見被稱為“路徑”的復(fù)合圖像,所述復(fù)合圖像被描述成基本幾何圖像的集合外加Bezier曲線,目的在于允許最大的可能圖形靈活性。變換的概念與圖元相關(guān)聯(lián),在2D情況下,所述變換是仿射2D變換;-“填充和筆劃”該術(shù)語意指利用輪廓和填充的獨立概念顯示的圖元。這些結(jié)構(gòu)具有彼此不同的矢量特性輪廓用厚度、影線、接合點模式和終點模式來表征;而填充使填充模式的概念與之相關(guān)聯(lián)(對非凸起圖像來說,這尤其有意義)。然而,這些結(jié)構(gòu)還具有被稱為“上色服務(wù)器”的共同矢量特性,所述“上色服務(wù)器”識別描繪與語義結(jié)構(gòu)相對應(yīng)的形狀的顏色。顏色可以具有簡單的特性(像在純色的情況下)或者復(fù)雜的特性(像在線性或徑向顏色梯度的情況下)。在后一種情況下,梯度通過描述顏色的變化方向的矢量以及通過“過渡色”的列表來描述,所述“過渡色”以兩個相鄰過渡色之間的內(nèi)插為線性的折曲線的形式來描述顏色的趨勢;-視頻、圖像和音頻重要的語義功能是在顯示的圖形場景內(nèi)插入和檢查多媒體內(nèi)容的能力;-動畫存在以預(yù)定方式修改圖元的性質(zhì)的時間演變的語義結(jié)構(gòu);-交互作用圖形引擎能夠管理用戶事件(比如鼠標(biāo)的移動、點擊、鍵盤命令的輸入)和觸發(fā)動畫的時間演變的開始、結(jié)束、或者一般而言修改動畫的時間演變;
-腳本和DOM(文檔對象模型)即使非常強(qiáng)大,上述結(jié)構(gòu)也不能覆蓋作者所需的各種可能的功能。利用圖形引擎執(zhí)行解釋的高級代碼,比如Java或Javascript的能力,使通過程序描述非預(yù)定行為的能力成為可能。利用解釋代碼的可能性涉及在讀取和寫入圖元的語義信息時,代碼能夠調(diào)用以便訪問的API (應(yīng)用編程接口)的可用性。為了能夠利用程序來輸入和更新這種信息的內(nèi)容,通常使用所謂的DOM,DOM是作為面向?qū)ο蟮哪P蜆?gòu)成的文檔的表不模式。主要的特征是矢量性始終用矢量模式來描述和使用所有的圖元和輪廓結(jié)構(gòu)(動畫、交互、腳本編寫)。提供與上面所述的有關(guān)的語義功能的標(biāo)準(zhǔn)化或者專用引擎的例子很多;這些例子中的一個是W3C(萬維網(wǎng)聯(lián)盟)的可縮放矢量圖形(SVG)引擎。通常,矢量圖形引擎接收待描繪的矢量圖形場景的描述。圖形場景通常是用XML描述的,并且它由利用繼承樹表示的節(jié)點(父節(jié)點和子節(jié)點)的分層結(jié)構(gòu)構(gòu)成。節(jié)點可以是“容器”型節(jié)點,即,它們不容許圖形表示,而是充當(dāng)其它節(jié)點的容器,或者節(jié)點可以是形狀或圖元,即,它們確實具有圖形表示。相當(dāng)大的復(fù)雜性的一個問題是圖元的限界框的計算。由于以下原因,這種功能是必需的-供解釋的腳本代碼使用為了能夠處理復(fù)合圖元的性質(zhì)或者多組復(fù)合圖元的性質(zhì),需要能夠在DOM的API上計算限界框,這使作者可以檢查復(fù)雜的合成圖元的保留數(shù)(encumbrance);-以相對方式表述的矢量特征例如可在復(fù)合圖元的坐標(biāo)系中表示矢量的梯度(而不是在采用它的圖元所使用的用戶參考系中或者甚至在文檔坐標(biāo)中表示);-通過WYSIWYG(所見即所得)型可視編輯工具的圖形對象的處理利用指示工具,比如鼠標(biāo)和鍵盤,通過可視范例的場景內(nèi)的圖元的維度的縮放通常利用環(huán)繞用戶在給定時間選擇的圖元畫出的限界框的概念。限界框,在文獻(xiàn)中也被稱為“最小限界矩形”(MBR)具有以下特征-它必須被計算成包含復(fù)合圖像而不與所述復(fù)合圖像相交的最小矩形;-它不應(yīng)考慮復(fù)合圖像從包含它的圖元繼承地接收的變換。這歸因于SVG的強(qiáng)分級語義。圖元可被其它元素(父節(jié)點)包含。取決于各種性質(zhì),節(jié)點性質(zhì)從父節(jié)點到子節(jié)點的傳播遵循不同的規(guī)則在仿射變換的情況下,應(yīng)用的規(guī)則是積累。限界框信息并不嚴(yán)格鏈接到場景的當(dāng)前繪圖。特別地,也向在場景內(nèi)執(zhí)行的腳本代碼提供限界框信息的必要性預(yù)示著就隨后不可見的圖元而論,也可能要求限界框的計算,所述圖元不在描述所述場景的樹的繪圖分枝中,或者具有不遵循樹的繼承規(guī)則的一系列繼承參數(shù)。例如,可能必須使一組圖元的限界框考慮到從其父節(jié)點繼承的變換。這意味著在把復(fù)合圖元投射到一般場景中的每次變換之前可以獲得復(fù)合圖元的保留數(shù)。表示為什么可能需要不可見的合成圖元的限界框的計算的另一個例子是通過程序(通過腳本代碼)創(chuàng)建場景的描述分枝的情況在這種情況下,代碼能夠創(chuàng)建場景的描述分枝,并且在把所述分枝插入主樹中之前,需要其限界框。從功能的觀點來看,計算復(fù)合圖元的限界框的任務(wù)要與管理繪圖的那部分圖形引擎相關(guān)聯(lián),即,與把存在于場景的樹形描述中的信息變換成二維繪圖、圖元的階段相關(guān)聯(lián)。在現(xiàn)代渲染技術(shù)中,由于待繪制的場景的復(fù)雜性不斷增大,采用利用圖形處理器 (例如,圖形處理單元-GPU)而使之成為可能的硬件加速。以復(fù)合處理鏈(管道)的形式,專用于圖形管理的機(jī)器被供給圖元系列。存在多種類型的處理管道,最常見的是通過被稱為Direct3D (Microsoft)和OpenGL (Linux等)的API在三維視頻游戲中使用的那些處理管道。通常,渲染處理受到不同于主CPU的處理單元的控制,或者受到與管理應(yīng)用程序的剩余部分的任務(wù)不同的處理任務(wù)的控制。通常,例如如在S. Conversy J. D. Fekete 的 “The svgl toolkit: enabling fastrendering of rich 2D graphics,,(Technical Report02/l/INF0, Ecole des Mines deNantes, 2002)中所述,為了能夠要求渲染器(進(jìn)行渲染所需操作的硬件處理單元或者固件或軟件任務(wù))計算限界框,需要向其發(fā)送圖元的列表和相關(guān)性質(zhì),隨后等待渲染器任務(wù)接收所述信息,并提供給繪圖處理管道;處理管道之后將執(zhí)行等待在隊列中的所有操作,最終它提供結(jié)果。特別地,為了計算限界框,渲染器模擬其中存在圖元的樹的分枝的渲染處理,好像渲染器應(yīng)當(dāng)顯示通過該圖元描述的圖形形狀,即使該圖元的屏幕顯示不是必需的。由于處理管道通常只能夠描繪像素而不能描繪用矢量方式表示的圖元,因此必須(通過軟件或者利用在管道中設(shè)置的硬件功能)把矢量圖元分解成與管道的操作方式兼容的簡單線性圖元(例如,線條或三角形);這種操作被稱為曲面細(xì)分。在曲面細(xì)分之后,限界框的計算相對簡單,因為它是曲面細(xì)分操作結(jié)果的副產(chǎn)品(在于所有生成的頂點之中在所選坐標(biāo)系中的最小值和最大值的識別)。US 6,512,847說明了一種計算環(huán)繞Bezier曲線的框架的技術(shù)。所述框架對應(yīng)于近似隔開任意距離的原始Bezier曲線的趨勢的Bezier曲線。在這種情況下,采用通過已知算法和把曲線分解成較短長度的子曲線的新“控制點”的相關(guān)計算而最終把“中點”的定義加在曲線內(nèi)的近似。W02004/100071提出了一種Bezier曲線的解析變形方法;在使初始控制點和最終控制點保持固定并分割或結(jié)合不同曲線以便最佳地近似期望變形的情況下,通過與用戶的交互來設(shè)定所述變形。未考慮提供與原始曲線平行的曲線的必要條件
發(fā)明內(nèi)容
申請人注意到,由于數(shù)據(jù)傳送(圖元)、上下文的改變(在CPU上運行的具有有限特權(quán)-所謂的“用戶空間模式”-的程序必須能夠訪問圖形卡的資源,因此所述程序必須能夠以內(nèi)核模式,一般在驅(qū)動器內(nèi)執(zhí)行具有較高特權(quán)的代碼)和等待渲染器的運行等一系列較長操作,利用諸如專用圖形CPU(例如,GPU)之類的渲染器計算限界框的傳統(tǒng)技術(shù)涉及較長的處理時間。這些操作通常涉及較長的時間,甚至與在屏幕上顯示若干幀的時間相等。進(jìn)一步加重限界框的計算的一個方面是繪圖管道所實現(xiàn)的曲面細(xì)分階段。該操作非常費時,并且在某些方面無用,因為在曲面細(xì)分期間進(jìn)行的所有操作目的僅僅在于計算所計算的坐標(biāo)的最小值和最大值。鑒于概述的現(xiàn)有技術(shù)的狀態(tài),申請人面臨從計算的觀點來看,使限界框的計算處理不太繁重并因此也更快的問題。本質(zhì)上,按照本發(fā)明,限界框不是在描繪或顯示圖形形狀的下游計算的,而是利用解析算法從存在于場景的樹形描述中的信息開始直接計算的。因此
-顯示系統(tǒng)不必進(jìn)行唯一用途是允許計算不可見或者性質(zhì)已為渲染器所知的圖元的限界框的假想繪圖階段;-不必進(jìn)行曲面細(xì)分操作,即,把每個單獨圖元分解成用作每個渲染系統(tǒng)的基本元素的一系列三角形。所有這些轉(zhuǎn)化為負(fù)擔(dān)和計算時間的顯著減少。特別地,通過減輕計算負(fù)擔(dān),還可在不是特別強(qiáng)大、未配備圖形加速器的設(shè)備(比如現(xiàn)在越來越經(jīng)常用于Web沖浪的智能電話)上實現(xiàn)所述處理。按照本發(fā)明的一個方面,提供一種確定包含以矢量模式描述的一個或多個圖元的計算機(jī)化圖形形狀的限界框的方法,其中,通過把解析數(shù)學(xué)公式應(yīng)用于構(gòu)成所述形狀的圖元的矢量描述來計算限界框,而不通過組成所述形狀的矢量圖元的分解而預(yù)先進(jìn)行所述形狀的描繪和顯示階段。矢量圖元可包括以下基本矢量圖元-描述可能具有厚度的一段直線的基本矢量圖元,和-描述可能具有厚度的三次Bezier曲線的基本矢量圖元。描述線段的基本矢量圖元的限界框的計算例如包括在參考坐標(biāo)系中確定可能具有厚度的線段的各個頂點的最小坐標(biāo)和最大坐標(biāo)。描述三次Bezier曲線的基本矢量圖元的限界框的計算例如可包括-計算Bezier曲線的水平切點和垂直切點;-如果所述水平切點和垂直切點在曲線上,則把所述切點在參考坐標(biāo)系中的坐標(biāo)作為限界框的各邊的坐標(biāo);而-如果水平切點和/或垂直切點不在曲線上,則把曲線的更接近于不在所述曲線上的切點的極值點的坐標(biāo)作為限界框的邊的坐標(biāo)。在三次Bezier曲線具有厚度的情況下,所述方法可包括-計算無厚度的理想三次Bezier曲線的第一垂直切點和第一水平切點,-確定位于理想三次Bezier曲線的第一垂直切點和第一水平切點的垂線上并且與所述第一垂直切點和第一水平切點的距離對應(yīng)于曲線的厚度的第二點。在對具有厚度的三次Bezier曲線應(yīng)用仿射變換的情況下,限界框的計算可包括
-確定從變換前的厚度一致的曲線的變換獲得的厚度一致的三次Bezier曲線上的水平切點和/或垂直切點;-確定從所述變換獲得的厚度一致的三次Bezier曲線的曲線坐標(biāo)的值,所述值對應(yīng)于厚度一致的曲線的水平切點和/或垂直切點;-計算與曲線坐標(biāo)的值對應(yīng)的變換前的厚度一致曲線上的各個點的坐標(biāo);-確定位于與曲線坐標(biāo)的值對應(yīng)的變換前的理想曲線上的各個點的垂線上的點,垂線上的所述點被置于等于曲線厚度的距離處;和-對如此確定的各個點應(yīng)用變換。最好,對限界框的計算來說,考慮基本圖元之間的接合點模式和/或基本圖元的終點模式。
如果圖形形狀包括多于一個的以矢量模式描述的圖元,那么最好對每個圖元進(jìn)行限界框的計算,隨后通過合并來組合各個圖元的限界框。本發(fā)明的另一個方面涉及一種包含可由計算機(jī)執(zhí)行的代碼部分的計算機(jī)程序,當(dāng)所述計算機(jī)執(zhí)行所述程序時,所述代碼部分適合于允許計算機(jī)執(zhí)行按照本發(fā)明的前述方面的方法。
根據(jù)僅僅作為非限制性例子提供的本發(fā)明的一個實施例的以下詳細(xì)說明,本發(fā)明的特征和優(yōu)點將變得明顯。為了更好地理解所述說明,應(yīng)參考附圖,附圖中圖I是可以實現(xiàn)按照本發(fā)明實施例的方法的設(shè)備的例子的功能方框圖;圖2示出描述要顯示的圖形場景的樹形結(jié)構(gòu)的例子;圖3舉例說明對應(yīng)于矩形的基本矢量圖元的限界框的計算;圖4示出具有厚度的三次Bezier曲線;圖5示出理想的三次Bezier曲線(無厚度);圖6A、6B和6C示出具有厚度的橢圓形(通過三次Bezier曲線的4條弧線近似)的仿射變換;圖7示出兩條基本圖元曲線之間的3種典型接合點模式;圖8示出基本圖元曲線的3種典型終點模式;圖9示出考慮到兩個基本圖元之間的特定接合點模式的限界框的計算過程;以及圖10示出考慮到基本圖元的特定終點模式的限界框的計算過程。
具體實施例方式圖I中,利用主功能塊的形式示意行示出了能夠?qū)崿F(xiàn)按照本發(fā)明實施例的方法的數(shù)據(jù)處理設(shè)備100。數(shù)據(jù)處理設(shè)備100,例如個人計算機(jī)(可能是筆記本計算機(jī)、膝上型計算機(jī)、上網(wǎng)本、掌上型計算機(jī))或者智能電話,包括并聯(lián)連接到系統(tǒng)總線103的多個單元。連接到系統(tǒng)總線103的一個(或者可能多個)處理單元(μ P) 106控制數(shù)據(jù)處理設(shè)備的操作。數(shù)據(jù)處理單元106可以直接訪問的內(nèi)部存儲器被用作工作存儲器;特別地,內(nèi)部存儲器可包括一個或多個(可能全部)的以下單元直接位于數(shù)據(jù)處理單元106中的一組存儲寄存器108和一個高速緩沖存儲器109-例如,多級分層高速緩沖存儲器,和通過系統(tǒng)總線103連接到數(shù)據(jù)處理單元106的主存儲器110-例如包含一組隨機(jī)存取存儲體(RAM)。系統(tǒng)總線103還連接到只讀存儲器(ROM) 111,ROM 111適合于保存用于啟動數(shù)據(jù)處理設(shè)備的基本代碼。外圍單元(通過相應(yīng)接口)被連接到局域總線113。特別地,數(shù)據(jù)處理單元106不能直接訪問的外部存儲器被用作大容量存儲器;外部存儲器可包括一個或多個(可能全部)的以下單元一個或多個硬盤115,⑶-R0M/DVD-R0M驅(qū)動器116,半導(dǎo)體存儲設(shè)備117,可拆卸或不可拆卸單元(比如USB閃速存儲器讀取器),和磁帶單元118。數(shù)據(jù)處理設(shè)備100還包括數(shù)據(jù)輸入設(shè)備121,例如鍵盤和鼠標(biāo),和輸出設(shè)備123,例如顯示器(監(jiān)視器)和打印機(jī)。網(wǎng)絡(luò)接口卡125用于把數(shù)據(jù)處理設(shè)備連接到數(shù)據(jù)網(wǎng)絡(luò),例如以太網(wǎng)。另一方面或者另外,可以預(yù)見調(diào)制解調(diào)器,例如ADSL類調(diào)制解調(diào)器。
橋接單元129使系統(tǒng)總線103連接到局域總線113,在存在多于一個的數(shù)據(jù)處理單元106的情況下,判優(yōu)器單元131管理對系統(tǒng)總線103的訪問。對本領(lǐng)域的技術(shù)人員來說,顯然取決于特定的數(shù)據(jù)處理設(shè)備及其相應(yīng)功能,示出的結(jié)構(gòu)可被縮減或者增加。例如,除了數(shù)據(jù)處理單元106之外,可以預(yù)見由GPU構(gòu)成的圖形加速器。在下面的詳細(xì)說明中,將僅僅作為例子,提及按照W3C的SVG標(biāo)準(zhǔn)的矢量圖形引擎;然而,按照本發(fā)明的解決方案并不局限于和這樣的引擎一起使用。已知并且如上所述,矢量圖形引擎接收和處理要繪制并且例如要顯示在屏幕上或者要打印在紙張或其它材料上的場景的利用XML語言的描述;所述場景的描述由通過繼承樹表示的節(jié)點(父節(jié)點和子節(jié)點)的分層結(jié)構(gòu)構(gòu)成。在圖2中,以繼承樹200的形式示出了要顯示的圖形場景的描述的例子。樹200包括根節(jié)點205。在根節(jié)點205之下,有兩個子節(jié)點210和215 :節(jié)點210是與要顯示的場景的元素的圖形表示相對應(yīng)的節(jié)點,即,對應(yīng)于一個或多個矢量圖元的節(jié)點,而節(jié)點215是容器節(jié)點,S卩,不對應(yīng)于任何圖形表示而只是其它節(jié)點(在該例子中,其它兩個節(jié)點220和225)的容器的節(jié)點。節(jié)點220是具有圖形表示的節(jié)點,而節(jié)點225又是容器節(jié)點,并在該例子中包含兩個節(jié)點230和235,節(jié)點230和235都具有圖形表示。按照本發(fā)明,為了計算場景的對應(yīng)于代表相同場景的樹形結(jié)構(gòu)的確定節(jié)點(基本節(jié)點),例如,圖2的樹形結(jié)構(gòu)200的節(jié)點215的給定圖形元素的限界框,對所述給定基本節(jié)點的子節(jié)點(在這里考慮的例子中,子節(jié)點220和225)進(jìn)行遞歸過程;對于基本節(jié)點215的每個子節(jié)點220和225,計算和積累各自的限界框。換句話說,通過從所選基本節(jié)點開始并掃描所考慮節(jié)點的子節(jié)點的列表,穿過代表圖形場景的樹,并對相對于基本節(jié)點在較低層級的每個節(jié)點,計算和積累相應(yīng)的限界框。在所考慮的例子中,從基本節(jié)點215開始,穿過樹200并遇到子節(jié)點220,子節(jié)點220是具有圖形表示的節(jié)點計算通過包含在節(jié)點220中的圖元描述的形狀的限界框,并積累這樣計算的限界框(例如,所述計算的限界框被保存在計算機(jī)的工作存儲器中)。過程隨后返回基本節(jié)點215,從而下行到子節(jié)點225 ;由于子節(jié)點225是容器節(jié)點,因此繼續(xù)樹200的探索,從而到達(dá)子節(jié)點230,子節(jié)點230對應(yīng)于可顯示的圖形形狀計算相應(yīng)的限界框,并積累到已保存在存儲器中的限界框(所述積累對應(yīng)于剛剛計算的限界框與先前計算并保存在存儲器中的限界框的合并操作)。隨后,過程再次返回節(jié)點225,然后沿著樹下行,從而遇到也對應(yīng)于可顯示圖形形狀的子節(jié)點235 ;計算并積累限界框。在如此完成樹200的在基本節(jié)點215之下的那部分的搜索之后,保存在存儲器中的積累的限界框?qū)?yīng)于通過基本節(jié)點215和基本節(jié)點215下面的各個節(jié)點描述的圖形形狀的限界框。上面剛剛描述的遞歸過程例如可以按以下方式用偽代碼表述
CalculateBBox (AccumulatedBBox, Node)
f
For All the children of Node {
CalcuIateBBox (AccumulatedBBox, Node)
}
If (Node is a Pt imitive)
{
Node.CalculateBBoxOnPrimitive (TemporaryBBox)Accumulated BBox = union (AccumulatedBBox,Temporary BBox)
I
}用偽代碼描述的函數(shù)CalculateBBox因此通過調(diào)用它自己進(jìn)行樹的單個節(jié)點的子節(jié)點上的限界框的計算,管理樹的所述單個節(jié)點上的限界框的計算。當(dāng)函數(shù)CalculateBBox被調(diào)用時,將被處理的樹的基本節(jié)點的標(biāo)識符Node,即期望為其計算限界框的節(jié)點的標(biāo)識符被傳遞給該函數(shù)(在該例子中,起始節(jié)點是節(jié)點215,在每次遞歸地調(diào)用函數(shù)CalculateBBox時,在較低層級的節(jié)點的標(biāo)識符被傳遞給該函數(shù));函數(shù)CalculateBBox在作為結(jié)果的輸出中提供通過積累AccumulatedBBox計算的限界框。在遞歸過程中,對于不是容器節(jié)點的每個節(jié)點,S卩,對于與可描繪圖元相對應(yīng)的每個節(jié)點,例如圖2中的節(jié)點220、230和235,如果這樣的可描繪圖元是合成或復(fù)合圖元,那么它被分解成基本圖?;虺跫増D兀的有序列表;基本圖兀的列表的排序順序?qū)?yīng)于為了構(gòu)成整個圖元而描繪基本圖元的順序。例如,具有圓角邊緣的矩形被分解成具有為閉合列表的性質(zhì)的8個基本圖元(與矩形的各邊相對應(yīng)的4條線和與矩形的各個頂點處的倒圓相對應(yīng)的4條1/4周角的圓弧)。源自通過兩個限界框的合并(上述偽代碼中的函數(shù)union)的積累的限界框通過包含這兩個限界框的最小矩形表示;通過從與要合并的兩個限界框相對應(yīng)的兩個矩形中選擇沿著被取為參考的坐標(biāo)系的兩個軸的最小坐標(biāo)和最大坐標(biāo),可以獲得作為結(jié)果的限界框。下面為了簡單起見而考慮的基本圖元是線段和三次Bezier曲線借助這些基本圖元,事實上能夠以適當(dāng)?shù)木葋肀硎龌蚪迫魏螐?fù)合圖元以及凹面。特別地,借助于描述線段的基本圖元,可以表述直線、多邊形、折線的片段,并且利用定義線段的厚度的性質(zhì),能夠表述矩形和正方形的片段;利用三次Bezier曲線,尤其能夠近似圓和橢圓。關(guān)于組成復(fù)合圖元的基本圖元的列表,通過對各個基本圖元進(jìn)行迭代并合并積累為不同基本圖元計算的不同限界框,來計算限界框。基本圖元的限界框的計算取決于所考慮的基本圖元的類型。如果基本圖元是線段,可能還具有厚度(以便定義矩形),那么如圖3中所示,對于限界框305的計算,使用點PA,PB,P。和Pd(在確定的參考坐標(biāo)系300中)的坐標(biāo)(xA, yA),(xB, yB),(xc, yc), (xD, yD)。因此,限界框是具有由直線 x=min (xA, xB, xc, xD)的垂直線段(與坐標(biāo)系300的軸Y平行)給出的第一邊305a,由直線x=max (xA, xB, xc, xD)的垂直線 段給出的第二邊305b,由直線y=min (yA, yB, yc, yD)的水平線段(與坐標(biāo)系300的軸x平行)給出的第三邊,和由直線y=max(yA, yB, yc, yD)的水平線段給出的第四邊的矩形。如果基本圖元是三次Bezier曲線,那么它可用以下方程式解析表示B (t) =P0* (1-t) 3+3*P!*t* (1-t) 2+3*P2*t2 (l_t) +P3*t3t e
其中t是定義曲線坐標(biāo)的參數(shù)。通過確定該曲線的水平切點和垂直切點,該曲線的限界框的計算是可能的。從上面的方程式開始,可以按照以下方式來計算水平切點ThOTl(Xl,yi),ThOT2(X2,y3)和垂直切點
TvertS ( Yf y4^ ·
"hCx4
,人',人、^_人’、 ^
x=t3 *(Xj -3* +3*x, -x0)+i2 *3*(x0 -2* +x2)+/*3*(^ -x0)+x0 y=t3*(y3 -3* +3*J,-J0)+/2 *3*(y0 -2 +y2)+m*{yx -y0)+yo
--v->'-V-''-y-‘ 一
、ayhcydy
dv 3*^7,. +2*/ ,. + C— =-^----L
dx 3*ax *Γ +2* γ */ + cv
—2 ± J4*b2 - I2*a*cv ,
Thorh2=——本 0
6* a,.1i-
^orLl 二= 0
Z °y
—-2 % 土 #6:2j ^
一 ,4-*I .ix
T r A = --—\q 二 0
h ^
切點可以屬于或者可不屬于曲線本身。事實上,只為參數(shù)t的以下值0<t< I定義三次Bezier曲線。在參數(shù)t的值在曲線上,使得曲線的切線水平和垂直的情況下,水平切點和垂直切點會影響限界框的計算;如果情況不是這樣,那么在確定限界框時,將只使用曲線的極值。從而,下述點被用于限界框的計算·水平切點(如果這樣的點有效的話,即,如果它位于曲線上); 垂直切點(如果所述點有效的話);· Bezier曲線的極值。限界框?qū)⒂缮鲜龈鱾€點的坐標(biāo)之中的最小坐標(biāo)和最大坐標(biāo)限定。假定考慮未被定義厚度并且未被應(yīng)用任何變換的Bezier曲線。該曲線被定義成 理想厚度的曲線,即,以一致厚度描繪的曲線。當(dāng)對理想厚度的曲線應(yīng)用厚度、終點和接合點的性質(zhì)時,該曲線被定義成“被修飾”。假定考慮具有厚度的曲線的情況。在圖4中,表示了理想厚度的三次Bezier曲線A及其由與曲線A相距距離d的三次Bezier曲線B構(gòu)成的外緣。在如圖4的曲線A的三次Bezier曲線的條件下,與曲線A相距距離d的三次Bezier曲線B的方程式的計算(即,控制點的確定)是一個不能通過解析求解的問題。然而,由于目的是計算由這兩條曲線A和B限定的形狀的限界框,因此通過確定曲線B上的水平切點和垂直切點,能夠簡化該問題。由于曲線B被定義成對于參數(shù)t的每個值與曲線A相距距離d的曲線,因此例如,曲線B上的水平切點Ptb可被確定為與曲線A上的水平切點Pta相距距離d的點。從而,可以利用曲線A的水平切點和垂直切點(或者曲線A的極值點,如果對其來說,存在垂直相切或水平相切的參數(shù)t的值不在曲線A上的話),并且按照以下方式來計算沿著在所述切點或極值點垂直于曲線A的垂線移動距離d的曲線B(Ptb)上的水平切點和垂直切點,能夠繼續(xù)進(jìn)行限界框的計算。參見圖5,令P。,P1J2和P3是三次Bezier曲線C的控制點;按照以下方式確定與點Pa相距距離d并且位于曲線上點Pa處的切線的垂線上的點Pb和P。。假定
八 dyD4 =-^- tA
Ij)直線Pa-Pb具有方程式y(tǒng)=D' A*x+yA_D' A*xA沿著直線的兩個泛點P1 (X1J1)和己0^2,72)之間的距離由下式給出距離(巧-P2)= 1 - X2|* Vl + QT2從而,為了獲得圖5中所示的點Pb的坐標(biāo),必須求解以下方程式
工d
Xr -X , ± ......P=:.=.<卞 + D]方程式的解對應(yīng)于兩個點(圖5的兩個PjP Pc)。為了確定就使曲線延伸(t的值不斷增大)的意義而論滿足該方程式的兩個點中的哪個點位于左側(cè),哪個點位于右側(cè),有
i|r,>0=0<0
>0-xB - x 4 -d+
___-Fj = y.i-d__不可負(fù)這__yB = }!a +d
<0+Xb - Xa+d■如果三次Bezier曲線的厚邊緣經(jīng)歷仿射變換,那么水平切點和垂直切點的位置根據(jù)變換參數(shù)而變化。圖6A-6C中示出了近似橢圓的由4條Bezier曲線的弧線構(gòu)成的具有厚度的曲 線的仿射變換的3種情況本體,這是在應(yīng)用變換之前的曲線(圖6A),旋轉(zhuǎn)(圖6B)和傾斜(圖6C);變換前后的理想厚度的曲線用605、605’和605"表示;圍繞曲線605、605’和605"的陰影區(qū)代表曲線的厚度。在這些情況下,為了確定水平切點和垂直切點而要進(jìn)行的操作是下述操作。I.在理想厚度的曲線605的變換之后獲得的理想厚度的曲線605’或605"上,識別切點,例如,水平切點PTA。 2.確定對其來說存在相切(例如,水平相切)的參數(shù)t的值if 。3.計算變換之前,與值I= 相對應(yīng)的曲線605上的點的坐標(biāo)。4.計算位于在垂直于切線(這種情況下,水平切線)的方向上與曲線605上的點卩’\相距距離d處的點P’ TB。5.通過應(yīng)用所述變換,點P' TB被變換,從而獲得點PTB。為了正確計算通過單獨的基本圖元描述的曲線的限界框,還應(yīng)考慮曲線的具體接合點模式和/或終點模式。接合點模式一般為3種斜角接合點、斜削接合點和圓角接合點,如圖7中所示。另外,終點模式一般是平接終點、直角終點和圓形終點,如圖8中所示。在限界框的計算中,為了考慮構(gòu)成復(fù)合圖元的基本圖元的接合點模式,在對基本圖元的每次迭代時,使用描述在前基本圖元(按照描繪復(fù)合圖元的順序)的末端部分的參數(shù),和使用描述下一個基本圖元的起始部分的參數(shù)。為了計算在基本圖元的起始點的接合點,事實上必須知道在前基本圖元的切線和引入方向。為了計算在基本圖元的終結(jié)點的接合點,必須計算下一個基本圖元的切線和退出方向。另外考慮到復(fù)合圖元可能是或者可能不是閉合曲線的事實在復(fù)合圖元未閉合的情況下,一些接合點變成復(fù)合圖元的終點。強(qiáng)調(diào)的是只有當(dāng)相對于被修飾曲線計算限界框時,接合點和終點的信息才有意義。在圖9中,從幾何學(xué)的觀點示出了具有非理想厚度的兩條三次Bezier曲線(未示出)之間的接合點的各種情況;圖9中,點Ptl和P’ i分別是引入的三次Bezier曲線的終點和第二控制點;點P0和P1分別是引出的三次Bezier曲線的起點和第一控制點。線段905和910代表曲線在其端點的相應(yīng)圓弧的切線引入曲線在端點P的切線(Ptl-P^)和引出曲線的切線PcrPlt5通過點Pb的曲線915對應(yīng)于斜角接合點的情況;通過點Pd的曲線920對應(yīng)于圓角接合點的情況;通過點Pf的曲線925對應(yīng)于斜削接合點的情況。就兩條曲線之間的接合點來說,引入曲線的終點和引出曲線的起點重合。通過其厚度Pa-Pci=Pci-Pc=W/^表示這兩條切線,其中W是圖元的輪廓的厚度。為了考慮組成復(fù)合圖元的基本圖元之間的接合點,在限界框的計算中,還按照接合點的類型,插入與使用的接合點相對應(yīng)的曲線I.在斜角接合點類型的情況下,兩條線段匕尤和PA_PB。其中斜角接合點的長度大于場景的作者所施加的限制(MiterLimit)的情況例外。Pb-P0^sin (Θ /2)=ff/2=斜角接合點的長度的一半
如果斜角接合點的長度大于MiterLimit,那么斜角接合點變成斜削接合點。2.在圓角接合點的情況下,經(jīng)過Pc-Pd-Pa的圓的弧線。3.在斜削接合點的情況下,線段PC-PF_PA。在組成復(fù)合圖元的基本圖元的列表未被封閉的情況下,兩個接合點被轉(zhuǎn)換成終點。在這種情況下,在計算限界框時,同樣插入與建立的終點相對應(yīng)的曲線。參見圖10,在平接終點的情況下,與該終點相對應(yīng)的曲線是線段Pa-Pb;在直角終點的情況下,是以點Pa, Pb, Pd和P。作為頂點的矩形;在圓形終點的情況下,是連接點Pa和Pb的圓弧。計算復(fù)合圖元的限界框的一般程序可用以下偽代碼描述
權(quán)利要求
1.一種確定包含以矢量模式描述的一個或多個圖元的計算機(jī)化圖形形狀的限界框的方法,其中,通過把解析數(shù)學(xué)公式應(yīng)用于構(gòu)成所述形狀的圖元的矢量描述來計算限界框,而不通過組成所述圖形的矢量圖元的分解預(yù)先進(jìn)行所述形狀的描繪和顯示階段。
2.按照權(quán)利要求I所述的方法,其中,矢量圖元包括以下基本矢量圖元 -描述可能具有厚度的一段直線的基本矢量圖元,和 -描述可能具有厚度的三次Bezier曲線的基本矢量圖元。
3.按照權(quán)利要求2所述的方法,其中,描述線段的基本矢量圖元的限界框的計算包括在參考坐標(biāo)系中確定可能具有厚度的線段的各個頂點的最小坐標(biāo)和最大坐標(biāo)。
4.按照權(quán)利要求2或3所述的方法,其中,描述三次Bezier曲線的基本矢量圖元的限界框的計算包括 -計算Bezier曲線的水平切點和垂直切點; -如果所述水平切點和垂直切點在曲線上,則把所述切點在參考坐標(biāo)系中的坐標(biāo)作為限界框的各邊的坐標(biāo);而 -如果水平切點和/或垂直切點不在曲線上,則把曲線的更接近于不在所述曲線上的切點的極值點的坐標(biāo)作為限界框的邊的坐標(biāo)。
5.按照權(quán)利要求4所述的方法,包括在三次Bezier曲線具有厚度的情況下 -計算無厚度的理想三次Bezier曲線的第一垂直切點和第一水平切點, -確定位于理想三次Bezier曲線的第一垂直切點和第一水平切點的垂直線上,并且與所述第一垂直切點和第一水平切點的距離對應(yīng)于曲線的厚度的第二點。
6.按照權(quán)利要求5所述的方法,其中,在對具有厚度的三次Bezier曲線應(yīng)用仿射變換的情況下,限界框的計算包括 -確定在變換前厚度一致的曲線的變換后獲得的厚度一致的三次Bezier曲線上的水平切點和/或垂直切點; -確定在變換后獲得的厚度一致的三次Bezier曲線的曲線坐標(biāo)的值,所述值對應(yīng)于厚度一致的曲線的水平切點和/或垂直切點; -計算與曲線坐標(biāo)的值相對應(yīng)的變換前的厚度一致的曲線上的各個點的坐標(biāo); -確定位于與曲線坐標(biāo)的值相對應(yīng)的變換前的理想曲線上的各個點的垂線上的點,垂線上的所述點被置于等于曲線厚度的距離處;以及-對如此確定的各個點應(yīng)用變換。
7.按照前述權(quán)利要求之一所述的方法,包括對限界框的計算,考慮基本圖元之間的接合點的模式。
8.按照前述權(quán)利要求之一所述的方法,包括對限界框的計算,考慮基本圖元的終點的模式。
9.按照前述權(quán)利要求任意之一所述的方法,包括在圖形形狀包括以矢量模式描述的多于一個的圖元的情況下,計算每個圖元的限界框,以及通過合并來組合各個圖元的限界框。
10.一種包括可由數(shù)據(jù)處理器執(zhí)行的代碼部分的計算機(jī)程序,當(dāng)所述處理器執(zhí)行所述程序時,所述代碼部分適合于允許數(shù)據(jù)處理器執(zhí)行按照前述權(quán)利要求任意之一所述的方法。
全文摘要
一種確定包含以矢量模式描述的一個或多個圖元的計算機(jī)化圖形形狀的限界框的方法,其中,通過把解析數(shù)學(xué)公式應(yīng)用于構(gòu)成所述形狀的圖元的矢量描述來計算限界框,而不通過組成所述圖形的矢量圖元的分解預(yù)先進(jìn)行所述形狀的描繪和顯示階段。
文檔編號G06T11/20GK102859556SQ200980163438
公開日2013年1月2日 申請日期2009年12月30日 優(yōu)先權(quán)日2009年12月30日
發(fā)明者G·科達(dá)拉, G·弗蘭希尼, D·吉貝里諾, A·瓦雷斯歐 申請人:意大利電信股份公司