JPH0492986A - 図形の塗り潰し方法 - Google Patents
図形の塗り潰し方法Info
- Publication number
- JPH0492986A JPH0492986A JP2206869A JP20686990A JPH0492986A JP H0492986 A JPH0492986 A JP H0492986A JP 2206869 A JP2206869 A JP 2206869A JP 20686990 A JP20686990 A JP 20686990A JP H0492986 A JPH0492986 A JP H0492986A
- Authority
- JP
- Japan
- Prior art keywords
- intersection
- point
- path
- horizontal
- sum
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—Two-dimensional [2D] image generation
- G06T11/40—Filling planar surfaces by adding surface attributes, e.g. adding colours or textures
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
(産業上の利用分野)
本発明は、コンピュータグラフィック装置における図形
の塗り潰し方法に係り、特に、効率向上を図った図形の
塗り潰し方法に関する。
の塗り潰し方法に係り、特に、効率向上を図った図形の
塗り潰し方法に関する。
(従来の技術)
図形の塗り清し処理にあたっでは、図形の内部/外部の
区別、すなわち塗り潰し領域の判定をいかに正確に行う
かが重要なポイントとなる。
区別、すなわち塗り潰し領域の判定をいかに正確に行う
かが重要なポイントとなる。
従来から、塗り潰し領域の判定規則には、いわゆる奇・
偶規則(even−odd rule )と非ゼロ巻数
規則(non−zero winding numbe
r rule)とがあり、用途に応じて使い分けられて
いる。
偶規則(even−odd rule )と非ゼロ巻数
規則(non−zero winding numbe
r rule)とがあり、用途に応じて使い分けられて
いる。
奇・偶規則では、図形の構成要素である線分(パス)と
走査線との交差回数(交点数)の、走査開始位置からの
累計が偶数であるか奇数であるかに基づいて内部/外部
が判定され、交差回数の累計が奇数から偶数の区間が塗
り潰し領域(内部)偶数から奇数の区間が塗り潰さない
領域(外部)として扱われる。
走査線との交差回数(交点数)の、走査開始位置からの
累計が偶数であるか奇数であるかに基づいて内部/外部
が判定され、交差回数の累計が奇数から偶数の区間が塗
り潰し領域(内部)偶数から奇数の区間が塗り潰さない
領域(外部)として扱われる。
末た、非ゼロ巻数規則では、走査線と交差するパスが下
向きパスであれば“1″を加算し、上向きパスであれば
“1”を減じ、走査開始位置からの累計が0”であれば
外部領域、それ以外であれば内部領域と判定する。
向きパスであれば“1″を加算し、上向きパスであれば
“1”を減じ、走査開始位置からの累計が0”であれば
外部領域、それ以外であれば内部領域と判定する。
ところが、このような判定方法では、良く知られるよう
に、極値を示す頂点や水平パスと交差する場合に不都合
が生じ、塗り潰し領域の判定を正確に行うことが難しい
。
に、極値を示す頂点や水平パスと交差する場合に不都合
が生じ、塗り潰し領域の判定を正確に行うことが難しい
。
そこで、このような問題点を解決するものとして、例え
ば特開昭62−192878号公報には、各交点での交
点数を、その交差状況に応じて“1″または“2″と数
える方法が提案されている。
ば特開昭62−192878号公報には、各交点での交
点数を、その交差状況に応じて“1″または“2″と数
える方法が提案されている。
(発明が解決しようとする課題)
上記した従来技術では、たとえば走査線が頂点と交差す
る場合には、その前後の2本のパスの傾きから該頂点が
極点であるか連続点であるかを判定し、極点である場合
には交点数を“2”とし、連続点の場合には“1”とし
ていた。
る場合には、その前後の2本のパスの傾きから該頂点が
極点であるか連続点であるかを判定し、極点である場合
には交点数を“2”とし、連続点の場合には“1”とし
ていた。
また、水平パスと交差する場合には、水平パスの始点お
よび終点を端点とする2本のパスの傾きから交点数を設
定していた。
よび終点を端点とする2本のパスの傾きから交点数を設
定していた。
ところが、このような従来技術では、頂点や水平パスの
両端を端点とする2本のパスの傾きを算出しなければな
らず、処理が複雑であるという問題があった。
両端を端点とする2本のパスの傾きを算出しなければな
らず、処理が複雑であるという問題があった。
また、同一走査線上で複数の水平パスが重なる場合につ
いての考慮が為されていなかったため、このような場合
には塗り潰し領域を正確に判定することができないとい
う間層があった。
いての考慮が為されていなかったため、このような場合
には塗り潰し領域を正確に判定することができないとい
う間層があった。
本発明の目的は、以上に述べた問題を解決し、効率の良
い図形の塗り潰し方法を提供することにある。
い図形の塗り潰し方法を提供することにある。
(課題を解決するための手段および作用)上記した目的
を達成するために、本発明では、以下のような手段を講
じた。
を達成するために、本発明では、以下のような手段を講
じた。
(1)奇・偶規則に従って判定する図形の塗り潰し方法
において、交点の交点数、方向値、水平フラッグを算出
し、これらに基づいて各交点の方向値和および水平フラ
ッグ和を算出し、前記交点数、方向値和、および水平フ
ラッグ和に基づいて処理後の交点数を算出し、該処理後
の交点数を走査開始点側より順次加算し、加算値の奇偶
に基づいて塗り潰し領域を判定するようにした。
において、交点の交点数、方向値、水平フラッグを算出
し、これらに基づいて各交点の方向値和および水平フラ
ッグ和を算出し、前記交点数、方向値和、および水平フ
ラッグ和に基づいて処理後の交点数を算出し、該処理後
の交点数を走査開始点側より順次加算し、加算値の奇偶
に基づいて塗り潰し領域を判定するようにした。
(2)非ゼロ巻数規則に従って判定する図形の塗り潰し
方法において、交点の方向値および水平フラッグを算出
し、これらに基づいて各交点の方向値和および水平フラ
ッグ和を算出し、該方向値和および水平フラッグ和に基
づいて塗り潰し領域を判定するようにした。
方法において、交点の方向値および水平フラッグを算出
し、これらに基づいて各交点の方向値和および水平フラ
ッグ和を算出し、該方向値和および水平フラッグ和に基
づいて塗り潰し領域を判定するようにした。
上記した各構成によれば、方向値和および水平フラッグ
和を参照して図形の内部/外部を判定するので、水平パ
スが重なる図形であっても正確な塗り潰しが可能になる
。
和を参照して図形の内部/外部を判定するので、水平パ
スが重なる図形であっても正確な塗り潰しが可能になる
。
(実施例)
以下、第2図に示した形状の図形を奇・偶規則に従って
塗り潰す場合の塗り潰し方法の基本概念を、第1図のフ
ローチャートを用いて説明する。
塗り潰す場合の塗り潰し方法の基本概念を、第1図のフ
ローチャートを用いて説明する。
第2図において、符号T1〜T9は図形の頂点、符号s
−s はパスP12〜P91と各走査線■〜■と
の交点を表している。
−s はパスP12〜P91と各走査線■〜■と
の交点を表している。
ステップ5−10では、パスと走−査線との交点情報が
算出される。交点情報とは、■交点のX座標、■交点数
、■方向値、■水平フラッグの4つのパラメータから成
り、算出結果は第4図の様になる。
算出される。交点情報とは、■交点のX座標、■交点数
、■方向値、■水平フラッグの4つのパラメータから成
り、算出結果は第4図の様になる。
■交点のX座標
交点のX座標とは、走査線と平行なX軸上での各交点S
1□〜S4゜の座標である。
1□〜S4゜の座標である。
■交点数
交点数とは、交点での走査線とパスとの交差数を、その
交点位置が、 (a)パス同士の接続点のうち、連続点の場合は“1“ (b)パス同士の接続点のうち、連続点以外の場合は“
2”(c)接続点以外の場合は“1”としたときの、こ
れらの同一座標上での合計本数である。
交点位置が、 (a)パス同士の接続点のうち、連続点の場合は“1“ (b)パス同士の接続点のうち、連続点以外の場合は“
2”(c)接続点以外の場合は“1”としたときの、こ
れらの同一座標上での合計本数である。
したがって、1本のパスの両端点以外で走査線が交差す
れば交点数は“1°となり、2本のパスがそれぞれの両
端点以外で交差しているときに、該交差部分で走査線が
交差すれば交点数は“2′となる。また、極点(極大点
および極小点)のように、2本のパスの接続点での交点
数は“2゛となる。ただし、後に例示して説明するよう
に、接続点であっても連続点では1″となる。
れば交点数は“1°となり、2本のパスがそれぞれの両
端点以外で交差しているときに、該交差部分で走査線が
交差すれば交点数は“2′となる。また、極点(極大点
および極小点)のように、2本のパスの接続点での交点
数は“2゛となる。ただし、後に例示して説明するよう
に、接続点であっても連続点では1″となる。
例えば交点S2□では、走査線■が下向きパスP1□と
のみ交差するので交点数は“1”、交点S では、走査
線■が上向きパスP23の終点および水平パスP34の
始点と交差するので交点数は“ど、交点S は、下向き
パスP12と上向きパスP9、との接続点であり、極大
点なので交点数は“2”となる。
のみ交差するので交点数は“1”、交点S では、走査
線■が上向きパスP23の終点および水平パスP34の
始点と交差するので交点数は“ど、交点S は、下向き
パスP12と上向きパスP9、との接続点であり、極大
点なので交点数は“2”となる。
また、交点S42は下向きパスP45と下向きパスP5
6との接続点であるが、交点S4゜(頂点T5)は、そ
の前後の頂点T4.T8のY座標との関係が、T4くT
5くT6であることから連続点と判定されて交点数は“
1”となる。
6との接続点であるが、交点S4゜(頂点T5)は、そ
の前後の頂点T4.T8のY座標との関係が、T4くT
5くT6であることから連続点と判定されて交点数は“
1”となる。
このように連続点とは、交点のY座標Ynと該交点を一
方の端点とする2本のパスの他方の端点のY座標Yn−
1、Yn+1とが、Yn−1<Yn <Yn+1あるい
はYn−1>Yn >Yn+1の関係を有する頂点であ
り、このような連続点においでは、これを上端点とする
パスまたは下端点とするパスは交点数に加算しない。
方の端点とする2本のパスの他方の端点のY座標Yn−
1、Yn+1とが、Yn−1<Yn <Yn+1あるい
はYn−1>Yn >Yn+1の関係を有する頂点であ
り、このような連続点においでは、これを上端点とする
パスまたは下端点とするパスは交点数に加算しない。
■方向値
方向値とは、各パスを走査線の間隔で複数個のパスに分
割したときに、各パスごとに設定される変数であり、以
下のように定義される。
割したときに、各パスごとに設定される変数であり、以
下のように定義される。
パスが上向きの場合;パスの向き一1
パスが下向きの場合−パスの向きm−1パスが水平の場
合 ;パスの向き一〇 としたとき、 パスが上端または下端; 方向値−パスの向き×1 パスが上端と下端との間; 方向値−パスの向き×2 として定義される。
合 ;パスの向き一〇 としたとき、 パスが上端または下端; 方向値−パスの向き×1 パスが上端と下端との間; 方向値−パスの向き×2 として定義される。
換言すれば、方向値は交点位置に応じて以下のようにな
る。
る。
(a)交点位置が上向きパスの端点てあれば“1”(b
)交点位置が下向きパスの端点てあれば“−1゜(c)
交点位置が上向きパスの端点以外であれば(d)交点位
置が下向きパスの端点以外であれば一2″ そして、これらの同一座標上での合計数が該交点の方向
値となる。
)交点位置が下向きパスの端点てあれば“−1゜(c)
交点位置が上向きパスの端点以外であれば(d)交点位
置が下向きパスの端点以外であれば一2″ そして、これらの同一座標上での合計数が該交点の方向
値となる。
例えば交点S1□では、走査線Iが下向きパスP12の
始点およびパスP9、の終点と交差するので方向値は以
下のようになる。
始点およびパスP9、の終点と交差するので方向値は以
下のようになる。
方向値−パスの向き[−11XI
十パスの向き[1]Xi
O
交点S2、は、走査線■と下向きパスP12の端点間と
の交点であるので以下のようになる。
の交点であるので以下のようになる。
方向値−パスの向き[−1]X2
w−2
交点S22では、走査線■が上向きパスP23の終点お
よび水平パスP34の始点と交差するが、水平パスP3
4のパスの向きは“0°なので上向きパスP23のみを
考慮して以下のようになる。
よび水平パスP34の始点と交差するが、水平パスP3
4のパスの向きは“0°なので上向きパスP23のみを
考慮して以下のようになる。
方向値−パスの向き[1]X1
■水平フラッグ
水平フラッグは以下のように定義される。
水平パス以外; “0”
水平パスでは、その走査線上での左端より数えてm番目
の水平パスに関し、 左端点; m 右端点; −m (但し、mは整数) すなわち、水平パスP34とP89のように、一走査線
上に2本の水平パスが存在する場合、左端より数えて1
番目の水平パスP の左端点S22では“1′、右端点
S24では“−1″、2番目の水平パスP の左端点S
では“2“、右端点”25では“−2“となる。
の水平パスに関し、 左端点; m 右端点; −m (但し、mは整数) すなわち、水平パスP34とP89のように、一走査線
上に2本の水平パスが存在する場合、左端より数えて1
番目の水平パスP の左端点S22では“1′、右端点
S24では“−1″、2番目の水平パスP の左端点S
では“2“、右端点”25では“−2“となる。
次いで、ステップS11では、前記交点情報に基づいて
、各走査線ごとに■方向値和および■水平フラッグ和が
算出される。
、各走査線ごとに■方向値和および■水平フラッグ和が
算出される。
以下、方向値和および水平フラッグ和の算出方法、なら
びにそれぞれの物理的意義について説明する。なお、そ
れぞれの算出結果は第4図のようになる。
びにそれぞれの物理的意義について説明する。なお、そ
れぞれの算出結果は第4図のようになる。
■方向値和
方向値和は、走査線ごとの各交点の方向値をX座標の昇
順(小さい順)で加算することによって求められる。
順(小さい順)で加算することによって求められる。
例えば、交点S2□は走査線■に関してX座標上での最
小交点なので、方向値“−2”がそのまま方向値和とな
り、交点822点では、交点S2□の方向値和に交点S
2□の方向値“1“が加算されて一1″となる。
小交点なので、方向値“−2”がそのまま方向値和とな
り、交点822点では、交点S2□の方向値和に交点S
2□の方向値“1“が加算されて一1″となる。
同様に、交点823点では、交点S2□の方向値和に交
点S23の方向値“1”が加算されて方向値和は0”と
なる。
点S23の方向値“1”が加算されて方向値和は0”と
なる。
このようにして算出される方向値和は、物理的には、方
向値和が0“から“0以外”に変化する交点が図形の外
側から内側への変化点であることを示し、′0以外”か
ら110111に変化する交点が図形の内側から外側へ
の変化点であることを示す。
向値和が0“から“0以外”に変化する交点が図形の外
側から内側への変化点であることを示し、′0以外”か
ら110111に変化する交点が図形の内側から外側へ
の変化点であることを示す。
■水平フラッグ和
水平フラッグ和は、走査線ごとの各交点の水平フラッグ
をX座標の昇順で加算することによって求められる。
をX座標の昇順で加算することによって求められる。
例えば、交点S2□は走査線■に関してX座標上での最
小交点なので、水平フラッグ0”がそのまま水平フラッ
グ和となり、交点S2□点では、交点S の水平フラッ
グ和に交点S2□の水平フラッグが加算されて“1′と
なる。
小交点なので、水平フラッグ0”がそのまま水平フラッ
グ和となり、交点S2□点では、交点S の水平フラッ
グ和に交点S2□の水平フラッグが加算されて“1′と
なる。
同様に、交点S 点では、交点S2゜の水平フララグ和
に交点S23の水平フラッグが加算されて“3”となる
。
に交点S23の水平フラッグが加算されて“3”となる
。
このようにして算出される水平フラッグ和は、物理的に
は第9図に表したような意義を有する。
は第9図に表したような意義を有する。
例えば、交点S2゜、は、直前の水平フラッグ和が“0
“、現時点の水平フラッグ和が1″であるので、水平パ
スの左端点と判定される。
“、現時点の水平フラッグ和が1″であるので、水平パ
スの左端点と判定される。
また、交点S25は、直前の水平フラッグ和が“2“、
現時点の水平フラッグ和が“0”であるので、水平パス
の右端点と判定される。
現時点の水平フラッグ和が“0”であるので、水平パス
の右端点と判定される。
また、交点S33は、直前の水平フラッグ和が“0”、
現時点の水平フラッグ和が“0“であるので、水平パス
とは交差しないと判定される。
現時点の水平フラッグ和が“0“であるので、水平パス
とは交差しないと判定される。
次いで、ステップS12では処理後の交点数が算出され
る。
る。
■処理後の交点数
処理後の交点数とは、同一走査線上で複数の水平パスが
重なるような場合であっても、交点数の奇偶に基づいて
塗り潰し領域が確定できるように、前に求めた交点数を
前記方向値和および水平フラッグ和を利用して修正する
処理であり、以下のような条件に基づいて行われる。ケ
ース1;交点が水平パスと無関係 先に求めた交点数を、そのまま処理後の交点数として登
録 ケース2;交点が水平パスの左端点を含む直前までの方
向値和−〇=交点数を“1゛に修正 直前までの方向値和≠〇−交点数を“2°に修正 ケース3;交点が水平パスと交差 交点数を“2”に修正 ケース4;交点が水平パスの右端点を含む現時点までの
方向値和−〇=交点数を“1“に修正 現時点までの方向値和≠〇−交点数を“2”に修正 以上のルールに従って、各交点での処理後の交点数の算
出方法について具体的に説明する。
重なるような場合であっても、交点数の奇偶に基づいて
塗り潰し領域が確定できるように、前に求めた交点数を
前記方向値和および水平フラッグ和を利用して修正する
処理であり、以下のような条件に基づいて行われる。ケ
ース1;交点が水平パスと無関係 先に求めた交点数を、そのまま処理後の交点数として登
録 ケース2;交点が水平パスの左端点を含む直前までの方
向値和−〇=交点数を“1゛に修正 直前までの方向値和≠〇−交点数を“2°に修正 ケース3;交点が水平パスと交差 交点数を“2”に修正 ケース4;交点が水平パスの右端点を含む現時点までの
方向値和−〇=交点数を“1“に修正 現時点までの方向値和≠〇−交点数を“2”に修正 以上のルールに従って、各交点での処理後の交点数の算
出方法について具体的に説明する。
例えば走査線■に関して説明すると、交点S2□は走査
線■に関して最初の交点なので、直前までの水平フラッ
グ和は“0”、第4図に示したように現時点の水平フラ
ッグ和は“0″なので、前記第9図から水平パスとは無
関係であることが分かる。したがって前記ケース1に相
当して処理後の交点数は“1”のままである。
線■に関して最初の交点なので、直前までの水平フラッ
グ和は“0”、第4図に示したように現時点の水平フラ
ッグ和は“0″なので、前記第9図から水平パスとは無
関係であることが分かる。したがって前記ケース1に相
当して処理後の交点数は“1”のままである。
また、交点S23は直前までの水平フラッグ和は1゛、
現時点の水平フラッグ和は“3“なので、水平パスとの
交点であることが分かる。したがって前記ケース3に相
当して処理後の交点数は“2”となる。
現時点の水平フラッグ和は“3“なので、水平パスとの
交点であることが分かる。したがって前記ケース3に相
当して処理後の交点数は“2”となる。
また、交点S2.は、直前までの水平フラッグ和は“2
″、現時点の水平フラッグ和は“0#なので水平パスの
右端点であることが分かる。したがって前記ケース4に
相当し、現時点までの方向信相が“0”なので、処理後
の交点数は“1°に変更される。
″、現時点の水平フラッグ和は“0#なので水平パスの
右端点であることが分かる。したがって前記ケース4に
相当し、現時点までの方向信相が“0”なので、処理後
の交点数は“1°に変更される。
ステップS13では、前記処理後の交点数に基づいて塗
り潰し処理が行われる。
り潰し処理が行われる。
第3図は処理後の交点数に基づいた塗り潰し結果を示し
た図であり、ここでは、図面を見易くするために、走査
線I〜走査線■に関する部分のみが塗り潰されるように
示している。
た図であり、ここでは、図面を見易くするために、走査
線I〜走査線■に関する部分のみが塗り潰されるように
示している。
例えば走査線■に関しでは、走査開始から交点S2□に
達するまでは、交点数が“0” (偶数)なので塗り潰
しが行われず、交点s2、では交点数が“1゛ (奇数
)となるので塗り清しが開始される。
達するまでは、交点数が“0” (偶数)なので塗り潰
しが行われず、交点s2、では交点数が“1゛ (奇数
)となるので塗り清しが開始される。
交点S22、S23、S24では、それぞれ交点数“2
”が加算されるが、交点数の累計は奇数なので塗り潰し
が継続され、交点S25では交点数“1′が加算されて
累計が偶数となるので塗り潰しが終了する。
”が加算されるが、交点数の累計は奇数なので塗り潰し
が継続され、交点S25では交点数“1′が加算されて
累計が偶数となるので塗り潰しが終了する。
同様に、走査線■に関しでは、走査開始から交点S4、
に達するまでは交点数が“θ′なので塗り潰しが行われ
ず、交点S4、では交点数が“1”となるので塗り潰し
が開始される。交点S42に達すると、再び交点数の累
計が偶数となって塗り潰しが終了する。
に達するまでは交点数が“θ′なので塗り潰しが行われ
ず、交点S4、では交点数が“1”となるので塗り潰し
が開始される。交点S42に達すると、再び交点数の累
計が偶数となって塗り潰しが終了する。
以下、第7図に示した形状の図形を塗り潰す場合の塗り
潰し方法の一実施例を、第5図のフローチャートを参照
して説明する。
潰し方法の一実施例を、第5図のフローチャートを参照
して説明する。
ステップS1では、初めに表示図形の登録が行われる。
図形の登録は、図形が多角形であれば、全ての頂点座標
を一筆書きで該図形を書くときの順序で入力することに
よって行われ、図形が円ないし楕円形であれば、中心座
標、半径、開き角度等を入力することによって行われる
。
を一筆書きで該図形を書くときの順序で入力することに
よって行われ、図形が円ないし楕円形であれば、中心座
標、半径、開き角度等を入力することによって行われる
。
なお、図形が一部に曲線部分を有するような場合には、
該曲線部分は楕円の一部分と見なし、前記と同様に、そ
の中心座標、半径、開き角度などを入力したり、あるい
は、曲線パス作成に関する、いわゆるベゼー(Bezi
er)曲線を利用して登録される。
該曲線部分は楕円の一部分と見なし、前記と同様に、そ
の中心座標、半径、開き角度などを入力したり、あるい
は、曲線パス作成に関する、いわゆるベゼー(Bezi
er)曲線を利用して登録される。
本実施例の場合、第7図に示した頂点座標T1(4,7
)〜T9 (11,4)が順次登録され、このときの入
力順序によって、各頂点を結ぶパスの向きが定義される
。
)〜T9 (11,4)が順次登録され、このときの入
力順序によって、各頂点を結ぶパスの向きが定義される
。
ステップS2では、円形図形や曲線を有する図形の曲線
部分が直線近似されて多角形に変形され、その全ての頂
点が頂点座標として登録される。
部分が直線近似されて多角形に変形され、その全ての頂
点が頂点座標として登録される。
ステップS3では、以上のようにして登録された頂点座
標に関して、第8図(a)に示したような頂点リストが
作成される。
標に関して、第8図(a)に示したような頂点リストが
作成される。
ステップS4では、前記頂点リストに基づいてソートリ
ストが作成される。
ストが作成される。
ソートリストとは、頂点リストに登録された全ての頂点
座標を、Y座標に関する降順(大きい順)で検出し、以
下の3つの条件のいずれがを満足する座標のみを順次登
録したものである。
座標を、Y座標に関する降順(大きい順)で検出し、以
下の3つの条件のいずれがを満足する座標のみを順次登
録したものである。
条件1;上向きラインの終点
条件2;下向きラインの始点
条件3;水平ラインの始点
第8図(b)は本実施例でのソートリストである。
例えば頂点座標T1は下向きラインの始点かつ上向きラ
インの終点であり、頂点座標T3は水平ラインの始点で
あるので前記登録条件を満足し、ソートリストに登録さ
れる。
インの終点であり、頂点座標T3は水平ラインの始点で
あるので前記登録条件を満足し、ソートリストに登録さ
れる。
一方、頂点座標T2、T6およびT9は、前記したいず
れの条件も満足しないのでソートリストに登録されない
。
れの条件も満足しないのでソートリストに登録されない
。
以上のようにしてソートリストが作成されると、ステッ
プS5では塗り潰し処理が実行される。
プS5では塗り潰し処理が実行される。
以下、第6図のフローチャートを参照して本発明の塗り
潰し処理について詳細に説明する。
潰し処理について詳細に説明する。
ステップS50では、ソートリストの最上位頂点のY座
標位置、すなわち、頂点座標T1のY座標、Y−7の位
置に走査線が設定される。
標位置、すなわち、頂点座標T1のY座標、Y−7の位
置に走査線が設定される。
ステップS51では、ソートリストでの次項点が検索さ
れ、本実施例では頂点座標T3が次項点として登録され
る。
れ、本実施例では頂点座標T3が次項点として登録され
る。
ステップS52では、現頂点を端点とする全てのパスに
ついてパスリストが作成される。現頂点が頂点T であ
れば、頂点T からT2へ伸びたII パスP に関するパスリストと、頂点T9からT へ伸
びたパスP91に関するパスリストとが作成される。
ついてパスリストが作成される。現頂点が頂点T であ
れば、頂点T からT2へ伸びたII パスP に関するパスリストと、頂点T9からT へ伸
びたパスP91に関するパスリストとが作成される。
このパスリストには、パスが水平パスの場合には、その
最小値(左端点)および最大値(右端点)が登録され、
水平パス以外のパスの場合は、パスと走査線との交点座
標、パスの始点座標、パスの終点座標、パスの向きを表
すコントロールフラグ(cF) 、パスの走査線との交
差状況を表すパスコンデイション(P C)などが登録
される。
最小値(左端点)および最大値(右端点)が登録され、
水平パス以外のパスの場合は、パスと走査線との交点座
標、パスの始点座標、パスの終点座標、パスの向きを表
すコントロールフラグ(cF) 、パスの走査線との交
差状況を表すパスコンデイション(P C)などが登録
される。
このうち、CFには前記したパスの向きが登録される。
パスの向きはパスの両端点のY座標を比較することによ
って判定され、たとえば、始点のY座標が終点のそれよ
りも大きければ下向きパスと判定されて“−1”が登録
され、上向きパスの場合は“1°が登録される。
って判定され、たとえば、始点のY座標が終点のそれよ
りも大きければ下向きパスと判定されて“−1”が登録
され、上向きパスの場合は“1°が登録される。
また、前記PCは交差状況に応じて以下のように定義さ
れる。
れる。
交点が連続点 、PC−3
交点が連続点以外の頂点、PC−1
交点が上記以外 、PC−2
なお、このような交差状況は、交点とその前後のパスの
端点座標とを比較することによって判定され、例えば前
後のパスの端点のY座標が共に交点でのY座標より小さ
ければ、交点が極点(極大点)と判定され、交点のY座
標が前後のパスの端点のY座標の間にあれば連続点と判
定される。
端点座標とを比較することによって判定され、例えば前
後のパスの端点のY座標が共に交点でのY座標より小さ
ければ、交点が極点(極大点)と判定され、交点のY座
標が前後のパスの端点のY座標の間にあれば連続点と判
定される。
このようにして求められたPCは、前記第1図に関して
説明したステップS10での交点数の算出処理で利用さ
れる。
説明したステップS10での交点数の算出処理で利用さ
れる。
ステップS53では、以上のようにして作成された水平
パスおよび標準パスのパスリストが、それぞれパラレル
リストおよびソートラインリストへ登録される。
パスおよび標準パスのパスリストが、それぞれパラレル
リストおよびソートラインリストへ登録される。
走査線と交差する頂点を端点とするパスリストの作成が
終了すると、ステップS54では、現走査線が現頂点と
次項点との間にあるか否かが判定される。この判定が肯
定の場合にはステップS55へ進み、ここでは前記ソー
トラインリストおよびパラレルリストに登録されたパス
リストに基づいて交点情報が作成される。
終了すると、ステップS54では、現走査線が現頂点と
次項点との間にあるか否かが判定される。この判定が肯
定の場合にはステップS55へ進み、ここでは前記ソー
トラインリストおよびパラレルリストに登録されたパス
リストに基づいて交点情報が作成される。
例えば、現頂点がT1であれば、走査線が頂点T1と次
項点T3との間にあると判定され、ステップS55にお
いて各パスと走査線との交点に関する前記交点情報(第
4図の走査線I欄参照)が、前記パスリストに基づいて
作成される。
項点T3との間にあると判定され、ステップS55にお
いて各パスと走査線との交点に関する前記交点情報(第
4図の走査線I欄参照)が、前記パスリストに基づいて
作成される。
パスリストと交点情報との関係を第10図に示す。
水平パス以外のパスでは、例えば、交点情報のX座標は
パスリストの交点座標に基づいて求められ、交点情報の
方向値はパスリストの始点座標、終点座標、CFに基づ
いて求められる。一方、水平パスでは、各交点情報はパ
ラレルリストに登録されているパスリストの最大値およ
び最小値に基づいて求められる。
パスリストの交点座標に基づいて求められ、交点情報の
方向値はパスリストの始点座標、終点座標、CFに基づ
いて求められる。一方、水平パスでは、各交点情報はパ
ラレルリストに登録されているパスリストの最大値およ
び最小値に基づいて求められる。
ステップ356では、現在の走査線の次の走査線と各パ
スとの交点座標が計算によって算出され、ソートライン
リストに登録されたパスリスト中の交点座標が該算出さ
れた交点座標に更新される。
スとの交点座標が計算によって算出され、ソートライン
リストに登録されたパスリスト中の交点座標が該算出さ
れた交点座標に更新される。
ステップS57では、現在の走査線との交点が、各パス
の下端点であるか否かが判定され、下端点であると当該
パスのパスリストが前記ソートラインリストあるいはパ
ラレルリストから削除される。
の下端点であるか否かが判定され、下端点であると当該
パスのパスリストが前記ソートラインリストあるいはパ
ラレルリストから削除される。
ステップ55gでは、当該走査線に関する全ての交点に
ついての交点情報の作成が終了したが否かが211定さ
れる。
ついての交点情報の作成が終了したが否かが211定さ
れる。
前記交点座標の作成が終了していない場合は前記ステッ
プS55、S56、S57の処理が繰り返され、終了し
ていると、ステップS59において前記方向値和、水平
ブラッグ和、および処理後の交点数が算出(第4図参照
)される。
プS55、S56、S57の処理が繰り返され、終了し
ていると、ステップS59において前記方向値和、水平
ブラッグ和、および処理後の交点数が算出(第4図参照
)される。
ステップS60では、前記処理後の交点数に基づいて塗
り潰し区間が決定されて塗り潰し処理が実行される。ス
テップS61では走査位置が更新され、その後、当該処
理はステップS54へ戻る。
り潰し区間が決定されて塗り潰し処理が実行される。ス
テップS61では走査位置が更新され、その後、当該処
理はステップS54へ戻る。
前記のように、現頂点がT1の場合には、ステップS6
0で該頂点T1が塗り潰され、ステップS61で次の走
査位置に移るので、前記走査線Iより1走査線幅下がっ
た走査位置において、前記ステップS54〜S61の処
理が行われる。
0で該頂点T1が塗り潰され、ステップS61で次の走
査位置に移るので、前記走査線Iより1走査線幅下がっ
た走査位置において、前記ステップS54〜S61の処
理が行われる。
以上の処理が繰り返し行われてパスP12とP91との
間が順次塗り潰される。その後、走査位置が前記次項点
T3上を通ると判定されると、すなわち、ステップS5
4において現走査線が現頂点と次項点との間にないと判
定されると、ステップS62では当該図形に関する塗り
潰し処理が終了したか否かが判定され、終了した場合に
は当該処理を終了し、終了していない場合には、ステッ
プS63において走査位置を次項点に設定した後にステ
ップS52へ戻り、前記した各処理が繰り返される。
間が順次塗り潰される。その後、走査位置が前記次項点
T3上を通ると判定されると、すなわち、ステップS5
4において現走査線が現頂点と次項点との間にないと判
定されると、ステップS62では当該図形に関する塗り
潰し処理が終了したか否かが判定され、終了した場合に
は当該処理を終了し、終了していない場合には、ステッ
プS63において走査位置を次項点に設定した後にステ
ップS52へ戻り、前記した各処理が繰り返される。
また、上記の処理がさらに続行され、前記ステップS6
2の判定が肯定になると、当該処理は終了する。
2の判定が肯定になると、当該処理は終了する。
次に、第12図に示した形状の図形を非ゼロ巻数規則に
従って塗り潰す場合の塗り潰し方法の基本概念を、第1
1図のフローチャートを用いて説明する。
従って塗り潰す場合の塗り潰し方法の基本概念を、第1
1図のフローチャートを用いて説明する。
ステップS81では、例えば走査線■との交点S5□、
S5゜、S53、S54に関して前記と同様にして交点
情報が算出されるが、非ゼロ巻数規則では交点数が不要
なので、交点のX座標、方向値、および水平フラッグの
3つのパラメータが算出される。
S5゜、S53、S54に関して前記と同様にして交点
情報が算出されるが、非ゼロ巻数規則では交点数が不要
なので、交点のX座標、方向値、および水平フラッグの
3つのパラメータが算出される。
ステップS82では、前記と同様にして方向値和および
水平フラッグ和が算出されるが、処理後の交点数は不要
であるので算出されない。
水平フラッグ和が算出されるが、処理後の交点数は不要
であるので算出されない。
第13図に前記算出結果を示す。なお、第13図では、
奇・偶規則による判定結果との相違が明らかになるよう
に、交点数および処理後の交点数も記載しである。
奇・偶規則による判定結果との相違が明らかになるよう
に、交点数および処理後の交点数も記載しである。
ステップS83では、前記算出結果に基づいて塗り潰し
処理が行われる。本実施例では、方向値和が“0”から
“0”以外に変わった点が内部区間の左端点と判定され
、方向値和が“0゛以外から“0“に変わり、かつ、そ
のときの水平フラッグ和が“0″であると内部区間の右
端点と判定される。また、上記以外の位置は外部区間と
判定される。
処理が行われる。本実施例では、方向値和が“0”から
“0”以外に変わった点が内部区間の左端点と判定され
、方向値和が“0゛以外から“0“に変わり、かつ、そ
のときの水平フラッグ和が“0″であると内部区間の右
端点と判定される。また、上記以外の位置は外部区間と
判定される。
したがって、走査線Vに関しでは、交点S51からS5
4までの区間が全て内部区間と判定される。
4までの区間が全て内部区間と判定される。
なお、奇・偶規則では、第13図に示したように、交点
S からS52までの区間と、交点S53からS54ま
での区間が内部区間と判定され、交点S5□から交点S
53までの区間は外部区間と判定される。
S からS52までの区間と、交点S53からS54ま
での区間が内部区間と判定され、交点S5□から交点S
53までの区間は外部区間と判定される。
(発明の効果)
以上の説明から明らかな様に、本発明によれば、奇・偶
規則や非ゼロ巻数規則に従った塗り潰し処理において、
方向値和および水平フラッグ和等を参照して内部区間を
判定するようにしたので、頂点が極点や連続点である図
形はもちろんのこと、水平パスが重なる図形であっても
正確な塗り潰しが可能になる。
規則や非ゼロ巻数規則に従った塗り潰し処理において、
方向値和および水平フラッグ和等を参照して内部区間を
判定するようにしたので、頂点が極点や連続点である図
形はもちろんのこと、水平パスが重なる図形であっても
正確な塗り潰しが可能になる。
第1図は本発明の一実施例の基本概念を説明するための
フローチャート、第2.7図は本発明の一実施例による
塗り潰し対象図形を示した図、第3図は塗り潰し結果を
示した図、第4図は第2図に関する交点情報を示した図
、第5.6図は本発明の一実施例のフローチャート、第
8図は頂点リストおよびソートリストを示した図、第9
図は水平フラッグ和の物理的意義を示した図、第10図
はパスリストと交点情報との関係を示した図、第11図
は本発明の他の実施例の基本概念を説明するためのフロ
ーチャート、第12図は他の実施例による塗り潰し対象
図形を示した図、第13図は第12図に関する交点情報
を示した図である。 代理人弁理士 平木通人 外1名 第 図 第 図 第 図 第2 図 第3図 第12図 第 図 第 図 第 図 第 図 ・水平パス以外の場合 ・水平パスの場合 (パスリスト) (交点情報) (パスリスト) (交点情報)
フローチャート、第2.7図は本発明の一実施例による
塗り潰し対象図形を示した図、第3図は塗り潰し結果を
示した図、第4図は第2図に関する交点情報を示した図
、第5.6図は本発明の一実施例のフローチャート、第
8図は頂点リストおよびソートリストを示した図、第9
図は水平フラッグ和の物理的意義を示した図、第10図
はパスリストと交点情報との関係を示した図、第11図
は本発明の他の実施例の基本概念を説明するためのフロ
ーチャート、第12図は他の実施例による塗り潰し対象
図形を示した図、第13図は第12図に関する交点情報
を示した図である。 代理人弁理士 平木通人 外1名 第 図 第 図 第 図 第2 図 第3図 第12図 第 図 第 図 第 図 第 図 ・水平パス以外の場合 ・水平パスの場合 (パスリスト) (交点情報) (パスリスト) (交点情報)
Claims (1)
- 【特許請求の範囲】 [1]コンピュータグラフィック装置の表示装置上に表
示された図形の塗り潰し領域を、奇・偶規則に従って判
定する図形の塗り潰し方法において、走査線と図形との
交点に関する情報を下記の(1)〜(6)の処理によっ
て求め、次いで、(7)の処理によって塗り潰し領域を
判定するようにしたことを特徴とする図形の塗り潰し方
法。 (1)各交点の交点数の算出 交点での走査線とパスとの交差数を、その交点位置が、 (a)パス同士の接続点のうち、連続点の場合は“1” (b)パス同士の接続点のうち、連続点以外の場合は“
2” (c)接続点以外の場合は“1” とし、これらの同一座標上での合計数を該交点の交点数
とする。 (2)各交点での方向値の算出 交点での各パスの方向値を、その交点位置が、(a)上
向きパスの端点では“1” (b)下向きパスの端点では“−1” (c)上向きパスの端点以外では“2” (d)下向きパスの端点以外では“−2” とし、これらの同一座標上での合計数を該交点の方向値
とする。 (3)各交点の水平フラッグの算出 水平パス以外との交点では“0”、水平パスの端点では
、その走査線上での走査開始点より数えてm番目の水平
パスに関し、走査開始点側の端点を“m”、反対側の端
点を“−m”とする(但し、mは整数)。 (4)各交点の方向値和の算出 各走査線上の各交点の方向値を走査開始点側より順次加
算して、各交点の方向値和を求める。 (5)各交点の水平フラッグ和の算出 各走査線上の各交点の水平フラッグを走査開始点側より
順次加算して、各交点の水平フラッグ和を求める。 (6)処理後の各交点の交点数の算出 前記方向値和および水平フラッグ和に基づいて前記交点
数を以下のように修正し、処理後の交点数とする。 (a)交点が水平パスと無関係の場合は交点数を処理後
の交点数とする。 (b)交点が水平パスの左端点を含む場合、直前までの
方向値和が“0”であれば“1”とし、“0”以外であ
れば“2”とする。 (c)交点が水平パスと交差する場合は“2”とする。 (d)交点が水平パスの右端点を含む場合、現時点まで
の方向値和が“0”であれば“1”とし、“0”以外で
あれば“2”とする。 (7)塗り潰し領域の判定 各走査線上の各交点の処理後の交点数を走査開始点側よ
り順次加算し、その奇偶によって内部区間を判定する。 [2]コンピュータグラフィック装置の表示装置上に表
示された図形の塗り潰し領域を、非ゼロ巻数規則に従っ
て判定する図形の塗り潰し方法において、 走査線と図形との交点に関する情報を下記の(1)〜(
4)の処理によって求め、次いで、(5)の処理によっ
て塗り潰し領域を判定するようにしたことを特徴とする
図形の塗り潰し方法。 (1)各交点での方向値の算出 交点での各パスの方向値を、その交点位置が、(a)上
向きパスの端点では“1” (b)下向きパスの端点では“−1” (c)上向きパスの端点以外では“2” (d)下向きパスの端点以外では“−2” とし、これらの同一座標上での合計数を該交点の方向値
とする。 (2)各交点の水平フラッグの算出 水平パス以外との交点では“0”、水平パスの端点では
、その走査線上での走査開始点より数えてm番目の水平
パスに関し、走査開始点側の端点を“m’、反対側の端
点を“−m”とする(但し、mは整数)。 (3)各交点の方向値和の算出 各走査線上の各交点の方向値を走査開始点側より順次加
算して、各交点の方向値和を求める。 (4)各交点の水平フラッグ和の算出 各走査線上の各交点の水平フラッグを走査開始点側より
順次加算して、各交点の水平フラッグ和を求める。 (5)塗り潰し領域の判定 方向値和が“0”から“0”以外に変化する交点と、方
向値和が“0”以外から“0”に変化し、かつ、そのと
きの水平フラッグ和が“0”である交点との間を内部区
間と判定する。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2206869A JPH0719295B2 (ja) | 1990-08-06 | 1990-08-06 | 図形の塗り潰し方法 |
| US08/357,988 US5450534A (en) | 1990-08-06 | 1994-12-16 | Method of finding and painting a region of a graphics figure |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2206869A JPH0719295B2 (ja) | 1990-08-06 | 1990-08-06 | 図形の塗り潰し方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0492986A true JPH0492986A (ja) | 1992-03-25 |
| JPH0719295B2 JPH0719295B2 (ja) | 1995-03-06 |
Family
ID=16530390
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2206869A Expired - Fee Related JPH0719295B2 (ja) | 1990-08-06 | 1990-08-06 | 図形の塗り潰し方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5450534A (ja) |
| JP (1) | JPH0719295B2 (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5684941A (en) * | 1994-09-01 | 1997-11-04 | Cirrus Logic, Inc. | Interpolation rendering of polygons into a pixel grid |
| US5710879A (en) * | 1995-06-08 | 1998-01-20 | Hewlett-Packard Company | Method and apparatus for fast quadrilateral generation in a computer graphics system |
| AUPP771798A0 (en) * | 1998-12-14 | 1999-01-14 | Canon Kabushiki Kaisha | Overlapping edge blends and other texture mapped regions |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62192878A (ja) * | 1986-02-20 | 1987-08-24 | Nippon Gakki Seizo Kk | 多角形の塗りつぶし方法 |
| JPH01196675A (ja) * | 1988-01-30 | 1989-08-08 | Toshiba Corp | パターンデータ生成方式 |
-
1990
- 1990-08-06 JP JP2206869A patent/JPH0719295B2/ja not_active Expired - Fee Related
-
1994
- 1994-12-16 US US08/357,988 patent/US5450534A/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0719295B2 (ja) | 1995-03-06 |
| US5450534A (en) | 1995-09-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0492986A (ja) | 図形の塗り潰し方法 | |
| JPH04346182A (ja) | 多角形の識別方法、多角形を識別するシステム | |
| JP3884901B2 (ja) | データ配置方法および2次元図面データ処理システム | |
| JP3057935B2 (ja) | 文字出力装置 | |
| JP2718401B2 (ja) | 線対称図形整形装置及び任意の数の対称軸の全てについて線対称な図形を生成する方法 | |
| CN104424841A (zh) | 地图显示装置以及地图上的字符串显示方法 | |
| JP3332476B2 (ja) | 図形修正方法及びそれを実施する情報処理装置 | |
| US5014223A (en) | Method of filling inner region of a graphic with traces of imaging spot | |
| CN103363916B (zh) | 一种信息处理方法及处理设备 | |
| JPH05224651A (ja) | 文字間隔調整方式 | |
| JP2003288606A (ja) | 領域判別装置及びプログラム | |
| JP3111281B2 (ja) | 座標読み取り装置およびその走査方式 | |
| JP3485055B2 (ja) | 台形描画方法および台形描画装置 | |
| CN119783260B (zh) | 基于自适应网格和aabb-gjk碰撞检测的船舶曲面分段布局方法 | |
| CN113487666B (zh) | 一种多边形链的求交方法及装置 | |
| Kalmykov | Structural analysis of contours as the sequences of the digital straight segments and of the digital curve arcs | |
| CN111174727B (zh) | 一种形貌扫描方法及系统 | |
| JPH11296687A (ja) | 直線描画装置 | |
| JP3154343B2 (ja) | 多角図形の塗り潰し表示方法 | |
| JP2637923B2 (ja) | 縞紋様の方向データの修正方法及びこれを実行するための情報処理装置並びに縞紋様のピッチデータの修正方法及びこれを実行するための情報処理装置 | |
| JP2002269576A (ja) | 線分描画方法および線分描画装置 | |
| JPH06243218A (ja) | 円弧発生方法及びその装置 | |
| US20030176992A1 (en) | Visualization method of RNA pseudoknot structures | |
| Cerm et al. | Edge routing and bundling for graphs with fixed node positions | |
| JPH1049693A (ja) | 図形処理装置並びに図形処理方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |