説明

最短経路探索方法及び装置

【課題】3次元モデル上の最短経路を探索する。
【解決手段】3次元モデルを三角形メッシュによりメッシングした上で、三角形要素の辺に補間点を設ける。但し、グラフ理論における補間点間のアークを生成・利用することない。そして、三角形メッシュの頂点及び補間点を、出発点又は出発線から到達点又は到達線まで三角形メッシュの位相情報に基づき探索する。これによって、膨大な数の補間点間のアークを生成する場合よりも計算時間を短くすることができ、補間点間のアークを生成するよりデータ量を減らすことができる。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、3次元モデル上における経路出発線(点に縮退している場合を含む)と経路到達線(点に縮退している場合を含む)との間の最短経路を探索するための技術に関する。
【背景技術】
【0002】
例えば、電子機器の表面に露出した導体間を当該表面に沿って放電するような場合があるため、電子機器の設計時には、導体間の最短経路及び最短距離を自動的に算出する必要がある。特に大きな電力を必要とする電子機器でも小型化が避けられない場合が増加しているため、自動的に計算できると設計時間を短縮することができる。
【0003】
なお、例えば図1(a)及び(c)に示すように、2つの導体1001及び1002の間に1mm未満のくぼみがある場合には、当該くぼみを無視した状態における最短経路を特定し、当該最短経路の経路長を沿面距離と呼ぶ。また、図1(b)に示すように、導体1001及び1002の間に1mm以上のくぼみの場合には、くぼみ内部をも沿うようにして最短経路を特定し、当該最短経路の経路長も沿面距離である。一方、図1(d)に示すように、導体1001及び1002間に突起がある場合にも、当該突起をも沿うようにして最短経路を特定する。
【0004】
従来から、CADモデルなどの3次元モデルの三角形メッシュにおける経路出発点と経路到達点との間の最短経路算出技術がいくつか存在している。その中でも重要と思われる1つの手法に、重み付きグラフ探索法がある。例えば図2に示すように物体表面をグラフで近似してそのグラフの中の2つの頂点間の最短経路を探索する手法である。図2では、頂点と頂点は重み付きの辺で接続されており、頂点間は辺が定義されている場合にのみ移動可能であって、その際のコストが重みである。具体的な最短経路探索アルゴリズムには、例えばダイクストラ(Dijkstra)法などを用いる。
【0005】
ダイクストラ法は、グラフG(N,A)の1つのノードsから他のノードtに至るアークの重みの和が最小となる経路を探索する手法の一つである。なお、Nはノード(又は節と呼ぶ)の集合を表し、Eはノードを結ぶアーク(又は稜線と呼ぶ)の集合を表す。以下、ダイクストラ法のアルゴリズムの概略を示す。
前提:グラフGは連結しており、アークに付された重みwは正である。ノードaiには開始ノードsからの距離d(vi)と復帰ノード(直前のノード)r(vi)を随伴させる。
アルゴリズム:
1.初期処理 ノードの集合Nを次の2つの集合に分ける。
計算完了ノード集合 C={s}
計算未了ノード集合 U=V−{s}
距離を次のように設定する。
d(s)=0
d(v)=∞ 但し、v∈U
2.演算 最大の距離dを有するノードx∈Cに隣接する全てのy∈Uに対して
if d(x)+wxy<d(y)
then d(y)=d(x)+wxy
最小の距離dを有するノードz∈Uを一つ探索し、U=U−{z},
C=C∪{z}とする。
復帰ノードr(z)=xを保存する。
この処理をz=tになるまで繰り返す。
最短経路については、保存しておいた復帰ノード情報を辿ることによって特定する。
【0006】
ダイクストラ法は、最初に、隣接するノード間にアークを全て静的に用意しておく必要がある。すなわち、図2に示したようなグラフが完成してからでなければ探索を行うことはない。しかしながら、ノード間には必ずアーク及び重みが定義されるため、ノードが増加するとデータ量が膨大になるという問題がある。
【0007】
そこで、このような問題点に着目した技術が存在している。すなわち、この技術では、グラフを探索しながら、探索に必要な部分だけ動的にグラフを作成していく。まず(1)問題領域を分割し、(2)開始ノードを含む領域だけグラフを作成し、(3)この領域から最短経路の探索を始め、領域の境界のノードに探索が進んだら隣接する領域のグラフを作る。また、同時に現探索領域と作成した隣接領域のグラフをマージする。そして(3)の処理を探索が終了ノードに到達するまで繰り返す。このような処理では、領域の分割やグラフのマージなど処理が複雑化する問題がある。
【0008】
なお、図2のようなグラフは、3Dモデルの表面に適合した形で形成されるが、必ずしもノードやアークの配置が最適でない場合もある。従って、単純に最短経路として特定されたノード間に設定されているアークをたどるだけでは、真に最短距離で開始ノードと終了ノードとをつなぐことができない場合もある。このような問題に対処するような技術も存在している。その中には、開始ノードと終了ノードとの最短経路を求めた後に、開始ノードと終了ノードとを含む面を平面展開して、開始ノードから終了ノードへの直線距離を算出すると共に、その間のノードについても変更するという技術がある。例えば、図3(a)に示す六面体の表面に設定されたグラフを例えばダイクストラ法で探索して開始ノードから終了ノードへの初期最短経路を算出する。図3(a)では、開始ノード、I1、V、I2、終了ノードという順番の初期最短経路が特定される。その後、図3(b)に示すように、初期最短経路に含まれる、六面体の頂点Vの周りで最初の平面展開を実施する。具体的には、三角形T5、T2、T3及びT4を1つの平面に展開する。そして、三角形T2に含まれる最も開始ノードに近いノードI1から終了ノードを直線で結ぶことによって、頂点V経由よりも短い経路を特定する。ここでは、開始ノード、I1、I3、I4、終了ノードという順番の経路が特定される。ノードI3及びI4が新たに特定されている。その後、開始ノードを含む三角形T1、T2、T3及びT4を1つの平面に展開する。そして、開始ノードと終了ノードとを直線で結ぶことによって、経路は新たに特定されたノードI1’、I3’、I4’を含むようになる。しかしながら、この技術では2段階で経路を最適化しており、処理が複雑になっている。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−172318号公報
【特許文献2】特開2008−134948号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
以上述べたように従来技術には様々な問題があるが、特に問題なのは、経路出発線と経路到達線との間の最短経路を特定するような技術は存在していないということである。ダイクストラ法等の手法は、2ノード間の最短経路を特定するにはよいが、このように2曲線間の最短経路を特定するのには適していない。
【0011】
従って、本技術の目的は、出発線(点に縮退している場合を含む)と到達線(点に縮退している場合を含む)との間の最短経路を探索するための新規な技術を提供することである。
【課題を解決するための手段】
【0012】
3次元モデル上における最短経路をコンピュータにより探索する最短経路探索方法は、3次元モデルの三角形メッシュにおける各三角形の各辺に補間点を設けて、該当する三角形及び辺のデータに当該三角形の頂点及び補間点のデータを関連付けて探索管理データ格納部に格納するステップと、3次元モデルにおける出発点又は出発線と、到達点又は到達線との指定を受け付けるステップと、出発点又は出発線から到達点又は到達線に至るまで、補間点及び頂点を当該三角形メッシュの位相情報に基づき順番に探索して、探索における最短距離探索対象点である補間点又は頂点について出発点又は出発線からの距離を算出し、当該距離が全経路の中で最短であれば、最短距離探索対象点である補間点又は頂点に関連付けて距離を探索管理データ格納部に格納する探索ステップとを含む。
【図面の簡単な説明】
【0013】
【図1】図1(a)乃至(d)は、沿面距離を説明するための図である。
【図2】図2は、重み付きグラフの一例を示す図である。
【図3】図3(a)乃至(c)は、従来技術を説明するための図である。
【図4】図4は、3次元モデル上で経路出発線から経路到達線までの経路を示した例を示す図である。
【図5】図5は、最短経路探索装置の機能ブロック図である。
【図6】図6は、メッシュの位相構造を説明するための図である。
【図7】図7は、三角形メッシュの一例を示す図である。
【図8】図8は、点テーブルの一例を示す図である。
【図9】図9は、三角形テーブルの一例を示す図である。
【図10】図10は、位相テーブルの一例を示す図である。
【図11】図11は、余弦テーブルの一例を示す図である。
【図12】図12は、辺長テーブルの一例を示す図である。
【図13】図13は、最短経路探索処理の処理フローを示す図である。
【図14】図14は、補間点について説明するための図である。
【図15】図15は、補間点データテーブルの一例を示す図である。
【図16】図16は、補間点管理テーブルの一例を示す図である。
【図17】図17は、復帰点を説明するための図である。
【図18】図18は、補間点間のアークデータを生成しない理由を説明するための図である。
【図19】図19は、前線候補点集合テーブルの一例を示す図である。
【図20】図20は、ヒープ構造を採用する場合における前線候補点集合テーブルの一例を示す図である。
【図21】図21は、最短経路探索処理の処理フローを示す図である。
【図22】図22は、探索すべき三角形要素を説明するための図である。
【図23】図23は、探索すべき三角形要素を説明するための図である。
【図24】図24は、探索すべき三角形要素を説明するための図である。
【図25】図25は、探索すべき三角形要素を説明するための図である。
【図26】図26は、探索すべき三角形要素を説明するための図である。
【図27】図27は、探索すべき三角形要素を説明するための図である。
【図28】図28は、三角形内距離の算出について説明するための図である。
【図29】図29は、最短経路探索処理の具体例を説明するための図である。
【図30】図30は、最短経路探索処理の具体例を説明するための図である。
【図31】図31は、最短経路探索処理の具体例を説明するための図である。
【図32】図32は、最短経路探索処理の具体例を説明するための図である。
【図33】図33は、最短経路探索処理の具体例を説明するための図である。
【図34】図34は、最短経路探索処理の具体例を説明するための図である。
【図35】図35は、最短経路探索処理の具体例を説明するための図である。
【図36】図36は、最短経路探索処理の具体例を説明するための図である。
【図37】図37は、最短経路探索処理の具体例を説明するための図である。
【図38】図38は、最短経路探索処理の具体例を説明するための図である。
【図39】図39は、最短経路探索処理の具体例を説明するための図である。
【図40】図40は、最短経路探索処理の具体例を説明するための図である。
【図41】図41は、最短経路探索の際の問題を説明するための図である。
【図42】図42は、平面展開区間について説明するための図である。
【図43】図43は、平面展開区間端点についての条件を説明するための図である。
【図44】図44は、平面展開区間端点についての条件を説明するための図である。
【図45】図45は、平面展開経路距離修正処理の処理フローを示す図である。
【図46】図46は、補間点管理テーブルの他の例を示す図である。
【図47】図47は、平面展開区間生成処理の処理フローを示す図である。
【図48】図48は、平面展開区間生成処理を説明するための図である。
【図49】図49は、平面展開区間生成処理の処理フローを示す図である。
【図50】図50は、補間点位置補正処理の処理フローを示す図である。
【図51】図51は、位置補正処理の処理フローを示す図である。
【図52】図52は、位置補正処理を説明するための図である。
【図53】図53は、位置補正処理の処理フローを示す図である。
【図54】図54は、位置補正処理を説明するための図である。
【図55】図55は、位相情報について説明するための図である。
【図56】図56は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【0014】
本実施の形態では、図4に示すように、ある3次元モデルM上の経路出発線sから経路到達線tまでの最短経路Lを特定し、当該最短経路Lの長さである最短距離を算出するものとする。この際、3次元モデル上には周知の方法で三角形メッシュを形成して、さらに三角形メッシュにおける個々の三角形の辺には、精度向上のため補間点を設ける。但し、補間点間を結ぶアークを予め形成して保持及び利用することはない。三角形メッシュの頂点や補間点を探索して最短経路を特定する場合に、補間点や三角形メッシュの頂点間の距離が必要となるが、必要になった際に必要なものだけ計算する。このように補間点間を結ぶアークを予め用意しないことによって、処理時間を短縮すると共に、データ量の増加を最小限に抑えることができる。
【0015】
さらにオプションとして、初期的に生成する補間点の位置をベースに距離を算出すると、必ずしも始点と終点の距離は最短とはならない。従って、可能な範囲で三角形メッシュの三角形を平面展開して直線で結ぶことによって、より精度の高い最短距離を算出する。また、直線で結ぶ場合には補間点の位置も変更する。
【0016】
以下、このような処理を実現するための具体的な構成について説明する。
【0017】
本実施の形態に係る最短経路探索装置の機能ブロック図を図5に示す。最短経路探索装置は、例えばユーザによって指示された3次元モデルについて周知の技術によって形成された三角形メッシュのデータを格納する三角形メッシュデータ格納部11と、例えば三角形メッシュデータ格納部11に格納されているデータを用いてユーザから経路探索の経路出発線及び経路到達線の入力を行うためのデータ入力部14と、データ入力部14から入力された経路出発線及び経路到達線のデータを格納する開始終了データ格納部15と、三角形メッシュデータ格納部11に格納されているデータを用いて三角形の辺に補間点を生成する処理などを実施する補間点データ生成部12と、補間点データ生成部12によって生成されたデータを格納する補間点データ格納部13と、補間点データ格納部13と三角形メッシュデータ格納部11と開始終了データ格納部15とに格納されているデータを用いて最短経路を探索するための処理を実施する探索処理部16と、探索処理部16の処理に用いるデータを一時的に保持する処理データ格納部17と、探索処理部16の処理結果である最短距離のデータ及び最短経路のデータを格納する出力データ格納部18と、例えば三角形メッシュデータ格納部11と出力データ格納部18と補間点データ格納部13とを用いてユーザに対して最短距離及び最短経路を提示する出力部19とを有する。
【0018】
探索処理部16は、少なくとも一部の経路区間について距離を補正する処理を実施する距離補正部161と、少なくとも一部の経路区間について距離を補正する際に補間点位置をも補正する処理を実施する補間点位置補正部162とを有する。
【0019】
次に、三角形メッシュデータ格納部11に格納されるデータについて説明する。最初に、メッシュについて説明する。複雑な対象物の形状を厳密に表現するのは実際的でないので、一般的には物体を多面体メッシュで表現する。特に三角形メッシュは、生成及び取り扱いが容易なので多用される。後に述べる、平面展開を用いた処理を実施する上でも有利である。
【0020】
三角形は3つの頂点によって定まる。メッシュは、三角形の集合であり、境界でない辺は2つの三角形によって共有される。頂点は、1又は複数の三角形によって共有される。
【0021】
図6に示すように、三角形Tiに識別子を与え、三角形Ti毎に、頂点及び辺に対してvij,j∈[1,3],eij,j∈[1,3]を与えることによってメッシュの位相構造(要素の接続関係)を表現する。図6の白抜き矢印のように三角形に向きを与えると、向きはメッシュ全体で同調するので、一意に矛盾無く隣接する頂点、辺、三角形要素を定めることができるようになる。また、図6の黒矢印で示すように、三角形は辺を介して隣接する三角形が一意に定まる。また、頂点についても同一の識別子を有する頂点を用いれば、隣接する三角形を特定することができる。なお、辺については頂点が定まれば特定できるので、辺自身を管理しない場合もある。
【0022】
三角形メッシュについては、様々な周知技術にて生成することができるが、例えば有限要素法(FEM:Finite Element Method)用に生成した三角形メッシュが好ましい。このように生成された三角形メッシュはアスペクト比が良好であるので、発生する誤差が少くなる。
【0023】
本実施の形態では、このような前提の下、三角形メッシュ・データは、点テーブル、三角形テーブル及び位相テーブルを含む。ここでは例えば図7に示すような三角形メッシュが存在する場合を説明する。図7では、頂点が6個で、4つの三角形が特定されている。このような三角形メッシュについての点テーブルの一例を図8に示す。図8の例では、頂点の識別子毎に、X座標値、Y座標値及びZ座標値が登録される。
【0024】
また、三角形テーブルの一例を図9に示す。図9の例では、三角形の識別子毎に、該当する3頂点の識別子が登録される。さらに、位相テーブルの一例を図10に示す。図10の例では、三角形の識別子毎に、各辺に隣接する他の三角形の識別子が登録される。なお、辺1、辺2、辺3の順番は図6の白抜き矢印で示したように一定の順番となっている。
【0025】
以上のようなテーブルに加え、以下のようなテーブルを保持することによって距離の計算を高速化することができるようになる。但し必須ではない。高速化のための第1のテーブルは、図11に示すような余弦テーブルである。図11の例では、各三角形の各頂点について、その頂点における角度に応じた余弦値が登録されるようになっている。このようなデータを予め用意しておけば、1つの三角形の2辺の頂点又は補間点との距離計算が高速化される。
【0026】
また、高速化のための第2のテーブルは、図12に示すような辺長テーブルである。図12の例では、各三角形について各辺の辺長が登録されるようになっている。このようなデータを保持すれば、三角形内部における距離計算が高速化される場合がある。
【0027】
なお、三角形メッシュデータ格納部11には、三角形メッシュ毎に絶縁度に相当する屈折率が登録されている場合もある。物体上の最短距離(すなわち沿面距離)を算出する場合には、経路上に存在する三角形毎に素材が異なり、絶縁度が異なる場合がある。そのような場合には、絶縁度に応じた距離を算出する必要があり、絶縁度に相当する屈折率を登録しておけば、以下で述べる距離計算において、該当部分については屈折率を乗じて距離を換算する。
【0028】
なお、本実施の形態では、既に三角形メッシュデータ格納部11に、上で述べたような三角形メッシュのデータを予め用意することを前提にして説明するが、最短経路探索装置が、3次元モデルのデータ(例えば、ベジエ曲面、B-Spline曲面、NURBS曲面などの自由曲面で記述されている三次元モデルであったり、複数部品の組み合わせで構成される3次元モデルのデータ)から、上で述べたような三角形メッシュのデータを生成するような機能を持つようにしても良い。
【0029】
次に、図13乃至図54を用いて、最短経路探索装置の処理内容について説明する。まず、補間点データ生成部12は、三角形メッシュデータ格納部11に格納されている三角形メッシュ・データを用いて補間点データ生成処理を実施する(図13:ステップS1)。この処理は、三角形メッシュに含まれる各三角形の辺に補間点(Steiner点とも呼ぶ)を追加する処理である。三角形メッシュがある程度の正規性を有する場合、すなわち三角形の最小角度が閾値以上である場合には、1辺の補間点数を一定にするように、補間点を均等配置することが実際的である。但し、辺の長さに応じて補間点数を決定して、均等間隔に配置するようにしても良い。
【0030】
例えば図14に示すように三角形T1及びT2が存在する場合、それぞれの辺には補間点1乃至3が追加される。補間点1乃至3の位置データについては、図15に示すように、該当する三角形、辺及び補間点のIDに対応してX座標値、Y座標値及びZ座標値を登録するようにしてもよい。但し、補間点は、例えば辺に3つの補間点を設ける場合には当該辺の1/4、1/2、3/4の位置に存在するということさえ確定していれば、三角形内距離は算出できるので座標位置を予め算出しておかなくても問題はない。辺毎に補間点の数が変化する場合等には、図15のデータを用意する方が良い場合もある。
【0031】
なお、図6の白抜き矢印で示したように、一定の方向にIDを付与するようにする。すなわち、図14において矢印で示すように反時計回りで辺に対して番号(1乃至3)を付与すると共に、辺の中の補間点についても反時計回りで番号(1乃至3)を付与する。但し、以下の処理で頂点(黒丸)についても、補間点と統一的に処理する方が好ましいので、頂点については「0」という補間点番号が付与されている。
【0032】
また、図14からも分かるように、三角形T1の辺1と、三角形T2の辺3とは同じ辺を共有しており、補間点も同じである。従って、図15のような位置データにおいても、三角形、辺及び補間点のIDについては異なるが実際には同一の補間点を表している場合には、同じ位置データが登録されることになる。
【0033】
そして、補間点データとしては、以下で述べる探索処理において当該探索処理の管理に用いられる補間点管理テーブルを生成する。
【0034】
補間点管理テーブルについては例えば図16に示すようなテーブルである。図16の例では、三角形、辺及び補間点のIDに対応して、当該補間点に至る直前の補間点(頂点の場合あり)である復帰点を含む三角形である復帰点三角形のID、復帰点を含む辺である復帰点辺のID、復帰点である補間点のID、当該補間点までの経路距離及び補間点属性を登録するようになっている。
【0035】
復帰点は、例えば図17に示すように、黒丸の補間点から、同じ三角形の辺上の補間点(頂点を含む)を探索した場合には、白丸の探索先補間点にとって黒丸の補間点が復帰点となる。但し、以下で述べる処理でも分かるように、その探索先補間点にとって経路距離が最短でなければ復帰点及び経路距離は登録されないので、その探索先補間点について復帰点はその時点における最短経路についての1つ手前の補間点である。これによって経路を逆方向に辿ることができるようになる。
【0036】
補間点属性は、初期状態からスタートして、前線候補、前線通過完了と順に遷移する。探索前は初期状態であり、最初に、以下で述べる経路出発線上の補間点が、前線候補という状態に変化する。前線候補から次の補間点へ探索を実施する。前線候補として探索が完了すると前線通過完了に遷移する。また、補間点属性は、例えば経路距離や復帰点情報の符号(正又は負)を用いて表現する場合もある。
【0037】
本ステップでは、復帰点三角形ID、復帰点辺ID、復帰補間点IDについては「0」を初期的に登録し、経路距離については無限大に相当するような値を設定する。
【0038】
また、図14に示すように、三角形T1と三角形T2では、辺を共有しているので、当然補間点も共有することになる。図16のように全ての三角形について3つの辺についてデータを保持すると、同一の補間点について2つ以上のレコードがテーブル内に存在する場合がある。このような場合には、両方のレコードを同期して更新する必要がある。なお、一方を常に代表として取り扱い、残余のレコードについては更新しないようにしても良い。
【0039】
また、経路距離については、以下で説明する前線候補点集合テーブルに登録することによって、補間点管理テーブルにおいて保持しないようにする場合もある。
【0040】
なお、本補間点管理テーブルでは、経路を逆方向に辿るための復帰点情報は登録されているが、補間点同士を繋ぐアーク及びその距離自体は規定しない。これによって、アーク及びその距離自体を計算する処理時間を節約できると共に、保持すべきデータ量を大幅に削減できる。特に、図18に示すように、矢印方向に探索が行われ、現在補間点Aに到達しているとすると、出発線から補間点Aを経由して補間点Bに到達した場合の距離は、補間点Aまでの距離dと補間点A及びBの距離ABとの和であり、出発線から補間点Aを経由して補間点Cに到達した場合の距離は、補間点Aまでの距離dと補間点A及びCの距離ACとの和である。補間点Aから補間点Bを経由して補間点Cに至ることも考えられるが、補間点Aから補間点Cに直接ゆく方が必ず距離は短くなるので、補間点A、B及びCという経路は採用し得ない。従って、以下で述べる探索処理ではこのような三角形内の探索は行われず、予め補間点BとCの間のアークを規定して距離を計算する処理自体無駄である。本実施の形態では、このような無駄な処理を行わずに高速に最短経路探索を行うことができる。
【0041】
図13の処理の説明に戻って、データ入力部14は、ユーザに対して経路出発線の指定を促し、ユーザから経路出発線の指定を受け付け、経路出発線を特定するためのデータを、開始終了データ格納部15に格納する(ステップS3)。例えば、メッシュデータ格納部11からメッシュ・データを読み出して、3次元モデルの表示データを生成して表示し、ユーザに経路出発線を指定させるようにしてもよい。経路出発線は、三角形メッシュの境界である。なお、ユーザが点を指定して、当該指定された点に最も近いメッシュの境界を探索して特定し、閉じた辺の列として取得してもよい。
【0042】
導体の境界は、図4の経路出発線sや経路到達線tのように、三角形メッシュでは閉じた辺の列で表現される。もし非常に細い導体を理想化して表現する必要があるならば、閉じた辺の列を空の三角形要素の境界として表現することによって、閉じた辺の列間の最短経路(すなわち沿面経路)を計算することができる。また更に閉じた辺の列は1点に縮退させることもできる。この場合は、出発点という1点からの経路探索の問題に縮退する。
【0043】
データとしては、三角形IDと辺IDのセットで特定される。テーブル形式で保持しても良いし、ハッシュ構造を利用しても良い。
【0044】
さらに、データ入力部14は、ユーザに対して経路到達線の指定を促し、ユーザから経路到達線の指定を受け付け、経路到達線を特定するためのデータを、開始終了データ格納部15に格納する(ステップS5)。例えば、メッシュデータ格納部11からメッシュ・データを読み出して、3次元モデルの表示データを生成して表示し、ユーザに経路到達線を指定させるようにしてもよい。経路到達線は、三角形メッシュの境界である。なお、ユーザが点を指定して、当該指定された点に最も近いメッシュの境界を探索して特定し、閉じた辺の列として取得してもよい。
【0045】
データとしては、三角形IDと辺IDのセットで特定される。テーブル形式で保持しても良いし、ハッシュ構造を利用しても良い。
【0046】
なお、経路出発線及び経路到達線としては、一般化して、三角形メッシュの境界でないものを選択するようにしても良い。
【0047】
次に、探索処理部16は、前線候補点集合テーブルに経路出発線の補間点を設定する(ステップS7)。前線候補点とは、図17における黒丸の補間点のように、最短経路を探索するための起点(経路出発線の補間点の場合を除き中間的な起点)の候補である補間点である。前線候補点集合テーブルは、例えば処理データ格納部17に格納する。
【0048】
本実施の形態において、出発線からの経路距離は、経路距離の拡大を波とみなしたときの波頭であるHuygens(ホイヘンス)前線上の補間点からの2次波で決定される。すなわち、Huygens前線が補間点を通過したとき、2次波は、当該補間点が帰属し且つ波の進行方向に存在する三角形要素の補間点に伝播する。そして、2次波が伝播した補間点の中で、最小の経路距離を有する補間点を次のHuygens前線の通過点とする。前線候補点は、このようなHuygens前線の通過点の候補となる補間点である。
【0049】
前線候補点集合テーブルは、例えば図19に示すようなテーブルである。すなわち、前線候補点毎に、三角形ID、辺ID及び補間点IDを登録するものである。前線候補点集合テーブルに登録した場合には、補間点管理テーブル(図16)についても更新しなければならない。すなわち、該当する補間点についての候補点属性を「前線候補」に変更する。また、経路距離についても該当する経路距離に変更する。但し、初回の場合、経路出発線の補間点は、当然経路距離「0」であるから、「0」を経路距離に登録する。
【0050】
以下において、前線候補点集合テーブルに補間点を追加する場合には、例えばテーブルの最後のレコードに追加する。また、前線候補点集合テーブルから前線候補点を削除する場合には、該当レコードを削除した後、最後のレコードを移動させる。
【0051】
なお、以下の処理において、前線候補点集合から、最小の経路距離を有する前線候補点を抽出する処理を頻繁に実施することになる。前線候補点の数が小さければ補間点管理テーブルを順次探索によって最小の経路距離の前線候補点を特定する処理で問題はない。しかしながら、前線候補点の数が大きくなると、順次探索は時間がかかるという問題がある。この場合、前線候補点集合テーブルの該当アドレスを管理するヒープ構造を使用することが望ましい。但し、前線候補点集合テーブル及び経路距離は動的に変化するので、ヒープ構造と前線候補点集合テーブルの間で同期をとる必要がある。
【0052】
ヒープ構造を採用する場合には、前線候補点集合テーブルについては、図20に示すようなデータ・フォーマットを採用する。図20の例では、図19に示したテーブルに加えてヒープ・アドレスが登録されるようになっている。
【0053】
ヒープ構造は、連続した番号をもつ節点で構成される2進木であり、次の三つの規則を有するデータ構造である。
(1)アドレス1をルートとする。
(2)アドレスkの左の子はアドレス2kに、右の子はアドレス2k+1に格納する。
(3)親の節点は子の節点より常に小さなデータを有する。
ヒープ構造からルート(すなわち根)を取り出すことによって、最小の経路距離をもつ補間点が高速に取り出すことができる。すなわち、データ数をNとすると、ルートのデータを削除した場合、最後のアドレスNに存在するデータをルートに移動する。規則(3)を満足するために、親と子の間のデータ交換を行うが、親子のアドレス探索は2の乗除算で可能であり、データ交換の回数はlog2Nに過ぎない.これによって高速な探索が可能になる。詳細は、浅野哲夫著「データ構造」(近代科学社 p.30)などを参照されたい。
【0054】
図20に示したように、前線候補点集合に属する補間点毎にヒープ・アドレスを取得できる構造にしておく。この構造を採用することによって経路距離が更新された場合も、ヒープ・アドレスを直接参照することによって、高速にヒープの経路距離を親と子の間で比較して入れ換えを行い、ヒープの順序関係を常に正常に保つことができる。また、前線候補点集合テーブルの該当レコードのアドレスが変わっても、ヒープ・アドレスが管理する前線候補点集合テーブルの該当レコードのアドレスを更新することによって同期を取ることができる。これによって、最小の経路距離を有し且つ前線候補点集合に含まれる補間点が取り出されることが保証される。
【0055】
さらに、探索処理部16は、前線候補点集合の中で、経路距離が最短である補間点を前線上存在補間点として探索する(ステップS9)。この処理は、Huygens前線上に存在する(すなわち前線の通過点たる)補間点を特定するための処理である。前線候補点集合テーブルに登録されている補間点で、補間点管理テーブル(図16)を検索して経路距離を取得し、取得された経路距離の中で最短の補間点を特定する。ヒープ構造を用いる場合には上で述べたとおりの処理を実施する。
【0056】
なお、最初にこのステップを実施する場合には、経路出発線上の補間点が経路距離0で前線候補点集合に登録されるので、そのうちのいずれか1つ補間点が選択される。
【0057】
また、本ステップS9の直後に、オプションとして後に述べる平面展開による距離の補正を実施する場合がある。
【0058】
そして、探索処理部16は、前線上存在補間点が、開始終了データ格納部15に格納されている経路到達線上にあるか、すなわち経路到達線に係る三角形の辺に含まれる補間点(頂点を含む)であるかを判断する(ステップS11)。前線上存在補間点が、経路到達線上に存在していない場合には、端子Aを介して図21の処理に移行する。
【0059】
一方、前線上存在補間点が、経路到達線上に存在していると判断されると、探索処理部16は、前線上存在補間点についての経路距離を最短距離として特定すると共に、前線上存在補間点についての復帰点情報(復帰三角形、復帰辺及び復帰補間点)を補間点管理テーブルから読み出し、さらに復帰点についてのさらに前の復帰点を読み出しといったように順次遡ることによって最短経路上の補間点を特定し、最短距離(すなわち沿面距離)及び最短経路上の補間点の情報(ID及び位置データ)を出力データ格納部18に格納する(ステップS13)。なお、本ステップでは、以下で述べる、平面展開による最短経路の修正処理を実施する場合がある。
【0060】
そして、出力部19は、出力データ格納部18に格納された最短距離及び最短経路上の補間点のデータを、表示装置などの出力装置に出力する(ステップS15)。例えば、3次元モデルの三角形メッシュ・データを三角形メッシュデータ格納部11から読み出して、三角形メッシュ上で、最短経路上の補間点を結んで最短経路を明示するような図(例えば図4)を生成して、表示装置に表示するようにしても良い。
【0061】
次に、端子Aの後の処理について図21乃至図40を用いて説明する。まず、探索処理部16は、前線上存在補間点が帰属する三角形の補間点のうち未処理の補間点を探索する(図21:ステップS17)。本ステップにおいては、前線上存在補間点が保有する復帰点情報に基づいて、経路距離増大方向にある三角形のみを探索の対象とするのが望ましい。全ての三角形を探索の対象にしても処理は可能であるが、対象の限定によって、不要な探索が実行されなくなり、高速な処理が可能になる。
【0062】
具体的には、図22に示すように、三角形の辺上に前線上存在補間点hが存在する場合には、復帰点r及び前線上存在補間点hが属する三角形と、前線上存在補間点hが存在する辺を共有する三角形Tsの実線矢印の辺に属する補間点を探索対象とする。一方、図23乃至図27に示すように、前線上存在補間点hが三角形の頂点である場合には、様々なパターンが存在する。図23に示すように、例えば5つの三角形によって共有される頂点が前線上存在補間点hである場合には、復帰点rが属する三角形を除く共有三角形Ts1乃至Ts4の各辺(実線矢印の示す辺。但し復帰点rを含む三角形と共有される辺を除く)に属する補間点を探索対象とする。また、図24に示すように、復帰点rと前線上存在補間点hとが三角形メッシュの頂点であり、経路が三角形要素の辺に沿って設定されており、前線上存在補間点hが経路上の辺を共有する2つの三角形及びそれ以外の例えば3つの三角形Ts1乃至Ts3に共有される場合には、経路上の辺を共有する三角形以外の三角形Ts1乃至Ts3の各辺(実線矢印の示す辺。経路上の辺を共有する三角形に属する辺を除く。)に属する補間点が探索対象となる。
【0063】
さらに、図25に示すように、復帰点r及び前線上存在補間点hが属する三角形及び三角形Ts1乃至Ts3が前線上存在補間点hを共有しているが、図23とは異なり前線上存在補間点hの周り360°に三角形が存在するわけではない場合でも、図23の考え方と同様に、復帰点rが属する三角形を除く共有三角形Ts1乃至Ts3の各辺(実線矢印の示す辺。但し復帰点rを含む三角形と共有される辺を除く)に属する補間点を探索対象とする。また、図26に示すように、復帰点r及び前線上存在補間点hとが三角形メッシュの頂点であり、経路が三角形要素の辺に沿って設定されており、経路上の辺を共有する三角形及び例えば三角形Ts1及びTs2が前線上存在補間点hを共有しているが、図24とは異なり前線上存在補間点hの周り360°に三角形が存在するわけではない場合でも、図24の考え方と同様に、三角形Ts1及びTs2の各辺(実線矢印の示す辺。但し経路上の辺を共有する三角形に属する辺を除く。)に属する補間点が探索対象となる。
【0064】
図27のケースは、三角形メッシュが形成されていない領域の境界を沿って復帰点rから前線上存在補間点hへ経路が延びており、頂点である前線上存在補間点hを共有する三角形が複数存在している場合を示しており、このような場合には、経路がのっている辺が属する三角形以外の三角形で前線上存在補間点hを共有する三角形Ts1乃至Ts3の各辺(実線矢印の示す辺。但し復帰点rを含む三角形と共有される辺を除く)に属する補間点を探索対象とする。
【0065】
なお、上で述べたような探索対象を特定するために、本実施の形態ではメッシュ構造の位相情報を用いる。具体的には、図10に示したような位相テーブルを用いれば、辺をはさんで隣接する三角形要素を特定することができる。さらに図9の三角形テーブルを用いれば、三角形の頂点も特定できる。頂点と辺については、例えば反時計回りで番号を付与するなどの規則を採用すれば対応付けが可能である。三角形及び辺が特定できれば補間点管理テーブルを用いて補間点も特定できる。このように、位相情報を用いることによって探索対象を把握できるので、ダイクストラ法などで用いられるグラフ構造において連結先を示すポインタを保有しないで済む。従ってその分データ量を減らすことができる。
【0066】
図23乃至図27のようなポリシーで探索先三角形を特定し、その中で未処理の補間点を探索するが、例えば全ての該当補間点を処理してしまって、未処理の補間点が存在しない場合(ステップS19:Noルート)、探索処理部16は、前線上存在補間点を前線候補点集合(すなわち前線候補点集合テーブル)から除外し、補間点管理テーブル(図16)において前線上存在補間点hについての補間点属性を「前線通過完了」に変更する(ステップS29)。このようにして、Huygens前線が通過したことになるので、以後の処理の対象から外すことができる。処理は端子Bを介して図13のステップS9に戻る。
【0067】
一方、探索先三角形を特定してその中で未処理の補間点が存在する場合には(ステップS19:Yesルート)、探索処理部16は、補間点管理テーブル(図16)において、特定された補間点が前線通過完了という補間点属性の補間点であるか判断する(ステップS21)。特定された補間点が、前線通過完了という補間点属性の補間点である場合には、ステップS17に戻る。
【0068】
一方、特定された補間点が、前線通過完了という補間点属性の補間点ではない場合には、探索処理部16は、特定された補間点が、前線候補点集合に属するか、すなわち前線候補点集合テーブルに登録されているか判断する(ステップS23)。登録されていれば、再度登録する必要はないのでステップS27に移行する。一方、登録されていなければ、特定された補間点を前線候補点集合に追加、すなわち前線候補点集合テーブルに登録する(ステップS25)。補間点管理テーブルの補間点属性も前線候補に変更する。次の探索処理の起点候補とするためである。
【0069】
ステップS25の後又はステップS23で既に前線候補点集合テーブルに登録されていると判断された場合には、探索処理部16は、特定された補間点までの経路距離を算出する。図28に示すように、まず経路距離d*を有する前線上存在補間点c*から探索した補間点(前線候補点)cまでの三角形内距離Δdを計算する。三角形内距離Δdは、前線上存在補間点c*と補間点cの座標値から、その間の距離を求める。さらに、前線上存在補間点c*の経路距離d*と三角形内距離Δdとを加算すれば、補間点(前線候補点)の経路距離が得られる。
【0070】
なお、上で述べたように余弦テーブルや辺長テーブルが用意されている場合には、次のように余弦定理を用いると三角形内距離Δdを高速に計算できる。すなわち、以下の式で算出できる。
【数1】

【0071】
このような式で算出する方が、補間点が属する辺の両端の頂点の座標値を内分し、2つの補間点の座標成分の2乗和の平方根を計算するより計算量が少ない。
【0072】
なお、補間点の座標値を図15のように予め計算しておく場合には、その値を用いて距離を算出するようにしても良い。
【0073】
さらに、三角形要素に屈折率が与えられている場合は、三角形内距離Δdに対して該当する三角形要素の屈折率から定まる係数を乗じて、三角形内距離Δdを修正する。
【0074】
その後、今回算出された経路距離が(d*+Δd)が、特定された補間点(前線候補点)の現在の経路距離より短いか判断し、短い場合には、補間点管理テーブルにおいて、特定された補間点の経路距離を今回算出された経路距離に置き換えると共に、復帰点情報を今回の前線上存在補間点についての三角形ID、辺ID及び補間点IDに置き換える(ステップS27)。このようにすれば、特定された補間点には、処理時点における最短経路の最短距離及び経路上1つ前の補間点の情報が登録されるようになる。
【0075】
なお、前線候補点の経路距離をヒープ構造で管理する場合は、ノード間の交換を行い、ヒープ構造に矛盾が生じないようにする。また、補間点管理テーブルにおいて実体が同一の補間点が異なる識別子で複数存在する場合にも、同期をとっておく必要がある。
【0076】
処理はステップS17に戻って、上で述べた処理を繰り返す。
【0077】
上で述べたような処理を実施するようにすれば、図13のステップS9で特定された前線上存在補間点が経路到達線上の補間点に到達した時、当該前線上補間点における経路距離には最短距離が登録されているので、容易に最短距離が特定される。また復帰点情報も補間点管理テーブルにおいて管理されているので、復帰点情報を辿ることによって最短経路も容易に特定できる。
【0078】
以下、図29乃至図40を用いて、処理の具体例を示すことによって、上で述べた処理をわかりやすくする。例えば各辺に2つの補間点が設定され且つ三角形要素T1乃至T3を含む、図29のような三角形メッシュを前提とする。図29において太線は経路出発線を示している。三角形T1は、辺(T1,E1)、(T1,E2)(=(T2,E3))及び(T1,E3)を有しており、三角形T2は、辺(T2,E1)(=(T3,E3))、(T2,E2)及び(T2,E3)(=T1,E2)を有しており、三角形T3は、辺(T3,E1)、(T3,E2)及び(T3,E3)(=(T2,E1))を有している。補間点は、反時計回りに識別番号が付与されている。
【0079】
このような三角形メッシュが存在する場合に、補間点管理テーブルは図30に示すような状態となる。まだ探索が行われていないので、各補間点の復帰点情報は全て「0」となる。また、初期的には経路距離は全ての補間点について無限大であるが、既に経路出発線が指定されているので、経路出発線上の補間点(辺(T1,E1)及び(T3,E1)上の補間点)については経路距離「0」が登録されている。同様に、ステップS7において経路出発線上の補間点は前線候補点として前線候補点集合に登録されるので、経路出発線上の補間点の補間点属性は、初期状態から前線候補に変更される。
【0080】
次に、辺(T1,E1)の左端の頂点が前線上存在補間点hに選択された場合について図31及び図32を用いて説明する。この場合、図31で点線矢印で示すように、三角形T1の辺(T1,E3)及び(T1,E2)を探索対象の辺として特定し、それらの辺上の5つの補間点を順に探索する。そうすると、補間点管理テーブルは、図30の状態から図32の状態に変化する。図32において、(三角形ID,辺ID,補間点ID)の組み合わせで表すと、(1,2,1)(1,2,2)(1,3,0)(1,3,1)(1,3,2)の補間点について、復帰点情報として(1,1,0)が登録され、それぞれの経路距離が登録され、さらに補間点属性が「前線候補」に変更される。三角形T2については、同一補間点について同期をとるための更新が行われている。
【0081】
そして最後に、前線上存在補間点hである補間点(1,1,0)は、補間点属性が前線通過完了と変更される。
【0082】
その後、補間点属性が「前線候補」である補間点の中から経路距離が最短の補間点(1,1,1)が、前線上存在補間点hとして選択される。この場合、図33で点線矢印で示すように、三角形T1の辺(T1,E3)及び(T1,E2)を探索対象の辺として特定し、それらの辺上の5つの補間点を順に探索する。そうすると、補間点管理テーブルは、図32の状態から図34の状態に変化する。すなわち、(1,2,1)(1,2,2)(1,3,0)(1,3,1)(1,3,2)の補間点について補間点(1,1,1)からの経路距離を算出すると、(1,3,2)の補間点以外の補間点(1,2,1)(1,2,2)(1,3,0)(1,3,1)については経路距離が短くなっていることが分かる。そのため、それらの補間点(図34の星印の行)については、経路距離が今回の算出値に変更される。さらに、それらの復帰点情報は、前線上存在補間点hの補間点情報(1,1,1)に変更される。なお、探索された補間点の補間点属性は、既に「前線候補」に変更されているので、ここでは変更されない。
【0083】
さらに、三角形T2については、同一補間点について同期をとるための更新が行われている。
【0084】
そして最後に、前線上存在補間点hである補間点(1,1,1)は、補間点属性が前線通過完了と変更される。
【0085】
さらに、補間点属性が「前線候補」である補間点の中から経路距離が最短の補間点(1,1,2)が、前線上存在補間点hとして選択される。この場合、図35で点線矢印で示すように、三角形T1の辺(T1,E3)及び(T1,E2)を探索対象の辺として特定し、それらの辺上の5つの補間点を順に探索する。そうすると、補間点管理テーブルは、図34の状態から図36の状態に変化する。すなわち、(1,2,1)(1,2,2)(1,3,0)(1,3,1)(1,3,2)の補間点について補間点(1,1,2)からの経路距離を算出すると、補間点(1,2,1)及び(1,2,2)については経路距離が短くなっていることが分かる。そのため、それらの補間点(図36の星印の行)については、経路距離が今回の算出値に変更される。さらに、それらの復帰点情報は、前線上存在補間点hの補間点情報(1,1,2)に変更される。なお、探索された補間点の補間点属性は、既に「前線候補」に変更されているので、ここでは変更されない。
【0086】
さらに、三角形T2については、同一補間点について同期をとるための更新が行われている。
【0087】
そして最後に、前線上存在補間点hである補間点(1,1,2)は、補間点属性が前線通過完了と変更される。
【0088】
その後、補間点属性が「前線候補」である補間点の中から経路距離が最短の補間点(2,1,0)(=(1,2,0))が、前線上存在補間点hとして選択される。この場合、図37で点線矢印で示すように、三角形T2の辺(T2,E3)、(T2,E2)及び(T2,E1)を探索対象の辺として特定し、それらの辺上の8つの補間点を順に探索する。そうすると、補間点管理テーブルは、図36の状態から図38の状態に変化する。すなわち、(2,1,1)(2,1,2)(2,2,0)(2,2,1)(2,2,2)(2,3,0)(2,3,1)(2,3,2)の補間点について補間点(2,1,0)からの経路距離を算出すると、補間点(2,1,1)(2,1,2)(2,2,0)(2,2,1)(2,2,2)については経路距離が短くなっていることが分かる。そのため、それらの補間点(図38の星印の行)については、経路距離が今回の算出値に変更される。さらに、それらの復帰点情報は、前線上存在補間点hの補間点情報(2,1,0)に変更される。さらに、それらの補間点の補間点属性は、「前線候補」に変更されている。
【0089】
このような処理を繰り返し実施して、経路出発線上の補間点について探索処理が完了して前線候補点集合から除去された後に、経路距離が最も短い前線候補点は、補間点(1,2,1)(=(2,3,2))である。この補間点(1,2,1)が前線上存在補間点hとして選択される。この場合、図39で点線矢印で示すように、三角形T2の辺(T2,E1)及び(T2,E2)を探索対象の辺として特定し、それらの辺上の5つの補間点を順に探索する。そうすると、補間点管理テーブルは、図38の状態から図40の状態に変化する。すなわち、(2,1,1)(2,1,2)(2,2,0)(2,2,1)(2,2,2)の補間点について補間点(1,2,1)からの経路距離を算出すると、いずれの補間点についても経路距離が短くならない。そのため、経路距離が更新されるものはない。また、復帰点情報も補間点属性も今回は変更されない。但し、補間点(1,2,1)(=(2,3,2)の補間点属性は、「前線通過完了」に変更される。
【0090】
以上のような処理を繰り返し実施することによって、三角形メッシュの三角形要素に補間点を導入するが、補間点間のアークを規定・利用することなく探索を実施するので、データ量は削減され、処理も高速化される。
【0091】
上で述べた方法でも実施可能であるが、最短距離の算出についてはさらに工夫が可能である。図41に示すように、経路上のある補間点pから、補間点r1及びr2を経由して、前線上存在補間点hに至った場合において、これらの補間点が属する三角形T1乃至T3が例えば三角形T1の属する平面に展開できたとする。そうすると、予め設定されている補間点r1及びr2を経由すると補間点pから前線上存在補間点hまでの経路Xは、補間点pから前線上存在補間点hの直線距離Yよりも長くなってしまう。従って、前線上存在補間点hについての経路距離を登録する際には、例えば経路Xではなく経路Yの直線距離を用いて経路距離を算出する方が正確である。
【0092】
このような平面展開による経路距離の算出及び平面展開による経路距離を算出した際に採用されるべき補間点の位置修正(すなわち図41ではr1からraへの変更、r2からrbへの変更)については、以下で説明するような処理によって実現される。
【0093】
A.平面展開経路距離修正処理
本処理については図42乃至図49を用いて説明する。なお、本処理は、ステップS9において前線上存在補間点を特定する毎に実施する。
【0094】
処理の具体的な説明を行う前に、平面展開区間及び平面展開区間端点について説明しておく。上で述べたように三角形メッシュにおいて経路上の三角形要素を平面に展開して直線で結ぶ必要があるため、経路上の三角形要素全てを平面に展開できるわけではなく、また平面に展開することが好ましくない場合もある。従って、以下で述べる条件を満たす補間点(頂点を含む)を検出した場合には、その補間点まで又はその一つ手前の補間点で平面展開を一旦停止するものとし、その補間点を平面展開区間端点と呼ぶことにする。また、図42に示すように、経路上隣接する平面展開区間端点間(例えばPとPの間及びPとPの間)及び前線存在補間点hと経路上直前の平面展開区間端点Pとの間を平面展開区間と呼ぶこととする。前線存在補間点hと平面展開区間端点Pの間の平面展開区間については、次の平面展開区間端点が検出されるまで長くなる。
【0095】
平面展開区間端点と特定する条件は、2通りある。条件Aは以下のとおりである。
(1)新たに進んだ前線上存在補間点が三角形の頂点に到達した場合
(2)新たに進んだ前線上存在補間点から平面展開区間端点への線分が途中の全ての辺と交差する状態ではない場合
(3)区間を構成する補間点の数が予め定めた条件を満たさなくなった場合
この3つのうちいずれかを満たしている場合には、平面展開区間端点と判断される。
【0096】
一方、条件Bは以下のとおりである。
(1)新たに進んだ前線上存在補間点から平面展開区間端点への線分が途中の全ての辺と交差する状態ではない場合
(2)区間を構成する補間点の数が予め定めた条件を満たさなくなった場合
この2つのうちいずれかを満たしている場合には、平面展開区間端点と判断される。
【0097】
条件A(2)及びB(1)は、例えば図43に示すような状況を示している。なお、以下では既に1平面上に辺や補間点が展開されているものとする。図43では、辺e1上に平面展開区間端点Pが属しており、辺e2上に経路上の補間点r1が属しており、辺e3上に経路上の補間点r2が属しており、辺e4上の経路上の補間点r3が属しており、辺e5上に経路上の補間点h、すなわち前線上存在補間点が属している場合を想定する。この際、補間点r1と平面展開区間端点Pとは互いに隣接する経路上の補間点なので必ず条件A(2)及びB(1)を満たさなくなってしまうので判定外であるが、補間点r2と平面展開区間端点Pとを結ぶ線分は、辺e2と交差し、補間点r3と平面展開区間端点Pとを結ぶ線分は、辺e2及びe3と交差するので、条件A(2)及びB(1)を満たしていない。しかしながら、前線上存在補間点hと平面展開区間端点Pとを結ぶ線分は、辺e4とは交差しているが、辺e3及びe2については交差していないので、条件A(2)及びB(1)を満たすようになる。このように平面展開区間端点Pから見てある程度の幅で前線上存在補間点が特定されて経路が伸びていく限りにおいては特に問題が生じない。しかし、図43の例のように、経路が曲がったような場合にまで直線で結んだ経路を採用してしまうと、途中の補間点r1、r2及びr3を同じ辺上に定義できなくなり、復帰点が正しく規定できないという問題が生ずる。すなわち、2点を結ぶ直線が最短経路を形成しない。そこで、このような条件A(2)及びB(1)に該当するような前線上存在補間点hを検出した場合には、経路上直前の補間点r3(すなわち前線上存在補間点hの復帰点)を平面展開区間端点として特定する。
【0098】
なお、条件A(1)については、2点を結ぶ直線が最短経路を形成しない場合にはその補間点を平面展開区間端点として特定する。しかしながら、必ずしも特徴的な点でない場合もあり、平面展開しても問題ないこともあるので、条件Bでは採用していない。例えば図44に示すように、平面展開区間端点Pから前線上存在補間点hまで平面展開を実施した場合に、辺e1と辺e2との頂点が平面展開区間端点Pであり、辺e3上に経路上の次の補間点r1が存在し、辺e4上に経路上の次の補間点r2が存在し、辺e5とe6との交点が経路上の頂点r3であり、辺e7上に経路上の前線上存在補間点hが存在するものとする。このとき、条件Aを採用する場合には、頂点r3が平面展開区間端点として特定されるようになる。しかしながら、頂点r3と平面展開区間端点Pとを結ぶ線分は、途中の辺e3及びe4と交差する。すなわち途中の辺においても補間点を規定して復帰点を特定できる。そこで、条件Bを採用して、頂点r3では平面展開区間を終了させず、前線上存在補間点hと平面展開区間端点Pへの線分について確認すると、途中の辺と交差するので、前線上存在補間点hまで平面展開区間を延ばせる。これによって、直線距離を算出できる長さが長くなるので、経路距離の精度向上が可能となる。但し、条件A(1)についても、3次元モデルの形状によっては必要な場合もある。
【0099】
以上のような前提を下に、図45乃至図49を用いて具体的な処理内容を説明する。
【0100】
まず、距離補正部161は、前線上存在補間点を特定する(図45:ステップS31)。ステップS9と同じである。そして、直前の平面展開区間端点を特定する(ステップS33)。例えば、図16に示した補間点管理テーブルのデータ・フォーマットを、例えば図46に示すようなデータ・フォーマットに変更する。すなわち、図16のテーブルに、平面展開区間端点であるか否かを表すフラグである端点フラグの列を追加している。端点フラグは、以下で述べる処理で平面展開区間端点であると判断された場合にセットされ、さらに経路出発線上の補間点については初期的にセットする。図46は、初期設定が完了した状態を示している。
【0101】
そして、距離補正部161は、直前の平面展開区間端点が、前線上存在補間点の直前の復帰補間点であるか判断する(ステップS35)。この条件を満たす場合には、直線的に前線上存在補間点と平面展開区間端点とが結ばれているので、処理を行う必要はない。従って、この条件を満たす場合には元の処理に戻る。一方、この条件を満たさない場合には、平面展開区間生成処理を実施する(ステップS37)。この処理については以下に詳細に述べる。そして、元の処理に戻る。
【0102】
次に、平面展開区間生成処理について図47乃至図49を用いて説明する。まず、距離補正部161は、前線上存在補間点に係る復帰三角形を平面展開基準平面として特定する(ステップS41)。例えば図48のような状況を想定する。前線上補間点hと経路上直前の補間点r1とを含む復帰三角形T1(頂点ABC)を平面展開基準平面として特定する。復帰三角形は、補間点管理テーブル(図46)において復帰点情報として登録されている。そして、次の復帰三角形を特定する(ステップS43)。図48の例では、三角形T2を特定する。また、次の復帰三角形の平面展開行列を算出し、例えば処理データ格納部17に格納する(ステップS45)。次の復帰三角形の平面展開行列の算出方法を、説明する。まず、次の復帰三角形T2の頂点Qから辺ABへ下ろした垂線からの足を点Hをする。この点Hから頂点Qの平面展開基準平面への投影点Qtへの単位ベクトルをv1とし、点Hから頂点Aへの単位ベクトルをv3とすると、v2=v3×v1となる。また、ベクトルHQとv1がなすv2方向の角をθとする。そして以下のような行列を定義する。
【数2】

【数3】

【0103】
このような前提の下、次の復帰三角形T2上の任意の点Xの、平面展開基準平面への平面展開は以下の式で表される。
Xt=MRMTX+(E−MRMT)H (1)
但し、Hは点Hの位置ベクトルである。
【0104】
この式の詳細な説明は省略するが、v1、v2、v3で張られる局所座標系における軸ABの角θの回転を、世界座標系に戻す演算を表したものである。
【0105】
なお、本ステップで算出される平面展開行列MRMT及び(E−MRMT)Hについては後の演算でも用いるので、例えば処理データ格納部17に格納しておく。
【0106】
上の説明では平面展開基準平面である三角形T1と次の復帰三角形である三角形T2との関係を表したものであって、平面展開区間端点にたどり着かない場合には、三角形T2とさらに次の復帰三角形T3との関係を表す平面展開行列を算出する。また、それでも平面展開区間端点にたどり着かない場合には、三角形T3とさらに次の復帰三角形T4との関係を表す平面展開行列を算出する。このように平面展開区間端点にたどり着くまで繰り返し平面展開行列を算出する。平面展開区間端点にたどり着いた場合には、その前の復帰三角形Tn-1と平面展開区間端点h及び経路上直前の補間点に係る三角形Tnとについての平面展開行列を算出することになる。
【0107】
その後、距離補正部161は、平面展開行列を用いて復帰補間点r1を含む辺ABの両端の頂点A及びBと復帰補間点r1を平面展開基準平面に展開し、処理結果である座標値を例えば処理データ格納部17に格納する(ステップS47)。
【0108】
本ステップでは、(1)式に従って座標値を算出するわけであるが、通常は図48の例のように1回で平面展開区間端点hに到達する訳ではない。2回目は、直前のステップS45で算出された平面展開行列を用いて(1)式に従って演算した後に、得られた座標値と1回前のステップS45で算出された平面展開行列とを用いて(1)式に従って演算する。
【0109】
3回目は、直前のステップS45で算出された平面展開行列を用いて(1)式に従って演算し、得られた座標値と1回前のステップS45で算出された平面展開行列とを用いて(1)式に従って演算し、さらに得られた座標値と2回前のステップS45で算出された平面展開行列とを用いて(1)式に従って演算する。このような処理が繰り返されることとなる。
【0110】
その後、距離補正部161は、平面展開区間端点hまで処理が進んだか、すなわち次の復帰三角形が平面展開区間端点hが属する三角形要素になったか判断する(ステップS49)。平面展開区間端点hまで処理が進んでいない場合にはステップS43に戻る。
【0111】
一方、平面展開区間端点hまで処理が進んでいる場合には、距離補正部161は、前線上存在補間点と平面展開区間端点の平面展開点とを結ぶ直線が、平面展開された全ての辺と交差するか検査する(ステップS51)。図43に示した前線上存在補間点hについては、平面展開された全ての辺と交差するわけではないことが分かる。
【0112】
そして、距離補正部161は、前線上存在補間点と平面展開区間端点の平面展開点とを結ぶ直線が、平面展開された全ての辺と交差するか判断し(ステップS53)、平面展開されたいずれかの辺と交差しない場合には、補間点管理テーブル(図46)において前線上存在補間点の経路上直前の復帰補間点を、平面展開区間端点に設定する(ステップS55)。このようにステップS53で条件を満たさないと判断された場合には、平面展開区間端点と前線上存在補間点とを直線で結ぶことはないので、距離を補正する必要はない。具体的には、前回の距離補正がそのまま利用でき、前線上存在補間点と経路上直前の補間点(すなわち復帰点)との間は三角形内部距離Δdとして算出されたものを用いれば、前線上存在補間点hまでの距離が得られる。
【0113】
一方、ステップS53の条件を満たしていると判断された場合には、処理は端子Cを介して図49の処理に移行する。
【0114】
そして、距離補正部161は、平面展開区間端点と前線上存在補間点との間の距離を算出し、例えばメインメモリなどの記憶装置に格納する(図49:ステップS57)。点間の距離の計算は周知なので、ここでは述べない。そして、補間点管理テーブルに格納されている、平面展開区間端点における距離に、ステップS57で算出した距離を加算して、前線上存在補間点の経路距離として補間点管理テーブルに登録する(ステップS59)。そして、前線上存在補間点が平面展開区間端点の条件A又はBを満たすか判断する(ステップS61)。条件Aであれば、条件A(1)及び(3)を満たしているか、条件Bであれば、条件B(2)を満たしているか判断する。満たしている場合には、補間点管理テーブルにおいて、前線上存在補間点を平面展開区間端点に設定する(ステップS63)。そして元の処理に戻る。満たしていない場合には、ステップS59は不要なので元の処理に戻る。
【0115】
以上のような処理を実施することでより精度のよい経路距離の算出が可能となる。
【0116】
なお、平面展開経路距離修正処理は、上で述べた最短経路探索処理だけではなく、ダイクストラ法にも適用可能である。すなわち、ダイクストラ法における「最小の距離dをもつノードz∈Uを1つ探索」という処理において、重み付きグラフとは別に三角形メッシュを保持しておき、この三角形メッシュに対して同一の処理を行って距離dを補正すればよい。
【0117】
B.補間点位置補正処理
平面展開経路距離修正処理を実施すると、経路上の補間点の位置は初期的に設定した位置(又は想定した位置)とは異なる位置となる。従って、平面展開経路距離修正処理を実施する場合には、補間点位置補正処理を実施することが好ましい。しかし、補間点位置補正処理は、平面展開経路距離修正処理のようにステップS9で実施せずとも、経路到達線に前線上存在補間点が到達したときに1回実施すれば十分である。以下では、ステップS13で実施する場合を前提に説明する。但し、平面展開経路距離修正処理と共に実施しても良い。
【0118】
補間点位置補正部162は、経路到達線上の前線上存在補間点を第1平面展開区間端点として特定する(図50:ステップS71)。また、補間点管理テーブル(図46)において、経路到達線上の前線上存在補間点の復帰点から順次経路を遡ることによって、第1平面展開区間端点に最も近い平面展開区間端点を第2平面展開区間端点として特定する(ステップS73)。
【0119】
そして、補間点位置補正部162は、位置補正処理を実施する(ステップS75)。この処理については図51乃至図54を用いて説明する。まず、補間点位置補正部162は、第1平面展開区間端点の復帰三角形を平面展開基準平面として特定する(図51:ステップS81)。ステップS41と同様である。そして、次の復帰三角形を特定する(ステップS83)。これもステップS43と同様である。さらに、次の復帰三角形の平面展開行列を算出し、例えば処理データ格納部17に格納する(ステップS85)。これもステップS45と同様である。
【0120】
その後、補間点位置補正部162は、平面展開行列を用いて復帰補間点を含む辺の両端の頂点を平面展開基準平面に展開し、処理結果である座標値を例えば処理データ格納部17に格納する(ステップS87)。これもステップS47とほぼ同様である。但し、復帰補間点の展開点は不要である。
【0121】
その後、補間点位置補正部162は、第2平面展開区間端点まで処理が進んだか、すなわち次の復帰三角形が第2平面展開区間端点が属する三角形要素になったか判断する(ステップS89)。このステップも実質的にステップS49と同様である。第2平面展開区間端点まで処理が進んでいない場合にはステップS83に戻る。
【0122】
一方、第2平面展開区間端点まで処理が進んだ場合には、補間点位置補正部162は、第1及び第2の平面展開区間端点の平面展開点を結ぶ直線を含み、平面展開基準平面に直交するパラメタ算出平面を算出する(ステップS91)。具体的には、例えば図52に示すように、平面展開基準平面Kに第1平面展開区間端点P1及び第2の平面展開区間端点P2の展開点P2tとが属しており、それらを結ぶ線分mをとおり且つ平面展開基準平面Kに直交する平面Lがパラメタ算出平面である。なお、平面展開基準平面K上には、経路上の補間点rが属する辺ABの展開点At及びBtも存在しており、線分Attとパラメタ算出平面の交点rnewtは、辺AB上の新たな補間点rnewの展開点となる。処理は端子Dを介して図53の処理に移行する。
【0123】
図53の処理に移行して、補間点位置補正部162は、第1の平面展開区間端点から順に、未処理の次の復帰補間点を特定する(ステップS93)。そして、特定された復帰補間点は第2の平面展開区間端点であるか判断する(ステップS95)。特定された復帰補間点が第2の平面展開区間端点であれば、元の処理に戻る。
【0124】
一方、特定された復帰補間点が第2の平面展開区間端点でない場合には、補間点位置補正部162は、特定された復帰補間点が属する復帰辺をパラメタ算出平面で切断したときの辺のパラメタxを算出し、例えばメインメモリなどの記憶装置に格納する(ステップS97)。すなわち、rnewt=(1−x)At+xBtという関係があり、rnewtを算出すると共に、上記式を満たすxを算出する。
【0125】
その後、補間点位置補正部162は、平面展開前の復帰辺(すなわち特定された復帰補間点が属する辺)をパラメタ値xにより分割して、特定された補間点の新たな座標値を算出し、例えば補間点データ格納部13に格納する(ステップS99)。すなわち、図54に示すように、rnew=(1−x)A+xBという関係から新たな座標値が算出される。処理はステップS93に戻り、さらに次の復帰補間点を特定して処理を実施する。
【0126】
以上のような処理を実施することによって、補間点位置を、平面展開区間において補正することができる。
【0127】
図50の処理の説明に戻り、補間点位置補正部162は、ステップS75の後に、第2平面展開区間端点が経路出発線上の補間点であるか判断する(ステップS77)。第2平面展開区間端点が経路出発線上の補間点でない場合には、第2平面展開区間端点を第1平面展開区間端点として設定し、次に近い平面展開区間端点を第2平面展開区間端点に設定する(ステップS79)。補間点管理テーブルで復帰点を探索することによって次の平面展開区間端点は見つけることができる。そしてステップS75に戻る。一方、第2平面展開区間端点が経路出発線上の補間点である場合には、元の処理に戻る。
【0128】
以上のような処理を実施することによって、経路上の補間点位置を、平面展開経路距離修正処理における経路距離に従った形で補正することができるようになる。
【0129】
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。すなわち、例えば図5に示した機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成と一致しない場合もある。また、複数台のコンピュータで機能分担を行うようにしても良い。
【0130】
また、処理結果が変わらない限り、処理ステップの実行順番を入れ替えたり、並列実行するようにしても良い。
【0131】
さらに、上では図10を用いて位相テーブルの例を示したが、位相情報は図10の位相テーブルに限定されるわけではない。メッシュの位相情報は、メッシュを構成する三角形、辺、頂点の接続関係を表現するものであり、多くの表現方法が知られている。メッシュの位相表現は、境界表現(boundary representation, B-Rep)と呼ばれる立体表面の面分、辺、頂点を表現する位相構造の特別なものである。
【0132】
よく知られている境界表現による物体表現方法に、1974年にBruce Guenther Baumgartによって発表されたウイングドエッジ構造がある。これは、図55に示すように、物体表面のフェース(面分。ここでは三角形に対応する)、辺、頂点にそれぞれ識別子を付し、各辺から両端の頂点、両側のフェース、両端の頂点に接続する両側のフェースに帰属する合計4個の辺へのポインタを保有することによって、物体表面の位相構造を表現するものである。
【0133】
ウイングドエッジ構造は辺がベースになっており、辺とフェース、辺と頂点の間の隣接関係を用いて、物体全ての位相要素の接続関係を表現している。Weilerによれば隣接関係の選択方法は9通りあるので、位相表現のバリエーションは多数存在することが知られている。”Kevin Weiler: Edge-Based Data Structure for Solid Modeling in Curved-Surface Environments, IEEE CG&A 1985 Jan. p.21-40”を参照のこと。なお、本実施の形態で挙げたメッシュの表現方法は三角形メッシュの場合に限ると、データ量がウイングドエッジ構造よりも小さいのが特徴である。
【0134】
なお、最短経路探索装置は、コンピュータ装置であって、図56に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【0135】
以上本実施の形態をまとめると以下のようになる。
【0136】
3次元モデル上における最短経路をコンピュータにより探索する最短経路探索方法は、3次元モデルの三角形メッシュにおける各三角形の各辺に補間点を設けて、該当する三角形及び辺のデータに当該三角形の頂点及び補間点のデータを関連付けて探索管理データ格納部に格納するステップと、3次元モデルにおける出発点又は出発線と、到達点又は到達線との指定を受け付けるステップと、出発点又は出発線から到達点又は到達線に至るまで、補間点及び頂点を当該三角形メッシュの位相情報に基づき順番に探索して、探索における最短距離探索対象点である補間点又は頂点について出発点又は出発線からの距離を算出し、当該距離が全経路の中で最短であれば、最短距離探索対象点である補間点又は頂点に関連付けて距離を探索管理データ格納部に格納する探索ステップとを含む。
【0137】
このように三角形メッシュに含まれる各三角形要素の辺に補間点を追加することによって精度向上を図ることができる。また、補間点間のアークを生成することもないので、保持すべきデータ量を著しく削減できる。さらに補間点間のアークを生成することがないので、その分の計算時間をも削減することができる。
【0138】
なお、上で述べた探索ステップが、最短距離探索対象点である補間点又は頂点に関連付けて最短距離探索対象点の経路上直前の補間点又は頂点を特定するためのデータを、探索管理データ格納部に格納するステップを含むようにしてもよい。その場合、本最短経路探索方法は、探索管理データ格納部において到達点又は到達線上の補間点又は頂点に関連付けて出発点又は出発線からの最短距離が登録された場合には、探索管理データ格納部において、到達点又は到達線上の補間点又は頂点から出発点又は出発線上の補間点又は頂点まで、経路上の補間点又は頂点に関連付けて格納されている経路上直前の補間点又は頂点を特定するためのデータを抽出することによって最短経路を特定する経路特定ステップをさらに含むようにしてもよい。これによって、最短距離だけではなく、最短経路も特定できるようになる。
【0139】
さらに、上で述べた探索ステップが、最短距離探索対象点である補間点又は頂点に関連付けて最短距離探索対象点の経路上直前の補間点又は頂点を特定するための復帰情報を、探索管理データ格納部に格納するステップを含むようにしてもよい。その際には、探索ステップにおいて、三角形メッシュの位相情報と復帰情報とに基づき予め定められるルールに従って、探索先の補間点又は頂点を特定するようにしてもよい。これによって、適切な探索先が特定されるので、網羅的な探索よりも高速に処理が行われるようになる。
【0140】
また、上で述べた探索ステップが、探索管理データ格納部に距離が格納済みであって且つ最短距離探索対象点の探索元の候補点となる補間点及び頂点を管理するデータを格納する候補管理データ格納部に格納されている候補点から、探索管理データ格納部に登録されている距離が最短の候補点を、最短距離探索対象点の探索元点として特定するステップと、探索元点を含む三角形に係る補間点又は頂点を最短距離探索対象点として特定して、候補管理データ格納部に格納する特定ステップと、最短距離探索対象点の探索が完了した場合、候補管理データ格納部から探索元点を削除する削除ステップとを含むようにしてもよい。このようにすることによって探索が効率的に実施される。
【0141】
また、上で述べた削除ステップが、探索元点に関連付けて通過完了を示すデータを探索管理データ格納部に登録するステップを含むようにしてもよい。その際、特定ステップにおいて、通過完了を示すデータが登録されている補間点又は頂点を除外して最短距離探索対象点を特定するようにしてもよい。効率的な探索が可能となる。
【0142】
さらに、上で述べた探索ステップが、最短距離探索対象点を含む経路の少なくとも一部区間について、補間点又は頂点間の距離の和から、一部区間に係る三角形を平面展開した場合における一部区間両端の直線距離へ修正する距離修正ステップを含むようにしてもよい。これによって距離の精度を高めることができるようになる。
【0143】
さらに、探索管理データ格納部において、直線距離を算出できる区間の端点である補間点又は頂点に関連付けて平面展開区間端点を示すデータを登録していてもよい。その際 距離修正ステップが、最短距離探索対象点及び当該最短距離探索対象点の経路上直前の補間点又は頂点を含む三角形を包含する平面に、最短距離探索対象点から最も近い平面展開区間端点までの経路区間上の補間点又は頂点及び当該補間点又は頂点に係る三角形の辺を投影するステップと、平面上において、最短距離探索対象点と、平面展開区間端点とを結ぶ直線が、当該経路区間上の補間点又は頂点がのっている三角形の全ての辺と交差するか判断する判断ステップと、判断ステップの条件を満たす場合には、最短距離探索対象点から平面展開区間端点までの直線距離を算出し、探索管理データ格納部において平面展開区間端点に関連付けて格納されている距離と直線距離を加算して、探索管理データ格納部において最短距離探索対象点に関連付けて加算結果を登録するステップとを含むようにしてもよい。これによって距離の精度を高めることができるようになる。
【0144】
また、上で述べた距離修正ステップが、判断ステップの条件を満たさない場合には、最短距離探索対象点の経路上直前の補間点に関連付けて平面展開区間端点を示すデータを、探索管理データ格納部に登録するステップと、判断ステップの条件を満たす場合には、予め定められた平面展開区間端点の条件を最短距離探索対象点が満たすか判断し、満たすと判断された場合には、最短距離探索対象点に関連付けて平面展開区間端点を示すデータを、探索管理データ格納部に登録するステップとを含むようにしてもよい。このようにすれば、適切な範囲で平面展開を実施することができるようになる。
【0145】
なお、上で述べた判断ステップの条件が、三角形メッシュの頂点であるという条件を含む場合もある。頂点というものは形状上の特徴点となりうるからである。
【0146】
また、上で述べた経路特定ステップが、最短距離探索対象点を含む経路の少なくとも一部区間について、一部区間に係る三角形を平面展開した場合における一部区間両端をつなぐ直線を含み且つ平面展開後の平面に直交する第2の平面と上記一部区間に係る三角形の辺との交点に、一部区間における補間点を変更するステップを含むようにしてもよい。これによって適切な補間点位置を特定できるようになる。
【0147】
さらに、上で述べた三角形メッシュにおける三角形に屈折率が設定されるようにしてもよい。この場合、上記距離を、経路上の三角形の屈折率を用いて算出するようにする。例えば絶縁率が3次元モデルの部分毎に異なる場合に、当該絶縁率を勘案した形で距離を算出することによって、適切に沿面距離を算出するものである。
【0148】
なお、上で述べたような処理をハードウエアに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。
【0149】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0150】
(付記1)
3次元モデル上における最短経路をコンピュータにより探索する最短経路探索方法であって、
前記3次元モデルの三角形メッシュにおける各三角形の各辺に補間点を設けて、該当する前記三角形及び前記辺のデータに当該三角形の頂点及び前記補間点のデータを関連付けて探索管理データ格納部に格納するステップと、
前記3次元モデルにおける出発点又は出発線と、到達点又は到達線との指定を受け付けるステップと、
前記出発点又は出発線から前記到達点又は到達線に至るまで、前記補間点及び前記頂点を当該三角形メッシュの位相情報に基づき順番に探索して、探索における最短距離探索対象点である前記補間点又は前記頂点について前記出発点又は出発線からの距離を算出し、当該距離が全経路の中で最短であれば、前記最短距離探索対象点である前記補間点又は前記頂点に関連付けて前記距離を前記探索管理データ格納部に格納する探索ステップと、
を含む最短経路探索方法。
【0151】
(付記2)
前記探索ステップが、
前記最短距離探索対象点である前記補間点又は前記頂点に関連付けて前記最短距離探索対象点の経路上直前の前記補間点又は前記頂点を特定するためのデータを、前記探索管理データ格納部に格納するステップ
を含み、
前記探索管理データ格納部において前記到達点又は到達線上の前記補間点又は前記頂点に関連付けて前記出発点又は出発線からの最短距離が登録された場合には、前記探索管理データ格納部において、前記到達点又は到達線上の前記補間点又は前記頂点から前記出発点又は出発線上の前記補間点又は前記頂点まで、経路上の前記補間点又は前記頂点に関連付けて格納されている前記経路上直前の前記補間点又は前記頂点を特定するためのデータを抽出することによって最短経路を特定する経路特定ステップ
をさらに含む、付記1記載の最短経路探索方法。
【0152】
(付記3)
前記探索ステップが、
前記最短距離探索対象点である前記補間点又は前記頂点に関連付けて前記最短距離探索対象点の経路上直前の前記補間点又は前記頂点を特定するための復帰情報を、前記探索管理データ格納部に格納するステップ
を含み、
前記探索ステップにおいて、
前記三角形メッシュの位相情報と前記復帰情報とに基づき予め定められるルールに従って、探索先の前記補間点又は前記頂点を特定する
付記1記載の最短経路探索方法。
【0153】
(付記4)
前記探索ステップが、
前記探索管理データ格納部に前記距離が格納済みであって且つ前記最短距離探索対象点の探索元の候補点となる前記補間点及び前記頂点を管理するデータを格納する候補管理データ格納部に格納されている前記候補点から、前記探索管理データ格納部に登録されている前記距離が最短の候補点を、前記最短距離探索対象点の探索元点として特定するステップと、
前記探索元点を含む前記三角形に係る前記補間点又は前記頂点を前記最短距離探索対象点として特定して、前記候補管理データ格納部に格納する特定ステップと、
前記最短距離探索対象点の探索が完了した場合、前記候補管理データ格納部から前記探索元点を削除する削除ステップと、
を含む付記1又は2記載の最短経路探索方法。
【0154】
(付記5)
前記削除ステップが、
前記探索元点に関連付けて通過完了を示すデータを前記探索管理データ格納部に登録するステップ
を含み、
前記特定ステップにおいて、前記通過完了を示すデータが登録されている前記補間点又は前記頂点を除外して前記最短距離探索対象点を特定する
付記4記載の最短経路探索方法。
【0155】
(付記6)
前記探索ステップが、
前記最短距離探索対象点を含む経路の少なくとも一部区間について、前記補間点又は前記頂点間の距離の和から、前記一部区間に係る三角形を平面展開した場合における前記一部区間両端の直線距離へ修正する距離修正ステップ
を含む付記1乃至5のいずれか1つ記載の最短経路探索方法。
【0156】
(付記7)
前記探索管理データ格納部において、直線距離を算出できる区間の端点である補間点又は頂点に関連付けて平面展開区間端点を示すデータを登録しており、
前記距離修正ステップが、
前記最短距離探索対象点及び当該最短距離探索対象点の経路上直前の前記補間点又は前記頂点を含む三角形を包含する平面に、前記最短距離探索対象点から最も近い前記平面展開区間端点までの経路区間上の前記補間点又は前記頂点及び当該補間点又は前記頂点に係る三角形の辺を投影するステップと、
前記平面上において、前記最短距離探索対象点と、前記平面展開区間端点とを結ぶ直線が、当該経路区間上の補間点又は頂点がのっている前記三角形の全ての辺と交差するか判断する判断ステップと、
前記判断ステップの条件を満たす場合には、前記最短距離探索対象点から前記平面展開区間端点までの直線距離を算出し、前記探索管理データ格納部において前記平面展開区間端点に関連付けて格納されている前記距離と前記直線距離を加算して、前記探索管理データ格納部において前記最短距離探索対象点に関連付けて加算結果を登録するステップと、
を含む付記6記載の最短経路探索方法。
【0157】
(付記8)
前記距離修正ステップが、
前記判断ステップの条件を満たさない場合には、前記最短距離探索対象点の経路上直前の前記補間点に関連付けて前記平面展開区間端点を示すデータを、前記探索管理データ格納部に登録するステップと、
前記判断ステップの条件を満たす場合には、予め定められた前記平面展開区間端点の条件を前記最短距離探索対象点が満たすか判断し、満たすと判断された場合には、前記最短距離探索対象点に関連付けて前記平面展開区間端点を示すデータを、前記探索管理データ格納部に登録するステップと、
をさらに含む付記7記載の最短経路探索方法。
【0158】
(付記9)
前記判断ステップの条件が、前記三角形メッシュの頂点であるという条件を含む
付記7又は8記載の最短経路探索方法。
【0159】
(付記10)
前記経路特定ステップが、
前記最短距離探索対象点を含む経路の少なくとも一部区間について、前記一部区間に係る三角形を平面展開した場合における前記一部区間両端をつなぐ直線を含み且つ前記平面展開後の平面に直交する第2の平面と前記一部区間に係る三角形の辺との交点に、前記一部区間における前記補間点を変更するステップ
を含む付記2記載の最短経路探索方法。
【0160】
(付記11)
前記三角形メッシュにおける三角形に屈折率が設定されており、
前記距離を、前記経路上の三角形の屈折率を用いて算出する
付記1乃至10のいずれか1つ記載の最短経路探索方法。
【0161】
(付記12)
付記1乃至11のいずれか1つ記載の最短経路探索方法をコンピュータに実行させるためのプログラム。
【0162】
(付記13)
3次元モデル上における最短経路を探索する最短経路探索装置であって、
探索管理データ格納部と、
三角形メッシュの位相情報を含む、当該三角形メッシュのデータを格納する三角形メッシュデータ格納部と、
前記三角形メッシュデータ格納部に格納されている、前記3次元モデルの三角形メッシュにおける各三角形の各辺に補間点を設けて、該当する前記三角形及び前記辺のデータに当該三角形の頂点及び前記補間点のデータを関連付けて前記探索管理データ格納部に格納する手段と、
前記3次元モデルにおける出発点又は出発線と、到達点又は到達線との指定を受け付ける手段と、
前記出発点又は出発線から前記到達点又は到達線に至るまで、前記補間点及び前記頂点を当該三角形メッシュの位相情報に基づき順番に探索して、探索における最短距離探索対象点である前記補間点又は前記頂点について前記出発点又は出発線からの距離を算出し、当該距離が全経路の中で最短であれば、前記最短距離探索対象点である前記補間点又は前記頂点に関連付けて前記距離を前記探索管理データ格納部に格納する探索手段と、
を有する最短経路探索装置。
【符号の説明】
【0163】
11 三角形メッシュデータ格納部 12 補間点データ生成部
13 補間データ格納部 14 データ入力部
15 開始終了データ格納部 16 探索処理部
17 処理データ格納部 18 出力データ格納部
19 出力部
161 距離補正部 162 補間点位置補正部

【特許請求の範囲】
【請求項1】
3次元モデル上における最短経路をコンピュータにより探索する最短経路探索方法であって、
前記3次元モデルの三角形メッシュにおける各三角形の各辺に補間点を設けて、該当する前記三角形及び前記辺のデータに当該三角形の頂点及び前記補間点のデータを関連付けて探索管理データ格納部に格納するステップと、
前記3次元モデルにおける出発点又は出発線と、到達点又は到達線との指定を受け付けるステップと、
前記出発点又は出発線から前記到達点又は到達線に至るまで、前記補間点及び前記頂点を当該三角形メッシュの位相情報に基づき順番に探索して、探索における最短距離探索対象点である前記補間点又は前記頂点について前記出発点又は出発線からの距離を算出し、当該距離が全経路の中で最短であれば、前記最短距離探索対象点である前記補間点又は前記頂点に関連付けて前記距離を前記探索管理データ格納部に格納する探索ステップと、
を含む最短経路探索方法。
【請求項2】
前記探索ステップが、
前記最短距離探索対象点である前記補間点又は前記頂点に関連付けて前記最短距離探索対象点の経路上直前の前記補間点又は前記頂点を特定するためのデータを、前記探索管理データ格納部に格納するステップ
を含み、
前記探索管理データ格納部において前記到達点又は到達線上の前記補間点又は前記頂点に関連付けて前記出発点又は出発線からの最短距離が登録された場合には、前記探索管理データ格納部において、前記到達点又は到達線上の前記補間点又は前記頂点から前記出発点又は出発線上の前記補間点又は前記頂点まで、経路上の前記補間点又は前記頂点に関連付けて格納されている前記経路上直前の前記補間点又は前記頂点を特定するためのデータを抽出することによって最短経路を特定する経路特定ステップ
をさらに含む、請求項1記載の最短経路探索方法。
【請求項3】
前記探索ステップが、
前記最短距離探索対象点である前記補間点又は前記頂点に関連付けて前記最短距離探索対象点の経路上直前の前記補間点又は前記頂点を特定するための復帰情報を、前記探索管理データ格納部に格納するステップ
を含み、
前記探索ステップにおいて、
前記三角形メッシュの位相情報と前記復帰情報とに基づき予め定められるルールに従って、探索先の前記補間点又は前記頂点を特定する
請求項1記載の最短経路探索方法。
【請求項4】
前記探索ステップが、
前記探索管理データ格納部に前記距離が格納済みであって且つ前記最短距離探索対象点の探索元の候補点となる前記補間点及び前記頂点を管理するデータを格納する候補管理データ格納部に格納されている前記候補点から、前記探索管理データ格納部に登録されている前記距離が最短の候補点を、前記最短距離探索対象点の探索元点として特定するステップと、
前記探索元点を含む前記三角形に係る前記補間点又は前記頂点を前記最短距離探索対象点として特定して、前記候補管理データ格納部に格納する特定ステップと、
前記最短距離探索対象点の探索が完了した場合、前記候補管理データ格納部から前記探索元点を削除する削除ステップと、
を含む請求項1又は2記載の最短経路探索方法。
【請求項5】
前記探索ステップが、
前記最短距離探索対象点を含む経路の少なくとも一部区間について、前記補間点又は前記頂点間の距離の和から、前記一部区間に係る三角形を平面展開した場合における前記一部区間両端の直線距離へ修正する距離修正ステップ
を含む請求項1乃至4のいずれか1つ記載の最短経路探索方法。
【請求項6】
前記探索管理データ格納部において、直線距離を算出できる区間の端点である補間点又は頂点に関連付けて平面展開区間端点を示すデータを登録しており、
前記距離修正ステップが、
前記最短距離探索対象点及び当該最短距離探索対象点の経路上直前の前記補間点又は前記頂点を含む三角形を包含する平面に、前記最短距離探索対象点から最も近い前記平面展開区間端点までの経路区間上の前記補間点又は前記頂点及び当該補間点又は前記頂点に係る三角形の辺を投影するステップと、
前記平面上において、前記最短距離探索対象点と、前記平面展開区間端点とを結ぶ直線が、当該経路区間上の補間点又は頂点がのっている前記三角形の全ての辺と交差するか判断する判断ステップと、
前記判断ステップの条件を満たす場合には、前記最短距離探索対象点から前記平面展開区間端点までの直線距離を算出し、前記探索管理データ格納部において前記平面展開区間端点に関連付けて格納されている前記距離と前記直線距離を加算して、前記探索管理データ格納部において前記最短距離探索対象点に関連付けて加算結果を登録するステップと、
を含む請求項5記載の最短経路探索方法。
【請求項7】
前記経路特定ステップが、
前記最短距離探索対象点を含む経路の少なくとも一部区間について、前記一部区間に係る三角形を平面展開した場合における前記一部区間両端をつなぐ直線を含み且つ前記平面展開後の平面に直交する第2の平面と前記一部区間に係る三角形の辺との交点に、前記一部区間における前記補間点を変更するステップ
を含む請求項2記載の最短経路探索方法。
【請求項8】
請求項1乃至7のいずれか1つ記載の最短経路探索方法をコンピュータに実行させるためのプログラム。
【請求項9】
3次元モデル上における最短経路を探索する最短経路探索装置であって、
探索管理データ格納部と、
三角形メッシュの位相情報を含む、当該三角形メッシュのデータを格納する三角形メッシュデータ格納部と、
前記三角形メッシュデータ格納部に格納されている、前記3次元モデルの三角形メッシュにおける各三角形の各辺に補間点を設けて、該当する前記三角形及び前記辺のデータに当該三角形の頂点及び前記補間点のデータを関連付けて前記探索管理データ格納部に格納する手段と、
前記3次元モデルにおける出発点又は出発線と、到達点又は到達線との指定を受け付ける手段と、
前記出発点又は出発線から前記到達点又は到達線に至るまで、前記補間点及び前記頂点を当該三角形メッシュの位相情報に基づき順番に探索して、探索における最短距離探索対象点である前記補間点又は前記頂点について前記出発点又は出発線からの距離を算出し、当該距離が全経路の中で最短であれば、前記最短距離探索対象点である前記補間点又は前記頂点に関連付けて前記距離を前記探索管理データ格納部に格納する探索手段と、
を有する最短経路探索装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate

【図47】
image rotate

【図48】
image rotate

【図49】
image rotate

【図50】
image rotate

【図51】
image rotate

【図52】
image rotate

【図53】
image rotate

【図54】
image rotate

【図55】
image rotate

【図56】
image rotate