JP2000251081A - 内点判定方法、グラフィック描画装置およびプログラム記憶媒体 - Google Patents

内点判定方法、グラフィック描画装置およびプログラム記憶媒体

Info

Publication number
JP2000251081A
JP2000251081A JP11052048A JP5204899A JP2000251081A JP 2000251081 A JP2000251081 A JP 2000251081A JP 11052048 A JP11052048 A JP 11052048A JP 5204899 A JP5204899 A JP 5204899A JP 2000251081 A JP2000251081 A JP 2000251081A
Authority
JP
Japan
Prior art keywords
point
polygon
polygonal
convex
triangle
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.)
Withdrawn
Application number
JP11052048A
Other languages
English (en)
Inventor
Shigeki Matsutani
茂樹 松谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP11052048A priority Critical patent/JP2000251081A/ja
Publication of JP2000251081A publication Critical patent/JP2000251081A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)
  • Image Analysis (AREA)

Abstract

(57)【要約】 【課題】 初等的な演算機構を有したコンピュータでも
高速に処理可能な内点判定方法を提供する。 【解決手段】 注目点が、頂点の集合によって形成され
た多角形図形の内部に存在するか否かを判定する内点判
定法において前記頂点の集合をコンピュータ処理可能な
頂点データとして表し、前記多角形図形を少なくとも1
つの凸多角形に分割するように、前記頂点データを編成
し、前記注目点が前記少なくとも1つの凸多角形の内部
に存在するか否かを、編成された頂点データに基づいて
判断し、前記注目点が全ての凸多角形の外部に存在する
と判断された場合に、前記注目点が前記多角形図形の内
部にないと決定する内点判定方法。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ上の
メモリ空間に存在する点と図形について、その点が図形
内部にあるか否かをコンピュータを利用して判定する内
点判定方法に関する。
【0002】本発明の内点判定方法は、例えば、数値シ
ミュレーションの分野やグラフィックの基本ツール群と
してグラフィック描画装置に応用できる。
【0003】
【従来の技術】平面上に与えられた点が同一平面上の閉
曲線の内に存在するか、否かという問題は、数学分野に
おいて研究されてきている。現在では基本群と呼ばれる
トポロジーの言葉で最も厳密かつ抽象的に表現する事が
可能であるが、より初等的には、留数の定理で知られる
ところの解析的な問題でもある。
【0004】留数の定理を利用すれば、与えられた平面
に自然な複素座標を導入する事によって平面を複素平面
としてみなし、与えられた閉曲線をΓとし、内点である
か否かを判定されるべき点をz0とすると、関数f(z)を
【0005】
【0006】として、次式で表される所の、f(z)の、Γ
に沿った一周の積分
【0007】を計算する事によって与えられた点が該閉
曲線Γの内点か否かを判定できる。つまり、この積分の
値が零であれば、z0は曲線Γの外に存在し、零でなけ
れば、即ち±2πiであれば、点は閉曲線Γ内の点である
事が判明する。デュドネ編「数学史1700−1900I」(岩
波書店1985年発行)によると、この留数の定理を発見し
たのはコーシーのようである。1826年のSur un nouveau
genrede calcul infinitesmalという題の論文(ExcerCi
ces de mathematiques)において、特異点の周りの無限
小解析を行う事により、留数の定理を発見したとある。
コーシーはその後、長方形の周りでの複素函数の積分が
その内部の留数の総和である事を見いだした。この留数
の計算をもって幾何学と函数論とが結びついたといわれ
ている。つまり、技術により密接に関連する幾何学的な
事実が、解析的な関数の値の和(積分)によって判定可
能となるのである。
【0008】ところで、コンピュータ上においては、任
意の曲線よりも、区分的に直線で表された図形が実用上
用いられている。つまり、点Pが任意の曲線の内部にあ
るか否かの問題は、コンピュータ利用技術分野では、事
実上、その任意の曲線に近い多角形Aの内部に点Pがある
か否かの判定をする問題に帰着する。
【0009】上述の留数の定理に従った従来の内外判定
アルゴリズムは、多角形の各辺の両終端の点Pからのぞ
む角度を計算し、その角度の総和が±2πであるか否か
を調べる。
【0010】しかしながら、角度の計算は超越関数を使
うために計算時間を多く必要とするものである。
【0011】例えば、日本国特許第2595361号に記載の
「折線からなる図形の内外判定方法」においては、上述
の留数の定理に沿った内外判定の手法を、確率的な意味
で多くの場合において適用しないで内外判定を行う方法
が提案されている。この従来技術は、上述の留数の定理
を利用したものと、xy座標の特徴を利用した外接する
長方形での内外判定を組み合わせたものである。計算時
間を多く必要とする留数の定理を利用した内外判定の問
題点を避けるために「折線からなる図形の内外判定方
法」という手法が本特許では提案されている。
【0012】即ち、第1図に示すように、多角形Aと点
Pが2次元平面内に座標配列として与えられた時、第2
図に示すように、多角形Aを内包する長方形Dを形成す
る。この長方形Dは、多角形Aの座標のx軸、,y軸の最大
値および最小値を利用する。第2図の場合、(x0,
y0),(x1,y1), ... ,(x10,y10)を最大値及び
最小値の例として提示している。一般のn角形の場合も
同様にして与えられる。図には番号の並び順を通して向
きが自然に導入されている。また、判定対象の点Pは
(x,y)として与えられている。この時、第1図の例で
は、最大値及び最小値からなる長方形は,y軸と平行でy
軸の値が,y0と,y5で与えられている2直線と、,y軸と平
行でx軸の値がx9とx4で与えられている2直線の4直線で
囲まれた部分となっている。
【0013】第3図に、この特許において適用されてい
る内点判定手法のアルゴリズムをフローチャートとして
示す。まず始めに、ステップS2において、点Pが図形
の埋め込まれたxy座標のx,y軸のそれぞれの最大値、最
小値によって形成される長方形Dの内部にあるか否かの
内外判定を、点Pの座標と長方形Dの頂点座標との大小判
定に基づいて行う。長方形Dの内であるとした場合は、
ステップS6で、多角形Aに対する内外判定を行う。こ
の多角形Aに対する内外判定によって、内点であると判
断された場合(ステップS12に進む場合)と内点でな
い場合(ステップS10に進む場合)との2通りに分け
られる事となる。
【0014】特許番号2595361に記載の多角形Aに対する
アルゴリズムの内点判定の方法と本質的に同様な方法を
以下に示す。これは上述した留数の定理を利用したもの
である。
【0015】第1図に示すように、ある平面C内に「向
き付け」された多角形Aが存在しているとする。「向き
付け」されたとは、多角形Aを構成する辺に対して、一
方向の矢印が自然に定義できるという事である。当然で
あるが、この矢印の方向には2つの自由度、即ち、右回
りと左回りの自由度が存在している。向きを付けるとい
う事は、この2つの自由度に対してその一つを選ぶとい
う事と等しい。
【0016】このように与えられた向きに対して、多角
形のある頂点から出発して一周する事で、多角形の頂点
の点列が第1図のように形成される。その点列を(xj,y
j)(j=0,...,11)とする。但し、始点と終点につ
いて、(x0,y0)=(x11,y11)とする。また、より一般
のN多角形の場合は、多角形の頂点の点列が第4図のよ
うに形成される。その点列を(xj,yj)(j=0,...,
N)とする。但し、(x0,y0)=(xN,yN)とする。第3
図のステップS6の内点判定アルゴリズムとは、この点
Pが多角形Aの内に存在しているか否かを判定する事に
ある。その詳細を第5図に示す。
【0017】第5図において、まず、ステップS30で
適当な初期化を行う。例えば、メモリの確保等である。
ステップS31で多角形Aの点列データを読み込む。そ
の後、ステップS32で点Pの位置を2次元データとし
て読み込む。ステップS33で、カウンタiとχとにつ
いて、i=0,χ=0とする。
【0018】次式に従って、Si,Ciという2つの量を定
義する。
【0019】
【0020】
【0021】但し、i= 0,...,N−1である。Si
外積、Ciは内積に相当している。また、SiとCiの符号に
応じて、次の量を定義する。
【0022】(5)式,(6)式のδiはφiが点が第何
象限に属しているかを表す指標である。ステップS3
5、S36でSi,Ciを計算する。Ciがゼロの場合は、γ
i等の計算を行う事なく、Siの符号に応じてφの値をπ
/2または3π/2とする。また、S iがゼロの場合でかつC
iが負の場合は、辺上の点として例えば、辺上であると
出力して計算を終える。また、Siがゼロの場合でかつCi
が正の場合は、σiの計算を行う事なく、φの値を0とす
る。また、CiとSi共にゼロの場合は、頂点上にPがある
として、例えば、頂点であると出力して計算を終える。
【0023】ステップS37、S38で、それぞれのδ
iとφiを計算する。
【0024】このようにして得られたφiは第4図に示
したφiに対応する事が判る。実用的には、逆正接関数a
rctanの代りにFORTRAN言語やC言語で利用可能なatan2を
利用することにより直接的に角度φiは計算できる。従
って留数の定理より、上述の角度のφiの総和をχとす
ると、
【0025】
【0026】によりχを計算する。χは、点Pが多角形
Aの内部に存在すれば、±2πとなり、外点の場合は零と
なる。このアルゴリズムの事をここではアルゴリズム乙
と呼ぶ。このアルゴリズム乙と本質的に同様のアルゴリ
ズムは例えば、特許番号2595361に従来の技術として述
べられている。このような与えられた点が図形の内点か
否かを判定する必要性は計算機の性能の発達とともに近
年、非常に増加していると考えられる。近年のグラフィ
ック描画装置あるいはそれに関する基本的な問題におい
ては、マウス等で指示した点が与えられた図形の内点か
否かという判定を必要とする。また、モンテカルロ法等
の数値計算においては、与えられた多数の点が同一の多
角形の内点か否かを判断する事が求められる。
【0027】
【発明が解決しようとする課題】本発明の想定する内外
判定を行う状況は、例えば、多角形は初期状態に固定さ
れその後に千個程度以上の点がランダムに与えられた際
の各点が該多角形の内点か否かを判定する事である。従
って、初期情報として多角形に対して補助的な情報を付
加しても、全点に対する内外判定の全判定計算時間に比
較して十分小さなものとなる場合である。
【0028】上記従来の技術に掲載の内点判定手法にお
いては、一般の多角形に対する内点判定は計算時間を非
常に必要とするため、多角形を内包する長方形に対する
予備的内点判定を行い、もしも、目的とする点が長方形
外に存在した場合(ステップS2でNO)はその点が多
角形の内部に存在するはずはないから、多角形の外部に
存在していると判定する。これにより時間のかかる多角
形内判定を省略することができる。逆に長方形の内部に
存在した場合(ステップS2でYES)は、多角形の内
部に存在する可能性があるから、多角形と点に対する内
外判定(ステップS6)を行っていた。
【0029】しかしながら、上記従来技術のステップS
2のごとき「予備的判定」は、十分に機能しない場合が
あることを発明者は見いだした。
【0030】第6図に示したような多角形A’について
の内外判定を行う場合を考える。
【0031】多角形A’はx,y軸に対して斜めの方向に延
びている辺を有する。かかる多角形A’に対して、対応
するx軸,y軸の最大最小値から形成される長方形D’
は、着目する多角形A’に比較して、広い面積を持つこ
ととなる。そのため、第3図のフローチャートにそった
予備的な内点判定(ステップS2)が行われる長方形の
面積が、本来求めたい多角形A’の面積に比較して非常
に大きくなり、判定対象の点のランダムな点分布を考え
た場合、予備的内点判定,即ちステップS2が十分機能
しない事となる。つまり、予備的内点判定を行っても、
その機能が実効的に活かされないために、ステップS2
での分岐で多くがステップS6に進む事となる。つま
り、第5図のフローチャートに従う詳細な内点判定の計
算を行う必要が多くの場合にでてくるので、逆三角関数
等の超越関数の計算が必要となり、実効的に高速化が行
えない事となる。
【0032】本発明においては、例えば上述の特許番号
2595361に掲載の発明における問題点に鑑みて上述の問
題点を解決する手段を提供する。
【0033】
【課題を解決するための手段】上記課題は、請求項1に
記載の、注目点が、頂点の集合によって形成された多角
形図形の内部に存在するか否かを判定する内点判定法に
よって達成される。即ち、この方法は、
【0034】前記頂点の集合をコンピュータ処理可能な
頂点データとして表し、
【0035】前記多角形図形を少なくとも1つの凸多角
形に分割するように、前記頂点データを編成し、
【0036】前記注目点が前記少なくとも1つの凸多角
形の内部に存在するか否かを、編成された頂点データに
基づいて判断し、
【0037】前記注目点が全ての凸多角形の外部に存在
すると判断された場合に、前記注目点が前記多角形図形
の内部にないと決定する。
【0038】上記工程をコンピュータによって行って
も、全て初等関数のみで演算できる。
【0039】本発明の好適な一態様である請求項2に拠
れば、前記多角形図形を複数の三角形に分割する。
【0040】本発明の好適な一態様である請求項3に拠
れば、前記判断工程は、判断対象の凸多角形をユーザに
より指定する工程を含む。ユーザ指定を組み込むことに
よりアプリケーション・プログラムへの負荷を減らすこ
とができる。
【0041】本発明の好適な一態様である請求項4に拠
れば、前記多角形図形の各辺には向きが定義されてい
る。
【0042】本発明の好適な一態様である請求項5に拠
れば、前記判断工程は、前記注目点と1つの第1の凸多
角形について、
【0043】
【0044】を計算し、前記1つの凸多角形に隣り合う
第2の凸多角形について、
【0045】を計算し、計算されたSi・Si-1の符号によ
り判断する。コンピュータ上での演算は四則演算に過ぎ
ない。本発明の好適な一態様である請求項6に拠れば、
更に、前記図形の一部を四角以上の凸多角形に分割可能
か否かを判断する工程と、
【0046】前記一部を凸多角形に分割不能の場合に
は、三角形に分割する工程とを含む。
【0047】本発明の好適な一態様である請求項7に拠
れば、前記分割工程は、
【0048】(a)前記多角形図形を構成する辺の向き
を、この多角形図形の面積の演算値が所定の符号となる
ように定義し、
【0049】(b)第1の頂点と、この頂点を挟み前記
多角形図形を構成する2辺と、この2辺についての向き
情報とによって構成される三角形について、該三角形の
2辺から決まる面積の演算値が前記所定の符号と同符号
であって、かつ元の多角形図形の頂点が該三角形の内点
でないかを判断し、
【0050】(c)上記2条件が満足されるときに、前
記三角形を前記多角形図形から除外するように前記頂点
データを再編成して、新たな多角形図形を形成し、
【0051】(d)この新たな多角形図形に対して、前
記(b)乃至(c)工程を繰り返すことを特徴とする。
凸多角形のもっとも単純な三角形を用いて、元の多角形
図形を単純な三角形に宿対することができる。上記本発
明の目的は、コンピュータ読取可能なプログラム記憶媒
体に拠っても達成される。上記本発明の目的は、前記多
角形図形を表示する表示手段と、ユーザとのインタフェ
ースをはかるユーザインタフェース手段と、前記コンピ
ュータプログラムならびにアプリケーション・プログラ
ムを記憶する記憶手段と、前記記憶手段に記憶されたア
プリケーション・プログラムとコンピュータプログラム
を実行するプログラム実行手段とを有するグラフィック
描画装置に拠っても達成される。
【0052】
【発明の実施の形態】以下添付図面を参照しながら本発
明を適用した好適な実施形態を説明する。
【0053】第7図は、本発明が適用された実施形態の
グラフィック描画装置の構成を示し、実質的には、ワー
クステーション、パソコンシステムである。
【0054】以下に、実施形態の描画装置の内点判定の
原理を説明する。この内点判定プログラムはモジュール
化されて、実質的には描画プログラムに組み込まれてお
り、第7図のFD(フロッピーディスク)やHD(ハー
ドディスク)からRAMに読み込まれる。
【0055】第8図のように、ある平面C内に、「向き
付け」された多角形Aが存在しているとする。「向き付
け」されたとは、多角形Aを構成する辺に対して、一方
向の矢印が自然に定義できるという事である。当然であ
るが、この矢印の方向には2つの自由度、即ち、右回り
と左回りの自由度が存在している。向きを付けるという
事は、この2つの自由度に対してその一つを選ぶという
事と等しい。そして辺に向きが与えられれば、その辺を
描く線分の始点と終点とが定義されることになる。
【0056】このように与えられた向きに対して、多角
形のある頂点から出発して一周する事で、多角形の頂点
の点列が第9図のように形成される。その点列(xj,
yj)(j= 0, ... ,11)とする。但し、(x0,y0)=
(x11,y11)である。また、より一般のN多角形の場合
は、多角形の頂点の点列が第10図のように形成され
る。その点列を(xj,yj)(j=0,...,N)としよ
う。但し、(x0,y0)=(xN,y N)。
【0057】この時、更に第8図に示すように同一平面
C上に別の点P(x,y)が存在しているとする。簡単のた
め、Pは多角形の頂点上及び辺上には存在しないと仮定
する。
【0058】従来の例で示したプログラムにおいては、
図103で示したように、i番目のφiをs3008で計算し、
その和を計算し、s3010の道筋で、i=0からi=N−1ま
で、各々を計算し、s3009でφiを足し合わせる。しか
しながら、この計算はAtAnという超越関数を使うた
め、計算に時間がかかる。そこで、次の事実を考える。
【0059】そこで、与えられた多角形が凸多角形であ
る特殊な場合を考察する。凸多角形とはその内角のすべ
てが、π(180度)以下の多角形の事である。この場
合、点Pと、凸多角形の各辺の終点とを結ぶベクトルの
外積Siを夫々演算する。もし点Pが内点であれば、夫々
演算された外積Siはすべて同符号となり、反対に、外点
であれば、符号の異なるものを含む事となる。
【0060】第11図に与えられているような凸多角形
Bが存在しているとして、その頂点の点列が(x1,
y2),...,(xN-1,yN-1)で与えられているとす
る。第11図の例はN=5に相当している。
【0061】与えられた多角形が凸多角形の場合は次の
ような計算を行えば内点判定を行う事が可能である。ま
ず、多角形の頂点を適当に選ぶ。選ばれた頂点から多角
形の向きにそって、式(3)で与えたようにSiを計算
し、
【0062】
【0063】さらに、このSiと隣のSi-1との積を計算す
る。この積が正であれば、SiとSi-1とは同符合である事
を意味する。即ち、
【0064】である事を確かめる。もしも、どこかの点
で、SiSi-1が負になるものが存在すれば、与えられた点
Pは内点でない事を意味する。SiまたはSi-1がゼロの場
合は、点Pが凸多角形の辺上にあるとして、計算を終え
る。この事実にたった内点判定アルゴリズムを改良アル
ゴリズムと呼ぶ。この場合、 atan等の超越関数を使用
する事なく、単純な掛け算と引き算のみの計算で内点か
否かを判定できるため、従来のアルゴリズムに比較して
非常に高速となる。
【0065】第13図に沿って改良アルゴリズムを説明
する。ステップS100で適当な初期化を行う。ステッ
プS102で、凸多角形Bの座標列を向きに応じて読み
込む。。ステップS104において、着目する点Pの座
標を読み込む。まず、ステップS106で式(3)に従
ってS0を計算する。ステップS108ではカウンタiを
1に初期化する。ループ(ステップS110〜ステップ
S116)に入って、それぞれのSiを(3)式に従って
計算し、一つ前のSi-1との符号のチェックをステップS
114で行う。すべての辺でSiが同一符号であれば、点
Pは内点であると考えられるので、ステップS118及
びステップS120の分岐を行う。これによって、凸多
角形の内点か否かの判定が非常に高速に行うことができ
る。
【0066】そこで、本実施形態においては、この改良
アルゴリズムを利用した内点判定アルゴリズムを提供す
る。
【0067】本実施形態においては、第14図のフロー
チャートに従った内点判定アルゴリズムを提供する。
【0068】まず、第9図のように第8図の多角形Aに
対して、それを分割構成する凸多角形群B1,B2
B3,...,BMを予め分割しておき、それらの点列をス
テップS202で入力しておく。第8図,第9図の場合
はM=4である。
【0069】ステップS206ではカウンタmを1に初
期化する。
【0070】第14図に示すように、このように与えら
れた多角形Aとそれを分割構成する凸多角形群B1,B2,B
3,...,BMに対して凸多角形の内点判定(ステップ
S210)を行う事で内点判定を行う。
【0071】凸多角形B1に対して点Pの内点判定をした
後に、もしも点Pが該凸多角形B1の内点であれば、多角
形Aの内点である事を示し、計算を終える。
【0072】もしも、点PがB1の内点でなければ、次の
凸多角形B2に対して同様のアルゴリズムに従った内点判
定を行う。この判定によって点PがB2の内点であれば、
点Pは多角形Aの内点であるとして計算を終える。
【0073】もし内点でなければ次なる凸多角形B3につ
いて改良アルゴリズムに従った内点判定を行う。このよ
うにして凸多角形群の内のどれかの内点である事が判明
すれば、判明した時点で計算を終えて該多角形Aの内点
であるとする。他方、凸多角形群すべてに対して、内点
でないと判断された場合は点Pが多角形Aの外点である
と判断して計算を終える。
【0074】具体的には、第14図のステップS200
において適当な初期化をおこない、メモリ等を確保す
る。ステップS202において、凸多角形群B1,B2
B3,...,BMの座標データを読み込む。また、ステッ
プS204で点Pの座標を読み込む。ステップS206
で凸多角形群の指標mを初期化し、m=1とする。
【0075】ステップS208でmがMより大きくないか
否かを調べる。mが1なので、ステップS210へ進む。
ステップS210で、凸多角形Bmと点Pについて改良ア
ルゴリズムによる内定判定を行う。ステップS212
で、点Pが凸多角形Bmの内点であれば着目する多角形A
の内点であるので、そのままステップS216に進み、
多角形Aの内点であるとして作業を終える。
【0076】もし、点Pが凸多角形Bmの内点でなくと
も、他の凸多角形の内点である可能性があるので、点P
が凸多角形Bmの内点でない場合はsステップS214に
進み、m=m+1と進める。その後、ステップS208〜ス
テップS214の過程を内点判定で内点であるという判
断(ステップS216)を得るまで、繰り返す。
【0077】もしも、mがMを越えた場合、つまり、全て
の凸多角形の外点に点Pが存在している場合、点Pは着
目する多角形Aの外点である事を意味するので、ステッ
プS208でm>Mの場合は、内点でないと判断する。ス
テップS218へ進み作業を終える。
【0078】この方法に従えば、有限回の代数計算で、
多角形の内点判定が可能となる。従って、超越関数の計
算が遅い計算機の場合でも、十分速い計算能力を発揮で
きる。特に図形が簡単な場合は、高速の内点判定が可能
となる。この事により、計算量は遥かに小さくなり、高
速の内点判定アルゴリズムが提供された事となる。
【0079】また、第6図の例に相当する多角形の場
合、即ち、斜め方向に細長い図形の場合には、第12図
に示すような凸多角形分割によって、高速の判定が可能
である事が容易に理解できる。
【0080】更に、与えられた多角形に対して凸多角形
群B1,B2,...,BMを面積の大きい順に並べておき、
その順序に従って内点判定を行えば点Pの分布が確率的
に一応の場合はより高速の内点判定が行えるのでそのよ
うに計算を行ってもよい。
【0081】[実施例2]実施例1においては、与えられた
図形を内包する凸多角形群を予めデータとして入力され
る事が求められた。しかしながら、与えられた多角形か
らそれを分割構成する凸多角形群を生成する方法が存在
すれば、内点判定がより簡便になる事となる。従って、
本実施例においてはこの多角形を分割構成する凸多角形
の生成方法を具体的に与えたのちに、実施例1と同様に
内点判定を行う。
【0082】凸多角形群特に三角形分割の仕方について
は、第15図のフローチャートに従う。形成される凸多
角形は第16図乃至第22図に与えられている通りであ
る。多角形Aの各辺の向きは第16図に示しているよう
に左回りに決められているものとする。なお、もしも、
右回りであれば、多角形Aの点列を逆にして左回りにし
ておく。
【0083】第15図のフローチャートについての説明
を行う前に、第16図乃至第22図で具体的な例に従っ
て第15図のアルゴリズムの概要を説明する。
【0084】この方法は、多角形の頂点を選んできて、
頂点を挟む三角形が多角形Aに内包される三角形であれ
ば、その三角形を多角形Aから除き、多角形を小型化す
るという操作を繰り返すものである。即ち、小型化した
多角形に対して再び内包する三角形を見つけだして、該
三角形を小型化した多角形から取り除き、更に多角形を
小型化する。このような操作を繰り返す事で多角形を三
角形の集合に分割する。
【0085】第16図のように、多角形Aが点列(x0,
y0),...,(x10,y10)によって与えられていて、
その点の並びは左回りになっている。つまり、向き付け
られた面積
【0086】
【0087】は正である。なお、もしも多角形Aの面積
が負であれば、正になるように向きを付け直していると
する。つまり、向きを(12)式で与えられる面積が正
の値となるように定める。この多角形Aを初期多角形と
してA1と名付け、その頂点をC[1,j]:(xj,yj)、即
ち、C[1,0],C[1,1],_,C[1,N]とする。初期多角形A1
の任意の頂点として、ここではC[1,1]=(x1,y1)とす
る。頂点C[1,1]を挟む多角形A1から構成される三角形
は、次の三点を結ぶ線の集合
【0088】
【0089】がある。尚、上記(13)式は、3つの点
をつないで形成される三角形を意味するものとする。こ
の三角形をB(1) 1と呼ぶ。この三角形B(1) 1が多角形A1
含まれる為には、より具体的には、三角形B(j) mが多角
形Ajに含まれるためには、次の条件を満たさなければな
らない。即ち、 1) 三角形B(j) mの向きが多角形Ajのものと同じであ
る、
【0090】2) 三角形B(j) mの中に多角形Ajの点が含
まれていない、
【0091】事である。上記の条件1)については、
【0092】の正負で判定することができる。即ち、s
jが正であれば、Aと着目する三角形とが同じ向きである
事を意味している。初期多角形A1の三角形B(1) 1につい
てはm=1、j=1とする。
【0093】第16図の例ではB(1) 1は条件1)を満た
していないので、多角形Aに内包される三角形でないと
判断される。
【0094】次に、j=2として、
【0095】
【0096】に拠って規定されるB(2) 1はこの条件1)
を満たしているので、更に、条件2)について判定をす
る。条件2)は凸多角形についての内点判定アルゴリズ
ム(第5図)を使って判定できるので、多角形A1のB(2)
1の三点を除いたものに関して、内点判定を行う。j=2の
B(2) 1の場合(第18図)、両方の条件を満たすので、
多角形Aが内包する三角形であると判定され、これをB1
とする。そこで、A2として、多角形AからB 1を除いた多
角形を第19図のように定義する。このときA2の点列は
向きを保存するように名前がついているとする。例え
ば、リストベクトルを使用してもよい。いまの場合
【0097】C[2,0]:=C[1,3],C[2,1]:=C[1,4],C[2,2]:=
C[1,5],C[2,3]:=C[1,6],C[2,4]:=C[1,7],C[2,5]:=C[1,
8],C[2,6]:=C[1,9],C[2,7]:=C[1,10],C[2,8]:=C[1,0],C
[2,9]:=C[1,1]としてリストを構成している。多角形A2
に関して先と同様に内包する三角形B2を探索する。第2
0図では三角形j=1としたC[2,1]から探索を開始した。
第20図では、三角形j=1としたC[2,0],C[2,1],C[2,
2]から構成される三角形B(2) 1は上記の2条件を満たすの
で、これをB2とする。
【0098】そこで、A3として、A2からB2を除いた多角
形を第21図のように定義する。
【0099】上記の操作を繰り返す事で、多角形Aは第
22図のように三角形に分割される。
【0100】また、条件1)を満たし、条件2)を満た
さない例としては第23図に挙げた多角形Aの場合と三
角形Bの場合がある。第16図の場合は、条件2)を満た
さない場合が存在しないが、条件2)の必要性は理解で
きると思われる。
【0101】第15図のフローチャートに従って、実施
例2に係る三角形分割の方法を説明する。
【0102】ステップS300で適当な初期化を行う。
例えばメモリを開放する。
【0103】ステップS302で多角形Aの点列を読み
込み、それをA[1]とする。各頂点はC[1,0],C[1,
1],...,C[1,M]で与えられているとする。ステップ
S304でm=1とする。A[m]が三角形であれば、三角形
分割は終った事を意味するので、ステップS306でそ
の判定を行う。ステップS308で三角形でないと判定
された場合は上述の方法で内包する三角形B[m]を探索す
る。ステップS310で多角形A[m]の頂点を一つ選び、
それをj=1の点とする。選んだ多角形A[m]の頂点が一周
をしても内包する三角形を見つけられなかった場合、ス
テップS314でエラーを出力して終了する。
【0104】ステップS316で、点列を一周していな
いと判断された場合は、着目する頂点jの周りの三角形
について内包する三角形の条件を満たすか否かをステッ
プS312で計算を行い、ステップS316で判定す
る。条件を満たさない場合はステップS324に従い、
次の頂点へと進む。
【0105】ステップS316で条件を満たすと判定さ
れた場合は、ステップS318で、該三角形をB[m]と
し、ステップS320でA[m]からB[m]を除いた多角形を
A[m+1]として、ステップS322でmを1進ませる。こ
の時、A[m+1]は、向きを保存するようにC[m+1,0],C[m
+1,1],.....,C[m+1,K]で与えられているとす
る。K=M-mで与えられる多角形A[m+1]の頂点の数であ
る。
【0106】このようにして全て多角形Aを三角形に分
割できたならば、即ち、A[m]が三角形となった場合は、
ステップS326で、三角形B[m]をA[m]として、制御を
終了する。
【0107】このようにして、多角形Aは三角形の群と
して分割できた。
【0108】分割された多角形をもって、実施例1に従
って内点判定を行えばよい。
【0109】多角形Aを三角形に分割する際に計算に時
間を要するが、点Pの数が十分大きければ計算時間の中
で占める割合は小さくなる。
【0110】従って、本発明は、複数の点に対する内点
判定を行う際には有効である事が判る。
【0111】また必要であれば、一度分割した三角形を
再び部分的に統合して凸多角形とし、多角形Aを分割構
成する凸多角形を構成してもよい。
【0112】また、計算機内のメモリーは現在では十分
安価に手に入れる事が可能であるので、メモリー上の制
約については本発明では考慮しない。
【0113】
【他の実施形態】また、本発明の目的は、前述した実施
形態の機能を実現するソフトウェアのプログラムコード
を記録した記憶媒体を、システムあるいは装置に供給
し、そのシステムあるいは装置のコンピュータ(または
CPUやMPU)が記憶媒体に格納されたプログラムコー
ドを読出し実行することによっても、達成されることは
言うまでもない。
【0114】この場合、記憶媒体から読出されたプログ
ラムコード自体が前述した実施形態の機能を実現するこ
とになり、そのプログラムコードを記憶した記憶媒体は
本発明を構成することになる。
【0115】プログラムコードを供給するための記憶媒
体としては、例えば、フロッピディスク,ハードディス
ク,光ディスク,光磁気ディスク,CD−ROM,CD−
R,磁気テープ,不揮発性のメモリカード,ROMなど
を用いることができる。
【0116】また、コンピュータが読出したプログラム
コードを実行することにより、前述した実施形態の機能
が実現されるだけでなく、そのプログラムコードの指示
に基づき、コンピュータ上で稼働しているOS(オペレ
ーティングシステム)などが実際の処理の一部または全
部を行い、その処理によって前述した実施形態の機能が
実現される場合も含まれることは言うまでもない。
【0117】さらに、記憶媒体から読出されたプログラ
ムコードが、コンピュータに挿入された機能拡張ボード
やコンピュータに接続された機能拡張ユニットに備わる
メモリに書込まれた後、そのプログラムコードの指示に
基づき、その機能拡張ボードや機能拡張ユニットに備わ
るCPUなどが実際の処理の一部または全部を行い、そ
の処理によって前述した実施形態の機能が実現される場
合も含まれることは言うまでもない。
【0118】
【発明の効果】本発明によると多くの計算量を必要とし
ない内点判定アルゴリズムが提供された。したがって本
発明を使用すれば、従来の方法より短時間で内点の判定
が行い得る事が可能となった。
【図面の簡単な説明】
【図1】 従来技術における問題の所在を説明する図。
【図2】 従来技術における問題の所在を説明する図。
【図3】 従来技術におけるデータ処理手順を説明する
フローチャート。
【図4】 従来技術における内点判定の原理を説明する
図。
【図5】 従来技術におけるデータ処理手順を説明する
フローチャート。
【図6】 従来技術における問題の所在を説明する図。
【図7】 本発明にかかる内点判定法を十したグラフィ
ック描画装置の構成を示すブロック図。
【図8】 実施例1の処理手順を説明する図。
【図9】 実施例1の処理手順を説明する図。
【図10】 実施例1の処理手順を説明する図。
【図11】 実施例1の処理手順を説明する図。
【図12】 従来では処理困難であったが実施例1では
処理可能となった図形の例を示す図。
【図13】 実施例1の処理手順を説明する図。
【図14】 実施例2の処理手順を説明するフローチャ
ート。
【図15】 実施例2の処理手順を説明するフローチャ
ート。
【図16】 実施例2の処理手順を具体的に説明する
図。
【図17】 実施例2の処理手順を具体的に説明する
図。
【図18】 実施例2の処理手順を具体的に説明する
図。
【図19】 実施例2の処理手順を具体的に説明する
図。
【図20】 実施例2の処理手順を具体的に説明する
図。
【図21】 実施例2の処理手順を具体的に説明する
図。
【図22】 実施例2の処理手順を具体的に説明する
図。
【図23】 実施例2の処理手順を具体的に説明する
図。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 注目点が、頂点の集合によって形成され
    た多角形図形の内部に存在するか否かを判定する内点判
    定法において、 前記頂点の集合をコンピュータ処理可能な頂点データと
    して表し、 前記多角形図形を少なくとも1つの凸多角形に分割する
    ように、前記頂点データを編成し、 前記注目点が前記少なくとも1つの凸多角形の内部に存
    在するか否かを、編成された頂点データに基づいて判断
    し、 前記注目点が全ての凸多角形の外部に存在すると判断さ
    れた場合に、前記注目点が前記多角形図形の内部にない
    と決定する内点判定方法。
  2. 【請求項2】 前記多角形図形を複数の三角形に分割す
    ることを特徴とする請求項1に記載の内点判定方法。
  3. 【請求項3】 前記判断工程は、判断対象の凸多角形を
    ユーザにより指定する工程を含むことを特徴とする請求
    項1または2に記載の内点判定方法。
  4. 【請求項4】 前記多角形図形の各辺には向きが定義さ
    れていることを特徴とする請求項1乃至3のいずれかに
    記載の内点判定方法。
  5. 【請求項5】 前記判断工程は、前記注目点と1つの第
    1の凸多角形について、 を計算し、前記1つの凸多角形に隣り合う第2の凸多角
    形について、 を計算し、計算されたSi・Si-1の符号により判断するこ
    とを特徴とする請求項1乃至4のいずれかに記載の内点
    判定方法。
  6. 【請求項6】 更に、前記図形の一部を四角以上の凸多
    角形に分割可能か否かを判断する工程と、 前記一部を凸多角形に分割不能の場合には、三角形に分
    割する工程とを含むことを特徴とする請求項1乃至5の
    いずれかに記載の内点判定方法。
  7. 【請求項7】 前記分割工程は、(a)前記多角形図形
    を構成する辺の向きを、この多角形図形の面積の演算値
    が所定の符号となるように定義し、 (b)第1の頂点と、この頂点を挟み前記多角形図形を
    構成する2辺と、この2辺についての向き情報とによっ
    て構成される三角形について、該三角形の2辺から決ま
    る面積の演算値が前記所定の符号と同符号であって、か
    つ元の多角形図形の頂点が該三角形の内点でないかを判
    断し、 (c)上記2条件が満足されるときに、前記三角形を前
    記多角形図形から除外するように前記頂点データを再編
    成して、新たな多角形図形を形成し、 (d)この新たな多角形図形に対して、前記(b)乃至
    (c)工程を繰り返すことを特徴とする請求項1乃至6
    のいずれかに記載の内点判定方法。
  8. 【請求項8】 全ての頂点について前記2条件を満足し
    なかった場合にエラー処理を行う工程を更に具備する請
    求項7に記載の内点判定方法。
  9. 【請求項9】 コンピュータ読取可能なプログラム記憶
    媒体であって、請求項1乃至8のいずれかに記載の内点
    判定方法を実現するコンピュータプログラムを記憶する
    プログラム記憶媒体。
  10. 【請求項10】 前記多角形図形を表示する表示手段
    と、ユーザとのインタフェースをはかるユーザインタフ
    ェース手段と、前記コンピュータプログラムならびにア
    プリケーション・プログラムを記憶する記憶手段と、前
    記記憶手段に記憶されたアプリケーション・プログラム
    とコンピュータプログラムを実行するプログラム実行手
    段とを有する請求項9に記載のグラフィック描画装置。
