JP4772604B2 - ベクトル図形描画装置及びそのプログラム - Google Patents
ベクトル図形描画装置及びそのプログラム Download PDFInfo
- Publication number
- JP4772604B2 JP4772604B2 JP2006181921A JP2006181921A JP4772604B2 JP 4772604 B2 JP4772604 B2 JP 4772604B2 JP 2006181921 A JP2006181921 A JP 2006181921A JP 2006181921 A JP2006181921 A JP 2006181921A JP 4772604 B2 JP4772604 B2 JP 4772604B2
- Authority
- JP
- Japan
- Prior art keywords
- edge
- scan line
- sub
- intersection
- pixel
- 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.)
- Active
Links
Images
Landscapes
- Image Generation (AREA)
Description
このように、従来のベクトル図形描画技術では、多大な計算量を要することなく高速な描画を実行することが困難であった。
図1は、この発明の実施の形態1によるベクトル図形描画装置を示す構成図である。
図において、ベクトル図形描画装置100は、エッジ分割部1、交点算出部2、エッジデータリスト3、マスク生成部4、内外判定部5、塗潰し処理部6を備えている。
エッジデータリスト3は、交点算出部2が算出したベクトル図形の始点から終点までエッジデータのリストである。
塗潰し処理部6は、内外判定部5のカバレッジ情報に基づき、図形の内部と判定された領域に対して塗潰し処理を実行する手段である。
フレームバッファ7は、ベクトル図形描画装置100が生成したベクトル図形のピクセルデータを保持するものである。
また、このコンピュータには、通信機能を有し、上記の図形描画プログラムを実行することができる携帯電話や携帯情報端末も含まれる。尚、コンピュータ自体の構成及びその基本的な機能については、当業者が当該技術分野の技術常識に基づいて容易に認識できるものであり、本発明の本質に直接関わるものでないので詳細な記載は省略する。
ベクトル図形描画装置100は、この図形描画装置100が搭載されたシステムのCPUから入力されたベクトル図形の情報として、頂点座標、曲線の制御点の座標、描画色等の情報が設定され、起動命令を受けることにより動作を開始する。起動命令を受けると、エッジ分割部1が起動し、輪郭線が曲線である場合には曲線を直線に近似してエッジ単位に分割する。例えば、図2に示すような図形内部の塗潰しを行う場合、エッジ分割部1は輪郭線を微小なエッジに分割する。描画開始位置の頂点座標をv(0)、i番目の頂点座標をv(i)、頂点数をnと表すと、エッジ分割部は、
v(0)v(1)、v(1)v(2)、v(2)v(3)、・・・、v(i)v(i+1)、・・・、v(n−1)v(0)
という順序でエッジを生成する。
図3では、描画開始位置の頂点座標をv(0)、i番目の頂点座標をv(i)、頂点数をnと表すと、エッジ分割部は、
v(0)v(1)、v(1)v(3)、v(3)v(2)、v(2)v(0)、
v(2)v(3)、v(3)v(5)、v(5)v(4)、v(4)v(2)・・・
という順序でエッジを生成する。尚、ここで示した順序は一つの例であり、更に輪郭線が滑らかに繋がるように、別の図形を挿入することも可能である。
以上で示したようにエッジ分割部1は、エッジの始点、終点の座標を交点算出部に対して随時出力する。この時、出力するエッジが図形の中間エッジ(0)であるか最終エッジ(1)であるかという判定フラグも一緒に出力する。
xs(y)=x0+(x1−x0)/(y1−y0)×(y−y0)…(1)
図4では、点線で示す図形を描画する場合に、図形内部に含まれるサブピクセルを黒丸、図形外部のサブピクセルを白丸で示している。1ピクセル当たりのサンプル数を多く取るほどカバレッジの精度が向上する。一般にsx×syのサブピクセル分割においてX方向のサブピクセル分割数(sx)と、Y方向のサブピクセル分割数(sy)の値が互いに異なっていてもよい。
従って、上式(1)においては、yの値をY方向のサンプル数(ysub)を考慮した値として、次の式(2)、(3)で表せる値とする。但し、iy0はエッジの最小Y座標の整数部、iy1はエッジの最大Y座標の整数部、nは整数とする。式(2)で表されるdyがY方向の刻み幅を表す。また、ysubの値は1以上の任意の整数値でよいが、2のべき乗で表される値とするのが望ましい。
dy=1/(2×ysub) …(2)
y=iy0+(2n+1)×dy …(3)
iy0≦y≦iy1 かつ min(y0,y1)≦y<max(y0,y1)…(4)
以降、式(3)で表すことのできる各Y座標のことをサブスキャンラインと呼ぶ。
図5に4×4のサブピクセル分割の例を示す。図5(a)、(b)において、斜線付きの丸印で示したのがピクセル内部でエッジの右側に位置するサンプル点である。このようなサンプル点の個数を各サブスキャンライン(ysub0〜ysub3)でカウントする。サンプル点の中心がエッジ上にある場合には、エッジの右側にあるとして判定する。また、エッジが図5(b)に示すようにピクセルの境界をまたぐような場合には、サブスキャンライン単位で交点X座標の整数部の値が異なることになる。
図6は、エッジデータリスト3のデータ構成を示す(Y方向のサブピクセル分割数=2の場合)。
各サブスキャンラインはY座標(y)と、サブピクセルカウンタ(ysub)の値によって決まる。各行のデータが当該サブスキャンラインとエッジとの交点座標の数に対応している。各データは、(エッジの向き(0:DOWN、1:UP),交点X座標の整数部,サンプル数)を2つずつ組にしたものである。2つのデータでエッジの向きは、どちらか一方がDOWN、もう一方がUPとなる。また1サブスキャンライン上に含まれるエッジデータは必ず偶数個となる。図6の方式は1つの例であり、他のデータ構成とすることも当然可能である。
従って、SLBのサイズは、最大で(フレームバッファ7のX方向サイズ×X方向サブピクセル数×ビット数)だけ必要である。
SLBの0番地がX座標の0に対応するとすれば、図7においてSLBのi番地が以下のX座標に対応する。記号(>>)は右方向へのビットシフト演算子を表す。
例1. X方向サンプル数=1の場合、SLBのi番地がX座標iに対応する。
例2. X方向サンプル数=2の場合、SLBのi番地がX座標(i>>1)に対応する。
例3. X方向サンプル数=4の場合、SLBのi番地がX座標(i>>2)に対応する。
(1)塗潰し規則がイーブンオッド規則の場合は、SLBの値が奇数の時に図形の内部であると判定する。
(2)塗潰し規則がノンゼロ規則の場合は、SLBの値が0以外であった時に図形の内部であると判定する。
このような規則に従って内外判定を行うと、例えば、図9および図10の図形では、図形の内部と判定される領域は、イーブンオッド規則では、+1と+3で示した領域であり、ノンゼロ規則では、+1,+2,+3,+4で示した領域となる。
c=src×cv+dst×(1−cv) …(5)
これにより、ベクトル図形の輪郭線にアンチエイリアス処理を施して描画することができる。
b=src×srca+dst×(1−srca) …(6)
c=b×cv+dst×(1−cv) …(7)
また、ピクセル単位でカラー勾配を計算してグラデーション塗潰しを実現したり、テクスチャアドレスを計算してテクスチャ貼り付けを行ったりすることも可能である。
図11及び図12は、実施の形態1のベクトル図形描画装置によるベクトル図形描画処理の流れを示すフローチャートであり、以下、これらの図に沿って説明する。
先ず、エッジ分割部1は、図形の輪郭線が曲線であるか否かを判定する(ステップST1)。図形の輪郭線が曲線である場合には、微小線分(エッジ)に分割を行う(ステップST2)。輪郭線が直線である場合には、直線をそのままエッジとして扱う。
次に、処理しているエッジがベクトル図形の最終エッジであるかを判定し(ステップST5)、そうでない場合は上記のステップST3に戻って同様の処理を繰り返す。一方、ステップST5において、最終エッジである場合には、塗潰しを開始する。塗潰し開始後のフローチャートは図12に示すものである。
xleft=x(i)、xright=x(i+1)
i番目のエッジデータの向きがUPである場合、xflag=1
(B)x(i)≧x(i+1)の時
xleft=x(i+1)、xright=x(i)
i+1番目のエッジデータの向きがUPである場合、xflag=1
但し、x=xleftの位置においては、サンプル点がエッジの右側にあるサブピクセルに対応するSLBだけインクリメントする。x=xrightの位置においては、サンプル点がエッジの左側にあるサブピクセルの位置に対応するSLBのみをインクリメントする。
次に、マスク生成部4は、最終エッジデータかを判定し(ステップST12)、最終エッジデータでなかった場合はステップST7に戻って、これらの処理を繰り返し、最終エッジデータであった場合は、内外判定部5を起動し、ステップST13に移行する。
図13は、1スキャンライン上の3ピクセル分をサブピクセル単位で表したものである。また、図14はスキャンライン上のエッジデータを示す図である。1スキャンラインは4つのサブスキャンラインで構成される。ysub=0〜2のサブスキャンラインは、エッジとの交差回数がそれぞれ4回であり、ysub=3のサブスキャンラインは、エッジとの交差回数が2回である。マスク生成部4及び内外判定部5は、図14に示すエッジデータを元に、図13に黒丸で示しているサブピクセルが図形の内部に含まれるようにするため、以下の手順に従って判定を行う。
(1)マスク生成部4は、図14のysub=0に対応するアドレスからエッジデータ0、1を読み出した結果、前記判定条件(B)により
xleft=xright=p+1、xflag=1となるので
x=p+1の範囲のSLBをインクリメントする。
xleft=p−1、xright=p、xflag=1となるので
p−1≦x≦pの範囲のSLBをインクリメントする。
(4)ysub=2のサブスキャンラインの処理が終了した時点でCVBは図16の(4)に示す状態になっている。
xleft=p−1、xright=p+1、xflag=1となるので
p−1≦x≦p+1の範囲のSLBをインクリメントする。
また、実施の形態1のベクトル図形描画装置によれば、ベクトル図形描画装置のハードウェア化を行う場合でも回路規模を最小限に抑えることができる。
更に、スキャンラインとエッジとの交差回数が多い図形を扱ったり、アンチエイリアス処理のサンプル数を変化させたりする場合でも、エッジデータリストの構成およびスキャンラインバッファのアドレス割り当てを変えることによって柔軟に対応することが可能である。
上記実施の形態1では、図形に含まれるエッジ分割部1が生成したエッジとスキャンラインとの交点座標を全てエッジデータリスト3に保存してからベクトル図形の塗潰しを開始していたが、エッジとスキャンラインとの交点座標の算出を1スキャンライン分行う度に1スキャンライン分の塗潰しを行い、同様の処理をベクトル図形の包含矩形のY方向サイズ分だけ繰り返すようにしてもよく、これを実施の形態2として以下説明する。
実施の形態2の交点算出部2は、エッジ分割部1が生成したエッジとスキャンラインとの交点X座標をサブピクセル精度で求めた値をエッジデータとして算出してエッジデータリスト3に登録し、また、マスク生成部4は、エッジデータリスト3に登録されているエッジデータをサブスキャンライン単位で取得し、図形のマスク情報を生成するよう構成されている。また、内外判定部5及び塗潰し処理部6は、1スキャンライン分の値が得られる度に処理を行うようになっている。
図17は、実施の形態2によるベクトル図形描画処理の塗潰し開始までの流れを示すフローチャートである。
最初にY座標カウンタを最小Y座標、Y方向サブピクセルカウンタysubを0に設定する(ステップST101)。エッジ分割部1は、図形の輪郭線が曲線であるか否かを判定する(ステップST102)。図形の輪郭線が曲線である場合には、微小線分(エッジ)に分割を行う(ステップST103)。輪郭線が直線である場合には、直線をそのままエッジとして扱う。
Claims (4)
- ベクトル図形の少なくとも頂点座標を含むベクトル図形のデータを入力し、前記入力データが曲線である場合には、当該曲線を微小な線分であるエッジに分割するエッジ分割部と、
前記エッジ分割部が生成したエッジとスキャンラインとの交点座標をサブピクセル精度で求めた値をエッジデータとして算出する交点算出部と、
前記算出されたエッジデータをサブスキャンライン単位で取得し、サブピクセル毎に、エッジの向きに基づいたスキャンラインとの交差回数を保持するスキャンラインバッファを用いて、1サブスキャンライン分の、エッジの向きに基づくスキャンラインとの交差回数の情報を示すマスク情報を生成し、かつ、1サブスキャンラインの処理が終わる度に、前記スキャンラインバッファをクリアして繰り返し利用するマスク生成部と、
前記マスク生成部が生成したマスク情報を元に、所定の塗潰し規則に基づき図形の内外判定を行って、ピクセル単位のカバレッジを示すカバレッジ情報に変換する内外判定部と、
前記内外判定部のカバレッジ情報に基づき、前記図形の内部と判定された領域に対して塗潰し処理を実行する塗潰し処理部とを備えたベクトル図形描画装置。 - 交点算出部は、交点座標の算出時にピクセル内部におけるエッジとサンプル点との位置関係を判定し、当該判定結果と交点座標の整数部およびエッジの向きの情報をエッジデータとして算出することを特徴とする請求項1記載の図形描画装置。
- 内外判定部は、サブスキャンライン単位で1ピクセル分のカバレッジをカウントしたそれぞれのピクセルの値を保持するための1ライン分のカバレッジバッファを備え、当該カバレッジバッファを用いてカバレッジ情報を保持することを特徴とする請求項1記載のベクトル図形描画装置。
- コンピュータを、請求項1から請求項3のうちのいずれか1項記載のベクトル描画装置として機能させるためのベクトル図形描画装置のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006181921A JP4772604B2 (ja) | 2006-06-30 | 2006-06-30 | ベクトル図形描画装置及びそのプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006181921A JP4772604B2 (ja) | 2006-06-30 | 2006-06-30 | ベクトル図形描画装置及びそのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008009897A JP2008009897A (ja) | 2008-01-17 |
JP4772604B2 true JP4772604B2 (ja) | 2011-09-14 |
Family
ID=39068013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006181921A Active JP4772604B2 (ja) | 2006-06-30 | 2006-06-30 | ベクトル図形描画装置及びそのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4772604B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4703695B2 (ja) * | 2008-08-28 | 2011-06-15 | シャープ株式会社 | データ作成装置、データ作成方法、データ作成用プログラム、描画装置、描画方法、および、描画用プログラム |
JP5159588B2 (ja) * | 2008-12-05 | 2013-03-06 | キヤノン株式会社 | 画像処理装置、画像処理方法、コンピュータプログラム |
JP5159949B2 (ja) * | 2009-05-19 | 2013-03-13 | 三菱電機株式会社 | ベクトル図形描画装置 |
JP2023025503A (ja) | 2021-08-10 | 2023-02-22 | 株式会社ニューフレアテクノロジー | データ生成方法、荷電粒子ビーム照射装置及びプログラム |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0668271A (ja) * | 1992-08-17 | 1994-03-11 | Ricoh Co Ltd | 画像処理装置 |
JPH06314091A (ja) * | 1993-04-28 | 1994-11-08 | Fujitsu Ltd | 輪郭塗り潰し方法及びその回路 |
US5438656A (en) * | 1993-06-01 | 1995-08-01 | Ductus, Inc. | Raster shape synthesis by direct multi-level filling |
JPH09102048A (ja) * | 1995-10-03 | 1997-04-15 | Matsushita Electric Ind Co Ltd | 画像処理装置 |
JPH10143676A (ja) * | 1996-11-15 | 1998-05-29 | Fuji Xerox Co Ltd | 画像処理装置、画像処理方法、および記録媒体 |
JP3362641B2 (ja) * | 1997-08-27 | 2003-01-07 | 富士ゼロックス株式会社 | 画像処理装置 |
JP3266905B2 (ja) * | 1998-09-09 | 2002-03-18 | 富士ゼロックス株式会社 | 図形処理装置 |
JP2001067487A (ja) * | 1999-08-25 | 2001-03-16 | Fuji Xerox Co Ltd | 描画処理装置 |
JP2002334341A (ja) * | 2001-05-11 | 2002-11-22 | Fuji Xerox Co Ltd | 画像処理装置 |
-
2006
- 2006-06-30 JP JP2006181921A patent/JP4772604B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2008009897A (ja) | 2008-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4693660B2 (ja) | 描画装置、描画方法及び描画プログラム | |
JP5106735B2 (ja) | 形状プロセッサ | |
US8928667B2 (en) | Rendering stroked curves in graphics processing systems | |
US8928668B2 (en) | Method and apparatus for rendering a stroked curve for display in a graphics processing system | |
EP1958162B1 (en) | Vector graphics anti-aliasing | |
JP4937359B2 (ja) | 図形描画装置及び図形描画方法 | |
KR20050030595A (ko) | 화상 처리 장치 및 그 방법 | |
JPH07210697A (ja) | コンピュータグラフィックシステムのサブピクセルマスク発生方法および装置 | |
US20200279415A1 (en) | Efficiently Computed Distance Fields | |
JPH0322188A (ja) | 図形イメージをラスタ化して表現する方法 | |
JP4772604B2 (ja) | ベクトル図形描画装置及びそのプログラム | |
US20090309898A1 (en) | Rendering apparatus and method | |
EP0231060B1 (en) | Fixed character string clipping in a graphics display system | |
JP5172640B2 (ja) | ベクトル図形描画装置 | |
CN109064483B (zh) | Lcd屏幕的图片抗锯齿方法、装置、单片机及存储介质 | |
Kokojima et al. | Resolution independent rendering of deformable vector objects using graphics hardware | |
JPH05120441A (ja) | ベクトル画像描画装置 | |
US11989807B2 (en) | Rendering scalable raster content | |
JP5777726B2 (ja) | 描画装置及び描画プログラム | |
JP5159949B2 (ja) | ベクトル図形描画装置 | |
US6504543B1 (en) | Polygon drawing method and polygon drawing apparatus | |
US11776179B2 (en) | Rendering scalable multicolored vector content | |
JP4214644B2 (ja) | 2次元パターン生成装置 | |
JP2782904B2 (ja) | 多角形塗りつぶし方式 | |
AU765466B2 (en) | Anti-aliased polygon rendering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080701 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090415 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110322 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110517 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110614 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110622 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140701 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4772604 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |