JPH10255062A - 多角形分割方法 - Google Patents
多角形分割方法Info
- Publication number
- JPH10255062A JPH10255062A JP6082797A JP6082797A JPH10255062A JP H10255062 A JPH10255062 A JP H10255062A JP 6082797 A JP6082797 A JP 6082797A JP 6082797 A JP6082797 A JP 6082797A JP H10255062 A JPH10255062 A JP H10255062A
- Authority
- JP
- Japan
- Prior art keywords
- polygon
- vertex
- sides
- intersection
- points
- 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.)
- Pending
Links
Landscapes
- Image Generation (AREA)
Abstract
(57)【要約】
【課題】 辺が互いに交差しない単純多角形の複数の辺
をコンピュータ等の情報処理装置にて設定し得る座標の
点で近似しながら構成した近似多角形を用いて、前記単
純多角形を前記近似多角形の任意の二つの辺上にある2
点を結ぶ直線により分割した場合においても、辺が互い
に交差しない多角形分割方法を提供すること。 【解決手段】 辺が互いに交差しない単純多角形の複数
の辺をコンピュータ等の情報処理装置にて設定し得る座
標の点で近似しながら構成した近似多角形を用いて、前
記単純多角形を前記近似多角形の任意の二つの辺上にあ
る2点を結ぶ直線により分割する場合には、その直線上
の2点のうち少なくとも1点が、単純多角形を構成する
複数の辺の内部にあるときは、その少なくとも1点を単
純多角形の複数の辺の外部若しくは辺上に変換する(S
202〜S208)。
をコンピュータ等の情報処理装置にて設定し得る座標の
点で近似しながら構成した近似多角形を用いて、前記単
純多角形を前記近似多角形の任意の二つの辺上にある2
点を結ぶ直線により分割した場合においても、辺が互い
に交差しない多角形分割方法を提供すること。 【解決手段】 辺が互いに交差しない単純多角形の複数
の辺をコンピュータ等の情報処理装置にて設定し得る座
標の点で近似しながら構成した近似多角形を用いて、前
記単純多角形を前記近似多角形の任意の二つの辺上にあ
る2点を結ぶ直線により分割する場合には、その直線上
の2点のうち少なくとも1点が、単純多角形を構成する
複数の辺の内部にあるときは、その少なくとも1点を単
純多角形の複数の辺の外部若しくは辺上に変換する(S
202〜S208)。
Description
【0001】
【発明の属する技術分野】本発明は、印刷装置やディス
プレイ装置等で採用されている多角形の内部を塗り潰す
いわゆるラスタライズ処理を高速に行うためのものであ
り、特に、その多角形を分割する処理方法に関するもの
である。
プレイ装置等で採用されている多角形の内部を塗り潰す
いわゆるラスタライズ処理を高速に行うためのものであ
り、特に、その多角形を分割する処理方法に関するもの
である。
【0002】
【従来の技術】従来から、多角形の内部を塗り潰すいわ
ゆるラスタライズ処理を高速に行うための方法や装置が
考案されており、プリンタやコンピュータ等の使用者の
仕事の効率を大きく向上させている。
ゆるラスタライズ処理を高速に行うための方法や装置が
考案されており、プリンタやコンピュータ等の使用者の
仕事の効率を大きく向上させている。
【0003】このラスタライズ処理を高速に行うため
に、前記多角形を分割する方法が、例えば、特公平1−
57390号公報に開示されている。本公報に開示され
ている方法は、任意の多角形を各頂点を通る走査線によ
って、ラスタライズ処理時間の比較的短い三角形や台形
にスラブ分割するものである。従って、この方法は、任
意の多角形を塗り潰すことができるという利点を有する
が、分割数が多い場合には、塗り潰す多角形の数も多く
なるため、処理時間が増加するという問題があった。
に、前記多角形を分割する方法が、例えば、特公平1−
57390号公報に開示されている。本公報に開示され
ている方法は、任意の多角形を各頂点を通る走査線によ
って、ラスタライズ処理時間の比較的短い三角形や台形
にスラブ分割するものである。従って、この方法は、任
意の多角形を塗り潰すことができるという利点を有する
が、分割数が多い場合には、塗り潰す多角形の数も多く
なるため、処理時間が増加するという問題があった。
【0004】そこで、この問題を解決するために、分割
する多角形を三角形や台形の代わりに、三角形や台形よ
りも形状は複雑であるが、処理時間のほぼ等しい性質を
持つ多角形に分割する方法が考案されている。例えば、
特開平5−212171号公報には、辺が互いに交差し
ていない多角形を、走査線に垂直な方向に凸状である多
角形に分割する方法が開示されている。
する多角形を三角形や台形の代わりに、三角形や台形よ
りも形状は複雑であるが、処理時間のほぼ等しい性質を
持つ多角形に分割する方法が考案されている。例えば、
特開平5−212171号公報には、辺が互いに交差し
ていない多角形を、走査線に垂直な方向に凸状である多
角形に分割する方法が開示されている。
【0005】以下、特開平5−212171号公報に開
示されている方法を、図3乃至図5を参照して説明す
る。この説明に当たって、便宜上、x軸は、紙面の水平
方向とし、y軸は、紙面の垂直方向とする。また、走査
線の方向は、x軸に平行とする。また、辺が互いに交差
していない多角形を単純多角形とし、y軸方向に凸状で
あって、辺が互いに交差していない多角形をY凸単純多
角形とする。さらに、単純多角形のy軸方向に凹状にな
っている頂点を内尖頂点とする。
示されている方法を、図3乃至図5を参照して説明す
る。この説明に当たって、便宜上、x軸は、紙面の水平
方向とし、y軸は、紙面の垂直方向とする。また、走査
線の方向は、x軸に平行とする。また、辺が互いに交差
していない多角形を単純多角形とし、y軸方向に凸状で
あって、辺が互いに交差していない多角形をY凸単純多
角形とする。さらに、単純多角形のy軸方向に凹状にな
っている頂点を内尖頂点とする。
【0006】この方法は、単純多角形をY凸単純多角形
に分割する方法であり、詳細には、単純多角形を単純多
角形のy軸方向に凹状になっている頂点と、その頂点を
通る走査線と単純多角形の辺との交点とを両端点とする
線分によって分割してY凸単純多角形とする方法であ
る。
に分割する方法であり、詳細には、単純多角形を単純多
角形のy軸方向に凹状になっている頂点と、その頂点を
通る走査線と単純多角形の辺との交点とを両端点とする
線分によって分割してY凸単純多角形とする方法であ
る。
【0007】図3は、単純多角形をY凸単純多角形に分
割する方法を説明する説明図である。図3において、単
純多角形は、頂点P1,頂点P2,頂点P3,頂点P
4,頂点P5、頂点P6及び頂点P1を順次に結んだ太
線で示した多角形である。まず、この単純多角形を内尖
頂点である頂点P2を通りx軸に平行な走査線L1によ
って分割する。、すなわち、単純多角形を頂点P2と、
走査線L1と交差する単純多角形の辺の交点K1とを結
んだ線分によって分割する。次に、走査線L1により分
割された単純多角形のうち、内尖頂点を有する単純多角
形を内尖頂点である頂点P5を通りx軸に平行な走査線
L2によって分割する。すなわち、単純多角形を頂点P
5と、走査線L2と交差する単純多角形の辺の交点K2
とを結んだ線分によって分割する。
割する方法を説明する説明図である。図3において、単
純多角形は、頂点P1,頂点P2,頂点P3,頂点P
4,頂点P5、頂点P6及び頂点P1を順次に結んだ太
線で示した多角形である。まず、この単純多角形を内尖
頂点である頂点P2を通りx軸に平行な走査線L1によ
って分割する。、すなわち、単純多角形を頂点P2と、
走査線L1と交差する単純多角形の辺の交点K1とを結
んだ線分によって分割する。次に、走査線L1により分
割された単純多角形のうち、内尖頂点を有する単純多角
形を内尖頂点である頂点P5を通りx軸に平行な走査線
L2によって分割する。すなわち、単純多角形を頂点P
5と、走査線L2と交差する単純多角形の辺の交点K2
とを結んだ線分によって分割する。
【0008】その結果、単純多角形は、頂点P6,頂点
P1,頂点P2、頂点K1及び頂点6を順次結んだY凸
単純多角形と、頂点P2,頂点P3,頂点K2,頂点P
5,頂点K1及び頂点P2を順次結んだY凸単純多角形
と、頂点K2,頂点P4,頂点P5及び頂点K2を順次
結んだY凸単純多角形の3つのY凸単純多角形とに分割
される。
P1,頂点P2、頂点K1及び頂点6を順次結んだY凸
単純多角形と、頂点P2,頂点P3,頂点K2,頂点P
5,頂点K1及び頂点P2を順次結んだY凸単純多角形
と、頂点K2,頂点P4,頂点P5及び頂点K2を順次
結んだY凸単純多角形の3つのY凸単純多角形とに分割
される。
【0009】次に、この単純多角形のラスタライズ処理
を図3及び図4を参照して説明する。
を図3及び図4を参照して説明する。
【0010】図4は、この単純多角形のラスタライズ処
理を示すフローチャートである。
理を示すフローチャートである。
【0011】なお、便宜上、以下の説明において、多角
形の各頂点のxy座標値を(x,y)と記す。
形の各頂点のxy座標値を(x,y)と記す。
【0012】まず、ステップ401(以下、ステップを
Sと記す)において、図示しないCPUは、単純多角形
の頂点数を入力し、それら頂点のxy座標値頂点P1に
ついては、(X1,Y1),頂点P2については(X
2,Y2),頂点P3については(X3,Y3),頂点
P4については(X4,Y4),頂点P5については
(X5,Y5),頂点P6については(X6,Y6)を
入力する。そして、S402において、これら6つの頂
点のうち、y座標値が最も大きな頂点をPmaxとして
求める。図3においては、Pmax=P6となる。
Sと記す)において、図示しないCPUは、単純多角形
の頂点数を入力し、それら頂点のxy座標値頂点P1に
ついては、(X1,Y1),頂点P2については(X
2,Y2),頂点P3については(X3,Y3),頂点
P4については(X4,Y4),頂点P5については
(X5,Y5),頂点P6については(X6,Y6)を
入力する。そして、S402において、これら6つの頂
点のうち、y座標値が最も大きな頂点をPmaxとして
求める。図3においては、Pmax=P6となる。
【0013】次に、S403において、頂点P6で単純
多角形の頂点の並びの向きを求める。この単純多角形の
頂点の並びの向きは、頂点の並び順に頂点をたどったと
きに時計回りになるか反時計回りになるかのどちらかに
決まる。単純多角形の頂点の並びの向きは、多角形の頂
点Pmaxにおける局所的な頂点の並びの向きで決ま
る。局所的な頂点の並びの向きは、例えば、図3の場合
には、Pmax=P6の並びの次の頂点P1と前の頂点
P5を結んだ三角形P6P1P5の頂点の並びの向きと
同じである。
多角形の頂点の並びの向きを求める。この単純多角形の
頂点の並びの向きは、頂点の並び順に頂点をたどったと
きに時計回りになるか反時計回りになるかのどちらかに
決まる。単純多角形の頂点の並びの向きは、多角形の頂
点Pmaxにおける局所的な頂点の並びの向きで決ま
る。局所的な頂点の並びの向きは、例えば、図3の場合
には、Pmax=P6の並びの次の頂点P1と前の頂点
P5を結んだ三角形P6P1P5の頂点の並びの向きと
同じである。
【0014】この向きの判定は、(X5−X6)×(Y
1−Y6)−(Y5−Y6)×(X1−X6)の符号の
判定で行う。正の場合には、時計回りで、負の場合に
は、反時計回りと判定する。ゼロの場合は、判定できな
いので別の方法で判定しなければならないが、公知なこ
となのでここでの説明は省略する。上述の判定結果は、
負となり反時計回りと判定される。
1−Y6)−(Y5−Y6)×(X1−X6)の符号の
判定で行う。正の場合には、時計回りで、負の場合に
は、反時計回りと判定する。ゼロの場合は、判定できな
いので別の方法で判定しなければならないが、公知なこ
となのでここでの説明は省略する。上述の判定結果は、
負となり反時計回りと判定される。
【0015】そして、S404からS406で分割の起
点となる内尖頂点を求める。まず、S404で単純多角
形の頂点の並び順にたどったときに頂点のy座標値の変
化が増加から減少あるいは減少から増加となる極値をと
る極大/極小頂点を求める。頂点Pc(Xc,Yc)の
並びの次の頂点Pn(Xn,Yn)と前の頂点Pp(X
p,Yp)である場合に、Yp<Yc>Ynのとき頂点
Pcが極大頂点である。また、頂点Pc(Xc,Yc)
の並びの次の頂点Pn(Xn,Yn)と前の頂点Pp
(Xp,Yp)である場合に、Yp>Yc<Ynのとき
頂点Pcが極小頂点である。この例の頂点6個の場合、
頂点P1、頂点P3、頂点P5が極小頂点、頂点P2、
頂点P4、頂点P6が極大頂点であると判定される。
点となる内尖頂点を求める。まず、S404で単純多角
形の頂点の並び順にたどったときに頂点のy座標値の変
化が増加から減少あるいは減少から増加となる極値をと
る極大/極小頂点を求める。頂点Pc(Xc,Yc)の
並びの次の頂点Pn(Xn,Yn)と前の頂点Pp(X
p,Yp)である場合に、Yp<Yc>Ynのとき頂点
Pcが極大頂点である。また、頂点Pc(Xc,Yc)
の並びの次の頂点Pn(Xn,Yn)と前の頂点Pp
(Xp,Yp)である場合に、Yp>Yc<Ynのとき
頂点Pcが極小頂点である。この例の頂点6個の場合、
頂点P1、頂点P3、頂点P5が極小頂点、頂点P2、
頂点P4、頂点P6が極大頂点であると判定される。
【0016】S405でこの極大/極小頂点における多
角形の局所的な頂点の並びの向きを求める。向きの判定
方法は、S403と同様な方法で行う。すると、頂点P
2、頂点P5では、時計回りと判定され、頂点P1、頂
点P3、頂点P4、頂点P6では、反時計回りと判定さ
れる。最後に、S405で内尖頂点を求める。内尖頂点
は、S403で求めたPmax=P6における多角形の
頂点の並びの向きと反対の局所的な頂点の並びの向きと
なる極大/極小頂点である。従って、頂点P2、頂点P
5が内尖頂点であると判定される。
角形の局所的な頂点の並びの向きを求める。向きの判定
方法は、S403と同様な方法で行う。すると、頂点P
2、頂点P5では、時計回りと判定され、頂点P1、頂
点P3、頂点P4、頂点P6では、反時計回りと判定さ
れる。最後に、S405で内尖頂点を求める。内尖頂点
は、S403で求めたPmax=P6における多角形の
頂点の並びの向きと反対の局所的な頂点の並びの向きと
なる極大/極小頂点である。従って、頂点P2、頂点P
5が内尖頂点であると判定される。
【0017】次に、S407からS409で単純多角形
の分割を行う。まず、S407で、内尖頂点を通る走査
線と交差する多角形の辺を求める。多角形の隣り合う頂
点Ps(Xs,Ys)、頂点Pt(Xt,Yt)を結ぶ
辺が内尖頂点Pu(Xu,Yu)を通る走査線(y=Y
u)と交差する場合、Ys≧Yu≧Yt、あるいは、Y
t≦Yu≦Ysとなる。この判定により頂点P2を通る
走査線L1と交差する辺は、辺P6P1、辺P6P5、
辺P4P5、辺P4P3であることが求められる。
の分割を行う。まず、S407で、内尖頂点を通る走査
線と交差する多角形の辺を求める。多角形の隣り合う頂
点Ps(Xs,Ys)、頂点Pt(Xt,Yt)を結ぶ
辺が内尖頂点Pu(Xu,Yu)を通る走査線(y=Y
u)と交差する場合、Ys≧Yu≧Yt、あるいは、Y
t≦Yu≦Ysとなる。この判定により頂点P2を通る
走査線L1と交差する辺は、辺P6P1、辺P6P5、
辺P4P5、辺P4P3であることが求められる。
【0018】次に、S408でS407で求めた辺が内
尖頂点を通る走査線と交差する交点のなかで内尖頂点に
最も近い交点を求める。内尖頂点P2を通る走査線L1
と交差する辺が走査線L1と交差する交点のなかで頂点
P2に最も近い交点を求める。交点のy座標値はY2で
あるから、x座標値のみを求める。前述した交差する辺
の両端点となる頂点Ps(Xs,Ys)、頂点Pt(X
t,Yt)を結ぶ線分が内尖頂点Pu(Xu,Yu)を
通る走査線(y=Yu)と交差する場合、交点Kのx座
標値XKは、(Xs−Xt)×(Yu−Yt)/(Ys
−Yt)+Xtの式で一般に計算される。
尖頂点を通る走査線と交差する交点のなかで内尖頂点に
最も近い交点を求める。内尖頂点P2を通る走査線L1
と交差する辺が走査線L1と交差する交点のなかで頂点
P2に最も近い交点を求める。交点のy座標値はY2で
あるから、x座標値のみを求める。前述した交差する辺
の両端点となる頂点Ps(Xs,Ys)、頂点Pt(X
t,Yt)を結ぶ線分が内尖頂点Pu(Xu,Yu)を
通る走査線(y=Yu)と交差する場合、交点Kのx座
標値XKは、(Xs−Xt)×(Yu−Yt)/(Ys
−Yt)+Xtの式で一般に計算される。
【0019】走査線L1と多角形の辺との交点をすべて
求めると辺P6P5との交点K1が頂点P2に最も近い
交点であることが交点のx座標を比較して判定される。
同様にして、頂点P5を通る走査線L2と交差する辺P
4P3の交点K2が頂点P5に最も近い頂点と判定でき
る。
求めると辺P6P5との交点K1が頂点P2に最も近い
交点であることが交点のx座標を比較して判定される。
同様にして、頂点P5を通る走査線L2と交差する辺P
4P3の交点K2が頂点P5に最も近い頂点と判定でき
る。
【0020】そして、S409で内尖頂点と交点を結ぶ
線分で多角形を分割する。交点を含めた多角形の頂点の
並びを頂点P1、頂点P2、頂点P3、交点K2、頂点
P4、頂点P5、交点K1、頂点P6と記憶する。頂点
P2と交点K1、頂点P5と交点K2を分割したY凸単
純多角形の辺として記憶する。そして、この2つの記憶
されたデータから、前述したように頂点P6,P1,P
2,K1,P6を結んだY凸単純多角形と、頂点P2,
P3,K2,P5,K1,P2を結んだY凸単純多角形
と、頂点K2,P4,P5,K2を結んだY凸単純多角
形の3つに分割される。
線分で多角形を分割する。交点を含めた多角形の頂点の
並びを頂点P1、頂点P2、頂点P3、交点K2、頂点
P4、頂点P5、交点K1、頂点P6と記憶する。頂点
P2と交点K1、頂点P5と交点K2を分割したY凸単
純多角形の辺として記憶する。そして、この2つの記憶
されたデータから、前述したように頂点P6,P1,P
2,K1,P6を結んだY凸単純多角形と、頂点P2,
P3,K2,P5,K1,P2を結んだY凸単純多角形
と、頂点K2,P4,P5,K2を結んだY凸単純多角
形の3つに分割される。
【0021】最後にS410で3つに分割されたY凸単
純多角形を塗り潰す。この塗りつぶし処理は、特公平7
−43771号公報や、特開平5−61987号公報で
開示されているので説明を省略する。ここで注目したい
のは、図4のS408で交点を求めるときに除算が必要
なことである。この種の装置での交点計算における除算
を行なう場合には、除算の余りを切捨てあるいは四捨五
入するのが一般的であった。
純多角形を塗り潰す。この塗りつぶし処理は、特公平7
−43771号公報や、特開平5−61987号公報で
開示されているので説明を省略する。ここで注目したい
のは、図4のS408で交点を求めるときに除算が必要
なことである。この種の装置での交点計算における除算
を行なう場合には、除算の余りを切捨てあるいは四捨五
入するのが一般的であった。
【0022】
【発明が解決しようとする課題】しかし、前述した従来
の単純多角形をY凸単純多角形に分割する際に交点座標
の計算時に除算の切捨て等による計算誤差が含まれてい
るため、分割された多角形の辺が互いに交差してしまい
Y凸単純多角形の性質をもたなくなる場合がある。する
と、交差していることを想定していないY凸単純多角形
の塗りつぶし処理で不具合が生じ正しく実行されなくな
る問題が発生する。
の単純多角形をY凸単純多角形に分割する際に交点座標
の計算時に除算の切捨て等による計算誤差が含まれてい
るため、分割された多角形の辺が互いに交差してしまい
Y凸単純多角形の性質をもたなくなる場合がある。する
と、交差していることを想定していないY凸単純多角形
の塗りつぶし処理で不具合が生じ正しく実行されなくな
る問題が発生する。
【0023】図5に問題点が発生する場合の具体的な例
を示す。図5は、単純多角形ABCDEFGをY凸単純
多角形に分割する場合である。頂点座標値は各々、頂点
A(1,14)、頂点B(5,1)、頂点C(11,
6)、頂点D(6,4)、頂点E(8,7)頂点F
(3,8)頂点G(6,12)が与えられている。する
と、内尖頂点Dを通る走査線が辺ABと交差する交点K
3を求めると前述のS408で示した式より、頂点Ps
を頂点Aに頂点Ptを頂点Bにすると、交点K3のx座
標値は(1−5)×(4−1)/(14−1)+5=−
12/13+5=0+5=5となる。/は、整数除算を
行う。
を示す。図5は、単純多角形ABCDEFGをY凸単純
多角形に分割する場合である。頂点座標値は各々、頂点
A(1,14)、頂点B(5,1)、頂点C(11,
6)、頂点D(6,4)、頂点E(8,7)頂点F
(3,8)頂点G(6,12)が与えられている。する
と、内尖頂点Dを通る走査線が辺ABと交差する交点K
3を求めると前述のS408で示した式より、頂点Ps
を頂点Aに頂点Ptを頂点Bにすると、交点K3のx座
標値は(1−5)×(4−1)/(14−1)+5=−
12/13+5=0+5=5となる。/は、整数除算を
行う。
【0024】S409の処理で単純多角形ABCDEF
Gは、Y凸単純多角形AK3DEFGとY凸単純多角形
K3BCDに分割される。しかし、Y凸単純多角形AK
3DEFGは、図5の破線に示すように交点演算誤差に
より図形が変型するため辺AK3と辺GF、辺AK3と
辺FEが交差するため多角形の性質がY凸単純多角形で
なくなる。すると、S410でY凸単純多角形のラスタ
ライズをすると頂点Fの走査線を塗り潰すとき多角形の
左辺と右辺が入れ替わってしまうため処理の不具合が発
生した。つまり、正しくY凸単純多角形に分割できない
という問題が発生した。
Gは、Y凸単純多角形AK3DEFGとY凸単純多角形
K3BCDに分割される。しかし、Y凸単純多角形AK
3DEFGは、図5の破線に示すように交点演算誤差に
より図形が変型するため辺AK3と辺GF、辺AK3と
辺FEが交差するため多角形の性質がY凸単純多角形で
なくなる。すると、S410でY凸単純多角形のラスタ
ライズをすると頂点Fの走査線を塗り潰すとき多角形の
左辺と右辺が入れ替わってしまうため処理の不具合が発
生した。つまり、正しくY凸単純多角形に分割できない
という問題が発生した。
【0025】本発明は、上述した問題を解決するために
なされたものであり、単純多角形を分割した場合におい
ても、辺が互いに交差するという問題が生じない多角形
分割方法を提供することを目的としている。
なされたものであり、単純多角形を分割した場合におい
ても、辺が互いに交差するという問題が生じない多角形
分割方法を提供することを目的としている。
【0026】
【課題を解決するための手段】この目的を達成するため
に、本発明の請求項1に記載の多角形分割方法は、辺が
互いに交差しない単純多角形の複数の辺をコンピュータ
等の情報処理装置にて設定し得る座標の点で近似しなが
ら構成した近似多角形を用いて、前記単純多角形を前記
近似多角形の任意の二つの辺上にある2点を結ぶ直線に
より分割するものを対象として、特に、前記2点のうち
少なくとも1点が、前記単純多角形を構成する複数の辺
の内部にあるときは、その少なくとも1点を前記複数の
辺の外部若しくは辺上に変換することを特徴としてい
る。
に、本発明の請求項1に記載の多角形分割方法は、辺が
互いに交差しない単純多角形の複数の辺をコンピュータ
等の情報処理装置にて設定し得る座標の点で近似しなが
ら構成した近似多角形を用いて、前記単純多角形を前記
近似多角形の任意の二つの辺上にある2点を結ぶ直線に
より分割するものを対象として、特に、前記2点のうち
少なくとも1点が、前記単純多角形を構成する複数の辺
の内部にあるときは、その少なくとも1点を前記複数の
辺の外部若しくは辺上に変換することを特徴としてい
る。
【0027】上記の構成を有する本発明の請求項1に記
載の多角形分割方法において、単純多角形の複数の辺
は、コンピュータ等の情報処理装置にて設定し得る座標
の点に近似された近似多角形の複数の辺とされるので、
単純多角形を、近似多角形の任意の二つの辺上にある2
点を結ぶ直線により分割する場合には、その直線と単純
多角形の辺との交点と、前記直線と近似多角形の辺との
交点との間に通常誤差が生じる。そして、その誤差によ
る不具合を是正するために、本多角形分割方法は、前記
直線上の2点のうち少なくとも1点が、単純多角形を構
成する複数の辺の内部にあるときは、その少なくとも1
点を単純多角形の複数の辺の外部若しくは辺上に変換す
る。
載の多角形分割方法において、単純多角形の複数の辺
は、コンピュータ等の情報処理装置にて設定し得る座標
の点に近似された近似多角形の複数の辺とされるので、
単純多角形を、近似多角形の任意の二つの辺上にある2
点を結ぶ直線により分割する場合には、その直線と単純
多角形の辺との交点と、前記直線と近似多角形の辺との
交点との間に通常誤差が生じる。そして、その誤差によ
る不具合を是正するために、本多角形分割方法は、前記
直線上の2点のうち少なくとも1点が、単純多角形を構
成する複数の辺の内部にあるときは、その少なくとも1
点を単純多角形の複数の辺の外部若しくは辺上に変換す
る。
【0028】また、請求項2に記載の多角形分割方法
は、前記直線が、前記座標の軸に平行に設定されている
ことを特徴としている。
は、前記直線が、前記座標の軸に平行に設定されている
ことを特徴としている。
【0029】上記の構成を有する請求項2に記載の多角
形分割方法において、単純多角形を分割する直線は、コ
ンピュータ等の情報処理装置にて設定し得る座標の軸に
平行に設定されているので、前記誤差について、例え
ば、座標の軸がx軸の場合は、y座標を、座標の軸がy
軸の場合は、x座標を考慮する必要がない。
形分割方法において、単純多角形を分割する直線は、コ
ンピュータ等の情報処理装置にて設定し得る座標の軸に
平行に設定されているので、前記誤差について、例え
ば、座標の軸がx軸の場合は、y座標を、座標の軸がy
軸の場合は、x座標を考慮する必要がない。
【0030】さらに、請求項3に記載の多角形分割方法
は、前記2点のうち、少なくとも1点は、前記単純多角
形の頂点であることを特徴としている。
は、前記2点のうち、少なくとも1点は、前記単純多角
形の頂点であることを特徴としている。
【0031】上記の構成を有する請求項3に記載の多角
形分割方法において、単純多角形を分割する直線上の2
点のうち、少なくとも1点は、単純多角形の頂点である
ので、その少なくとも1点については、前記誤差を考慮
する必要がない。
形分割方法において、単純多角形を分割する直線上の2
点のうち、少なくとも1点は、単純多角形の頂点である
ので、その少なくとも1点については、前記誤差を考慮
する必要がない。
【0032】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照して説明する。
て図面を参照して説明する。
【0033】図1に図5とは異なる交点計算方法を示
す。図1は、単純多角形ABCDEFGをY凸単純多角
形に分割する場合である。
す。図1は、単純多角形ABCDEFGをY凸単純多角
形に分割する場合である。
【0034】頂点座標値は、各々、頂点A(1,1
4)、頂点B(5,1)、頂点C(11,6)、頂点D
(6,4)、頂点E(8,7)頂点F(3,8)頂点G
(6,12)が与えられている。すると、内尖頂点Dを
通る走査線が辺ABと交差する交点K4を求めると前述
のS408で示した式より、頂点Psを頂点Bに頂点P
tを頂点Aにすると、交点K4のx座標値は(5−1)
×(4−14)/(1−14)+1=−40/−13+
1=3+1=4となる。/は、整数除算を行う。
4)、頂点B(5,1)、頂点C(11,6)、頂点D
(6,4)、頂点E(8,7)頂点F(3,8)頂点G
(6,12)が与えられている。すると、内尖頂点Dを
通る走査線が辺ABと交差する交点K4を求めると前述
のS408で示した式より、頂点Psを頂点Bに頂点P
tを頂点Aにすると、交点K4のx座標値は(5−1)
×(4−14)/(1−14)+1=−40/−13+
1=3+1=4となる。/は、整数除算を行う。
【0035】S409の処理で単純多角形ABCDEF
Gは、Y凸単純多角形AK4DEFGとY凸単純多角形
K4BCDに分割される。ここで、Y凸単純多角形AK
4DEFGは、図1の破線に示すように交点演算誤差に
より図形が変型するが辺AK4と辺GF、辺AK4と辺
FEが交差しないため多角形の性質はY凸単純多角形で
ある。
Gは、Y凸単純多角形AK4DEFGとY凸単純多角形
K4BCDに分割される。ここで、Y凸単純多角形AK
4DEFGは、図1の破線に示すように交点演算誤差に
より図形が変型するが辺AK4と辺GF、辺AK4と辺
FEが交差しないため多角形の性質はY凸単純多角形で
ある。
【0036】そして、S410でY凸単純多角形のラス
タライズをすると頂点Fの走査線を塗り潰すとき多角形
の左辺と右辺が入れ替わらないため処理の不具合は発生
しない。このように、計算式の頂点Ps、頂点Ptをど
ちらに設定するかによって交点座標値が変わる。これ
は、除算の余りの符号が異なるからである。図5の場合
は、除算の負の余りの切り捨て、図1の場合は除算の正
の余りの切り捨てを行っている。本発明では、この交点
計算の除算の余りの切り捨て切り上げを制御し、正しく
単純多角形をY凸単純多角形に分割を行う。
タライズをすると頂点Fの走査線を塗り潰すとき多角形
の左辺と右辺が入れ替わらないため処理の不具合は発生
しない。このように、計算式の頂点Ps、頂点Ptをど
ちらに設定するかによって交点座標値が変わる。これ
は、除算の余りの符号が異なるからである。図5の場合
は、除算の負の余りの切り捨て、図1の場合は除算の正
の余りの切り捨てを行っている。本発明では、この交点
計算の除算の余りの切り捨て切り上げを制御し、正しく
単純多角形をY凸単純多角形に分割を行う。
【0037】求める交点は、対応する内尖頂点からの距
離が遠くなるようにすれば、分割する単純多角形の外に
交点がくるので、分割した多角形がY凸単純多角形であ
ることが保証される。例えば、交点K4は単純多角形A
BCDEFGの外側にあり、この単純多角形と線分AK
4や線分K4Bと交差することはありえない。従って、
図1と図5の例では、交点K3よりも交点K4の方が内
尖頂点Dよりも距離が離れているので交点K4を求める
ように制御する。
離が遠くなるようにすれば、分割する単純多角形の外に
交点がくるので、分割した多角形がY凸単純多角形であ
ることが保証される。例えば、交点K4は単純多角形A
BCDEFGの外側にあり、この単純多角形と線分AK
4や線分K4Bと交差することはありえない。従って、
図1と図5の例では、交点K3よりも交点K4の方が内
尖頂点Dよりも距離が離れているので交点K4を求める
ように制御する。
【0038】次に、図2を参照して本実施の形態の多角
形分割方法の処理の流れについて説明する。図2は、本
実施の形態である多角形分割方法の処理を示すフローチ
ャートである。
形分割方法の処理の流れについて説明する。図2は、本
実施の形態である多角形分割方法の処理を示すフローチ
ャートである。
【0039】このフローチャートは、多角形の隣り合う
2つの頂点をPs(Xs,Ys)及びPt(Xt,Y
t)とし、それら2つの頂点を結ぶ辺(以下、理想辺と
いう。)を近似した辺(以下、近似辺という。)と、そ
れら頂点とは別の内尖頂点Pu(Xu,Yu)を通りx
軸に平行な走査線との交点のX座標値(POINT)を
求めるものである。
2つの頂点をPs(Xs,Ys)及びPt(Xt,Y
t)とし、それら2つの頂点を結ぶ辺(以下、理想辺と
いう。)を近似した辺(以下、近似辺という。)と、そ
れら頂点とは別の内尖頂点Pu(Xu,Yu)を通りx
軸に平行な走査線との交点のX座標値(POINT)を
求めるものである。
【0040】まず、S201において、頂点Ps(X
s,Ys)、頂点Pt(Xt,Yt)、内尖頂点Pu
(Xu,Yu)の座標値を読み込み、S202におい
て、で((Xs−Xt)×(Yu−Yt))を(Ys−
Yt)で割った商をRESに代入し、その余りをERR
に代入する。そして、S203において、RESとXt
とを加算してPOINTに代入し、S204において、
S203で求めたPOINTがXu以下であるか否かを
判断する。この判断は、辺Ps・Ptの近似辺と走査線
との交点と、内尖頂点Puとの位置関係を判断してお
り、図1において具体的には、交点K4が内尖頂点Dの
左右どちら側に存在するか否かを判断するものである。
s,Ys)、頂点Pt(Xt,Yt)、内尖頂点Pu
(Xu,Yu)の座標値を読み込み、S202におい
て、で((Xs−Xt)×(Yu−Yt))を(Ys−
Yt)で割った商をRESに代入し、その余りをERR
に代入する。そして、S203において、RESとXt
とを加算してPOINTに代入し、S204において、
S203で求めたPOINTがXu以下であるか否かを
判断する。この判断は、辺Ps・Ptの近似辺と走査線
との交点と、内尖頂点Puとの位置関係を判断してお
り、図1において具体的には、交点K4が内尖頂点Dの
左右どちら側に存在するか否かを判断するものである。
【0041】S204において、POINTがXu以下
であると判断した場合には、交点が内尖頂点の左側にあ
ると判定したことになり、S205において、さらに、
ERRが負であるか否かを判定する。S205におい
て、ERRが負であると判断した場合には、交点が分割
する多角形の内側に入っていると判断したことになるの
で、S206において、POINTを「1」減少させ
る。すなわち、交点のx座標を「1」減少させ、交点を
多角形の外側に移動し、処理を終了する。
であると判断した場合には、交点が内尖頂点の左側にあ
ると判定したことになり、S205において、さらに、
ERRが負であるか否かを判定する。S205におい
て、ERRが負であると判断した場合には、交点が分割
する多角形の内側に入っていると判断したことになるの
で、S206において、POINTを「1」減少させ
る。すなわち、交点のx座標を「1」減少させ、交点を
多角形の外側に移動し、処理を終了する。
【0042】また、S205において、ERRが負でな
いと判断した場合には、そのまま処理を終了する。
いと判断した場合には、そのまま処理を終了する。
【0043】また、S204において、POINTがX
u以下でないと判定した場合には、交点が内尖頂点の右
側にあると判断したことになり、S207において、さ
らに、ERRが正であるか否かを判断する。S207に
おいて、ERRが正であると判断した場合には、交点が
分割する多角形の内側に入っていると判断したことにな
るので、S208において、POINTを「1」増加さ
せる。すなわち、交点のx座標を「1」増加させ、交点
を多角形の外側に移動し、処理を終了する。
u以下でないと判定した場合には、交点が内尖頂点の右
側にあると判断したことになり、S207において、さ
らに、ERRが正であるか否かを判断する。S207に
おいて、ERRが正であると判断した場合には、交点が
分割する多角形の内側に入っていると判断したことにな
るので、S208において、POINTを「1」増加さ
せる。すなわち、交点のx座標を「1」増加させ、交点
を多角形の外側に移動し、処理を終了する。
【0044】また、S207において、ERRが正でな
いと判断した場合には、そのまま処理を終了する。
いと判断した場合には、そのまま処理を終了する。
【0045】以上により、求めた交点(POINT,Y
u)は、常に、分割する多角形の外側になり、その交点
を経由する辺は他の辺と交差することはない。
u)は、常に、分割する多角形の外側になり、その交点
を経由する辺は他の辺と交差することはない。
【0046】従って、多角形をこの交点と内尖頂点とを
結ぶ線分で分割した場合は、辺が互いに交差するという
問題は生じない。
結ぶ線分で分割した場合は、辺が互いに交差するという
問題は生じない。
【0047】なお、本発明は、以上述べた実施の形態に
限定されるものではなく、その要旨を逸脱しない範囲で
種々の変更を加えることができる。
限定されるものではなく、その要旨を逸脱しない範囲で
種々の変更を加えることができる。
【0048】例えば、本実施の形態では、多角形を分割
するものを走査線としたが、通常の直線及び線分として
もよい。
するものを走査線としたが、通常の直線及び線分として
もよい。
【0049】また、本実施の形態では、多角形を分割す
る走査線の端点を内尖頂点としたが、通常の頂点でもよ
い。
る走査線の端点を内尖頂点としたが、通常の頂点でもよ
い。
【0050】また、本実施の形態では、多角形を分割す
る走査線の方向をx軸に平行としたが、任意の方向にし
てもよい。
る走査線の方向をx軸に平行としたが、任意の方向にし
てもよい。
【0051】また、本実施の形態では、交点が多角形の
内部に存在すると判断した場合には、その交点を多角形
の外部に変換するとしたが、多角形の辺上に変換しても
よい。
内部に存在すると判断した場合には、その交点を多角形
の外部に変換するとしたが、多角形の辺上に変換しても
よい。
【0052】さらに、本実施の形態では、多角形の各頂
点のxy座標を整数座標を用いた整数演算としたが、浮
動小数点演算としてもよい。
点のxy座標を整数座標を用いた整数演算としたが、浮
動小数点演算としてもよい。
【0053】
【発明の効果】以上説明したことから明かなように、本
発明の請求項1に記載の多角形種別方法によれば、単純
多角形を分割する直線上の2点のうち少なくとも1点
が、単純多角形を構成する複数の辺の内部にあるとき
は、その少なくとも1点を単純多角形の複数の辺の外部
若しくは辺上に変換するので、単純多角形を前記直線で
分割した場合においても、辺が互いに交差するという問
題は生じない。
発明の請求項1に記載の多角形種別方法によれば、単純
多角形を分割する直線上の2点のうち少なくとも1点
が、単純多角形を構成する複数の辺の内部にあるとき
は、その少なくとも1点を単純多角形の複数の辺の外部
若しくは辺上に変換するので、単純多角形を前記直線で
分割した場合においても、辺が互いに交差するという問
題は生じない。
【0054】また、請求項2に記載の多角形分割方法に
よれば、単純多角形を分割する直線は、コンピュータ等
の情報処理装置にて設定し得る座標の軸に平行に設定さ
れているので、前記誤差について、例えば、座標の軸が
x軸の場合は、y座標を、座標の軸がy軸の場合は、x
座標を考慮する必要がなく、処理速度を高めることがで
きる。
よれば、単純多角形を分割する直線は、コンピュータ等
の情報処理装置にて設定し得る座標の軸に平行に設定さ
れているので、前記誤差について、例えば、座標の軸が
x軸の場合は、y座標を、座標の軸がy軸の場合は、x
座標を考慮する必要がなく、処理速度を高めることがで
きる。
【0055】さらに、請求項3に記載の多角形分割方法
によれば、単純多角形を分割する直線上の2点のうち、
少なくとも1点は、単純多角形の頂点であるので、その
少なくとも1点については、前記誤差を考慮する必要が
なく、さらに、処理速度を高めることができる。
によれば、単純多角形を分割する直線上の2点のうち、
少なくとも1点は、単純多角形の頂点であるので、その
少なくとも1点については、前記誤差を考慮する必要が
なく、さらに、処理速度を高めることができる。
【図1】本発明の実施の形態である多角形分割方法を説
明する説明図である。
明する説明図である。
【図2】本実施の形態である多角形分割方法の処理を示
すフローチャートである。
すフローチャートである。
【図3】単純多角形をY凸単純多角形に分割する方法を
説明する説明図である。
説明する説明図である。
【図4】従来の単純多角形のラスタライズ処理を示すフ
ローチャートである。
ローチャートである。
【図5】従来の多角形分割方法を説明する説明図であ
る。
る。
Claims (3)
- 【請求項1】 辺が互いに交差しない単純多角形の複数
の辺をコンピュータ等の情報処理装置にて設定し得る座
標の点で近似しながら構成した近似多角形を用いて、前
記単純多角形を前記近似多角形の任意の二つの辺上にあ
る2点を結ぶ直線により分割する多角形分割方法におい
て、 前記2点のうち少なくとも1点が、前記単純多角形を構
成する複数の辺の内部にあるときは、その少なくとも1
点を前記複数の辺の外部若しくは辺上に変換することを
特徴とする多角形分割方法。 - 【請求項2】 前記直線は、前記座標の軸に平行に設定
されていることを特徴とする請求項1に記載の多角形分
割方法。 - 【請求項3】 前記2点のうち少なくとも1点は、前記
単純多角形の頂点であることを特徴とする請求項1又は
請求項2に記載の多角形分割方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6082797A JPH10255062A (ja) | 1997-03-14 | 1997-03-14 | 多角形分割方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6082797A JPH10255062A (ja) | 1997-03-14 | 1997-03-14 | 多角形分割方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10255062A true JPH10255062A (ja) | 1998-09-25 |
Family
ID=13153587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6082797A Pending JPH10255062A (ja) | 1997-03-14 | 1997-03-14 | 多角形分割方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH10255062A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011057490A1 (zh) * | 2009-11-16 | 2011-05-19 | 东南大学 | 计算机图形中简单多边形的切环剖分方法 |
-
1997
- 1997-03-14 JP JP6082797A patent/JPH10255062A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011057490A1 (zh) * | 2009-11-16 | 2011-05-19 | 东南大学 | 计算机图形中简单多边形的切环剖分方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5790126A (en) | Method for rendering a spline for scan conversion of a glyph | |
KR20010012815A (ko) | 레퍼런스에 기초한 파라미터 조정 방법 및 시스템 | |
Fellner et al. | Robust rendering of general ellipses and elliptical arcs | |
EP0344686B1 (en) | Clipping process and processor | |
KR970008546B1 (ko) | 문자 또는 도형의 처리방법 | |
US5095520A (en) | Method and apparatus for drawing wide lines in a raster graphics system | |
JP3037854B2 (ja) | 文字生成方法及びその装置 | |
JPH10255062A (ja) | 多角形分割方法 | |
US12026809B2 (en) | Systems for generating anti-aliased vector objects | |
Bonneau et al. | Variational design of rational bézier curves and surfaces | |
JP2001283242A (ja) | 画像処理装置および画像処理方法 | |
JPS63137378A (ja) | グラフイツクス処理システム | |
JP2580759B2 (ja) | データ変換方法 | |
US7224369B2 (en) | Image processing apparatus and method of same | |
JPH056439A (ja) | ベクトルデータ/イメージデータ変換方式 | |
JP2630843B2 (ja) | 直線描画方法及び装置 | |
JPH01303489A (ja) | 文字出力方式 | |
JPH06168337A (ja) | 塗り潰し処理方法 | |
JP3057963B2 (ja) | データ変換装置 | |
JPH08235362A (ja) | 単純な凸状の多角形を決定するための方法および装置 | |
JP2908194B2 (ja) | 文字の変形制御方式 | |
JPH02270082A (ja) | 比較を行い信号を発生する装置およびその方法 | |
JPH0752466B2 (ja) | ラスターオペレーション装置およびその方法 | |
JP3072756B2 (ja) | 描画装置 | |
JP2613653B2 (ja) | 画像処理装置 |