JP11052048A 1999-02-26 1999-02-26 内点判定方法、グラフィック描画装置およびプログラム記憶媒体 Withdrawn JP2000251081A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11052048A JP2000251081A (ja) 1999-02-26 1999-02-26 内点判定方法、グラフィック描画装置およびプログラム記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11052048A JP2000251081A (ja) 1999-02-26 1999-02-26 内点判定方法、グラフィック描画装置およびプログラム記憶媒体

Publications (1)

Publication Number Publication Date
JP2000251081A true JP2000251081A (ja) 2000-09-14

Family

ID=12903945

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11052048A Withdrawn JP2000251081A (ja) 1999-02-26 1999-02-26 内点判定方法、グラフィック描画装置およびプログラム記憶媒体

Country Status (1)

Country Link
JP (1) JP2000251081A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012021806A (ja) * 2010-07-12 2012-02-02 Noguchi Institute 糖鎖構造認識用解析方法、糖鎖構造認識用解析装置およびプログラム
JPWO2021048993A1 (ja) * 2019-09-12 2021-03-18
WO2021048992A1 (ja) * 2019-09-12 2021-03-18 日本電信電話株式会社 前処理装置、判定システム、前処理方法および前処理プログラム
JPWO2021048987A1 (ja) * 2019-09-12 2021-03-18
CN116012491A (zh) * 2023-03-20 2023-04-25 电科疆泰(深圳)科技发展有限公司 多边形填充方法和装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012021806A (ja) * 2010-07-12 2012-02-02 Noguchi Institute 糖鎖構造認識用解析方法、糖鎖構造認識用解析装置およびプログラム
WO2021048987A1 (ja) * 2019-09-12 2021-03-18 日本電信電話株式会社 前処理装置、判定システム、前処理方法および前処理プログラム
WO2021048992A1 (ja) * 2019-09-12 2021-03-18 日本電信電話株式会社 前処理装置、判定システム、前処理方法および前処理プログラム
JPWO2021048992A1 (ja) * 2019-09-12 2021-03-18
WO2021048993A1 (ja) * 2019-09-12 2021-03-18 日本電信電話株式会社 前処理装置、判定システム、前処理方法および前処理プログラム
JPWO2021048987A1 (ja) * 2019-09-12 2021-03-18
JPWO2021048993A1 (ja) * 2019-09-12 2021-03-18
JP7168099B2 (ja) 2019-09-12 2022-11-09 日本電信電話株式会社 前処理装置、判定システム、前処理方法および前処理プログラム
JP7168100B2 (ja) 2019-09-12 2022-11-09 日本電信電話株式会社 前処理装置、判定システム、前処理方法および前処理プログラム
JP7168098B2 (ja) 2019-09-12 2022-11-09 日本電信電話株式会社 前処理装置、判定システム、前処理方法および前処理プログラム
EP4009280A4 (en) * 2019-09-12 2023-05-03 Nippon Telegraph And Telephone Corporation PREPROCESSING DEVICE, DETERMINATION SYSTEM, PREPROCESSING METHOD AND PREPROCESSING PROGRAM
CN116012491A (zh) * 2023-03-20 2023-04-25 电科疆泰(深圳)科技发展有限公司 多边形填充方法和装置
CN116012491B (zh) * 2023-03-20 2023-09-19 电科疆泰(深圳)科技发展有限公司 多边形填充方法和装置

