專利名稱:多邊形平滑方法
技術領域:
本發(fā)明涉及使多邊形平滑的方法,更準確地說,本發(fā)明涉及通過將多邊形劃分為多個圖塊并使每個這種圖塊平滑化來使多邊形平滑的軟件。
計算機圖形大部分由多邊形構成。多邊形是由端端連接的直線所組成的圖形。兩線的連接點稱為頂點。封閉多邊形是其中所有直線端點都連接并形成“封閉”回路的多邊形。封閉多邊形的頂點可當作是封閉的。封閉多邊形的一個例子是五邊形。開放多邊形是其中直線未連接形成封閉回路而有兩“開放”端的多邊形。開放多邊形的一個例子是“V”。開放多邊形的起始和終止點可稱作頂點或開放頂點。
由于計算機圖形圖象大部分是由多種多邊形構成,所以圖象常常有不希望有的粗糙或齒狀的表面。例如,計算機用戶可能希望產生帶有弧線體形狀的汽車的圖象。由于計算機圖形是用多邊形打印的,所以,轎車車體由連接一起的直線組成。線連接產生粗糙或齒狀的表面而不是所要求的平滑曲線。因此,已研究一些方法用來使這樣的多邊形平滑化。
將多邊形平滑化指的是修改多邊形的粗糙或齒狀的表面,使之呈現待產生的平滑曲線。過去,一直是通過使用一般稱作Bezier三次曲線算法的算法來執(zhí)行這種平滑過程。Bezier算法在計算機圖形圖象方面的一種應用在“PostscriptLanguageReferenceManual”(AdobeSystems,Inc.,Copyright1985)中進行了討論。
本發(fā)明的方法通過使用Bezier算法連同確定圖形圖象所需“平滑”或“精細”程度的特征使多邊形平滑,然后打印該結果。通過確定所需精細度,本發(fā)明的方法使圖形圖象質量最優(yōu)而使平滑圖象所需時間及計算機存儲器最少。
本發(fā)明的多邊形平滑方法包括將一多邊形描述為帶有比原多邊形有較多頂點的另一多邊形的軟件。通過確定得到可接受的輸出質量所需細度以及通過用所需細度打印新多邊形的Bezier三次曲線來構造所述的新多邊形。
圖1展示計算機產生的未平滑的圖形圖象。
圖2展示按照本發(fā)明的方法,計算機所產生的已平滑的圖形圖象。
圖3為本發(fā)明多邊形平滑方法的框圖。
圖4為本發(fā)明方法的詳細框圖。
圖1示出了標號10的計算機產生的汽車的圖形圖象。該圖象也可稱為封閉多邊形。該圖象的外表面12粗糙并且顯出產生該多邊形的相連接的直線。
圖2示出了使用本發(fā)明的多邊形平滑方法由計算機產生的相同的圖形圖象14。外表面16也由連在一起的線構成,但是,這些線已平滑化,以產生得到所要求質量所需的細度。
圖3是展示本發(fā)明多邊形平滑方法的方框圖。首先,在步驟18,收集定義未平滑多邊形的數據,并將該多邊形劃分為多個圖塊,如框20所示。多邊形圖塊是由預定個數的頂點所定義的該多邊形的一部分。例如,在最佳實施例中,每三個順序的頂點一組構成一多邊形圖塊。從該定義來看,很顯然多邊形圖塊可以重疊。
然后,本方法通過將圖塊定義為頂點數增加的新的多邊形來平滑每一個圖塊,如步驟22所示。然后,連接新多邊形以形成“平滑的”多邊形。形成該平滑多邊形的線較短,所以外表面的粗糙并不顯著。
在步驟24,確定該新多邊形的達到可接收輸出質量所需的細度。由于精細程度規(guī)定被打印的圖形具有多大“顆粒度”,所以,常常將所述細度稱為“粒度”或“顆粒細度”。簡單地說,該顆粒細度是將構成平滑多邊形的直線劃分成多個較短線、以便取得可接受的打印質量的分度。該細度規(guī)定應將平滑多邊形劃分為多少條較短的線。實驗表明,將平滑多邊形的每一條線除以4/300英寸,取最接近的整數,然后,打印具有所確定的顆粒細度的平滑多邊形的各線,就能得到可接受的輸出質量。在這個例子中,4/300英寸被認為是4個象素,其中,該圖象以300象素/英寸的密度進行打印??梢钥吹?,線越短,顆粒細度越小。這樣,本發(fā)明的方法對每一線確定不同的細度,因此只有在需要時才使用較大的細度。
然后用所確定的顆粒細度來打印平滑多邊形,如框25所示。
圖4是本發(fā)明的多邊形平滑方法的詳細框圖。首先收集定義未平滑多邊形的數據,如框26所示。
使用本發(fā)明方法的每個系統(tǒng)都會有諸如有效存儲器的系統(tǒng)限制。例如,某計算機系統(tǒng)可能有其中可描述多邊形的32K字節(jié)的有效存儲器。這種存儲器局限由于限制了未平滑多邊形可劃分的線段個數據而限制了多邊形的平滑程度。因此,步驟28識別該系統(tǒng)所允許的最大顆粒細度,即,換言之,每一線段最大的分段數目。又,該極限值隨存儲器而變。
步驟30對未平滑多邊形每三個頂點一組計算Bezier控制點而將未平滑多邊形劃分多個圖塊。具體地說,本發(fā)明的方法識別未平滑多邊形的前三個這樣的頂點P0、P1和P2。Bezier曲線的控制點可標識為X0、X1、X2和X3。封閉頂點組的控制點可按以下等式計算X0=(P0+P1)/2X1=1/6P0+5/6P1X2=5/6P1+1/6P2X3=(P1+P2)/2對既有開放頂點又有封閉頂點、而且第一頂點P0是開放的頂點集,那么按以下等式計算控制點X0=P0X1=1/3P0+2/3P1X2=5/6P1+1/6P2X3=(P1+P2)/2對既有開放又有封閉頂點、而且第一頂點P0為封閉的頂點集,控制點計算如下X0=(P0+P1)/2X1=1/6P0+5/6P1X2=2/3P1+1/3P2X3=P2對以開放頂點開始和結束的三頂點集合的控制點,按以下等式計算X0=P0X1=1/3P0+2/3P1X2=2/3P1+1/3P2X3=P2
這些控制點表示X軸上的坐標值。類似地,可用相同等式一一用Y替代每個X,來得到Y軸的坐標值。
對未平滑多邊形每個三頂點集合計算其控制點、并存儲于存儲器中,用來計算Bezier曲線。對每個三頂點P0、P1和P3的集合,計算四個控制點。下一個三頂點P1、P2、P3集合的第一控制點為前一集合的最后一個控制點。這樣,控制點不重疊。
控制點的計算也將未平滑多邊形劃分為多個線段。順序的控制點之間的直線構成這些線段。然后,步驟32確定每一條這種線段的長度。在最佳實施例中,按其密度為每英寸300個象素的象素的數目來量度所述長度。
步驟34確定打印具有所要求的平滑度、由控制點所限定的Bezler曲線所必須的最小顆粒細度。通過將每個線段長度除以預定分解數來計算出最小顆粒細度。在最佳實施例中,線段長度除以4個象素,其中,有每英寸300象素。將所得到的商舍入而取最接近的整數,該整數構成所需最小顆粒細度。又,簡單地說,顆粒細度就是將線段劃分為許多更短的線以致在打印時得到可接受的輸出質量的分度。該線段越短,顆粒細度越小。而顆粒細度受到描述更短線段所必須的存儲器的限制。
接著,本發(fā)明的方法判定所需最小顆粒細度是否小于或等于允許顆粒細度,如步驟36所示。如果所需最小允許顆粒細度大于最大允許顆粒細度,那么,該系統(tǒng)不能打印具有該最小顆粒的多邊形,所以,最終顆粒細度選擇為最大允許顆粒細度,如步驟38所示。如果所必需的最小顆粒細度小于或等于最大允許顆粒細度,那么,本系統(tǒng)能夠用最小顆粒細度作為最終粒度,如框40所示。
然后,步驟42打印帶有所述最終粒度的Bezier曲線段。該Bezier曲線段是每個三頂點集合的、由Bezier算法定義的曲線的一部分。在以下三個方程中使用計算出的控制點來計算X軸的常數Ax,Bx和Cx以及相對應的Y軸常數Ay,By和Cy(未示出)X1=X0+Cx/3X2=X1+(Cx+Bx)/3X3=X0+Cx+Bx+Ax然后在以下Bezier方程中使用這些常數來繪出Bezier曲線,其中,t為定義曲線在其間延伸的距離的無量綱數,例如0≤t≤1Xt=Axt3+Bxt2+Cxt+XYt=Ayt3+Byt2+Cyt+Y簡言之,本發(fā)明的方法計算了未平滑多邊形的每個三頂點集合的控制點。將這些控制點存儲在存儲器中并用來計算整個未平滑多邊形的Bezier曲線。本方法還確定為打印平滑多邊形所必需顆粒細度,使得該平滑多邊形具有可接受的輸出質量。當Bezier曲線和所必需最小顆粒細度都已計算出來時,本方法打印整個平滑多邊形。
本發(fā)明的方法可用于打印計算機圖形圖象的系統(tǒng)中。本方法使這種圖象平滑,以獲得高質量輸出,同時,提高處理速度以節(jié)省時間。
盡管文中已描述了本發(fā)明的最佳方式和最佳實施例,但仍可作變型和修改而不偏離本發(fā)明的精神。
權利要求
1.一種使多邊形平滑的方法,其特征在于包括將多邊形劃分為多個圖塊的步驟(20),通過將多邊形的第一圖塊定義為新的多邊形而使多邊形的第一圖塊平滑的步驟(22),對該第一圖塊確定為得到可接受的輸出質量所需的顆粒細度的步驟(24),對每個多邊形圖塊重復所述平滑和確定步驟,以及打印該平滑多邊形的步驟(25)。
2.一種由打印系統(tǒng)用來平滑并打印具有若干頂點的多邊形的方法,其特征在于包括接收定義待平滑的多邊形的數據的步驟(26),計算該系統(tǒng)所允許的最大顆粒細度的步驟(28),對多邊形的每個三頂點集合計算Bezier曲線的控制點的步驟(30),確定所計算的控制點之間的線段長度的步驟(32),使用所確定的線段長度來計算為打印由所算出的控制點確定的Bezier曲線所需的最小顆粒細度的步驟(34),選擇所允許最大顆粒細度和所需要最小顆粒細度中的較小者作為最終顆粒細度(36)的步驟,以及打印具有最終顆粒細度的與所計算出的控制點對應的Bezier曲線的步驟(42)。
3.權利要求2的方法,其特征在于所述確定所計算的控制點之間線段長度的步驟包括對所計算控制點之間的象素個數進行計數。
4.權利要求3的方法,其特征在于所述使用所確定線段長度來計算所需最小顆粒細度的步驟包括該線段除以4個象素并對商舍入而取最接近的整數。
全文摘要
本發(fā)明的多邊形平滑方法包括以帶有比原多邊形更多頂點的另一多邊形來描述原多邊形的軟件。通過確定為得到可接受輸出質量所需的細度的步驟(34)以及通過用所需細度打印新的多邊形的Bezier三次曲線的步驟(42)來構造新的多邊形。
文檔編號G06T11/20GK1044355SQ8910934
公開日1990年8月1日 申請日期1989年12月11日 優(yōu)先權日1989年1月19日
發(fā)明者史蒂文·O·米勒 申請人:惠普公司