(58)【調査した分野】(Int.Cl.,DB名)
線分の交点に基づく情報に関する条件である配置関係判断条件と、図形間の配置関係を示す配置関係情報とを有する1以上の配置関係管理情報が格納される配置関係管理情報格納手段と、
受付部と、判断部と、出力部と、延長半直線作成手段と、第一交差線分検出手段と、延長交点情報算出手段と、配置関係取得手段とを用いて行われる配置関係判断方法であって、
前記受付部が、
一の座標空間上の1以上の図形を示す情報であり、当該1以上の各図形を構成する1以上の座標を有する情報である図形情報を受け付ける受付ステップと、
前記判断部が、
前記図形情報が示す1以上の図形間の配置関係を判断し、当該1以上の図形間の配置関係を示す配置関係情報を取得する判断ステップと、
前記出力部が、
前記判断部が取得した配置関係情報を出力する出力ステップとを備え、
前記判断ステップは、
前記延長半直線作成手段が、
前記図形情報が示す1以上の図形が配置されている領域を含む領域を分割した領域である1以上の分割領域ごとに、当該1以上の各図形を構成する線分上の点を起点とし一の方向に延びる半直線であり、当該線分に対応する半直線である延長半直線を作成する延長半直線作成ステップと、
前記第一交差線分検出手段が、
前記延長半直線の起点となる点が属する1つの線分以外の1以上の線分のうち、当該延長半直線と最初に交差する線分である第一交差線分を、前記1以上の分割領域ごとに検出する第一交差線分検出ステップと、
前記延長交点情報算出手段が、
前記延長半直線と、当該延長半直線の起点となる点が属する1つの線分以外の1以上の各線分との交点に基づく情報である延長交点情報を、前記第一交差線分を用いて算出する延長交点情報算出ステップと、
前記配置関係取得手段が、
前記延長交点情報算出手段が算出した延長交点情報が合致する配置関係判断条件に対応する配置関係情報を、前記1以上の配置関係管理情報から取得する配置関係取得ステップとを備える配置関係判断方法。
線分の交点に基づく情報に関する条件である配置関係判断条件と、図形間の配置関係を示す配置関係情報とを有する1以上の配置関係管理情報が格納される配置関係管理情報格納手段にアクセス可能なコンピュータを、
一の座標空間上の1以上の図形を示す情報であり、当該1以上の各図形を構成する1以上の座標を有する情報である図形情報を受け付ける受付部と、
前記図形情報が示す1以上の図形間の配置関係を判断し、当該1以上の図形間の配置関係を示す配置関係情報を取得する判断部と、
前記判断部が取得した配置関係情報を出力する出力部として機能させるためのプログラムであって、
前記判断部を、
前記図形情報が示す1以上の図形が配置されている領域を含む領域を分割した領域である1以上の分割領域ごとに、当該1以上の各図形を構成する線分上の点を起点とし一の方向に延びる半直線であり、当該線分に対応する半直線である延長半直線を作成する延長半直線作成手段と、
前記延長半直線の起点となる点が属する1つの線分以外の1以上の線分のうち、当該延長半直線と最初に交差する線分である第一交差線分を、前記1以上の分割領域ごとに検出する第一交差線分検出手段と、
前記延長半直線と、当該延長半直線の起点となる点が属する1つの線分以外の1以上の各線分との交点に基づく情報である延長交点情報を、前記第一交差線分を用いて算出する延長交点情報算出手段と、
前記延長交点情報算出手段が算出した延長交点情報が合致する配置関係判断条件に対応する配置関係情報を、前記1以上の配置関係管理情報から取得する配置関係取得手段として機能させるためのプログラム。
【発明を実施するための形態】
【0023】
以下、本発明による配置関係判断装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。また、本実施の形態において説明する各情報の形式、内容などは、あくまで例示であり、各情報の持つ意味を示すことができれば、形式、内容などは問わない。
【0024】
(実施の形態1)
本実施の形態において、2つの図形間の配置関係を判断する処理を、1以上の分割領域ごとに行い、当該配置関係を示す配置関係情報を出力する配置関係判断装置1について説明する。
【0025】
図1は、本実施の形態における配置関係判断装置1のブロック図である。配置関係判断装置1は、受付部11、判断部12、出力部13を備える。また、判断部12は、配置関係管理情報格納手段121、分割領域サイズ決定手段122、領域分割手段123、延長半直線作成手段124、第一交差線分検出手段125、延長交点情報算出手段126、配置関係取得手段127を備える。
【0026】
受付部11は、一の座標空間上の図形を示す情報である図形情報を受け付ける。当該座標空間は、通常、2次元である。また、当該図形は、通常、1以上である。また、当該図形は、通常、多角形である。また、当該図形は、例えば、線分であってもよい。また、図形情報は、通常、少なくとも1以上の座標を有する座標集合を、1以上有する。また、当該1つの座標集合は、通常、1つの図形を示す。つまり、例えば、1以上の図形を示す場合、図形情報は、通常、1以上の座標集合を有する。また、当該座標集合には、図形を識別する識別子(以下、適宜、図形識別子)が対応付いていてもよい。また、当該座標集合には、図形を構成する線分を識別する識別子(以下、適宜、線分識別子)が対応付いていてもよい。
【0027】
また、図形情報は、当該1以上の座標集合により1つの図形を示すことができればよく、データ構造やデータ形式などは、問わない。例えば、1つの矩形を示す場合、図形情報は、例えば、当該矩形の4つの各頂点の座標を有する座標集合を有していてもよい。また、この場合、図形情報は、例えば、当該矩形の4つの各辺(線分)の端点の座標を有する座標集合を有していてもよい。また、この場合、図形情報は、例えば、基準となる1つの頂点の座標と、横幅および縦幅を示す情報とを有する座標集合を有していてもよい。
【0028】
また、一の図形を示す座標集合が、当該図形の各頂点の座標を有する場合、当該各座標には、例えば、頂点を識別する識別子(以下、適宜、点識別子)が対応付いていてもよい。当該識別子は、通常、当該図形における頂点の順序を示す。当該「順序」とは、頂点間を結ぶ線分を描画する方向や、当該線分を描画する順序などである。また、当該「順序」は、通常、いわゆる半時計回りであることが好適である。
【0029】
なお、図形情報の具体的なデータ形式は、例えば、GDS−2や、OASIS、MEBESなどである。
【0030】
また、受け付けとは、タッチパネルや、キーボードなどの入力デバイスから入力された情報の取得、光ディスクや磁気ディスク、半導体メモリなどの記録媒体に格納されている情報の取得、有線もしくは無線の通信回線を介して送信された情報の受信などを含む概念である。
【0031】
また、受付部11における情報や指示などの入力手段は、メニュー画面によるものや、キーボードなど、何でもよい。受付部11は、メニュー画面の制御ソフトウェアや、キーボード等の入力手段のデバイスドライバなどで実現され得る。
【0032】
判断部12は、図形情報を用いて、当該図形情報が示す1以上の図形間の配置関係を判断する。そして、判断部12は、当該判断の結果を示す配置関係情報を取得する。配置関係情報とは、図形間の配置関係を示す情報である。また、配置関係情報は、例えば、「交差」や、「重複」、「隔離」、「包含」、「被包含」、「内側」、「外側」、などである。
【0033】
また、判断部12は、通常、1以上の図形間の配置関係の判断に関する処理を、1以上の分割領域ごとに並列に行い、配置関係情報を取得する。「1以上の図形間の配置関係の判断に関する処理」とは、後述の延長半直線作成手段124や、第一交差線分検出手段125などが、分割領域において行う処理である。また、分割領域とは、図形情報が示す1以上の図形が配置されている領域を含む領域を、予め決められたサイズ(大きさ)で1以上の格子状に等分した領域である。
【0034】
分割領域は、通常、1以上の単位領域を有する正方領域である。単位領域とは、サイズが1×1の領域である。「1×1」とは、縦幅および横幅のサイズが「1」であることを意味する。また、当該「サイズ」とは、通常、座標空間における大きさである。また、正方領域とは、形状が正方形である領域である。また、分割領域の形状は、矩形であればよい。ここで、「図形情報が示す図形が配置されている領域」を、以下、図形配置領域とする。また、「図形情報が示す図形が配置されている領域を含む領域」を、以下、分割対象領域とする。
【0035】
また、「1以上の分割領域ごとに並列に行う」とは、1以上の各分割領域における処理を並列に行うことを意味する。また、判断部12は、1以上の図形間の配置関係の判断を、例えば、当該1以上の分割領域ごとに直列に行ってもよい。「1以上の分割領域ごとに直列に行う」とは、1以上の各分割領域における処理を順に行うことを意味する。
【0036】
また、図形情報が示す1以上の図形は、通常、一の座標空間上に配置される。従って、図形配置領域および分割対象領域は、通常、当該図形が配置されている座標空間上の領域である。また、当該2つの領域の形状は、通常、矩形である。また、当該矩形は、通常、横および縦が、それぞれ、座標空間の横軸(x軸)および縦軸(y軸)に並行な矩形である。
【0037】
また、図形配置領域は、通常、当該図形を含む領域であればよい。つまり、図形配置領域は、当該図形が内接する領域のサイズ以上のサイズの領域であればよい。また、図形配置領域のサイズは、分割領域の整数倍のサイズでなくてもよい。また、分割対象領域のサイズは、通常、分割領域の整数倍のサイズである。また、また、分割対象領域と図形配置領域とは、位置およびサイズともに同一であってもよい。
【0038】
また、判断部12は、通常、後述の各手段により、配置関係情報を取得する。
【0039】
配置関係管理情報格納手段121には、1以上の配置関係管理情報が格納される。配置関係管理情報とは、配置関係判断条件と、配置関係情報とを有する情報である。
【0040】
配置関係判断条件とは、1以上の図形間の配置関係を判断するための条件である。配置関係判断条件は、通常、線分の交点に基づく情報に関する条件である。当該「線分の交点」は、通常、線分と半直線との交点である。また、当該線分は、通常、図形情報が示す1以上の図形を構成する線分である。また、当該半直線は、当該図形を構成する線分上の点を起点とする半直線である。当該線分上の点には、通常、線分の端点(図形の頂点)も含まれる。また、当該半直線は、例えば、当該図形を構成する線分上の点を起点とする線分であってもよい。
【0041】
また、上記「線分の交点に基づく情報」とは、線分の交点を用いて算出される点の数や、線分の交点の数に基づいて判断される点の数などである。「線分の交点を用いて算出される点の数」は、例えば、いわゆる巻数(Winding Number)や、当該交点そのものの数(以下、適宜、延長交点数)などである。「巻数」は、「回転数」と呼ばれる場合もある。また、「線分の交点の数に基づいて判断される点の数」は、例えば、一の図形の内側に存在する点の数や、一の図形の外側に存在する点の数などである。なお、当該図形の内側または外側に存在する点は、通常、図形を構成する線分上の点である。
【0042】
また、「巻数」は、例えば、図形を構成する線分に向きがあり、当該線分の向きが上向きであれば「+1」とカウントし、当該線分の向きが下向きであれば「−1」とカウントすることにより算出された交点の数である。また、「巻数」は、例えば、図形の線分の傾きがプラスであれば「+1」とカウントし、図形の線分の傾きがマイナスであれば「−1」とカウントすることにより算出された交点の数であってもよい。
【0043】
なお、線分の向きが上向きか下向きかについては、例えば、線分の両端の端点の座標について、線分の方向(線分の両端の端点の順序)に対してy座標の値が増加していれば上向き、y座標の値が減少していれば下向きであると判断する。
【0044】
配置関係判断条件は、例えば、線分の交点の数が偶数であることや、線分の交点の数が奇数であること、巻数が0であること、巻数が1以上であること、一の図形の内部に存在する点の数が予め決められた閾値以上であること、一の図形の外部に存在する点の数が予め決められた閾値以上であること、当該内側に存在する点の数と当該外側に存在する点の数との割合が予め決められた閾値以上であることなどである。
【0045】
また、配置関係管理情報格納手段121は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。また、配置関係管理情報格納手段121に所定の情報が記憶される過程は、問わない。例えば、当該所定の情報は、記録媒体や、通信回線、入力デバイスなどを介して配置関係管理情報格納手段121に記憶されてもよい。
【0046】
分割領域サイズ決定手段122は、通常、1以上の各分割領域内の線分の数を用いて、分割領域のサイズを決定する。「分割領域内の線分」とは、分割領域内に存在する線分であり、一部または全部が分割領域内に配置されている線分である。また、当該「1以上の各分割領域内の線分の数」は、分割対象領域内の線分の数であってもよい。また、当該「線分の数」は、2つの線分の交点の数であってもよい。また、「分割領域のサイズを決定する」とは、通常、当該分割領域のサイズを示す情報を取得することである。また、「分割領域のサイズを決定する」ことは、分割対象領域の分割数を決定することであってもよい。また、当該「分割数を決定する」とは、通常、当該分割数を示す情報を取得することである。
【0047】
具体的に、分割領域サイズ決定手段122は、通常、パラメータ「x」を引数とする関数f(x)の値が、予め決められた条件(以下、適宜、線分数条件)を満たす分割領域のサイズを決定する。当該パラメータ「x」は、例えば、1以上の各分割領域内の線分の数や、分割対象領域内の線分の数、1以上の各分割領域内の交点の数、分割対象領域内の交点の数などである。また、当該関数f(x)は、例えば、1以上の各分割領域内の線分の数の平均や、1以上の各分割領域内の交点の数の平均などを算出する関数である。また、当該平均は、通常、算術平均であるが、例えば、加重平均であってもよい。また、当該関数f(x)は、その他の値を算出する関数であってもよい。また、「線分数条件を満たす分割領域のサイズ」とは、例えば、あるサイズで分割対象領域を分割した際の1以上の各分割領域内の線分の数の平均が、線分数条件を満たす場合の、当該分割領域のサイズである。また、線分数条件は、例えば、1以上の各分割領域内の線分の数の平均や、1以上の各分割領域内の交点の数の平均などに関する条件である。また、線分数条件は、通常、1以上の各分割領域内の線分の数の平均が、10以上20以下であることが好適である。10以上20以下であるとは、概ね10から概ね20ぐらいまでの意義である。
【0048】
ここで、「一の領域内に存在する線分」とは、通常、一部または全部が当該領域内に配置されている線分である。
【0049】
また、分割領域サイズ決定手段122は、例えば、以下いずれかの方法により、分割領域のサイズを決定する。
(A)1以上の各分割領域内の線分の数をカウントする方法
(B)分割対象領域内の線分の数をカウントする方法
(C)1以上の各分割領域内の交点の数をカウントする方法
(D)分割対象領域内の交点の数をカウントする方法
【0050】
(A)の方法:当該方法は、分割領域のサイズを変えながら分割領域内の線分の数をカウントし、分割領域のサイズを決定する方法である。当該方法の具体的な手順は、例えば、以下のとおりである。
(1)カウンタiに、1をセットする。
(2)分割対象領域を、i×iのサイズの分割領域に分割する。
(3)(2)で分割した分割領域ごとに、分割領域内の線分の数をカウントする。
(4)(3)でカウントした分割領域内の線分の数の平均を算出する。
(5)(4)で算出した平均が、線分数条件を満たす場合は、iを分割領域のサイズとして取得し、処理を終了する。
(6)iが上限値以上であるか否かを判断する。上限値以上である場合は、処理を終了する。また、上限値未満である場合は、iを1インクリメントし、(1)に戻る。
【0051】
なお、上記(1)において、カウンタiにセットする値は、1以上であることが好適である。
【0052】
また、上記(2)において、分割対象領域の位置およびサイズは、図形配置領域と同一の位置およびサイズとする。そして、分割領域のサイズ(i×i)の整数倍でない場合は、整数倍となるように、分割対象領域のサイズを大きくする。
【0053】
例えば、分割領域のサイズが「10×10」であり、分割対象領域のサイズが1275×1024であるとする。この様な場合、分割領域サイズ決定手段122は、まず、分割対象領域の横幅について、「1275」よりも大きい10の倍数のうち最小の値である「1280」を算出する。そして、分割領域サイズ決定手段122は、次に、分割対象領域の縦幅について、「1024」よりも大きい10の倍数のうち最小の値である「1030」を算出する。そして、分割領域サイズ決定手段122は、分割対象領域のサイズを「1280×1030」とする。
【0054】
また、上記(3)において、分割領域内の線分は、例えば、2本の線分の交点を、一の線分の端点としなくてもよいし、一の線分の端点としてもよい。つまり、例えば、交差している2本の線分について、2本とカウントしてもよいし、当該2本の線分の交点を分割点とし、4本とカウントしてもよい。
【0055】
また、上記(6)において、iの上限値は、通常、図形配置領域の横幅または縦幅のいずれか大きい方である。
【0056】
例えば、分割領域のサイズが「5×5」であるとする。また、この場合の1以上の各分割領域内の線分の数の平均が「15」であるとする。また、線分数条件が「10≦平均数≦20」であるとする。当該線分数条件は、1以上の各分割領域内の線分の数の平均が10以上20以下であることを意味する。この様な場合、分割領域サイズ決定手段122は、当該線分の数の平均が、当該線分数条件を満たすと判断する。そして、分割領域サイズ決定手段122は、当該分割領域のサイズ「5×5」を取得する。
【0057】
(B)の方法:当該方法は、分割対象領域内の線分の数をカウントし、分割領域の分割数を決定する方法である。当該方法の具体的な手順は、例えば、以下のとおりである。
(1)分割対象領域内の線分の数をカウントする。
(2)(1)でカウントした数を、線分数条件を満たす1以上の各整数で割り、商を算出する。
(3)(2)で算出した1以上の商のうち、整数である1以上の商を、分割数として取得する。
(4)(3)で取得した1以上の商が示す整数の範囲のうち、抜けのある1以上の整数を、分割数としてさらに取得する。
【0058】
なお、上記(1)において、分割対象領域内の線分は、例えば、2本の線分の交点を、一の線分の端点としなくてもよいし、一の線分の端点としてもよい。つまり、例えば、交差している2本の線分について、2本とカウントしてもよいし、当該2本の線分の交点を分割点とし、4本とカウントしてもよい。
【0059】
また、上記(2)において、線分数条件を満たす1以上の整数は、当該線分数条件が示す整数の範囲の上限および下限のみであってもよい。
【0060】
また、上記(4)において、分割領域サイズ決定手段122は、例えば、取得した分割数から、以下のいずれかの条件(以下、適宜、分割数条件)を満たす分割数のみを取得してもよい。
(a)平方数であること
(b)対応する2つの約数の比が、分割対象領域の横幅および縦幅の比と一致または近似すること
(c)分割対象領域内の線分の数を割ったときの商が整数であること
【0061】
なお、上記(b)において、「対応する2つの約数」とは、積が取得した分割数となる約数の組である。また、(b)において、2つの比が近似するか否かの判断は、例えば、当該2つの比から比の値を算出し、当該比の値の差が予め決められた条件を満たすほど小さいか否かを判断することで行う。
【0062】
例えば、分割対象領域内の線分の数が「120」であるとする。また、線分数条件が「10≦平均数≦20」であるとする。この様な場合、分割領域サイズ決定手段122は、当該線分の数を、当該線分数条件が示す範囲の上限「20」と下限「10」のそれぞれの数で割った値である「6」と「12」を、分割数として取得する。そして、分割領域サイズ決定手段122は、当該「6」から「12」までの整数のうち、抜けている整数「7」、「8」、「9」、「10」、「11」を、分割数としてさらに取得する。
【0063】
また、当該取得した7個の整数のうち、上記(a)の分割数条件を満たす分割数は、「9」である。また、例えば、分割対象領域の横幅および縦幅の比が「2:1」である場合、当該取得した7個の整数のうち、上記(b)の分割数条件を満たす分割数は、「8(4×2)」である。また、当該取得した7個の整数のうち、上記(c)の分割数条件を満たす分割数は、「6」、「8」、「10」、「12」である。
【0064】
なお、(C)の方法における具体的な手順は、(A)の方法における具体的な手順と同様であり、また、(D)の方法における具体的な手順は、(B)の方法における具体的な手順と同様であるので、説明を省略する。
【0065】
また、分割領域のサイズを決定する場合、分割領域サイズ決定手段122は、通常、1つの分割領域のサイズを決定する。また、分割領域の分割数を決定する場合、分割領域サイズ決定手段122は、通常、1つの分割領域の分割数を決定する。なお、当該サイズ、および分割数は、通常、1以上の整数である。
【0066】
また、分割領域サイズ決定手段122は、通常、図形情報から、図形配置領域のサイズまたは図形配置領域を示す座標集合を取得する。また、分割領域サイズ決定手段122は、通常、図形情報から、分割対象領域のサイズまたは分割対象領域を示す座標集合を取得する。
【0067】
また、一の領域内の線分の数や交点の数などをカウントする方法や手順などは、公知であるので、説明を省略する。
【0068】
領域分割手段123は、分割対象領域を1以上の分割領域に分割する。「分割領域に分割する」とは、通常、1以上の各分割領域を示す1以上の座標集合を取得することである。また、「分割領域に分割する」とは、例えば、1以上の分割領域間の境界線を示す情報を取得することや、隣接する2つの分割領域において共通する頂点の座標を取得することなどであってもよい。また、「境界線を示す情報」とは、例えば、当該境界線を示す定数関数である。
【0069】
また、領域分割手段123は、通常、予め決められた分割領域のサイズ、または分割領域の分割数により、分割対象領域を1以上の分割領域に分割する。また、当該分割領域のサイズ、および分割領域の分割数は、例えば、分割領域サイズ決定手段122が決定した分割領域のサイズ、および分割領域の分割数であることが好適である。
【0070】
例えば、分割領域のサイズが「10×10」である場合、領域分割手段123は、分割対象領域の横および縦を10ずつに区切り、格子状に分割する。また、このとき、分割対象領域の横幅または縦幅が、当該分割領域のサイズの整数倍でない場合、領域分割手段123は、当該分割対象領域の横幅または縦幅が、当該分割領域のサイズの整数倍となるように、分割対象領域のサイズを大きくする。また、この場合において、例えば、分割対象領域のサイズが「100×100」であるとする。この様な場合、領域分割手段123は、当該分割対象領域を、「10×10」の格子状に分割する。
【0071】
また、例えば、分割領域の分割数が「9」である場合、領域分割手段123は、分割対象領域の横および縦をそれぞれ三等分にし、「3×3」の格子状に分割する。また、このとき、分割対象領域の横幅および縦幅の比が、当該分割数の対応する2つの約数の比「1:1」と一致および近似しない場合、領域分割手段123は、当該分割対象領域の横幅および縦幅の比が、当該分割数を構成する整数の比と一致また近似するように、分割対象領域のサイズを大きくする。また、この場合において、例えば、分割対象領域のサイズが「120×120」であるとする。この様な場合、領域分割手段123は、当該分割対象領域を、サイズが「40×40」である9個の分割領域に分割する。
【0072】
また、領域分割手段123は、例えば、取得した1以上の各座標集合(分割領域を示す座標集合)に、各分割領域を識別する識別子(以下、適宜、分割領域識別子)を対応付けてもよい。
【0073】
延長半直線作成手段124は、1以上の分割領域ごとに、1以上の各図形を構成する線分上の点を起点とし、一の方向に延びる半直線(以下、適宜、延長半直線)を作成する。当該分割領域は、通常、領域分割手段123が分割した分割領域である。また、当該分割領域は、例えば、予め分割された分割領域であってもよい。また、延長半直線の起点となる点は、通常、図形を構成する線分の端点(図形の頂点)であることが好適である。また、当該延長半直線の起点となる点は、例えば、構成する線分の中点であってもよい。
【0074】
また、上記「一の方向」とは、半直線が延びる方向であり、通常、予め決められている。「一の方向」は、通常、座標空間における方向であり、座標軸や座標値に関する方向である。また、「一の方向」は、例えば、いわゆる傾きや、角度などを含んでいてもよい。具体的に、「一の方向」は、例えば、横軸のプラス方向や、縦軸のマイナス方向、横軸または縦軸のプラス方向、傾きが1/2でx座標の増加方向、角度が45°の方向などである。なお、当該角度は、通常、横軸のプラス側を基準(0°)とする角度である。
【0075】
また、上記「延長半直線を作成する」とは、通常、延長半直線を示す座標を取得することである。
【0076】
例えば、
図2の左側において、端点a、端点bのそれぞれを起点とする半直線であり、横軸のプラス方向に延びる延長半直線は、
図2の右側の延長半直線aと、延長半直線bである。
【0077】
また、例えば、
図3の左側において、端点a、端点bのそれぞれを起点とする半直線であり、縦軸のプラス方向に延びる延長半直線は、
図3の右側の延長半直線aと、延長半直線bである。
【0078】
また、延長半直線作成手段124は、通常、1以上の各図形が配置されている1以上の分割領域ごとに、延長半直線を作成する。また、このとき、延長半直線作成手段124は、通常、当該1以上の各分割領域内に、延長半直線の起点となる点が存在しているか否かを判断する。そして、延長半直線作成手段124は、当該起点となる点が存在している場合に、当該点を起点とする延長半直線を作成する。
また、延長半直線は、通常、一の線分に対応する半直線である。従って、延長半直線作成手段124は、通常、一の図形について、当該図形を構成する線分の数と同数の延長半直線を作成する。例えば、当該図形が三角形である場合、延長半直線作成手段124は、当該図形に対応する3本の延長半直線を作成する。
【0079】
また、延長半直線は、例えば、線分であってもよい。当該線分を「延長線分」とすると、延長線分は、1以上の各図形を構成する線分上の点を起点とし、一の方向に予め決められた条件(以下、適宜、線分延長条件)を満たすまで延びる線分である。また、当該線分延長条件は、例えば、他の図形の線分と交差するまでや、分割対象領域の境界線を通過するまで、予め決められた数の分割領域を通過するまで、同じ図形の他の線分と交差するまでなどである。
【0080】
また、延長半直線作成手段124は、例えば、取得した延長半直線を示す座標集合に、半直線を識別する識別子(以下、適宜、半直線識別子)を対応付けてもよい。また、延長半直線作成手段124は、例えば、取得した延長半直線を示す座標集合に、当該延長半直線に対応する図形を識別する図形識別子を対応付けてもよい。また、延長半直線作成手段124は、例えば、取得した延長半直線を示す座標集合に、当該延長半直線の起点となる点または当該延長半直線に対応する線分を識別する識別子を対応付けてもよい。
【0081】
第一交差線分検出手段125は、1以上の分割領域ごとに、一の延長半直線に対応する第一交差線分を検出する。第一交差線分とは、延長半直線の起点となる点が属する1つの線分以外の1以上の各線分のうち、延長半直線と最初に交差する線分である。また、当該「延長半直線の起点となる点が属する1つの線分」を、以下、適宜、「延長半直線に対応する線分」と表記する。また、第一交差線分は、言い換えると、一の延長半直線と交差する1以上の線分のうち、当該延長半直線に対応する線分以外の線分であり、最初に交差する線分である。
【0082】
また、上記「第一交差線分を検出する」とは、通常、第一交差線分を示す座標を取得することである。また、第一交差線分検出手段125は、通常、第一交差線分を示す座標を、図形情報から取得する。なお、半直線(ここでは、延長半直線)と、線分(ここでは、図形を構成する線分)とが交差するか否かを判断する方法や手順などは、公知であるので、詳細な説明を省略する。
【0083】
また、第一交差線分検出手段125は、通常、1つの延長半直線につき、1つの第一交差線分を検出する。具体的に、第一交差線分検出手段125は、延長半直線が配置される1以上の分割領域ごとに、当該分割領域内に当該延長半直線に対応する線分以外の他の線分が存在するか否かを判断する。そして、第一交差線分検出手段125は、他の線分が存在する場合に、当該線分と延長半直線とが交差するか否かを判断する。そして、第一交差線分検出手段125は、交差する場合に、当該交差する線分を第一交差線分として検出する。なお、第一交差線分検出手段125は、第一交差線分を検出できない場合もある。
【0084】
また、第一交差線分検出手段125は、例えば、1つの延長半直線につき、1以上の第一交差線分を検出してもよい。この場合、第一交差線分検出手段125は、通常、1つの延長半直線につき、当該延長半直線に対応する線分以外の1以上の線分ごとに、第一交差線分を検出する。つまり、例えば、図形A、図形B、図形Cがあり、当該図形Aを構成する線分aに対応する延長半直線について、第一交差線分を検出するとする。この様な場合、第一交差線分検出手段125は、線分a以外の図形Aとの第一交差線分、図形Bとの第一交差線分と、図形Cとの第一交差線分とを検出する。
【0085】
また、第一交差線分検出手段125は、例えば、1以上の分割領域ごとに、一の延長半直線に対応する交差線分を検出してもよい。交差線分とは、延長半直線の起点となる点が属する1つの線分以外の1以上の各線分のうち、延長半直線と交差する線分である。すなわち、交差線分には、第一交差線分が含まれる。また、「交差線分を検出する」とは、通常、交差線分を示す座標を取得することである。なお、交差線分を検出する方法や手順などは、第一交差線分を検出する方法や手順などと同様であるので、説明を省略する。また、第一交差線分検出手段125は、交差線分を検出できない場合もある。
【0086】
また、第一交差線分検出手段125は、例えば、図形情報が示す1以上の図形のうちの一の図形を構成する一の線分である第一線分と、第一線分との配置関係が第一の予め決められた条件を満たす線分である1以上の第二線分とについて、第一線分に対応する延長半直線が配置される分割領域の数が第二の予め決められた条件を満たすほど多い場合に、第一線分に対応する延長半直線と交差する第一交差線分を検出した結果を、第二線分に対応する延長半直線と交差する第一交差線分を検出した結果に適用してもよい。
【0087】
上記「第一の予め決められた条件」とは、配置関係条件である。配置関係条件とは、一の線分の配置に関する条件である。具体的に、配置関係条件は、一の図形が有する1以上の線分のうちの一の線分と、他の1以上の線分との配置関係に関する条件である。配置関係条件は、例えば、当該一の線分を有する図形を構成する線分であり、かつ、当該一の線分と当該一の線分に対応する第一交差線分との間に位置する線分であることや、当該一の線分と当該一の線分に対応する第一交差線分との間に位置する線分であることなどである。また、「一の線分に対応する第一交差線分」とは、「一の線分に対応する延長半直線と交差する第一交差線分」である。
【0088】
例えば、図形Aを構成する線分Aに対応する延長半直線と交差する第一交差線分が、図形Bを構成する線分Bであるとする。また、例えば、図形Aを構成する他の線分A’の端点が、当該線分Aに対応する延長半直線上に存在するとする。この様な場合、線分A’は、線分Aとの配置関係条件を満たす線分である。
【0089】
また、上記「第二の予め決められた条件」とは、分割領域数条件である。分割領域数条件とは、延長した半直線が配置されている分割領域の数に関する条件である。分割領域数条件は、例えば、当該分割領域の数が予め決められた閾値超過であることや、当該分割領域の数が予め決められた閾値未満であること、当該分割領域の数が予め決められた閾値以上であること、当該分割領域の数が予め決められた閾値以下であることなどである。なお、分割領域数条件は、通常、分割領域数が64超過であることが好適である。
【0090】
また、上記「適用する」とは、流用することである。つまり、当該「適用する」とは、第一線分に対する第一交差線分の検出結果を、第二線分に対する第一交差線分の検出結果として使用することである。
【0091】
また、第一交差線分検出手段125は、例えば、取得した交差線分を示す座標集合に、当該交差線分が属する図形を識別する図形識別子、当該交差線分と交差する延長半直線を識別する半直線識別子、当該延長半直線に対応する図形を識別する図形識別子、当該延長半直線の起点となる点を識別する点識別子、当該延長半直線に対応する線分を識別する線分識別子のうちのいずれか1以上を対応付けてもよい。
【0092】
延長交点情報算出手段126は、第一交差線分を用いて、延長交点情報を算出する。延長交点情報とは、延長半直線と、延長半直線の起点となる点が属する1つの線分以外の1以上の各線分との交点に基づく情報である。延長交点情報は、例えば、前述の巻数や、延長交点数、一の図形の内側に存在する点の数、一の図形の外側に存在する点の数などである。つまり、「第一交差線分を用いて」とは、例えば、延長半直線と第一交差線分との交点の数をカウントすることや、当該カウントした数に応じて、延長半直線の起点となる点が一の図形の内側にあるか外側にあるかを判断すること、当該判定した点の数をカウントすることなどである。
【0093】
また、第一交差線分検出手段125が交差線分を検出した場合、延長交点情報算出手段126は、例えば、当該交差線分を用いて、延長交点情報を算出してもよい。
【0094】
また、延長交点情報算出手段126は、通常、1つの線分につき、他の1以上の線分ごとの1以上の延長交点数情報を算出する。
【0095】
例えば、巻数を算出する場合、延長交点情報算出手段126は、例えば、巻数を算出する対象となる線分から、当該線分に対応する延長半直線、当該延長半直線と交差する第一交差線分、当該第一交差線分に対応する延長半直線、当該延長半直線と交差する第一交差線分、・・・、の順に、線分および延長半直線を追跡する。「追跡する」とは、線分および延長半直線を辿っていくことである。このとき、延長交点情報算出手段126は、次に追跡する第一交差線分がなくなるまで、当該追跡を繰り返す。そして、延長交点情報算出手段126は、最後に追跡した第一交差線分に対応する交点の数を、当該追跡とは逆順に、各第一交差線分または線分に対応する巻数として伝搬する。「第一交差線分に対応する交点」とは、第一交差線分に対応する延長半直線と他の線分との交点である。また、「伝搬する」とは、一の線分に対応する巻数に、当該線分に対応する第一交差線分に対応する巻数を適用することである。また、このとき、延長交点情報算出手段126は、例えば、第一交差線分の向きに応じて、巻数に対して加算または減算を行う。
【0096】
なお、当該巻数を算出する処理の方法や手順などは、後述のフローチャートにおいて詳細に説明する。また、延長交点数や、一の図形の内側に存在する点の数、一の図形の外側に存在する点の数などを算出する方法や手順などは、公知であるので、詳細な説明を省略する。
【0097】
また、延長交点数を算出する場合、延長交点情報算出手段126は、通常、交差線分を用いて算出することが好適である。また、他の図形の内側または外側に存在するかを判断する場合、延長交点情報算出手段126は、通常、巻数または延長交点数を用いて算出することが好適である。
【0098】
例えば、一の線分について、当該一の線分の端点を起点とし延長半直線を作成した結果、他の図形に対して算出された巻数が「0」である場合、当該端点は、当該図形の外側に存在する点である。また、例えば、一の線分について、当該一の線分の端点を起点とし延長半直線を作成した結果、他の図形に対して算出された巻数が「0」以外である場合、当該端点は、当該図形の内側に存在する点である。
【0099】
また、例えば、一の線分について、当該一の線分の端点を起点とし延長半直線を作成した結果、他の図形に対して算出された延長交点数が偶数である場合、当該端点は、当該図形の外側に存在する点である。また、例えば、一の線分について、当該一の線分の端点を起点とし延長半直線を作成した結果、他の図形に対して算出された延長交点数が奇数である場合、当該端点は、当該図形の内側に存在する点である。
【0100】
配置関係取得手段127は、延長交点情報算出手段126が算出した延長交点情報が合致する配置関係判断条件に対応する配置関係情報を、配置関係管理情報格納手段121から取得する。配置関係取得手段127は、通常、延長交点情報算出手段126が算出した延長交点情報が、1以上の配置関係条件のいずれに合致するか否かを判断する。そして、配置関係取得手段127は、合致すると判断した配置関係条件に対応付いている配置関係情報を、配置関係管理情報格納手段121から取得する。
【0101】
例えば、一の図形に対する巻数の合計が「4」であるとする。また、例えば、配置関係判断条件が「巻数合計≧0」であるとする。当該配置関係判断条件は、巻数の合計が0以上であることを意味する。この様な場合、配置関係取得手段127は、当該延長交点の数が、当該配置関係判断条件に合致すると判断する。
【0102】
また、例えば、延長交点数が「4」であるとする。また、例えば、配置関係判断条件が「2≦延長交点数≦8」であるとする。当該配置関係判断条件は、延長交点数が2以上8以下であることを意味する。この様な場合、配置関係取得手段127は、当該延長交点の数が、当該配置関係判断条件に合致すると判断する。
【0103】
また、例えば、他の図形の内部に存在する頂点の数が「1」であるとする。また、例えば、配置関係判断条件が「内部点数=1」であるとする。当該配置関係判断条件は、他の図形の内部に存在する頂点の数が1であることを意味する。この様な場合、配置関係取得手段127は、当該延長交点の数が、当該配置関係判断条件に合致すると判断する。
【0104】
以上の処理により、配置関係取得手段127は、同一図形における線分の配置関係情報や、2つの図形について、一方の図形の他方の図形に対する配置関係を示す配置関係情報を取得することができる。また、配置関係取得手段127は、通常、当該配置関係情報の取得に用いた2つの図形識別子を、当該取得した配置関係情報に対応付ける。つまり、配置関係取得手段127が取得した配置関係情報には、通常、当該配置関係情報が配置関係を示す2つの各図形を識別する図形識別子が対応付いている。
【0105】
また、配置関係取得手段127は、例えば、2つの図形について、一方の図形の他方の図形に対する配置関係を示す配置関係情報が取得でき、当該他方の図形の当該一方の図形に対する配置関係を示す配置関係情報が取得できなかった場合に、当該他方の図形の当該一方の図形に対する配置関係を示す配置関係情報として、当該一方の図形の当該他方の図形に対する配置関係を示す配置関係情報に対応する配置関係情報を取得してもよい。当該「配置関係情報に対応する配置関係情報」とは、例えば、同一の配置関係や、反対の配置関係などを示す配置関係情報である。
【0106】
例えば、図形Aの図形Bに対する配置関係を示す配置関係情報が「隣接」であるとする。この様な場合、配置関係取得手段127は、例えば、図形Bの図形Aに対する配置関係を示す配置関係情報として、配置関係情報「隣接」を取得してもよい。
【0107】
また、例えば、図形Aの図形Bに対する配置関係を示す配置関係情報が「内側」であるとする。この様な場合、配置関係取得手段127は、例えば、図形Bの図形Aに対する配置関係を示す配置関係情報として、配置関係情報「外側」を取得してもよい。
【0108】
出力部13は、判断部12が取得した配置関係情報を出力する。このとき、出力部13は、通常、当該配置関係情報に対応付いている図形識別子と共に、当該配置関係情報を出力する。また、出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。なお、送信や蓄積、処理結果の引渡しについては、出力対象が最終的にユーザに提示されるものとする。
【0109】
また、出力部13は、例えば、受付部11が受け付けた図形情報が示す図形と共に、配置関係情報を出力してもよい。このとき、出力部13は、例えば、配置関係情報が示す配置関係がわかるように、図形に色付けして出力してもよい。また、出力部13は、通常、配置関係情報が示す配置関係と共に、当該配置関係にある2つの図形を出力することができればよく、出力時の書式や様式、態様などは、問わない。
【0110】
また、出力部13は、ディスプレイやスピーカーなどの出力デバイスを含むと考えてもよいし、含まないと考えてもよい。出力部13は、出力デバイスのドライバソフトまたは、出力デバイスのドライバソフトと出力デバイスなどで実現され得る。
【0111】
また、判断部12、分割領域サイズ決定手段122、領域分割手段123、延長半直線作成手段124、第一交差線分検出手段125、延長交点情報算出手段126、配置関係取得手段127は、通常、MPUやメモリ等から実現され得る。また、判断部12などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。なお、判断部12などは、ハードウェア(専用回路)で実現されてもよい。
【0112】
次に、配置関係判断装置1の全体動作について、フローチャートを用いて説明する。なお、所定の情報におけるi番目の情報は、「情報[i]」と記載するものとする。
図4は、配置関係判断装置1の全体動作を示すフローチャートである。
図4のフローチャートにおいて、配置関係管理情報格納手段121には、n個の配置関係管理情報が格納されているものとする。
【0113】
(ステップS401)判断部12は、受付部11が、図形情報を受け付けたか否かを判断する。受け付けた場合は、ステップS402に進み、そうでない場合は、ステップS401に戻る。
【0114】
(ステップS402)分割領域サイズ決定手段122は、分割領域のサイズを決定する。この処理の詳細は、
図5のフローチャートを用いて説明する。
【0115】
(ステップS403)領域分割手段123は、ステップS402で決定した分割領域のサイズにて、分割対象領域を1以上の分割領域に分割する。
【0116】
(ステップS404)第一交差線分検出手段125は、ステップS403で分割した1以上の分割領域ごとに、第一交差線分を検出する。この処理の詳細は、
図6のフローチャートを用いて説明する。
【0117】
(ステップS405)延長交点情報算出手段126は、ステップS404で取得した第一交差線分を用いて、図形ごとの延長交点情報を算出する。ここで、配置関係取得手段127は、図形ごとの延長交点情報を、合計m個、算出したものとする。
【0118】
(ステップS406)配置関係取得手段127は、カウンタiに1をセットする。
【0119】
(ステップS407)配置関係取得手段127は、カウンタjに1をセットする。
【0120】
(ステップS408)配置関係取得手段127は、延長交点情報[i]が、配置関係管理情報格納手段121に格納されている配置関係管理情報[j]が有する配置関係判断条件である配置関係判断条件[j]に合致するか否かを判断する。合致する場合は、ステップS409に進み、そうでない場合は、ステップS410に進む。
【0121】
(ステップS409)配置関係取得手段127は、配置関係情報[j]を取得する。このとき、配置関係取得手段127は、例えば、延長交点情報[i]に対応付いている図形識別子を取得し、取得した配置関係情報[j]に対応付ける。そして、ステップS412に進む。
【0122】
(ステップS410)jがnであるか否かを判断する。nである場合は、ステップS412に進み、そうでない場合は、ステップS411に進む。
【0123】
(ステップS411)配置関係取得手段127は、iを1インクリメントする。ステップS408に戻る。
【0124】
(ステップS412)配置関係取得手段127は、iがmであるか否かを判断する。mである場合は、ステップS414に進み、そうでない場合は、ステップS413に進む。
【0125】
(ステップS413)配置関係取得手段127は、iを1インクリメントする。そして、ステップS407に戻る。
【0126】
(ステップS414)出力部13は、ステップS409で取得した配置関係情報を出力する。
【0127】
なお、
図4のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【0128】
図5は、
図4のフローチャートのステップS402の分割領域サイズの決定処理を示すフローチャートである。
【0129】
(ステップS501)分割領域サイズ決定手段122は、カウンタiに1をセットする。
【0130】
(ステップS502)分割領域サイズ決定手段122は、分割対象領域を、i×iのサイズの分割領域に分割する。ここで、分割領域サイズ決定手段122は、分割対象領域を、n[i]個の分割領域に分割したものとする。
【0131】
(ステップS503)分割領域サイズ決定手段122は、カウンタjに1をセットする。
【0132】
(ステップS504)分割領域サイズ決定手段122は、分割領域[j]内の線分の数をカウントし、線分の合計数を代入する変数sumに加算する。
【0133】
(ステップS505)分割領域サイズ決定手段122は、jがn[i]であるか否かを判断する。n[i]である場合は、ステップS507に進み、そうでない場合は、ステップS506に進む。
【0134】
(ステップS506)分割領域サイズ決定手段122は、jを1インクリメントする。そして、ステップS504に戻る。
【0135】
(ステップS507)分割領域サイズ決定手段122は、「sum/m」を計算し、その結果を変数avrにセットする。
【0136】
(ステップS508)分割領域サイズ決定手段122は、avrが線分数条件を満たすか否かを判断する。満たす場合は、ステップS511に進み、そうでない場合は、ステップS509に進む。
【0137】
(ステップS509)分割領域サイズ決定手段122は、iがmであるか否かを判断する。mである場合は、ステップS511に進み、そうでない場合は、ステップS510に進む。
【0138】
(ステップS510)分割領域サイズ決定手段122は、iを1インクリメントする。そして、ステップS502に戻る。
【0139】
(ステップS511)分割領域サイズ決定手段122は、分割領域のサイズを代入する変数sizeに、iをセットする。そして、上位処理にリターンする。
【0140】
図6は、
図4のフローチャートのステップS404の第一交差線分の検出処理を示すフローチャートである。
【0141】
(ステップS601)延長交点情報算出手段126は、カウンタiに1をセットする。当該カウンタiは、分割対象領域に配置されている1以上の各図形を識別する変数である。また、分割対象領域には、合計m個の図形が配置されているものとする。
【0142】
(ステップS602)延長交点情報算出手段126は、カウンタjに1をセットする。当該カウンタjは、図形[i]が配置されている1以上の各分割領域を識別する変数である。また、図形[i]は、n[i]個の分割領域に配置されているものとする。
【0143】
(ステップS603)延長交点情報算出手段126は、カウンタpに1をセットする。当該カウンタpは、図形[i]が配置されているj番目の分割領域である分割領域[i][j]内の線分を識別する変数である。また、分割領域[i][j]には、x[i][j]本の線分が存在するものとする。
【0144】
(ステップS604)延長半直線作成手段124は、図形[i]が配置されているj番目の分割領域である分割領域[i][j]内のp番目の線分であるedges[i][j][p]上の点を起点とする延長半直線を作成する。当該延長半直線は、edges[i][j][p]に対応する延長半直線である。
【0145】
(ステップS605)第一交差線分検出手段125は、ステップS604で作成した延長半直線と交差する第一交差線分を検出する。当該検出した第一交差線分は、当該延長半直線に対応する第一交差線分である。また、当該第一交差線分は、edges[i][j][p]に対応する第一交差線分でもある。
【0146】
(ステップS606)第一交差線分検出手段125は、変数cellCountに、edges[i][j][p]上の点を起点とする延長半直線が配置されている分割領域の数をセットする。
【0147】
(ステップS607)第一交差線分検出手段125は、ステップS605において、edges[i][j][p]に対応する第一交差線分が検出できたか否かを判断する。検出できた場合は、ステップS608に進み、そうでない場合は、ステップS610に進む。
【0148】
(ステップS608)第一交差線分検出手段125は、edges[i][j][p]に対応する巻数であるedges[i][j][p].countにUNKNOWNをセットする。
【0149】
(ステップS609)第一交差線分検出手段125は、第一交差線分を格納する配列変数visibleEdges[edges[i][j][p]]に、edges[i][j][p]に対応する第一交差線分をセットする。
【0150】
(ステップS610)第一交差線分検出手段125は、edges[i][j][p].countに0をセットする。
【0151】
(ステップS611)第一交差線分検出手段125は、visibleEdges[edges[i][j][p]]に、OUTSIDEをセットする。
【0152】
(ステップS612)第一交差線分検出手段125は、cellCountが分割領域数条件を満たすか否かを判断する。分割領域数条件を満たす場合は、ステップS613に進み、そうでない場合は、ステップS618に進む。
【0153】
(ステップS613)第一交差線分検出手段125は、カウンタqに1をセットする。当該カウンタpは、図形[i]が配置されているj番目の分割領域である分割領域[i][j]内の線分を識別する変数である。
【0154】
(ステップS614)第一交差線分検出手段125は、edges[i][j][q]が配置関係条件を満たすか否かを判断する。配置関係条件を満たす場合は、ステップS615に進み、そうでない場合は、ステップS616に進む。
【0155】
(ステップS615)第一交差線分検出手段125は、edges[i][j][q]に対応する延長交点に、edges[i][j][p]に対応する延長交点をセットする。
【0156】
(ステップS616)第一交差線分検出手段125は、qがx[i][j]であるか否かを判断する。x[i][j]である場合は、ステップS618に進み、そうでない場合は、ステップS617に進む。
【0157】
(ステップS617)第一交差線分検出手段125は、qを1インクリメントする。そして、ステップS614に戻る。
【0158】
(ステップS618)第一交差線分検出手段125は、pがx[i][j]であるか否かを判断する。x[i][j]である場合は、ステップS620に進み、そうでない場合は、ステップS619に進む。
【0159】
(ステップS619)第一交差線分検出手段125は、pを1インクリメントする。そして、ステップS604に戻る。
【0160】
(ステップS620)第一交差線分検出手段125は、jがn[i]であるか否かを判断する。n[i]である場合は、ステップS622に進み、そうでない場合は、ステップS621に進む。
【0161】
(ステップS621)第一交差線分検出手段125は、jを1インクリメントする。そして、ステップS603に戻る。
【0162】
(ステップS622)第一交差線分検出手段125は、iがmであるか否かを判断する。mである場合は、上位処理にリターンし、そうでない場合は、ステップS623に進む。
【0163】
(ステップS623)第一交差線分検出手段125は、iを1インクリメントする。そして、ステップS602に戻る。
【0164】
また、
図4のフローチャートのステップS405において、巻数を算出する場合、当該巻数を算出する処理を示すフローチャートは、
図7である。
図7において、分割対象領域には、合計m本の線分が配置されているものとする。また、
図7において、1以上の各線分を示す座標集合は、線分を示す座標集合を格納する配列変数edges[]に格納されているものとする。また、当該edges[]は、巻数を格納するための変数countを有しており、当該変数には、
図6のフローチャートの処理により、巻数の初期値がセットされているものとする。また、当該edges[]に対応する第一交差線分は、配列変数visibleEdges[]に格納されているものとする。また、例えば、edges[1]に対応する第一交差線分は、visibleEdges[edges[1]]と表記するものとする。
【0165】
(ステップS701)延長交点情報算出手段126は、変数missesに1をセットする。
【0166】
(ステップS702)延長交点情報算出手段126は、カウンタiに1をセットする。
【0167】
(ステップS703)延長交点情報算出手段126は、変数edge1にedges[i]をセットする。
【0168】
(ステップS704)延長交点情報算出手段126は、edge1.countがUNKNOWNであるか否かを判断する。UNKNOWNである場合は、ステップS705に進み、そうでない場合は、ステップS715に進む。
【0169】
(ステップS705)延長交点情報算出手段126は、変数edge2にvisibleEdges[edge1]をセットする。
【0170】
(ステップS706)延長交点情報算出手段126は、edge2.countがUNKNOWNであるか否かを判断する。UNKNOWNである場合は、ステップS707に進み、そうでない場合は、ステップS711に進む。
【0171】
(ステップS707)延長交点情報算出手段126は、線分を格納する配列変数path[misses]にedge1をセットする。
【0172】
(ステップS708)延長交点情報算出手段126は、missesを1インクリメントする。
【0173】
(ステップS709)延長交点情報算出手段126は、edge1にedge2をセットする。
【0174】
(ステップS710)延長交点情報算出手段126は、edge2にvisibleEdges[edge1]をセットする。
【0175】
(ステップS711)延長交点情報算出手段126は、巻数の加減算を行う。この処理の詳細は、
図8のフローチャートを用いて説明する。
【0176】
(ステップS712)延長交点情報算出手段126は、missesが1超過であるか否かを判断する。1超過である場合は、ステップS713に進み、そうでない場合は、ステップS715に進む。
【0177】
(ステップS713)延長交点情報算出手段126は、missesを1デクリメントする。
【0178】
(ステップS714)延長交点情報算出手段126は、edge1にpath[misses]をセットする。そして、ステップS704に戻る。
【0179】
(ステップS715)延長交点情報算出手段126は、iがmであるか否かを判断する。mである場合は、上位処理にリターンし、そうでない場合は、ステップS716に進む。
【0180】
(ステップS716)延長交点情報算出手段126は、iを1インクリメントする。そして、ステップS703に戻る。
【0181】
図8は、
図7のフローチャートのステップS718の巻数の加減算処理を示すフローチャートである。
【0182】
(ステップS801)延長交点情報算出手段126は、edge1.countにedge2.countをセットする。
【0183】
(ステップS802)延長交点情報算出手段126は、edge2の向きが上向きであるか否かを判断する。上向きである場合は、ステップS803に進み、そうでない場合は、ステップS804に進む。
【0184】
(ステップS803)延長交点情報算出手段126は、edge1.countを1デクリメントする。
【0185】
(ステップS804)延長交点情報算出手段126は、edge1.countを1インクリメントする。
【0186】
(具体例)
次に、配置関係判断装置1の動作の具体例について説明する。
【0187】
(例1)
本例において、分割領域のサイズを決定し、分割対象領域を1以上の分割領域に分割する例について説明する。なお、本例において、線分数条件は、「10≦平均数≦20」であるものとする。
【0188】
まず、受付部11は、図形情報を受け付ける。当該図形情報が示す図形は、例えば、
図9である。また、当該図形情報は、
図9における各図形(線分、多角形)を示す1以上の座標集合を有する。また、
図9において、図形は、一の座標空間に配置されている。また、当該図形が配置されている図形配置領域と、分割対象領域とは、位置およびサイズが同一であるものとする。
【0189】
次に、分割領域サイズ決定手段122は、まず、
図9の分割対象領域を、
図10に示す様に、2×2のサイズの分割領域に分割する。この結果、分割対象領域は、
図10に示す様に、36個の分割領域に分割される。そして、分割領域サイズ決定手段122は、当該36個の各分割領域について、並列に、各分割領域内の線分の数をカウントする。そして、分割領域サイズ決定手段122は、当該カウントした線分の数を合計し、平均を算出する。ここで、当該線分の数の平均が、「6」であるとする。
【0190】
次に、分割領域サイズ決定手段122は、算出した線分の数の平均「6」が、線分数条件「10≦平均数≦20」を満たさないと判断する。
【0191】
次に、分割領域サイズ決定手段122は、上記と同様に、
図9の分割対象領域を、
図11に示す様に、3×3のサイズの分割領域に分割する。この結果、分割対象領域は、
図11に示す様に、16個の分割領域に分割される。そして、分割領域サイズ決定手段122は、当該16個の各分割領域について、並列に、各分割領域内の線分の数をカウントする。そして、分割領域サイズ決定手段122は、当該カウントした線分の数を合計し、平均を算出する。ここで、当該線分の数の平均が、「8」であるとする。
【0192】
次に、分割領域サイズ決定手段122は、算出した線分の数の平均「8」が、線分数条件「10≦平均数≦20」を満たさないと判断する。
【0193】
次に、分割領域サイズ決定手段122は、上記と同様に、
図9の分割対象領域を、
図12に示す様に、4×4のサイズの分割領域に分割する。この結果、分割対象領域は、
図12に示す様に、9個の分割領域に分割される。そして、分割領域サイズ決定手段122は、当該9個の各分割領域について、並列に、各分割領域内の線分の数をカウントする。そして、分割領域サイズ決定手段122は、当該カウントした線分の数を合計し、平均を算出する。ここで、当該線分の数の平均が、「12」であるとする。
【0194】
次に、分割領域サイズ決定手段122は、算出した線分の数の平均「12」が、線分数条件「10≦平均数≦20」を満たすと判断する。そして、分割領域サイズ決定手段122は、「4×4」を、分割領域のサイズとして決定する。
【0195】
次に、領域分割手段123は、
図12に示す様に、分割対象領域を、4×4のサイズの9個の分割領域に分割する。このとき、領域分割手段123は、例えば、当該9個の各分割領域を示す9個の座標集合を取得する。
【0196】
(例2)
本例において、分割領域の分割数を決定し、分割対象領域を1以上の分割領域に分割する例について説明する。なお、本例において、線分数条件は、「10≦平均数≦20」であるものとする。また、分割数条件は、「平方数であること」であるものとする。また、受付部11は、例1と同様に、
図9の図形を示す図形情報を受け付けているものとする。
【0197】
まず、分割領域サイズ決定手段122は、
図9の分割対象領域内の線分の数をカウントする。ここで、当該線分の数が、「90」であるものとする。
【0198】
次に、分割領域サイズ決定手段122は、カウントした線分の数「90」を、線分数条件の上限値「20」と、線分数条件の下限値「10」とのそれぞれで割ったときの商、「4.5」と「9」を算出する。そして、分割領域サイズ決定手段122は、当該「4.5」と「9」との間の整数「5」、「6」、「7」、「8」を取得する。
【0199】
次に、分割領域サイズ決定手段122は、算出および取得した6個の数値のうち、分割数条件「平方数であること」を満たす「9」を、分割数として取得する。
【0200】
次に、領域分割手段123は、
図12に示す様に、分割対象領域を、9個の分割領域に分割する。このとき、領域分割手段123は、例えば、分割対象領域のサイズと、当該分割数とから、一の分割領域のサイズを算出する。そして、領域分割手段123は、当該算出したサイズに従い、分割多少領域を9個の分割領域に分割する。また、このとき、領域分割手段123は、例えば、当該9個の各分割領域を示す9個の座標集合を取得する。
【0201】
(例3)
本例において、1つの線分に対応する延長半直線を作成する例について説明する。
【0202】
図13は、領域分割手段123が分割対象領域を分割した1以上の分割領域のうちの、6個の分割領域、および当該6個の分割領域内に配置されている2個の図形を示す図である。当該6個の分割領域は、18番目から20番目、および28番目から30番目の分割領域であり、それぞれに、分割領域識別子「D18」、「D19」、「D20」、「D28」、「D29」、「D30」が付与されている。また、当該6個の分割領域内には、図形Aと図形Bが配置されている。また、図形Aは、点a1、点a2、点a3、点a4、点a5、点a6の6個の頂点を有する。また、図形Bは、点b1、点b2、点b3、点b4、点b5の5個の頂点を有する。
【0203】
また、
図13において、図形A、図形Bのそれぞれが有する点の順序は、半時計回りであるものとする。また、当該各図形を構成する各線分において、順序が先の点を、末尾の端点、順序が後の点を、先頭の端点とする。例えば、点a1と点a2とを結ぶ線分において、末尾の端点とは、点a1であり、先頭の端点とは、点a2である。また、当該各図形を構成する各線分は、当該各線分を構成する2つの端点の識別子を組み合わせた識別子により識別されるものとする。例えば、点a1と点a2とを結ぶ線分を、以下、線分a12と表記するものとする。
【0204】
まず、延長半直線作成手段124は、
図13の図形Aについて、当該図形Aが配置されている分割領域を検出する。「図形が配置されている分割領域」とは、図形を構成する線分の一部または全部が配置されている分割領域である。また、当該検出した分割領域は、「D18」、「D19」、「D28」、「D29」の4個の分割領域である。
【0205】
次に、延長半直線作成手段124は、検出した4個の各分割領域を順に対象とし、当該対象とした分割領域において延長半直線を作成する。当該対象とする順序は、通常、分割領域識別子の昇順である。つまり、延長半直線作成手段124は、「D18」、「D19」、「D28」、「D29」の順に、延長半直線を作成する。以下、当該4個の各分割領域において延長半直線を作成する例について説明する。
【0206】
まず、延長半直線作成手段124は、「D18」の分割領域に配置されている線分を検出する。「分割領域に配置されている線分」とは、線分の一部または全部が分割領域に配置されている線分である。そして、延長半直線作成手段124は、「D18」の分割領域から、線分a12と、線分a23とを検出する。
【0207】
次に、延長半直線作成手段124は、「D18」の分割領域において、検出した線分の先頭の端点が存在するか否かを判断する。当該判断は、例えば、線分を検出した分割領域において、当該検出した線分の先頭の端点を検出することであってもよい。そして、延長半直線作成手段124は、「D18」の分割領域において、線分a12の先頭の端点である点a2が存在すると判断する。
【0208】
次に、延長半直線作成手段124は、「D18」の分割領域内に存在すると判断した先頭の端点について、当該端点を起点とし一の方向に延びる延長半直線を作成する。ここで、当該一の方向が、横軸のプラス方向であるものとする。すると、延長半直線作成手段124は、当該分割領域内に存在すると判断した線分a12の先頭の端点である点a2を起点とし、横軸のプラス方向に延びる延長半直線を作成する。当該延長半直線は、
図14に示す半直線a12’である。また、当該延長半直線a12’は、線分a12に対応する延長半直線である。
【0209】
次に、延長半直線作成手段124は、上記と同様に、「D19」の分割領域において、当該分割領域に配置されている線分を検出し、当該線分の先頭の端点を検出し、当該端点を起点とし、横軸のプラス方向に延びる延長半直線を作成する。当該延長半直線は、
図15に示す半直線a61’である。また、当該延長半直線a61’は、線分a61に対応する延長半直線である。
【0210】
なお、「D28」、「D29」において延長半直線を作成する例については、上記と同様であるので、説明を省略する。
【0211】
また、延長半直線作成手段124は、上記の様に、1以上の各図形が配置されている1以上の分割領域ごとに、延長半直線の起点となる点を検出し、当該検出した点を起点とする延長半直線を作成する。また、延長半直線作成手段124は、当該分割領域ごとの処理を、通常、並列に行う。
【0212】
(例4)
本例において、1つの線分に対応する第一交差線分を検出する例について説明する。なお、本例における前提条件は、例3と同様であるものとする。つまり、本例においては、例3において作成した延長半直線を用いて第一交差線分を検出する。
【0213】
まず、第一交差線分検出手段125は、「D18」の分割領域において作成した
図14の延長半直線a12’が配置されている分割領域を順に対象とし、当該対象とした分割領域において当該延長半直線a12’に対応する第一交差線分を検出する。このとき、第一交差線分検出手段125は、通常、延長半直線の起点となる点が存在する分割領域は、対象としない。また、当該対象とする順序は、通常、分割領域識別子の昇順である。つまり、延長半直線作成手段124は、「D19」、「D20」の順に、第一交差線分を検出する。以下、当該2個の各分割領域において延長半直線を作成する例について説明する。
【0214】
まず、第一交差線分検出手段125は、「D19」の分割領域において、図形Bを構成する線分b23、線分b34を検出する。
【0215】
次に、第一交差線分検出手段125は、「D19」の分割領域において、検出した2本の線分が、延長半直線a12’と交差するか否かを判断する。そして、第一交差線分検出手段125は、
図16に示す様に、線分b23について、延長半直線a12’との交点を検出する。当該交点は、
図16の「○」である。そして、第一交差線分検出手段125は、線分b23が、延長半直線a12’と交差すると判断する。
【0216】
次に、第一交差線分検出手段125は、「D19」の分割領域において、延長半直線a12’と交差すると判断した線分b23を、当該延長半直線a12’に対応する第一交差線分として検出する。
【0217】
次に、第一交差線分検出手段125は、上記と同様に、「D20」の分割領域においても、延長半直線a12’に対応する第一交差線分を検出するが、「D19」の分割領域において検出済みであるので、通常は、当該検出を行わない。
【0218】
次に、第一交差線分検出手段125は、上記と同様に、「D19」の分割領域において作成した
図15の延長半直線a61’が配置されている分割領域を順に対象とし、当該対象とした分割領域において当該延長半直線a61’に対応する第一交差線分を検出する。
【0219】
まず、第一交差線分検出手段125は、「D20」の分割領域において、図形Bを構成する線分b12、線分b23を検出する。そして、第一交差線分検出手段125は、
図17に示す様に、線分b23について、延長半直線a61’との交点を検出する。当該交点は、
図17の「○」である。そして、第一交差線分検出手段125は、線分b23が、延長半直線a61’と交差すると判断し、当該線分b23を、延長半直線a61’に対応する第一交差線分として検出する。
【0220】
なお、「D28」、「D29」において検出した延長半直線に対応する第一交差線分を検出する例については、上記と同様であるので、説明を省略する。
【0221】
また、第一交差線分検出手段125は、上記の様に、延長半直線作成手段124が作成した1以上の延長半直線ごとに、かつ、当該延長半直線が配置されている1以上の分割領域ごとに、当該延長半直線と交差する第一交差線分を検出する。また、第一交差線分検出手段125は、当該延長半直線ごとの、かつ、当該延長半直線が配置されている分割領域ごとの処理を、通常、並列に行う。
【0222】
また、
図14において、交差線分を検出する場合、第一交差線分検出手段125は、延長半直線a12’に対応する交差線分として、線分b12、線分b23を検出する。
【0223】
また、
図15において、交差線分を検出する場合、第一交差線分検出手段125は、延長半直線a61’に対応する交差線分として、線分b12、線分b23を検出する。
【0224】
(例5)
本例において、延長交点情報である巻数を算出する例について説明する。
【0225】
図18は、分割対象領域に配置されている4個の図形、および、図形Aを構成する線分a12に対応する延長半直線a12’、当該延長半直線a12’と交差する第一交差線分b12、当該第一交差線分b12に対応する延長半直線b12’、当該延長半直線b12’と交差する第一交差線分c23、当該第一交差線分c23に対応する延長半直線c23’、当該延長半直線c23’と交差する第一交差線分b41、当該第一交差線分b41に対応する延長半直線b41’、当該延長半直線b41’と交差する第一交差線分d23、当該第一交差線分d23に対応する延長半直線d23’を示す図である。なお、
図18において、各図形が有する点の順序や、各図形を構成する線分の命名規則などについては、例3と同様であるものとする。また、各延長半直線の起点となる点および当該点を有する線分について、巻数の初期値は、延長半直線と交差する第一交差線分が存在する場合は「UNKNOWN」、存在しない場合は「0」であるものとする。つまり、上記
図18において対応する延長半直線が示されている線分について、線分d23の巻数は「0」であり、当該線分以外の線分の巻数は「UNKNOWN」である。
【0226】
まず、延長交点情報算出手段126は、線分a12を、巻数を算出する対象とする。なお、線分a12に対応する延長半直線a12’は、線分a12の先頭の端点である点a2を起点としている。従って、延長交点情報算出手段126は、最終的に、点a2に対応する巻数を算出する。
【0227】
次に、延長交点情報算出手段126は、線分a12を起点とし、線分a12に対応する第一交差線分b12、当該第一交差線分に対応する第一交差線分c23、・・・、の順に線分を追跡する。このとき、延長交点情報算出手段126は、線分の巻数が「UNKNOWN」以外になるまで、追跡する。そして、延長交点情報算出手段126は、最終的に、線分d23に辿り着く。
【0228】
次に、延長交点情報算出手段126は、線分b41の巻数に、線分d23の巻数「0」をセットする。そして、線分b41に対応する延長半直線b41’と交差する第一交差線分である線分d23が下向きであるので、延長交点情報算出手段126は、線分b41の巻数を1インクリメントし、「1」とする。
【0229】
次に、延長交点情報算出手段126は、線分を追跡した順序において、線分b41の1つ手前の線分である線分c23の巻数に、線分b41の巻数「1」をセットする。そして、線分d23に対応する延長半直線d23’と交差する第一交差線分である線分b41が上向きであるので、延長交点情報算出手段126は、線分c23の巻数を1デクリメントし、「0」とする。
【0230】
次に、延長交点情報算出手段126は、線分を追跡した順序において、線分c23の1つ手前の線分である線分b12の巻数に、線分c23の巻数「0」をセットする。そして、線分b12に対応する延長半直線b12’と交差する第一交差線分である線分c23が下向きであるので、延長交点情報算出手段126は、線分b12の巻数を1インクリメントし、「1」とする。
【0231】
次に、延長交点情報算出手段126は、線分を追跡した順序において、線分b12の1つ手前の線分である線分a12の巻数に、線分b12の巻数「1」をセットする。そして、線分a12に対応する延長半直線a12’と交差する第一交差線分である線分b12が下向きであるので、延長交点情報算出手段126は、線分a12の巻数を1インクリメントし、「2」とする。
【0232】
以上の様にして、延長交点情報算出手段126は、点a2に対応する巻数「2」を算出する。なお、延長交点情報算出手段126は、上記の処理を、分割対象領域に配置されているすべての線分に対して行う。このとき、上記の処理を行う対象となる線分の順序は、問わない。当該順序は、例えば、図形識別子の昇順、かつ、線分識別子の昇順である。
【0233】
また、
図18において、延長交点数を算出する場合、延長交点情報算出手段126は、例えば、各図形を構成する各線分ごとに、当該各線分に対応する延長半直線と交差する他の図形を構成する線分との交点の数をカウントする。
【0234】
例えば、
図18の図形Aと図形Bについて、線分a12に対応する延長半直線a12’が交差する図形Bを構成する線分は、線分b12と線分b41である。従って、延長交点情報算出手段126は、線分a12(点a2)の図形Bに対する延長交点数「2」を算出する。
【0235】
また、例えば、図形Cと図形Bについて、線分c23に対応する延長半直線c23’が交差する図形Bを構成する線分は、線分b41である。従って、延長交点情報算出手段126は、は、線分c23(点c3)の図形Bに対する延長交点数「1」を算出する。
【0236】
(例6)
本例において、配置関係情報を取得する例について説明する。なお、本例において、配置関係管理情報格納手段121には、
図20に示す配置関係管理情報が格納されているものとする。当該配置関係管理情報は、レコードを一意に特定するためのIDと、配置関係判断条件(項目名:条件)と、配置関係情報(項目名:配置関係)とを有する。
【0237】
図20は、
図18の各図形について、当該各図形が有する頂点のうち、他の図形の内側に存在する頂点(以下、適宜、内側頂点数)の数を示す図である。
図20において、縦の項目名、横の項目名は、それぞれ、図形識別子である。また、
図20において、延長交点数は、縦の項目名の図形識別子が識別する図形の、横の項目名の図形識別子が識別する図形に対する内側頂点数である。つまり、例えば、
図20において、A行B列は、図形Aが有する頂点のうち、図形Bの内側に存在する頂点の数である。
【0238】
配置関係取得手段127は、
図20の各内部頂点数について、
図19の配置関係判断条件のいずれに合致するかを判断する。そして、配置関係取得手段127は、合致すると判断した配置関係判断条件に対応する配置関係情報を、
図19の配置関係管理情報から取得する。
【0239】
例えば、配置関係取得手段127は、
図20のA行B列の内部頂点数「2」について、
図19の「ID=011」の配置関係判断条件「(1≦内側頂点数<全頂点数)」および「ID=013」の配置関係判断条件「(内側頂点割合<100%)」に合致すると判断する。「ID=011」の配置関係判断条件は、内部頂点数が1以上全頂点数未満であることを意味する。「全頂点数」とは、一の図形が有するすべての頂点の数であり、この場合においては、図形Aが有するすべての頂点の数「5」である。また、「ID=013」の配置関係判断条件は、内部頂点数の割合が100%未満であることを意味する。「内部頂点数の割合」とは、全頂点数に対する内部頂点数の割合であり、この場合においては、図形Aの全頂点数「5」に対する内部頂点数「1」の割合「20%」である。
【0240】
そして、配置関係取得手段127は、
図19の「ID=011」の配置関係情報「重複」および「ID=013」の配置関係情報「重複」を取得する。当該配置関係情報は、図形Aの一部が図形Bと重なっていることを意味する。また、また、例えば、当該2つの配置関係情報のうち、いずれか一方のみを取得してもよいことは、言うまでもない。
【0241】
ここで、2つの図形について、通常、一方の図形の一部が他方の図形と重なっている場合、当該他方の図形の一部も当該一方の図形と重なっている。従って、配置関係取得手段127は、上記において、A行B列と対称であるB行A列の内部頂点数「2」に対応する配置関係情報として、A行B列の内部頂点数「1」に対応する配置関係情報として取得した「重複」を取得してもよい。
【0242】
また、例えば、
図20のB行C列の内部頂点数「0」は、
図19の「ID=012」の配置関係判断条件「(内部頂点数=0)」および「ID=014」の配置関係判断条件「(内側頂点割合=0%)」に合致する。「ID=012」の配置関係判断条件は、内部頂点数が0であることを意味する。また、「ID=014」の配置関係判断条件は、内部頂点数の割合が0%であることを意味する。しかしながら、当該B行C列と対称であるC行B列の内部頂点数は、「3」である。また、図形Cの全頂点数は「3」である。従って、配置関係取得手段127は、当該2つの内部頂点数が、
図19の「ID=016」の配置関係判断条件「(正:内側頂点数=0)&(逆:内側頂点数=全頂点数)」および「ID=018」の配置関係判断条件「(正:内側頂点割合=0%)&(逆:内側頂点割合=100%)」に合致すると判断する。「ID=016」の配置関係判断条件は、判断対象となる内部頂点数が0であり、かつ、当該内部頂点数と対称の内部頂点数が全頂点数であることを意味する。また、「ID=018」の配置関係判断条件は、判断対称となる内部頂点数の割合が0%であり、かつ、当該内部頂点数と対称の内部頂点数の割合が100%であることを意味する。
【0243】
そして、配置関係取得手段127は、
図19の「ID=016」の配置関係情報「外側」および「ID=018」の配置関係情報「外側」を取得する。当該配置関係情報は、図形Bが図形Cの外側にある(周囲を囲んでいる)ことを意味する。また、例えば、当該2つの配置関係情報のうち、いずれか一方のみを取得してもよいことは、言うまでもない。
【0244】
ここで、2つの図形について、通常、一方の図形が他方の図形の外側にある場合、当該他方の図形は当該一方の図形の内側にある。従って、配置関係取得手段127は、上記において、B行C列と対称であるC行B列の内部頂点数「3」に対応する配置関係情報として、B行C列の内部頂点数「0」に対応する配置関係情報として取得した「外側」と意味が反対の配置関係情報である「内側」を取得してもよい。
【0245】
以上の様にして、
図20のすべての内部頂点数に対して取得した配置関係情報は、例えば、
図21である。そして、出力部13は、
図21の配置関係情報を出力する。このとき、出力部13は、例えば、当該配置関係情報を用いて、受付部11が受け付けた図形情報が示す1以上の各図形を色づけし、当該図形を出力してもよい。出力部13は、例えば、重複している図形の重複部分のみ色を変えて出力する。また、出力部13は、例えば、一の図形の内側にある図形のみ色を変えて出力する。
【0246】
以上、本実施の形態による配置関係判断装置1によれば、分割した領域ごとに計算処理を行うことにより、Point−in−polygon Testの計算処理を、容易に行うことができる。また、これにより、1以上の図形間の配置関係を判断することができる。また、これにより、Point−in−polygon Testの計算処理を、並列計算により高速に行うことができる。
【0247】
なお、本実施の形態において、分割領域サイズの決定処理は、
図22に示すフローチャートであってもよい。
【0248】
(ステップS2201)分割領域サイズ決定手段122は、一の分割領域内に存在する所望の線分の数を代入する変数EDGES_PER_CELLに15をセットする。
【0249】
(ステップS2202)分割領域サイズ決定手段122は、一の線分が配置される所望の分割領域の数を代入する変数CELLS_PER_EDGEに0.25をセットする。
【0250】
(ステップS2203)分割領域サイズ決定手段122は、変数edgeSizeに図形配置領域内のすべての線分の数をセットする。
【0251】
(ステップS2204)分割領域サイズ決定手段122は、変数edgeLengthに図形配置領域内のすべての線分の長さの合計をセットする。
【0252】
(ステップS2205)分割領域サイズ決定手段122は、変数totalAreaに図形配置領域の面積をセットする。
【0253】
(ステップS2206)分割領域サイズ決定手段122は、「√(EDGES_PER_CELL×totalArea/edgeSize)」を計算し、その結果を変数cellSize1にセットする。
【0254】
(ステップS2207)分割領域サイズ決定手段122は、「edgeLength/(edgeSize×CELLS_PER_EDGE)」を計算し、その結果を変数cellSize2にセットする。
【0255】
(ステップS2208)分割領域サイズ決定手段122は、「log2(cellSize1)」を計算し、その結果を変数scale1にセットする。
【0256】
(ステップS2209)分割領域サイズ決定手段122は、「log2(cellSize2)」を計算し、その結果を変数scale2にセットする。
【0257】
(ステップS2210)分割領域サイズ決定手段122は、scale1がscale2以下であるか否かを判断する。scale2以下である場合は、ステップS2211に進み、そうでない場合は、ステップS2212に進む。
【0258】
(ステップS2211)分割領域サイズ決定手段122は、変数scaleにscale1をセットする。
【0259】
(ステップS2212)分割領域サイズ決定手段122は、変数scaleにscale2をセットする。
【0260】
(ステップS2213)分割領域サイズ決定手段122は、scaleを小数第1位で四捨五入する。
【0261】
(ステップS2214)分割領域サイズ決定手段122は、分割領域のサイズを代入する変数sizeに2のscale乗をセットする。そして、上位処理にリターンする。
【0262】
なお、
図22のフローチャートにおいて、一の分割領域内に存在する所望の線分の数は、15以外の数であってもよい。
【0263】
また、
図22のフローチャートにおいて、一の線分が配置される所望の分割領域の数は、0.25以外の数であってもよい。
【0264】
また、
図22のフローチャートにおいて、「図形配置領域」は、「分割対象領域」であってもよい。
【0265】
また、
図22のフローチャートにおいて、ステップS2208からステップS2212までの処理は、以下のステップS2208’からステップS2210’の処理であってもよい。
【0266】
(ステップS2208’)分割領域サイズ決定手段122は、cellSize1がcellSize2以下であるか否かを判断する。cellSize2以下である場合は、ステップS2209’に進み、そうでない場合は、ステップS2210’に進む。
【0267】
(ステップS2209’)分割領域サイズ決定手段122は、「log2(cellSize1)」を計算し、その結果を変数scaleにセットする。
【0268】
(ステップS2210’)分割領域サイズ決定手段122は、「log2(cellSize2)」を計算し、その結果を変数scaleにセットする。
【0269】
なお、
図22のフローチャートにおいて、分割領域サイズ決定手段122は、変数scaleに、「log2(cellSize1)」または「log2(cellSize2)」をセットすることができればよく、その方法や手順などは、問わない。
【0270】
また、分割領域サイズ決定手段122は、
図22のフローチャートの様に、例えば、一の分割領域内に存在する所望の線分の数(1以上の各分割領域内の線分の数)、一の線分が配置される所望の分割領域の数(図形情報が示す図形を構成する各線分が配置される分割領域の数)、図形配置領域内または分割対象領域内の線分の数(図形情報が示す図形を構成するすべての線分の数)、図形配置領域内または分割対象領域内の線分の長さの合計(図形情報が示す図形を構成するすべての線分の長さの合計)、図形配置領域または分割対象領域の面積(図形情報が示す図形が配置されている領域を含む領域の面積)などを用いて、分割領域のサイズを決定することができればよく、その決定の方法や手順などは、問わない。
【0271】
また、上記各実施の形態における配置関係判断装置は、例えば、スタンドアロンの装置であってもよいし、サーバ・クライアントシステムにおけるサーバ装置であってもよい。
【0272】
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【0273】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【0274】
また、上記各実施の形態における配置関係判断装置を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、線分の交点に基づく情報に関する条件である配置関係判断条件と、図形間の配置関係を示す配置関係情報とを有する1以上の配置関係管理情報が格納される配置関係管理情報格納手段にアクセス可能なコンピュータを、一の座標空間上の1以上の図形を示す情報であり、当該1以上の各図形を構成する1以上の座標を有する情報である図形情報を受け付ける受付部と、前記図形情報が示す1以上の図形間の配置関係を判断し、当該1以上の図形間の配置関係を示す配置関係情報を取得する判断部と、前記判断部が取得した配置関係情報を出力する出力部として機能させるためのプログラムであって、前記判断部を、前記図形情報が示す1以上の図形が配置されている領域を含む領域を分割した領域である1以上の分割領域ごとに、当該1以上の各図形を構成する線分上の点を起点とし一の方向に延びる半直線であり、当該線分に対応する半直線である延長半直線を作成する延長半直線作成手段と、前記延長半直線の起点となる点が属する1つの線分以外の1以上の線分のうち、当該延長半直線と最初に交差する線分である第一交差線分を、前記1以上の分割領域ごとに検出する第一交差線分検出手段と、前記延長半直線と、当該延長半直線の起点となる点が属する1つの線分以外の1以上の各線分との交点に基づく情報である延長交点情報を、前記第一交差線分を用いて算出する延長交点情報算出手段と、前記延長交点情報算出手段が算出した延長交点情報が合致する配置関係判断条件に対応する配置関係情報を、前記1以上の配置関係管理情報から取得する配置関係取得手段として機能させるためのプログラムである。
【0275】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。
【0276】
また、上記プログラムは、サーバなどからダウンロードされることによって実行されてもよいし、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
【0277】
また、上記プログラムを実行するコンピュータは、単数であってもよいし、複数であってもよい。つまり、集中処理を行ってもよいし、あるいは分散処理を行ってもよい。
【0278】
また、
図23は、前述のプログラムを実行して、前述の実施の形態の配置関係判断装置等を実現するコンピュータシステム9の概観図である。前述の実施の形態は、コンピュータハードウェア、およびその上で実行されるコンピュータプログラムで実現され得る。
【0279】
図23において、コンピュータシステム9は、CD−ROMドライブ9011、FDドライブ9012を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
【0280】
図24は、コンピュータシステム9のブロック図である。
図24において、コンピュータ901は、CD−ROMドライブ9011、FDドライブ9012に加えて、MPU9013と、ブートアッププログラム等のプログラムを記憶するためのROM9014と、MPU9013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM9015と、アプリケーションプログラム、システムプログラム、およびデータを記憶するためのハードディスク9016と、CD−ROMドライブ9011、FDドライブ9012、MPU9013等を相互に接続するバス9017とを備える。ここでは図示しないが、コンピュータ901は、さらに、LANへの接続を提供するネットワークカードを備えていてもよい。
【0281】
コンピュータシステム9に、前述の実施の形態の配置関係判断装置等の機能を実行させるプログラムは、CD−ROM9101、またはFD9102に記憶されて、CD−ROMドライブ9011またはFDドライブ9012に挿入され、さらにハードディスク9016に転送されてもよい。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク9016に記憶されてもよい。プログラムは実行の際にRAM9015にロードされる。プログラムは、CD−ROM9101、FD9102またはネットワークから直接、ロードされてもよい。
【0282】
プログラムは、コンピュータ901に、前述の実施の形態の配置関係判断装置等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいればよい。コンピュータシステム9がどのように動作するかは周知であり、詳細な説明は省略する。
【0283】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。