Similar Documents

Publication Publication Date Title
Coupez et al. Parallel meshing and remeshing
RU2430421C2 (ru) Применение эффектов к объединенной текстовой дорожке
JPH08138082A (ja) 四角形メッシュの生成方法及びシステム
CN113724401B (zh) 一种三维模型切割方法、装置、计算机设备和存储介质
US5488692A (en) System and method for representing and manipulating three-dimensional objects on massively parallel architectures
Zhu et al. Analytical solutions for sketch-based convolution surface modeling on the GPU
Pungotra et al. Merging multiple B-spline surface patches in a virtual reality environment
Fernández et al. Algorithms for the decomposition of a polygon into convex polygons
JP2000251081A (ja) 内点判定方法、グラフィック描画装置およびプログラム記憶媒体
JPH07254075A (ja) 3次元的な物体の変形方法及びモデリングシステム
TWI406189B (zh) 點雲三角網格面構建方法
Sarkar et al. A linear-time algorithm to compute the triangular hull of a digital object
US6856325B2 (en) Information processing method and apparatus
US10223824B2 (en) Information processing apparatus, simulator result display method, and computer-readable recording medium
Au A simple algorithm for medial axis transform computation
JP2001067491A (ja) 再分割多角形を用いる画像表示方法及び装置
JP2003085569A (ja) 内外点判定アルゴリズム
JP3692460B2 (ja) 混合格子型解適合格子法を用いた数値解析装置
JP2008533614A (ja) 整合輪郭プロファイルを生成するシステム及び方法
Zhu et al. Constructive generation of the medial axis for solid models
Mäkinen Line-segment insertion in constrained triangulations with applications in path-planning
Danaila et al. Geometrical design: Bézier curves and surfaces
CA2308249C (en) Triangle strip length maximization
JP4093903B2 (ja) 曲面生成装置、曲面生成方法、プログラムおよび記録媒体
JP2001067497A (ja) 閉領域の包含関係判定方法およびこの方法を実施するためのプログラムを記録した記録媒体

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060509