三次元図形演算プログラム、ダイナミックリンクライブラリ及び景観検討装置
【課題】 複数の三次元図形の相貫関係に基づき各三次元図形の合成画面を生成する図形演算において、データ量の増大を抑制しつつ、精度の高い図形演算を行うことのできる三次元図形演算プログラム、ダイナミックリンクライブラリ及び三次元図形演算プログラムを実行して景観の検討を行う景観検討装置を提供する。
【解決手段】 三次元図形演算プログラムは、各三次元図形を多面体に表現する第1ステップと、多面体に表現された、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する第2ステップと、この相貫関係の分析結果に基づき、一の三次元図形を構成する各面において、他の三次元図形と重なり合い裏側となる部分を除去する第3ステップと、除去されなかった部分を有する面からなる三次元図形同士を合成して表示する第4ステップと、をコンピュータに実行させる。
【解決手段】 三次元図形演算プログラムは、各三次元図形を多面体に表現する第1ステップと、多面体に表現された、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する第2ステップと、この相貫関係の分析結果に基づき、一の三次元図形を構成する各面において、他の三次元図形と重なり合い裏側となる部分を除去する第3ステップと、除去されなかった部分を有する面からなる三次元図形同士を合成して表示する第4ステップと、をコンピュータに実行させる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、三次元空間における複数の三次元図形の相貫関係を分析して各三次元図形の合成表示を行う三次元図形演算プログラム、ダイナミックリンクライブラリ及び景観検討装置に関し、特に三次元図形演算プログラムを用いて地形や構造物の合成画面を生成・表示し、景観のシミュレーションや検討を行う技術に係るものである。
【背景技術】
【0002】
従来、建設事業においては、ビルや路面などの構造物を三次元データとして用意しておき、背景写真や地形の三次元データと合成することにより、建設計画案の内容を三次元空間において立体的に確認することのできる景観シミュレーションシステムが知られている。このシステムでは、景観検討に用いる合成画面を作成する過程で、三次元空間における地形と構造物との間の重なり合い(相貫関係)を分析し、相互に重なり合う部分を除去した上で、それぞれの合成を行っている。すなわち、既存地形などの地物の一部の切欠き処理を行い、この切欠き処理が施された部分に、新たに追加される土木建築施設などを合成することにより、景観検討用の合成画面を表示している。
【0003】
初期の景観シミュレーションシステムにおいては、地形と構造物(とりわけ法面)との相貫関係に基づく図形演算を、描画処理の陰線消去に使用するデプス・バッファを用いて実行していた。すなわち、地形及び構造物の平面図を、表示画面の解像度に対応したメッシュに分割した上で、各格子点に関して地形と構造物のどちらが上にあるかを判定し、この判定結果で得られる地形と構造物との交差部を抽出する。そして、この交差図形(水平面上に投影された二次元の閉多角形)に基づいて、削除されるべき地形の範囲と、そこに充填されるべき法面の形状を求めて、これらを合成していた。
【0004】
しかし、この方法で取得される地形と構造物との交差部の形状は、画面サイズによって規定されるデプス・バッファの解像度に制約され、直線部分に関しても単純な直線形ではなく、折れ線として取得される。このため、データが不必要に大きくなるにもかかわらず、演算結果の精度が低く、地形と構造物との間に隙間が生じたり、境界付近の地形及び構造物の表面を構成する多角形の平面性が失われるなどの問題があった。また、遠景として長大法面などの検討に使用することはできても、路上を走行する車両乗員などの近接する視点位置からの景観画像の質には限界があった。
【0005】
この問題を解決する手法として、三角形分割による三次元図形演算法が提案されている(非特許文献1参照)。この手法によれば、三次元データで表現される地形や構造物を、多面体に近似した形状(ポリゴン)として表現し、その表面を構成する複雑な多角形をあらかじめ三角形に分割しておく。そして、地形と構造物との交差部において、それぞれの三角形同士の切欠き処理を行うことにより、処理の場合分けが単純化され、厳密な座標計算を行うことが可能となっている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】「建築研究資料No.96 成熟都市シミュレータ Ver1.0+ 景観シミュレータ Ver2.05 実務マニュアル」 建設省建築研究所 2000年7月
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、前述の三角形分割による図形演算では、単純な三角形同士の切欠き処理であっても、処理結果は複雑な形状となり、次の処理に先立ってさらに三角形分割が要求される。そのため、処理が進行するにしたがって、地形が複雑に細分化していき、データ量が肥大してしまうという問題があった。また、地形が複雑に細分化されるために、演算の成功率も低く、精度の良い演算方法とはいえないものとなっていた。
【0008】
この発明は、かかる課題を解決するためになされたものであり、複数の三次元図形の相貫関係に基づき各三次元図形の合成画面を生成する図形演算において、データ量の増大を抑制しつつ、精度の高い図形演算を行うことのできる三次元図形演算プログラム、ダイナミックリンクライブラリ及び三次元図形演算プログラムを実行して景観の検討を行う景観検討装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
前記の目的を達成するために、請求項1に記載の発明は、三次元空間における複数の三次元図形の相貫関係を分析し、相互に重なり合う部分を除去して各三次元図形を合成表示する三次元図形演算プログラムであって、前記各三次元図形を、面の集合である多面体に近似した形状に表現する第1ステップと、前記第1ステップにおいて多面体に近似した形状に表現された各三次元図形において、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する第2ステップと、前記第2ステップにおける面同士の相貫関係の分析結果に基づき、一の三次元図形を構成する各面において、他の三次元図形と重なり合い裏側となる部分を除去する第3ステップと、前記第3ステップにおいて除去されなかった部分を有する面からなる三次元図形同士を合成して表示する第4ステップと、をコンピュータに実行させることを特徴とする。
【0010】
請求項2に記載の発明は、請求項1に記載の三次元図形演算プログラムにおいて、前記第2ステップにおける面同士の相貫関係の分析は、一の三次元図形を構成する各面と、他の三次元図形を構成する各面との切欠き状態に基づいて行われ、一の面による切欠きが、他の面の辺または頂点から始まり、かつ他の面の内部で終わる場合の処理を行う切込みステップと、一の面による切欠きが、他の面の内部から始まり、かつ他の面の辺または頂点で終わる場合の処理を行う切抜けステップと、一の面による切欠きが、他の面の内部から始まり、かつ他の面の内部で終わる場合の処理を行う切入れステップと、一の面による切欠きにより、他の面が複数の断片に分割される場合に、分割後の複数の各断片の分割面に関する表裏を確定する切分けステップと、をさらに有することを特徴とする。
【0011】
請求項3に記載の発明は、請求項2に記載の三次元図形演算プログラムにおいて、前記第1ステップにおいて多面体に近似した形状に表現された三次元図形の各面のうち、面内部に穴を有する面について、前記穴を構成するいずれかの頂点と、この穴を有する面を構成するいずれかの頂点とを仮想線で接続するサブステップをさらに有することを特徴とする。
【0012】
請求項4に記載の発明は、請求項2または3に記載の三次元図形演算プログラムにおいて、前記切入れステップにおいて、面内部に面積のない線状の切れ目が生じた面について、前記切れ目の一端と、この切れ目が生じた面を構成するいずれかの頂点とを仮想線で接続するサブステップをさらに有することを特徴とする。
【0013】
請求項5に記載の発明は、請求項3または4に記載の三次元図形演算プログラムにおいて、前記仮想線を有する面について、前記第2ステップにおいて他の面による新たな切欠きが生じた場合、この新たな切欠きの発生状況に応じて、前記仮想線の削除もしくは接続先の変更を行うサブステップをさらに有することを特徴とする。
【0014】
請求項6に記載の発明は、請求項3ないし5のいずれかに記載の三次元図形演算プログラムにおいて、前記第4ステップにおける合成表示に際し、前記仮想線を非表示に設定可能であることを特徴とする。
【0015】
請求項7に記載の発明は、請求項1ないし6のいずれかに記載の三次元図形演算プログラムにおいて、前記第1ステップにおいて多面体に近似した形状に表現された三次元図形の各面が、前記第2ステップ以降の処理を適用する対象として正常であるか異常であるかを判定し、異常と判定された面に対して修正を行うサブステップをさらに有することを特徴とする。
【0016】
請求項8に記載の発明は、請求項1ないし7のいずれかに記載の三次元図形演算プログラムにおいて、前記第2ステップにおける面同士の相貫関係の分析の結果、分析エラーとなった面の組み合わせをエラーログとして記録手段に記録するサブステップをさらに有することを特徴とする。
【0017】
請求項9に記載の発明は、メモリ上にロードして実行されるダイナミックリンクライブラリであって、請求項1ないし8のいずれかに記載の三次元図形演算プログラムを含んでいることを特徴とする。
【0018】
請求項10に記載の発明は、地形又は構造物の三次元データを解析し、三次元空間における前記地形又は構造物の合成画面を表示して景観のシミュレーション及び検討を行う景観検討装置であって、前記地形又は構造物の三次元データを入力する入力手段と、前記入力された三次元データを記録する記録手段と、請求項1ないし8のいずれかに記載の三次元図形演算プログラムを記憶する記憶手段と、前記記憶手段に記憶された三次元図形演算プログラムを実行して、前記地形又は構造物の三次元データに基づき前記合成画面を生成する制御手段と、前記生成された合成画面を表示する表示手段と、を備えたことを特徴とする。
【0019】
請求項11に記載の発明は、請求項10に記載の景観検討装置において、前記地形又は構造物の撮像データを取得する撮像手段と、該撮像手段により取得された撮像データを受信するための通信インタフェースと、をさらに備えたことを特徴とする。
【発明の効果】
【0020】
この発明は、前記のようであって、請求項1に記載の発明によれば、三次元空間における複数の三次元図形の相貫関係の分析を、各三次元図形を構成する面同士の相貫関係の分析に還元することができる。これにより、三次元図形同士の図形演算が単純化され、データ量の増大を抑制しつつ、精度の高い図形演算を行うことができる。
【0021】
請求項2に記載の発明によれば、請求項1に記載の三次元図形演算プログラムにおける面同士の相貫関係の分析が、切欠きの発生状況に応じて4つの処理ステップに場合分けされる。これにより、切欠きの発生状況に応じた適切な処理ステップが選択され、面同士の相貫関係の分析を正確に行うことができる。
【0022】
請求項3に記載の発明によれば、多面体を構成する面のうち、その内部に穴を有する面に対して、仮想線を適用することにより、これらの面を準正常な面として取り扱うことができる。これにより、内部に穴を有する面であっても、図形分割することなく、通常の面と同様に、面同士の相貫関係の分析を行うことができる。
【0023】
請求項4に記載の発明によれば、面同士の相貫関係の分析において、内部に面積のない線状の切れ目が生じた面に対して、仮想線を適用することにより、これらの面を準正常な面として取り扱うことができる。これにより、内部に面積のない線状の切れ目が生じた面であっても、図形分割することなく、通常の面と同様に、面同士の相貫関係の分析を行うことができる。
【0024】
請求項5に記載の発明によれば、仮想線を有する準正常な面において、新たな切欠きが発生した場合に、その新たな切欠きの発生状況に応じて、仮想線の削除や接続先の変更が行われる。これにより、仮想線は、準正常な面において常に適切に適用されることとなり、連続的な面同士の分析においても正確に分析を行うことができる。
【0025】
請求項6に記載の発明によれば、図形演算の結果を表示する際に、仮想線を非表示に設定することができる。これにより、ノイズの少ない表示画面を得ることができ、図形演算後の図形の形状を分かりやすく表示することができる。
【0026】
請求項7に記載の発明によれば、面同士の相貫関係の分析に先立って、分析対象となる面のうち異常が検出された面に対して、適宜修正が施される。これにより、面の異常性に起因する分析エラーが発生する割合を低減させることができる。
【0027】
請求項8に記載の発明によれば、面同士の相貫関係の分析において、分析エラーとなった面の組み合わせがエラーログとして記録される。これにより、相貫関係の分析における分析エラーの発生箇所を容易に特定することができ、この点でプログラムの保守性が向上する。
【0028】
請求項9に記載の発明によれば、三次元図形演算プログラムをダイナミックリンクライブラリとして提供することにより、他のプログラムに影響を与えることなく独立して修正や更新を行うことができ、この点でも保守性が向上する。また、この三次元図形演算プログラムで実現される三次元図形演算機能を、独立した機能として提供することが可能となり、その応用範囲を拡大することができる。
【0029】
請求項10に記載の発明によれば、前記請求項1ないし8のいずれかに記載の作用効果を、景観検討装置においても奏することができる。これにより、三次元空間における地形又は構造物の合成画面を表示する際に、その境界部分において余計な隙間がなく、滑らかに合成された画面を表示することができる。
【0030】
請求項11に記載の発明によれば、カメラなどの撮像手段によって撮像された地形又は構造物の撮像データを、撮像手段から受信することができる。これにより、入力手段によって入力された三次元データのみならず、撮像手段によって撮像されたデータからでも、景観の検討を行うことができる。
【図面の簡単な説明】
【0031】
【図1】この発明の一実施の形態に係る景観検討装置の構成例を示すブロック図である。
【図2】同上の三次元図形演算プログラムにより実行される図形演算の全体処理を示すフローチャートである。
【図3】同上の穴あき面に仮想線を適用した例を示す説明図である。
【図4】同上の三次元図形演算プログラムにより実行される面同士の相貫関係の分析の全体処理を示すフローチャートである。
【図5】同上の面F2による面F1の切欠き処理を示すフローチャートである。
【図6A】同上の「切込み」の概要を示す説明図である。
【図6B】同上の「切込み」における頂点追加の例を示す説明図である。
【図7】同上の切込み処理の流れを示すフローチャートである。
【図8】同上の「切抜け」の概要を示す説明図である。
【図9】同上の切抜け処理の流れを示すフローチャートである。
【図10A】同上の「切入れ」の概要を示す説明図である。
【図10B】同上の「切入れ」における仮想線の適用例を示す説明図である。
【図11】同上の切入れ処理の流れを示すフローチャートである。
【図12A】同上の「切分け」の概要を示す説明図である。
【図12B】同上の「切分け」における頂点追加の例を示す説明図である。
【図13】同上の切分け処理の流れを示すフローチャートである。
【図14A】同上の切分けの発生状況に応じた仮想線の削除又は通常の辺への変更の様子を示す説明図である。
【図14B】同上の切分けの発生状況に応じた仮想線の削除又は通常の辺への変更の様子を示す説明図である。
【図15A】同上の切欠きの発生状況に応じた仮想線の接続先の変更の様子を示す説明図である。
【図15B】同上の切欠きの発生状況に応じた仮想線の接続先の変更の様子を示す説明図である。
【図16】同上の景観検討装置により表示される地形及び構造物の合成画面の例を示す説明図である。
【発明を実施するための形態】
【0032】
この発明の一実施の形態に係る三次元図形演算プログラムでは、三次元空間における複数の三次元図形の相貫関係を分析する際に、まず、各三次元図形を多面体に近似した形状(ポリゴン)として表現する。そして、一の三次元図形を構成するすべての面と、他の三次元図形を構成するすべての面との間で、順次相貫関係を分析する。この面同士の相貫関係の分析は、面と面との間で発生する切欠き状態に基づいて行われ、この切欠き状態に応じた所定の切欠き処理が行われる。このように、複数の三次元図形における相貫関係の分析を、面同士の切欠き処理の繰り返しに還元することで、処理を単純化している。
【0033】
また、各三次元図形を多面体として表現した際に、その内部に穴を有する面が生じた場合に、この面に対して仮想線を適用することにより、これらの面を「準正常な面」として取り扱い、通常の面と同様に切欠き処理を適用することを可能としている。また、この仮想線は、面同士の切欠き処理の過程で、その内部に線状の切れ目が生じた面に対しても適用され、これらの面も同様に「準正常な面」として取り扱っている。
以下、図面を参照しながら、三次元図形演算プログラムの具体的な処理内容について説明する。ここでは、この三次元図形演算プログラムを実行して、地形又は構造物の合成画面を表示し、景観の検討を行う景観検討装置を例に挙げて説明する。
【0034】
図1において、1は景観検討装置で、この景観検討装置1は、三次元データとして予め用意されたビルや路面などの構造物と、同様に用意された背景写真や地形と、の合成画面を表示して、三次元空間における合成の様子を立体的に確認することを主な基本機能としている。また、この合成画面を表示するために必要となる様々な編集画面を提供する機能も、併せて備えている。
【0035】
景観検討装置1は、一般的なパーソナルコンピュータPCを有している。すなわち、このPCは、装置全体の制御や図形演算を行う制御手段(CPU:Central Process Unit)2、制御手段2の処理データなどを一時記憶する書き換え可能なRAM(Random Access Memory)3、固定データなどを記憶するROM(Read Only Memory)4、図形演算結果のデータなどを記録するハードディスクドライブ装置などの記録手段5、各種データの入力や指示を行うキーボードやマウスなどの入力手段6、図形演算結果を表示するディスプレイなどの表示手段7、ネットワーク接続に使用する通信インタフェース8、などの通常のコンピュータのハードウェア資源を備えている。そして、これらの各ハードウェア資源と、三次元図形演算プログラムをはじめとするソフトウェアとの協働により、景観検討装置1の基本機能が実現される。
【0036】
また、この景観検討装置1は、景観検討の対象となる地形や構造物を撮像する撮像手段9を備えていてもよい。この撮像手段9は、例えばデジタルカメラなどで構成され、この撮像手段9により取得された地形や構造物の撮像データを用いて、景観の検討を行うこともできる。
【0037】
この撮像手段9により取得された撮像データは、景観検討装置1に通信インタフェース8を経由して送信することができる。このように、撮像手段9から入力される撮像データとしては、例えば地形や構造物を立体的に見るために、複数の異なるカメラの視点位置から撮像したステレオ写真や、通常の方法で撮像した単眼写真などが挙げられる。このように入力されたステレオ写真などの撮像データは、三次元図形演算プログラムの入力となる三次元データに変換され、この三次元データを用いて、図形演算が行われる。
【0038】
この他、入力データとして三次元図形演算プログラムに入力される三次元データとしては、過去にCAD(Computer Aided Design)やGIS(Geographic Information System)で作成された三次元データを、図形演算に適したデータ形式に変換したものや、過去に作成された紙図面を基に、オペレータが入力手段6を用いて三次元データとして作成したものを用いてもよい。これらの方法により作成した三次元データや、撮像手段9による撮像データから生成した三次元データは、ハードディスクドライブ装置などの記録手段5に記録される。
【0039】
このように、三次元図形演算プログラムの入力となる三次元データが用意された後、オペレータにより、マウスなどの入力手段6が操作され、図形演算の開始が指示される。この指示を受けると、制御手段2は、予めROM4に記憶されている三次元図形演算プログラムを読み出し、これを実行して図形演算を開始する。なお、この三次元図形演算プログラムは、CD−ROMなどの外部記録媒体からインストールされ、ハードディスクドライブ装置などの記録手段5に記録されていてもよい。以下、制御手段2が実行する図形演算について、図2ないし図15を用いて詳細に説明する。
【0040】
<全体の流れ>
図2は、制御手段2が実行する図形演算の全体の流れを示すフローチャートである。はじめに、このフローチャートに基づき図形演算の全体の流れを説明し、次に、各ステップにおける具体的な処理内容について説明する。
【0041】
図形演算は、図2に示すように、大きく4つの処理ステップで構成される。各ステップの処理の概要を以下に示す。
(ステップ01)入力された地形や構造物などの三次元データを基に、各三次元図形を多面体に近似した形状(ポリゴン)に表現する。
(ステップ02)ステップ01において、多面体に近似した形状に表現された各三次元図形において、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する。
(ステップ03)ステップ02における各面同士の相貫関係の分析結果に基づき、各面において他の三次元図形と重なり合い裏側となる部分を除去する。
(ステップ04)ステップ03において、除去されなかった部分を有する面で構成される三次元図形同士を合成し、合成画面を表示する。
以下、これら各ステップについて、詳細に説明する。
【0042】
<ステップ01:多面体に近似する>
まず、制御手段2は、オペレータにより指示されて図形演算の対象となった構造物などの図形の三次元データを、記録手段5から読み出す。そして、読み出した三次元データに基づき、各三次元図形を多面体に近似した形状(ポリゴン)として表現する。そして、このように表現された各三次元図形を構成する各面において、その内部に穴を有する面(以下、穴あき面と称する)が生じた場合に、この穴あき面に対して仮想線を適用する。
【0043】
この仮想線は、前述の穴あき面のように、内部に穴を有する面であっても、穴のない通常の面と同様に取り扱うことを可能にするもので、例えばビルの外壁や、既に図形演算が施されている地形など、内部に穴のある三次元図形であっても、通常の三次元図形と同様に取り扱うことができる。
【0044】
具体的な仮想線の適用例を図3に示す。この例では、内部に穴11を有する穴あき面10において、この穴11を構成するいずれかの頂点と、穴あき面10を構成するいずれかの頂点(ここでは頂点12)とを、仮想線Kで接続する。このように、穴11と頂点12とを仮想線Kで接続することにより、穴あき面10を従来の三角形分割のように図形分割することなく、ステップ02以降の処理で用いることができる。なお、この仮想線Kの具体的な作用については、後述のステップ02において説明する。
【0045】
制御手段2は、このように多面体として表現された三次元図形のすべての面に関するデータを、RAM3に記憶する。また、これらのデータは、ハードディスクドライブ装置などの記録手段5に記録してもよい。
【0046】
<ステップ02:面同士の相貫関係の分析>
次に、制御手段2は、ステップ01において多面体として表現された各三次元図形において、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する。このステップ02は、図4のフローチャートに示すサブステップ11〜17で構成されている。なお、ここでは、説明を簡単にするために、2つの三次元図形G1、G2を例として、図4のフローチャートに基づき各サブステップについて説明する。
【0047】
まず、2つの三次元図形G1、G2において、図形G1を構成するすべての面に関し、図形G2の内部に含まれる部分を考える。このような部分は、図形G2と重なり合ってG2の裏側となる部分であり、取り除かれるべき部分となる。そこで、図形G1を構成するすべての面に関して、図形G2の内部に含まれる部分を取り除くことを、「G2でG1を切り取る」と呼ぶ。
【0048】
このように、G2でG1を切り取る場合、G1を構成する各々の面は、相互に影響を受けることなく、互いに独立してG2に切り取られる。すなわち、G1を構成する1つの面F1について、G2の内部に含まれる部分が切り取られるとき、G1を構成するF1以外の面に対しては、同様の切り取りにおいて影響を与えない。そこで、G1を構成する1つの面F1から、G2に含まれる部分を切り取ることを、「G2でF1を切り取る」と呼ぶ。そこで、まず、図形G1から1つの面F1を取り出す(サブステップ11)。
【0049】
このように取り出した面F1をG2で切り取るためには、G2を構成するすべての面で、面F1を切り取る必要がある。そこで、次に、図形G2から1つの面F2を取り出す(サブステップ12)。
このように取り出した面F2により、面F1を切り取ることを、「F2でF1を切り取る」と呼ぶ。また、その際に行われる処理を「F2によるF1の切欠き処理」と呼ぶ(サブステップ13)。以下、この面F2による面F1の切欠き処理について説明する。
【0050】
<サブステップ13:面F2による面F1の切欠き処理>
この切欠き処理を行うサブステップ13は、さらに図5のフローチャートに示すサブステップ21〜38で構成されている。この各サブステップの処理について、図5のフローチャートに基づき説明する。
【0051】
まず、面F1及び面F2が、切欠き処理を適用する対象として正常であるか異常であるかを判定する(サブステップ21)。すなわち、切欠き処理を適用しようとする面は、必ずしも現実に存在しうる幾何学的な形状の面であるとは限らない。例えば、頂点が2以下しかない頂点不足の面や、ある辺と次の辺が一直線上にある面などである。このような面は、切欠き処理を行うには不適切な面となる。
そこで、処理に先立って、対象となる面を診断し、異常であると判定された場合には、可能な限り修正を行ってから処理を行う。なお、このような診断及び修正は、切欠き処理を施す前の面に限らず、切欠き処理を行った結果として得られる面に対しても行うことができる。
【0052】
次に、面F1と面F2が同一平面であるか否かを確認する(サブステップ22)。同一平面であれば、従来の二次元図形演算処理を行う(サブステップ23)。同一平面でなければ、サブステップ24へ進む。
【0053】
次に、面F1に関する面F2の各頂点の高さを求める。そして、面F2のすべての頂点が、面F1の上または下にあるか否かを確認する(サブステップ24)。もし、面F2のすべての頂点が面F1よりも上または下にあれば、この二つの面は接触しないと判定して(サブステップ26)、サブステップ13を終了する。それ以外の場合は、サブステップ25へ進む。
【0054】
次に、面F2に関する面F1の各頂点の高さを求める。そして、面F1のすべての頂点が、面F2の上または下にあるか否かを確認する(サブステップ25)。もし、面F1のすべての頂点が面F2よりも上または下にあれば、この二つの面は接触しないと判定して(サブステップ26)、サブステップ13を終了する。それ以外の場合は、サブステップ27へ進む。
【0055】
次に、面F1と面F2の交線となる直線(交差線)を求める(サブステップ27)。そして、この交差線と、面F1及び面F2のすべての辺との交点を求め、この交点のリストを作成する(サブステップ28)。このリストにおいては、各交点を、交差線に沿った1次元座標値に基づいて並び替えておく。このとき、面F1が仮想線を含む場合は、この仮想線と交差線との交点も同様にリスト化する。
【0056】
次に、前述のリストに基づいて、面F2による面F1の切欠きの開始点及び終了点を求める(サブステップ29)。具体的には、前述の交差線上において、仮想線以外の交点によって区切られた各区間を、1次元座標値が若い順に評価する。その結果、面F1に含まれ、かつ面F2にも含まれるすべての区間が、実際に切欠きが行われる区間となる。すなわち、これらの各区間の開始点及び終了点が、それぞれの切欠きの開始点及び終了点となる。なお、仮想線による交点は、当該区間の属性としてリスト化しておく。
【0057】
次に、サブステップ29において求めた切欠きの開始点及び終了点に基づき、切欠き処理の場合分けを行う。すなわち、面F2による面F1の切欠き処理は、面F1における切欠きの開始点及び終了点の位置に応じて、「切込み」「切抜け」「切入れ」「切分け」の4パターンに場合分けされる。そこで、面F2による面F1の切欠きが、このいずれのパターンに該当するかを順次確認していく。
【0058】
まず、当該切欠きが「切込み」であるか否かを確認する(サブステップ30)。「切込み」は、切欠きが面F1の辺または頂点から始まり、かつ面F1の内部で終わる状態である。当該切欠きがこの「切込み」に該当する場合は、サブステップ31に進み、切込み処理を行う。該当しない場合は、サブステップ32に進む。
【0059】
次に、当該切欠きが「切抜け」であるか否かを確認する(サブステップ32)。「切抜け」は、切欠きが面F1の内部から始まり、かつ面F1の辺または頂点で終わる状態である。当該切欠きがこの「切抜け」に該当する場合は、サブステップ33に進み、切抜け処理を行う。該当しない場合は、サブステップ34に進む。
【0060】
次に、当該切欠きが「切入れ」であるか否かを確認する(サブステップ34)。「切入れ」は、切欠きが面F1の内部から始まり、かつ内部で終わる状態である。当該切欠きがこの「切入れ」に該当する場合は、サブステップ35に進み、切入れ処理を行う。該当しない場合は、サブステップ36に進む。
【0061】
次に、当該切欠きが「切分け」であるか否かを確認する(サブステップ36)。「切分け」は、切欠きの開始点及び終了点が、いずれも面F1の辺または頂点と一致する状態である。当該切欠きがこの「切分け」に該当する場合は、サブステップ37に進み、切分け処理を行う。該当しない場合は、サブステップ38に進む。
【0062】
当該切欠きが、前述した4パターンのいずれにも該当しない場合には、切断方法不明を通知するエラーメッセージを出力し(サブステップ38)、サブステップ13を終了する。続いて、前述の4パターンの具体的な処理について、それぞれ説明する。
【0063】
<サブステップ31:切込み処理>
まず、切込み処理について、図6及び図7を用いて説明する。図6Aは、この切込み処理が行われる具体例を示している。図6Aに示すように、「切込み」においては、切欠きの開始点Sが面F1の辺または頂点と一致し、かつ終了点Eが面F1の内部に位置している。この場合は、結果として面F1が面F2の表と裏にまたがることとなり、面F1の図形G2に関する内外判定は未詳となる。
【0064】
切込み処理を行うサブステップ31は、図7のフローチャートに示すように、サブステップ41〜44から構成されている。まず、サブステップ41において、切欠きの開始点Sの妥当性を検査する。具体的には、この開始点Sが、過去に作成された切込みの開始点である場合、この開始点Sに2つの辺または頂点が重畳することとなる。このような場合には、今回の切込みが面F1の内側となるような辺または頂点を選択する。
【0065】
次に、面F1の辺上における切欠きの開始点Sの位置に応じて、面F1に所定の数の頂点を追加する(サブステップ42)。
具体的には、切欠きの開始点Sが、面F1の辺上の頂点と一致するか、あるいは頂点以外の箇所(以下、辺の中間点と呼ぶ)にあるかにより、面F1に追加する頂点の数を決定する。例えば、図6Bに示すように、切欠きの開始点Sが、辺Lの中間点にある場合には、面F1に対して3頂点(M21、M22、M23)を追加する。一方、切欠きの開始点Sが、辺Lの既存の頂点のいずれか(例えばM2)と一致する場合には、切欠き後もこの頂点M2を利用できるので、2頂点を追加することとなる。この結果、面F1の内部には、面積のない線状の切れ目が生じる。
【0066】
次に、切欠きの開始点S及び終了点Eの間を通過する仮想線があるか否かを確認する(サブステップ43)。このような仮想線がある場合はサブステップ44へ進み、その仮想線の接続先を変更する。ない場合は、サブステップ31を終了する。なお、この両ステップ43,44における仮想線の接続先の変更については、前述した4パターンの切欠きに共通して行われるので、後述する切分け処理において詳しく説明する。
【0067】
<サブステップ33:切抜け処理>
次に、切抜け処理について、図8及び図9を用いて説明する。図8は、この切抜け処理が行われる具体例を示している。図8に示すように、「切抜け」においては、切欠きの開始点Sが面F1の内部に位置し、かつ終了点Eが面F1の辺または頂点と一致している。この場合も、前述の切込み処理と同様に、面F1が面F2の表と裏にまたがることとなり、面F1の図形G2に関する内外判定は未詳となる。
【0068】
切抜け処理を行うサブステップ33は、図9のフローチャートに示すように、サブステップ51〜54から構成されている。まず、サブステップ51において、切欠きの終了点Eの妥当性を検査する。具体的には、この終了点Eが、過去に作成された切抜けの終了点である場合、この終了点Eに2つの辺または頂点が重畳することとなる。このような場合には、今回の切抜けが面F1の内側となるような辺または頂点を選択する。
【0069】
次に、面F1の辺上における切欠きの終了点Eの位置に応じて、面F1に所定の数の頂点を追加する(サブステップ52)。
具体的には、切欠きの終了点Eが、面F1の辺上の頂点と一致するか、あるいは辺の中間点にあるかにより、面F1に追加する頂点の数を決定する。この頂点追加の処理は、前述の切込み処理におけるサブステップ42とほぼ同様であり、終了点Eが辺の中間点にあれば3頂点を、辺の頂点と一致すれば2頂点を追加する。この場合にも、面F1の内部には、面積のない線状の切れ目が生じることとなる。
【0070】
次に、切欠きの開始点S及び終了点Eの間を通過する仮想線があるか否かを確認する(サブステップ53)。このような仮想線がある場合はサブステップ54へ進み、その仮想線の接続先を変更する。ない場合は、サブステップ33を終了する。この両ステップ53,54における仮想線の接続先の変更についても、後述する切分け処理において詳しく説明する。
【0071】
<サブステップ35:切入れ処理>
次に、切入れ処理について、図10及び図11を用いて説明する。図10は、この切入れ処理が行われる具体例を示している。図10Aに示すように、「切入れ」においては、切欠きの開始点S及び終了点Eが、いずれも面F1の内部に位置している。この場合も、前述の切込み処理などと同様に、面F1が面F2の表と裏にまたがることとなり、面F1の図形G2に関する内外判定は未詳となる。そして、このように切入れが生じた面F1に対し、前述した仮想線が適用される。
【0072】
切入れ処理を行うサブステップ35は、図11のフローチャートに示すように、サブステップ61〜64から構成されている。まず、サブステップ61において、面F1を構成するすべての頂点と、切欠きの開始点S及び終了点Eに関して、仮想線により接続される点として最適な位置を検討し、選択する。次に、選択された面F1の頂点と、切欠きの開始点S及び終了点Eのいずれかとを、仮想線Kで接続する(サブステップ62)。この場合の例を、図10Bに示す。
【0073】
図10Bに示すように、面F1の内部に切欠きの開始点S及び終了点Eが位置しているとき、面F1の既存の頂点M2と、切欠きの開始点Sとを、仮想線Kで接続する。また、この仮想線Kを適用する際に、面F1に対して5頂点(M21、M22、M23、M24、M25)を追加する。
【0074】
仮想線Kは、この面F1のように、その内部の一部分だけに線状の切れ目が入ったような不完全な状態の面であっても、準正常な面として通常の面と同様に取り扱うことを可能にしている。すなわち、仮想線Kにより、面F1の内部に独立した状態で生成される線状の切れ目が、面F1の既存の頂点と接続されて、面F1の辺Lへ橋渡しされる。これにより、この線状の切れ目は、面F1のデータ構造を表現する頂点の集合に取り込まれる形で表現することができる。なお、このような仮想線Kによる作用は、ステップ01で述べた「穴あき面」においても同様に発揮され、かかる「穴あき面」も準正常な面として取り扱うことができる。
【0075】
次に、切欠きの開始点S及び終了点Eの間を通過する仮想線があるか否かを確認する(サブステップ63)。このような仮想線がある場合はサブステップ64へ進み、その仮想線の接続先を変更する。ない場合は、サブステップ35を終了する。この両ステップ63,64における仮想線の接続先の変更についても、後述する切分け処理において詳しく説明する。
【0076】
<サブステップ37:切分け処理>
次に、切分け処理について、図12及び図13を用いて説明する。図12は、この切分け処理が行われる具体例を示している。図12Aに示すように、「切分け」においては、切欠きの開始点S及び終了点Eが、いずれも面F1の辺または頂点と一致している。この場合は、面F1が面F2によって分割され、分割された面F1の2つの断片が、面F2に関して表となるか裏となるかが確定する。
【0077】
切分け処理を行うサブステップ37は、図13のフローチャートに示すように、サブステップ71〜79で構成されている。まず、サブステップ71において、切欠きの開始点S及び終了点Eの妥当性を検査する。具体的には、この開始点S及び終了点Eが、過去に作成された切欠きの開始点、終了点、またはその中間の辺上である場合、この各点S、Eに2つの辺または頂点が重畳することとなる。このような場合には、開始点S及び終了点Eによる切分けが、面F1の内側となるような辺または頂点を選択する。
【0078】
次に、切欠きの開始点S及び終了点Eが、いずれも面F1の頂点と一致するか否かを確認する(サブステップ72)。一致する場合にはサブステップ73へ進み、一致しない場合にはサブステップ75へ進む。
【0079】
次に、開始点S及び終了点Eによって生じる切欠きの区間が、面F1に適用された仮想線と一致するか否かを確認する(サブステップ73)。一致する場合はサブステップ74へ進み、一致しない場合はサブステップ75へ進む。この場合の例を、図14を用いて説明する。
【0080】
図14Aに示すように、面F1は、その内部に穴P1、P2、P3、P4を有する穴あき面である。また、この面F1には仮想線K1、K2、K3、K4が適用され、これらの仮想線により、それぞれの穴P1〜P4が、面F1のいずれかの頂点または他の穴と接続されている。
ここで、穴P2と穴P3との間の部分で新たに発生した切欠きR1の区間は、穴P2と穴P3とを接続している仮想線K3と一致する。このような場合に、図14Bに示すように、既存の仮想線K3を通常の辺L1に変換する(サブステップ74)。この変換を行った後、サブステップ37を終了する。
【0081】
次に、切分けの開始点S及び終了点Eが、それぞれ異なる穴の辺上であるか否かを確認する(サブステップ75)。異なる穴の辺上である場合にはサブステップ76へ進み、そうでない場合にはサブステップ77へ進む。
【0082】
例えば、図14A及びBに示すように、新たに発生した切欠きR2の開始点S及び終了点Eは、それぞれ異なる穴P2、P4の辺上に位置している。このとき、新たな切欠きR2によって、不要となる仮想線を削除する。
具体的には、穴P2は、仮想線K2によって面F1の頂点M2と接続され、さらに仮想線K3によって穴P3と接続されている。また、穴P3は、仮想線K4によって穴P4と接続されている。このとき、仮想線K2ないしK4の階層関係は、面F1の外周から数えてK2、K3、K4の順に定義することができる。
【0083】
この場合において、新たに発生した切欠きR2により、穴P2と穴P4とは、新たに生成される辺L2で接続されることになる。そこで、この新たに生成される辺L2によって不要となる仮想線、すなわち、穴P2とP4とにそれぞれ対応する仮想線K2とK4のうち、より下位にある仮想線K4を削除する(サブステップ76)。また、より上位にある仮想線K2を削除することなく温存する。
【0084】
なお、別の切欠きR3は、穴P1と面F1の外周との間で発生している。この場合にも、前述の場合と同様に、穴P1に関して、仮想線K1を削除する。
【0085】
次に、面F1の辺上における切欠きの開始点S及び終了点Eの位置に応じて、分割後の各断片に所定の数の頂点を追加する(サブステップ77)。
具体的には、切欠きの開始点S及び終了点Eが、面F1の辺上の頂点と一致するか、あるいは辺の中間点にあるかにより、分割後の各断片に追加する頂点の数を決定する。例えば、図12Bに示すように、切欠きの開始点Sが面F1の辺Lの中間点に位置し、かつ終了点Eが面F1の頂点M6と一致する場合には、分割後の断片F11に対して2頂点(M21、M22)を追加するとともに、分割後の他の断片F12に対して1頂点(M61)を追加する。また、切欠きの開始点S及び終了点Eがともに面F1の頂点のいずれかと一致する場合は、分割後のそれぞれの断片F11、F12に対して1頂点を追加する。
【0086】
この結果、分割により発生した断片F11及びF12は、面F2に関して表となるか裏となるかが確定する。そこで、それぞれの断片F11及びF12に対して、面F2に関する表裏を示すフラグを付加する。この場合は、図14A,Bに示すように、面F1の上部で新たな切欠きR4が発生し、その切欠きR4の上側と下側で別の断片に分割される。分割後のそれぞれの断片は、面F2に関する表裏が確定し、その旨を示すフラグが付される。
【0087】
なお、このようにフラグが付されても、面F2に続く図形G2の次の面による切欠きにより、さらに分割されるような場合には、このフラグは変更される場合がある。また、次の面による切欠きにより、前述した切入れなどの線状の切れ目が発生するのみで、分割が発生しない場合には、一度確定した表裏のフラグを取り消し、再び未確定とする。
【0088】
次に、切欠きの開始点S及び終了点Eの間を通過する仮想線があるか否かを確認する(サブステップ78)。このような仮想線がある場合はサブステップ79へ進み、その仮想線の接続先を変更する。ない場合は、サブステップ37を終了する。
【0089】
この場合の具体例を図15に示す。図15Aに示すように、面F1では、その内部に新たな切分けが発生し、その開始点S1及び終了点E1の間を、既存の仮想線Kが通過している。このような場合に、仮想線Kの接続先を変更し、図15Bに示すように、切分けの区間と交差しない仮想線K’とする(サブステップ79)。この変更の後、サブステップ37を終了する。
【0090】
なお、このような仮想線の接続先の変更は、前述した切込み、切抜け、切入れの各処理においても同様に行われる。すなわち、図15Aに示す新たな切込みの開始点S2及び終了点E2、切抜けの開始点S3及び終了点E3、切入れの開始点S4及び終了点E4のそれぞれの間を通過する仮想線Kがある場合には、図15Bに示すように、仮想線Kの接続先の変更を行い、それぞれの区間と交差しない仮想線K’とする。
【0091】
次に、再び図4に戻り、サブステップ14以降の処理について説明する。まず、図形G2のすべての面について、面F1及びこれから生成されたすべての断片の切欠き処理が終了したか否かを確認する(サブステップ14)。すべての面について終了していなければ、G2から次の面を取り出してこれを面F2とし(サブステップ15)、サブステップ13へ戻り、すべての面について終了するまで、サブステップ13、14を繰り返す。終了していれば、サブステップ16へ進む。
【0092】
続いて、図形G1のすべての面について、G2による切欠き処理が終了したか否かを確認する(サブステップ16)。すべての面について終了していなければ、G1から次の面を取り出してこれを面F1とし(サブステップ17)、サブステップ12へ戻り、すべての面について終了するまで、サブステップ12ないし16を繰り返す。終了していれば、ステップ02を終了する。
【0093】
以上のように、図形G2で図形G1を切り取る処理は、面F2による面F1及びこれから生成されたすべての断片の切欠き処理の繰り返しに還元される。すなわち、図形G1及びG2における相貫関係の分析は、それぞれの図形を構成する面同士の相貫関係の分析に還元される。
【0094】
なお、面F1に対して、図形G2のすべての面による切欠き処理を行った結果、面F1の図形G2に対する表裏が確定していない場合には、補足的な処理を行って表裏を判定してもよい。例えば、面F1に関して、図形G2のすべての面が同じ側(面F1の上または下)にある場合には、面F1は図形G2の表(外側)にあると判定し、面F1が、図形G2のすべての面に関して下側にある場合には、面F1は図形G2の裏(内側)にあると判定するようにしてもよい。
【0095】
<ステップ03:裏側となる部分の除去>
再び図2に戻り、ステップ02以降の処理について説明する。ステップ03において、制御手段2は、図形G1において、図形G2の裏側となる部分を除去する。
この除去は、前述したサブステップ77において、面F1の各断片に付された、表裏を示すフラグに基づいて行われる。すなわち、図形G1を構成するすべての面において、裏を示すフラグが付されている断片を一括して除去する。これにより、図形G1において、図形G2と合成したときに、図形G2の裏側となって表示されない部分が除去される。
【0096】
<ステップ04:図形G1、G2の合成表示>
次に、制御手段2は、ステップ03において、除去されずに残った部分を有する面で構成された図形G1と、図形G2とを合成して、その結果をディスプレイなどの表示手段7に表示し、ユーザに提示する。
【0097】
この表示例を図16に示す。ここでは、図形G1としての地形Xと、図形G2としての構造物Yとの合成画面を表示した例を示している。この例では、地形Xと構造物Yとの合成画面が精度良く表示されており、特に地形Xと法面y1との接合部分には余分な隙間を生じることなく、必要かつ十分な線分のみで表示されている。
【0098】
なお、表示された図形G1及びG2において、前述の仮想線が適用された面が含まれている場合であっても、図形の表面の質感などを表示するテクスチャ表示や、明暗のコントラストを表示するシェーディング表示に際しては、仮想線を含まない通常の図形と同様に表示することができる。
【0099】
また、このように図形G1及びG2が仮想線を含んでいる場合に、この仮想線を非表示として、表示手段7に表示させないように設定してもよい。例えば、仮想線を含む図形をワイヤーフレーム(線形状)で表示する際に、この仮想線を非表示とすることにより、ノイズが少ない表示画面を得ることができる。これにより、従来の三角形分割の場合と比較して、図形演算後の図形の形状を分かりやすく表示することができる。
【0100】
以上のように、この発明の三次元図形演算プログラムによれば、図形G2で図形G1を切り取る処理を、面F2による面F1の切欠き処理の繰り返しに還元することができる。これにより、複雑な三次元図形演算を単純化でき、データ量の増大を抑制しつつ、精度の高い図形演算を行うことができる。
【0101】
また、仮想線を適用することにより、面の内部に穴を有する穴あき面や、面同士の切欠き処理において、その一部だけに線状の切れ目が入ったような不完全な状態の面を、準正常な面として取り扱うことが可能になる。これにより、これら不完全な状態の面を、従来のように図形分割することなく表現することができ、通常の面と同様に、面同士の切欠き処理を行うことができる。
【0102】
さらに、このように、面同士の切欠き処理において、準正常な面を取り扱うことにより、バッファやスタックなどの特別なデータ構造が不要となる。これにより、処理が単純化され、データ量の増大も抑制される。
また、準正常な面において新たな切欠きが発生した場合に、その新たな切欠きの発生状況に応じて、仮想線の削除や接続先の変更が行われる。これにより、仮想線は、準正常な面において常に適切に適用されることとなり、連続的な面同士の切欠き処理においても、正確に処理を行うことができる。
【0103】
なお、サブステップ13における面F2による面F1及びこれから生成されたすべての断片の切欠き処理において、エラーが発生した場合に、このエラーとなった2つの面又は面と断片の組み合わせをエラーログとして、ハードディスクドライブ装置などの記録手段5に記録してもよい。
【0104】
すなわち、図形演算のエラーは、ほとんどの場合、面F2による面F1及びこれから生成されたすべての断片の切欠き処理の過程で発生する。このとき、エラーが発生した面F1又は断片と面F2のデータを、エラーログとして記録しておくことにより、図形演算終了後において、エラーが発生した面の所在を、処理対象の図形G1及びG2から容易に探し出すことができる。また、発生したエラーが、三次元図形演算プログラムの不完全性に起因するものである場合、このエラーログを用いて、プログラムの修正やテストを行うことができ、この点でプログラムの保守性を向上させることができる。
【0105】
また、この発明の三次元図形演算プログラムは、メモリ上にロードして実行されるダイナミックリンクライブラリ(DLL)としても提供することができる。このように、この発明の三次元図形演算プログラムをダイナミックリンクライブラリとして提供することにより、他のプログラムに影響を与えることなく独立して修正や更新を行うことができ、この点でも保守性が向上する。
【0106】
また、このように、三次元図形演算プログラムをダイナミックリンクライブラリとして独立させることにより、この三次元図形演算プログラムで実現される三次元図形演算機能を、独立した機能として提供することが可能となる。これにより、かかる三次元図形演算機能の適用範囲は、本実施形態に係る景観検討装置のような、景観の検討を目的とするものに限定されることなく、他の様々な装置にも応用することができる。この場合において、かかるダイナミックリンクライブラリは、社内ネットワークやインターネットなどを経由して、ネットワーク上の各コンピュータに提供されるようにしてもよい。
【符号の説明】
【0107】
1 景観検討装置
2 制御手段(CPU)
3 記憶手段(RAM)
4 記憶手段(ROM)
5 記録手段
6 入力手段
7 表示手段
8 通信インタフェース
9 撮像手段
10 穴あき面
11 穴
12 頂点
K 仮想線
S 切欠きの開始点
E 切欠きの終了点
【技術分野】
【0001】
この発明は、三次元空間における複数の三次元図形の相貫関係を分析して各三次元図形の合成表示を行う三次元図形演算プログラム、ダイナミックリンクライブラリ及び景観検討装置に関し、特に三次元図形演算プログラムを用いて地形や構造物の合成画面を生成・表示し、景観のシミュレーションや検討を行う技術に係るものである。
【背景技術】
【0002】
従来、建設事業においては、ビルや路面などの構造物を三次元データとして用意しておき、背景写真や地形の三次元データと合成することにより、建設計画案の内容を三次元空間において立体的に確認することのできる景観シミュレーションシステムが知られている。このシステムでは、景観検討に用いる合成画面を作成する過程で、三次元空間における地形と構造物との間の重なり合い(相貫関係)を分析し、相互に重なり合う部分を除去した上で、それぞれの合成を行っている。すなわち、既存地形などの地物の一部の切欠き処理を行い、この切欠き処理が施された部分に、新たに追加される土木建築施設などを合成することにより、景観検討用の合成画面を表示している。
【0003】
初期の景観シミュレーションシステムにおいては、地形と構造物(とりわけ法面)との相貫関係に基づく図形演算を、描画処理の陰線消去に使用するデプス・バッファを用いて実行していた。すなわち、地形及び構造物の平面図を、表示画面の解像度に対応したメッシュに分割した上で、各格子点に関して地形と構造物のどちらが上にあるかを判定し、この判定結果で得られる地形と構造物との交差部を抽出する。そして、この交差図形(水平面上に投影された二次元の閉多角形)に基づいて、削除されるべき地形の範囲と、そこに充填されるべき法面の形状を求めて、これらを合成していた。
【0004】
しかし、この方法で取得される地形と構造物との交差部の形状は、画面サイズによって規定されるデプス・バッファの解像度に制約され、直線部分に関しても単純な直線形ではなく、折れ線として取得される。このため、データが不必要に大きくなるにもかかわらず、演算結果の精度が低く、地形と構造物との間に隙間が生じたり、境界付近の地形及び構造物の表面を構成する多角形の平面性が失われるなどの問題があった。また、遠景として長大法面などの検討に使用することはできても、路上を走行する車両乗員などの近接する視点位置からの景観画像の質には限界があった。
【0005】
この問題を解決する手法として、三角形分割による三次元図形演算法が提案されている(非特許文献1参照)。この手法によれば、三次元データで表現される地形や構造物を、多面体に近似した形状(ポリゴン)として表現し、その表面を構成する複雑な多角形をあらかじめ三角形に分割しておく。そして、地形と構造物との交差部において、それぞれの三角形同士の切欠き処理を行うことにより、処理の場合分けが単純化され、厳密な座標計算を行うことが可能となっている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】「建築研究資料No.96 成熟都市シミュレータ Ver1.0+ 景観シミュレータ Ver2.05 実務マニュアル」 建設省建築研究所 2000年7月
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、前述の三角形分割による図形演算では、単純な三角形同士の切欠き処理であっても、処理結果は複雑な形状となり、次の処理に先立ってさらに三角形分割が要求される。そのため、処理が進行するにしたがって、地形が複雑に細分化していき、データ量が肥大してしまうという問題があった。また、地形が複雑に細分化されるために、演算の成功率も低く、精度の良い演算方法とはいえないものとなっていた。
【0008】
この発明は、かかる課題を解決するためになされたものであり、複数の三次元図形の相貫関係に基づき各三次元図形の合成画面を生成する図形演算において、データ量の増大を抑制しつつ、精度の高い図形演算を行うことのできる三次元図形演算プログラム、ダイナミックリンクライブラリ及び三次元図形演算プログラムを実行して景観の検討を行う景観検討装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
前記の目的を達成するために、請求項1に記載の発明は、三次元空間における複数の三次元図形の相貫関係を分析し、相互に重なり合う部分を除去して各三次元図形を合成表示する三次元図形演算プログラムであって、前記各三次元図形を、面の集合である多面体に近似した形状に表現する第1ステップと、前記第1ステップにおいて多面体に近似した形状に表現された各三次元図形において、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する第2ステップと、前記第2ステップにおける面同士の相貫関係の分析結果に基づき、一の三次元図形を構成する各面において、他の三次元図形と重なり合い裏側となる部分を除去する第3ステップと、前記第3ステップにおいて除去されなかった部分を有する面からなる三次元図形同士を合成して表示する第4ステップと、をコンピュータに実行させることを特徴とする。
【0010】
請求項2に記載の発明は、請求項1に記載の三次元図形演算プログラムにおいて、前記第2ステップにおける面同士の相貫関係の分析は、一の三次元図形を構成する各面と、他の三次元図形を構成する各面との切欠き状態に基づいて行われ、一の面による切欠きが、他の面の辺または頂点から始まり、かつ他の面の内部で終わる場合の処理を行う切込みステップと、一の面による切欠きが、他の面の内部から始まり、かつ他の面の辺または頂点で終わる場合の処理を行う切抜けステップと、一の面による切欠きが、他の面の内部から始まり、かつ他の面の内部で終わる場合の処理を行う切入れステップと、一の面による切欠きにより、他の面が複数の断片に分割される場合に、分割後の複数の各断片の分割面に関する表裏を確定する切分けステップと、をさらに有することを特徴とする。
【0011】
請求項3に記載の発明は、請求項2に記載の三次元図形演算プログラムにおいて、前記第1ステップにおいて多面体に近似した形状に表現された三次元図形の各面のうち、面内部に穴を有する面について、前記穴を構成するいずれかの頂点と、この穴を有する面を構成するいずれかの頂点とを仮想線で接続するサブステップをさらに有することを特徴とする。
【0012】
請求項4に記載の発明は、請求項2または3に記載の三次元図形演算プログラムにおいて、前記切入れステップにおいて、面内部に面積のない線状の切れ目が生じた面について、前記切れ目の一端と、この切れ目が生じた面を構成するいずれかの頂点とを仮想線で接続するサブステップをさらに有することを特徴とする。
【0013】
請求項5に記載の発明は、請求項3または4に記載の三次元図形演算プログラムにおいて、前記仮想線を有する面について、前記第2ステップにおいて他の面による新たな切欠きが生じた場合、この新たな切欠きの発生状況に応じて、前記仮想線の削除もしくは接続先の変更を行うサブステップをさらに有することを特徴とする。
【0014】
請求項6に記載の発明は、請求項3ないし5のいずれかに記載の三次元図形演算プログラムにおいて、前記第4ステップにおける合成表示に際し、前記仮想線を非表示に設定可能であることを特徴とする。
【0015】
請求項7に記載の発明は、請求項1ないし6のいずれかに記載の三次元図形演算プログラムにおいて、前記第1ステップにおいて多面体に近似した形状に表現された三次元図形の各面が、前記第2ステップ以降の処理を適用する対象として正常であるか異常であるかを判定し、異常と判定された面に対して修正を行うサブステップをさらに有することを特徴とする。
【0016】
請求項8に記載の発明は、請求項1ないし7のいずれかに記載の三次元図形演算プログラムにおいて、前記第2ステップにおける面同士の相貫関係の分析の結果、分析エラーとなった面の組み合わせをエラーログとして記録手段に記録するサブステップをさらに有することを特徴とする。
【0017】
請求項9に記載の発明は、メモリ上にロードして実行されるダイナミックリンクライブラリであって、請求項1ないし8のいずれかに記載の三次元図形演算プログラムを含んでいることを特徴とする。
【0018】
請求項10に記載の発明は、地形又は構造物の三次元データを解析し、三次元空間における前記地形又は構造物の合成画面を表示して景観のシミュレーション及び検討を行う景観検討装置であって、前記地形又は構造物の三次元データを入力する入力手段と、前記入力された三次元データを記録する記録手段と、請求項1ないし8のいずれかに記載の三次元図形演算プログラムを記憶する記憶手段と、前記記憶手段に記憶された三次元図形演算プログラムを実行して、前記地形又は構造物の三次元データに基づき前記合成画面を生成する制御手段と、前記生成された合成画面を表示する表示手段と、を備えたことを特徴とする。
【0019】
請求項11に記載の発明は、請求項10に記載の景観検討装置において、前記地形又は構造物の撮像データを取得する撮像手段と、該撮像手段により取得された撮像データを受信するための通信インタフェースと、をさらに備えたことを特徴とする。
【発明の効果】
【0020】
この発明は、前記のようであって、請求項1に記載の発明によれば、三次元空間における複数の三次元図形の相貫関係の分析を、各三次元図形を構成する面同士の相貫関係の分析に還元することができる。これにより、三次元図形同士の図形演算が単純化され、データ量の増大を抑制しつつ、精度の高い図形演算を行うことができる。
【0021】
請求項2に記載の発明によれば、請求項1に記載の三次元図形演算プログラムにおける面同士の相貫関係の分析が、切欠きの発生状況に応じて4つの処理ステップに場合分けされる。これにより、切欠きの発生状況に応じた適切な処理ステップが選択され、面同士の相貫関係の分析を正確に行うことができる。
【0022】
請求項3に記載の発明によれば、多面体を構成する面のうち、その内部に穴を有する面に対して、仮想線を適用することにより、これらの面を準正常な面として取り扱うことができる。これにより、内部に穴を有する面であっても、図形分割することなく、通常の面と同様に、面同士の相貫関係の分析を行うことができる。
【0023】
請求項4に記載の発明によれば、面同士の相貫関係の分析において、内部に面積のない線状の切れ目が生じた面に対して、仮想線を適用することにより、これらの面を準正常な面として取り扱うことができる。これにより、内部に面積のない線状の切れ目が生じた面であっても、図形分割することなく、通常の面と同様に、面同士の相貫関係の分析を行うことができる。
【0024】
請求項5に記載の発明によれば、仮想線を有する準正常な面において、新たな切欠きが発生した場合に、その新たな切欠きの発生状況に応じて、仮想線の削除や接続先の変更が行われる。これにより、仮想線は、準正常な面において常に適切に適用されることとなり、連続的な面同士の分析においても正確に分析を行うことができる。
【0025】
請求項6に記載の発明によれば、図形演算の結果を表示する際に、仮想線を非表示に設定することができる。これにより、ノイズの少ない表示画面を得ることができ、図形演算後の図形の形状を分かりやすく表示することができる。
【0026】
請求項7に記載の発明によれば、面同士の相貫関係の分析に先立って、分析対象となる面のうち異常が検出された面に対して、適宜修正が施される。これにより、面の異常性に起因する分析エラーが発生する割合を低減させることができる。
【0027】
請求項8に記載の発明によれば、面同士の相貫関係の分析において、分析エラーとなった面の組み合わせがエラーログとして記録される。これにより、相貫関係の分析における分析エラーの発生箇所を容易に特定することができ、この点でプログラムの保守性が向上する。
【0028】
請求項9に記載の発明によれば、三次元図形演算プログラムをダイナミックリンクライブラリとして提供することにより、他のプログラムに影響を与えることなく独立して修正や更新を行うことができ、この点でも保守性が向上する。また、この三次元図形演算プログラムで実現される三次元図形演算機能を、独立した機能として提供することが可能となり、その応用範囲を拡大することができる。
【0029】
請求項10に記載の発明によれば、前記請求項1ないし8のいずれかに記載の作用効果を、景観検討装置においても奏することができる。これにより、三次元空間における地形又は構造物の合成画面を表示する際に、その境界部分において余計な隙間がなく、滑らかに合成された画面を表示することができる。
【0030】
請求項11に記載の発明によれば、カメラなどの撮像手段によって撮像された地形又は構造物の撮像データを、撮像手段から受信することができる。これにより、入力手段によって入力された三次元データのみならず、撮像手段によって撮像されたデータからでも、景観の検討を行うことができる。
【図面の簡単な説明】
【0031】
【図1】この発明の一実施の形態に係る景観検討装置の構成例を示すブロック図である。
【図2】同上の三次元図形演算プログラムにより実行される図形演算の全体処理を示すフローチャートである。
【図3】同上の穴あき面に仮想線を適用した例を示す説明図である。
【図4】同上の三次元図形演算プログラムにより実行される面同士の相貫関係の分析の全体処理を示すフローチャートである。
【図5】同上の面F2による面F1の切欠き処理を示すフローチャートである。
【図6A】同上の「切込み」の概要を示す説明図である。
【図6B】同上の「切込み」における頂点追加の例を示す説明図である。
【図7】同上の切込み処理の流れを示すフローチャートである。
【図8】同上の「切抜け」の概要を示す説明図である。
【図9】同上の切抜け処理の流れを示すフローチャートである。
【図10A】同上の「切入れ」の概要を示す説明図である。
【図10B】同上の「切入れ」における仮想線の適用例を示す説明図である。
【図11】同上の切入れ処理の流れを示すフローチャートである。
【図12A】同上の「切分け」の概要を示す説明図である。
【図12B】同上の「切分け」における頂点追加の例を示す説明図である。
【図13】同上の切分け処理の流れを示すフローチャートである。
【図14A】同上の切分けの発生状況に応じた仮想線の削除又は通常の辺への変更の様子を示す説明図である。
【図14B】同上の切分けの発生状況に応じた仮想線の削除又は通常の辺への変更の様子を示す説明図である。
【図15A】同上の切欠きの発生状況に応じた仮想線の接続先の変更の様子を示す説明図である。
【図15B】同上の切欠きの発生状況に応じた仮想線の接続先の変更の様子を示す説明図である。
【図16】同上の景観検討装置により表示される地形及び構造物の合成画面の例を示す説明図である。
【発明を実施するための形態】
【0032】
この発明の一実施の形態に係る三次元図形演算プログラムでは、三次元空間における複数の三次元図形の相貫関係を分析する際に、まず、各三次元図形を多面体に近似した形状(ポリゴン)として表現する。そして、一の三次元図形を構成するすべての面と、他の三次元図形を構成するすべての面との間で、順次相貫関係を分析する。この面同士の相貫関係の分析は、面と面との間で発生する切欠き状態に基づいて行われ、この切欠き状態に応じた所定の切欠き処理が行われる。このように、複数の三次元図形における相貫関係の分析を、面同士の切欠き処理の繰り返しに還元することで、処理を単純化している。
【0033】
また、各三次元図形を多面体として表現した際に、その内部に穴を有する面が生じた場合に、この面に対して仮想線を適用することにより、これらの面を「準正常な面」として取り扱い、通常の面と同様に切欠き処理を適用することを可能としている。また、この仮想線は、面同士の切欠き処理の過程で、その内部に線状の切れ目が生じた面に対しても適用され、これらの面も同様に「準正常な面」として取り扱っている。
以下、図面を参照しながら、三次元図形演算プログラムの具体的な処理内容について説明する。ここでは、この三次元図形演算プログラムを実行して、地形又は構造物の合成画面を表示し、景観の検討を行う景観検討装置を例に挙げて説明する。
【0034】
図1において、1は景観検討装置で、この景観検討装置1は、三次元データとして予め用意されたビルや路面などの構造物と、同様に用意された背景写真や地形と、の合成画面を表示して、三次元空間における合成の様子を立体的に確認することを主な基本機能としている。また、この合成画面を表示するために必要となる様々な編集画面を提供する機能も、併せて備えている。
【0035】
景観検討装置1は、一般的なパーソナルコンピュータPCを有している。すなわち、このPCは、装置全体の制御や図形演算を行う制御手段(CPU:Central Process Unit)2、制御手段2の処理データなどを一時記憶する書き換え可能なRAM(Random Access Memory)3、固定データなどを記憶するROM(Read Only Memory)4、図形演算結果のデータなどを記録するハードディスクドライブ装置などの記録手段5、各種データの入力や指示を行うキーボードやマウスなどの入力手段6、図形演算結果を表示するディスプレイなどの表示手段7、ネットワーク接続に使用する通信インタフェース8、などの通常のコンピュータのハードウェア資源を備えている。そして、これらの各ハードウェア資源と、三次元図形演算プログラムをはじめとするソフトウェアとの協働により、景観検討装置1の基本機能が実現される。
【0036】
また、この景観検討装置1は、景観検討の対象となる地形や構造物を撮像する撮像手段9を備えていてもよい。この撮像手段9は、例えばデジタルカメラなどで構成され、この撮像手段9により取得された地形や構造物の撮像データを用いて、景観の検討を行うこともできる。
【0037】
この撮像手段9により取得された撮像データは、景観検討装置1に通信インタフェース8を経由して送信することができる。このように、撮像手段9から入力される撮像データとしては、例えば地形や構造物を立体的に見るために、複数の異なるカメラの視点位置から撮像したステレオ写真や、通常の方法で撮像した単眼写真などが挙げられる。このように入力されたステレオ写真などの撮像データは、三次元図形演算プログラムの入力となる三次元データに変換され、この三次元データを用いて、図形演算が行われる。
【0038】
この他、入力データとして三次元図形演算プログラムに入力される三次元データとしては、過去にCAD(Computer Aided Design)やGIS(Geographic Information System)で作成された三次元データを、図形演算に適したデータ形式に変換したものや、過去に作成された紙図面を基に、オペレータが入力手段6を用いて三次元データとして作成したものを用いてもよい。これらの方法により作成した三次元データや、撮像手段9による撮像データから生成した三次元データは、ハードディスクドライブ装置などの記録手段5に記録される。
【0039】
このように、三次元図形演算プログラムの入力となる三次元データが用意された後、オペレータにより、マウスなどの入力手段6が操作され、図形演算の開始が指示される。この指示を受けると、制御手段2は、予めROM4に記憶されている三次元図形演算プログラムを読み出し、これを実行して図形演算を開始する。なお、この三次元図形演算プログラムは、CD−ROMなどの外部記録媒体からインストールされ、ハードディスクドライブ装置などの記録手段5に記録されていてもよい。以下、制御手段2が実行する図形演算について、図2ないし図15を用いて詳細に説明する。
【0040】
<全体の流れ>
図2は、制御手段2が実行する図形演算の全体の流れを示すフローチャートである。はじめに、このフローチャートに基づき図形演算の全体の流れを説明し、次に、各ステップにおける具体的な処理内容について説明する。
【0041】
図形演算は、図2に示すように、大きく4つの処理ステップで構成される。各ステップの処理の概要を以下に示す。
(ステップ01)入力された地形や構造物などの三次元データを基に、各三次元図形を多面体に近似した形状(ポリゴン)に表現する。
(ステップ02)ステップ01において、多面体に近似した形状に表現された各三次元図形において、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する。
(ステップ03)ステップ02における各面同士の相貫関係の分析結果に基づき、各面において他の三次元図形と重なり合い裏側となる部分を除去する。
(ステップ04)ステップ03において、除去されなかった部分を有する面で構成される三次元図形同士を合成し、合成画面を表示する。
以下、これら各ステップについて、詳細に説明する。
【0042】
<ステップ01:多面体に近似する>
まず、制御手段2は、オペレータにより指示されて図形演算の対象となった構造物などの図形の三次元データを、記録手段5から読み出す。そして、読み出した三次元データに基づき、各三次元図形を多面体に近似した形状(ポリゴン)として表現する。そして、このように表現された各三次元図形を構成する各面において、その内部に穴を有する面(以下、穴あき面と称する)が生じた場合に、この穴あき面に対して仮想線を適用する。
【0043】
この仮想線は、前述の穴あき面のように、内部に穴を有する面であっても、穴のない通常の面と同様に取り扱うことを可能にするもので、例えばビルの外壁や、既に図形演算が施されている地形など、内部に穴のある三次元図形であっても、通常の三次元図形と同様に取り扱うことができる。
【0044】
具体的な仮想線の適用例を図3に示す。この例では、内部に穴11を有する穴あき面10において、この穴11を構成するいずれかの頂点と、穴あき面10を構成するいずれかの頂点(ここでは頂点12)とを、仮想線Kで接続する。このように、穴11と頂点12とを仮想線Kで接続することにより、穴あき面10を従来の三角形分割のように図形分割することなく、ステップ02以降の処理で用いることができる。なお、この仮想線Kの具体的な作用については、後述のステップ02において説明する。
【0045】
制御手段2は、このように多面体として表現された三次元図形のすべての面に関するデータを、RAM3に記憶する。また、これらのデータは、ハードディスクドライブ装置などの記録手段5に記録してもよい。
【0046】
<ステップ02:面同士の相貫関係の分析>
次に、制御手段2は、ステップ01において多面体として表現された各三次元図形において、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する。このステップ02は、図4のフローチャートに示すサブステップ11〜17で構成されている。なお、ここでは、説明を簡単にするために、2つの三次元図形G1、G2を例として、図4のフローチャートに基づき各サブステップについて説明する。
【0047】
まず、2つの三次元図形G1、G2において、図形G1を構成するすべての面に関し、図形G2の内部に含まれる部分を考える。このような部分は、図形G2と重なり合ってG2の裏側となる部分であり、取り除かれるべき部分となる。そこで、図形G1を構成するすべての面に関して、図形G2の内部に含まれる部分を取り除くことを、「G2でG1を切り取る」と呼ぶ。
【0048】
このように、G2でG1を切り取る場合、G1を構成する各々の面は、相互に影響を受けることなく、互いに独立してG2に切り取られる。すなわち、G1を構成する1つの面F1について、G2の内部に含まれる部分が切り取られるとき、G1を構成するF1以外の面に対しては、同様の切り取りにおいて影響を与えない。そこで、G1を構成する1つの面F1から、G2に含まれる部分を切り取ることを、「G2でF1を切り取る」と呼ぶ。そこで、まず、図形G1から1つの面F1を取り出す(サブステップ11)。
【0049】
このように取り出した面F1をG2で切り取るためには、G2を構成するすべての面で、面F1を切り取る必要がある。そこで、次に、図形G2から1つの面F2を取り出す(サブステップ12)。
このように取り出した面F2により、面F1を切り取ることを、「F2でF1を切り取る」と呼ぶ。また、その際に行われる処理を「F2によるF1の切欠き処理」と呼ぶ(サブステップ13)。以下、この面F2による面F1の切欠き処理について説明する。
【0050】
<サブステップ13:面F2による面F1の切欠き処理>
この切欠き処理を行うサブステップ13は、さらに図5のフローチャートに示すサブステップ21〜38で構成されている。この各サブステップの処理について、図5のフローチャートに基づき説明する。
【0051】
まず、面F1及び面F2が、切欠き処理を適用する対象として正常であるか異常であるかを判定する(サブステップ21)。すなわち、切欠き処理を適用しようとする面は、必ずしも現実に存在しうる幾何学的な形状の面であるとは限らない。例えば、頂点が2以下しかない頂点不足の面や、ある辺と次の辺が一直線上にある面などである。このような面は、切欠き処理を行うには不適切な面となる。
そこで、処理に先立って、対象となる面を診断し、異常であると判定された場合には、可能な限り修正を行ってから処理を行う。なお、このような診断及び修正は、切欠き処理を施す前の面に限らず、切欠き処理を行った結果として得られる面に対しても行うことができる。
【0052】
次に、面F1と面F2が同一平面であるか否かを確認する(サブステップ22)。同一平面であれば、従来の二次元図形演算処理を行う(サブステップ23)。同一平面でなければ、サブステップ24へ進む。
【0053】
次に、面F1に関する面F2の各頂点の高さを求める。そして、面F2のすべての頂点が、面F1の上または下にあるか否かを確認する(サブステップ24)。もし、面F2のすべての頂点が面F1よりも上または下にあれば、この二つの面は接触しないと判定して(サブステップ26)、サブステップ13を終了する。それ以外の場合は、サブステップ25へ進む。
【0054】
次に、面F2に関する面F1の各頂点の高さを求める。そして、面F1のすべての頂点が、面F2の上または下にあるか否かを確認する(サブステップ25)。もし、面F1のすべての頂点が面F2よりも上または下にあれば、この二つの面は接触しないと判定して(サブステップ26)、サブステップ13を終了する。それ以外の場合は、サブステップ27へ進む。
【0055】
次に、面F1と面F2の交線となる直線(交差線)を求める(サブステップ27)。そして、この交差線と、面F1及び面F2のすべての辺との交点を求め、この交点のリストを作成する(サブステップ28)。このリストにおいては、各交点を、交差線に沿った1次元座標値に基づいて並び替えておく。このとき、面F1が仮想線を含む場合は、この仮想線と交差線との交点も同様にリスト化する。
【0056】
次に、前述のリストに基づいて、面F2による面F1の切欠きの開始点及び終了点を求める(サブステップ29)。具体的には、前述の交差線上において、仮想線以外の交点によって区切られた各区間を、1次元座標値が若い順に評価する。その結果、面F1に含まれ、かつ面F2にも含まれるすべての区間が、実際に切欠きが行われる区間となる。すなわち、これらの各区間の開始点及び終了点が、それぞれの切欠きの開始点及び終了点となる。なお、仮想線による交点は、当該区間の属性としてリスト化しておく。
【0057】
次に、サブステップ29において求めた切欠きの開始点及び終了点に基づき、切欠き処理の場合分けを行う。すなわち、面F2による面F1の切欠き処理は、面F1における切欠きの開始点及び終了点の位置に応じて、「切込み」「切抜け」「切入れ」「切分け」の4パターンに場合分けされる。そこで、面F2による面F1の切欠きが、このいずれのパターンに該当するかを順次確認していく。
【0058】
まず、当該切欠きが「切込み」であるか否かを確認する(サブステップ30)。「切込み」は、切欠きが面F1の辺または頂点から始まり、かつ面F1の内部で終わる状態である。当該切欠きがこの「切込み」に該当する場合は、サブステップ31に進み、切込み処理を行う。該当しない場合は、サブステップ32に進む。
【0059】
次に、当該切欠きが「切抜け」であるか否かを確認する(サブステップ32)。「切抜け」は、切欠きが面F1の内部から始まり、かつ面F1の辺または頂点で終わる状態である。当該切欠きがこの「切抜け」に該当する場合は、サブステップ33に進み、切抜け処理を行う。該当しない場合は、サブステップ34に進む。
【0060】
次に、当該切欠きが「切入れ」であるか否かを確認する(サブステップ34)。「切入れ」は、切欠きが面F1の内部から始まり、かつ内部で終わる状態である。当該切欠きがこの「切入れ」に該当する場合は、サブステップ35に進み、切入れ処理を行う。該当しない場合は、サブステップ36に進む。
【0061】
次に、当該切欠きが「切分け」であるか否かを確認する(サブステップ36)。「切分け」は、切欠きの開始点及び終了点が、いずれも面F1の辺または頂点と一致する状態である。当該切欠きがこの「切分け」に該当する場合は、サブステップ37に進み、切分け処理を行う。該当しない場合は、サブステップ38に進む。
【0062】
当該切欠きが、前述した4パターンのいずれにも該当しない場合には、切断方法不明を通知するエラーメッセージを出力し(サブステップ38)、サブステップ13を終了する。続いて、前述の4パターンの具体的な処理について、それぞれ説明する。
【0063】
<サブステップ31:切込み処理>
まず、切込み処理について、図6及び図7を用いて説明する。図6Aは、この切込み処理が行われる具体例を示している。図6Aに示すように、「切込み」においては、切欠きの開始点Sが面F1の辺または頂点と一致し、かつ終了点Eが面F1の内部に位置している。この場合は、結果として面F1が面F2の表と裏にまたがることとなり、面F1の図形G2に関する内外判定は未詳となる。
【0064】
切込み処理を行うサブステップ31は、図7のフローチャートに示すように、サブステップ41〜44から構成されている。まず、サブステップ41において、切欠きの開始点Sの妥当性を検査する。具体的には、この開始点Sが、過去に作成された切込みの開始点である場合、この開始点Sに2つの辺または頂点が重畳することとなる。このような場合には、今回の切込みが面F1の内側となるような辺または頂点を選択する。
【0065】
次に、面F1の辺上における切欠きの開始点Sの位置に応じて、面F1に所定の数の頂点を追加する(サブステップ42)。
具体的には、切欠きの開始点Sが、面F1の辺上の頂点と一致するか、あるいは頂点以外の箇所(以下、辺の中間点と呼ぶ)にあるかにより、面F1に追加する頂点の数を決定する。例えば、図6Bに示すように、切欠きの開始点Sが、辺Lの中間点にある場合には、面F1に対して3頂点(M21、M22、M23)を追加する。一方、切欠きの開始点Sが、辺Lの既存の頂点のいずれか(例えばM2)と一致する場合には、切欠き後もこの頂点M2を利用できるので、2頂点を追加することとなる。この結果、面F1の内部には、面積のない線状の切れ目が生じる。
【0066】
次に、切欠きの開始点S及び終了点Eの間を通過する仮想線があるか否かを確認する(サブステップ43)。このような仮想線がある場合はサブステップ44へ進み、その仮想線の接続先を変更する。ない場合は、サブステップ31を終了する。なお、この両ステップ43,44における仮想線の接続先の変更については、前述した4パターンの切欠きに共通して行われるので、後述する切分け処理において詳しく説明する。
【0067】
<サブステップ33:切抜け処理>
次に、切抜け処理について、図8及び図9を用いて説明する。図8は、この切抜け処理が行われる具体例を示している。図8に示すように、「切抜け」においては、切欠きの開始点Sが面F1の内部に位置し、かつ終了点Eが面F1の辺または頂点と一致している。この場合も、前述の切込み処理と同様に、面F1が面F2の表と裏にまたがることとなり、面F1の図形G2に関する内外判定は未詳となる。
【0068】
切抜け処理を行うサブステップ33は、図9のフローチャートに示すように、サブステップ51〜54から構成されている。まず、サブステップ51において、切欠きの終了点Eの妥当性を検査する。具体的には、この終了点Eが、過去に作成された切抜けの終了点である場合、この終了点Eに2つの辺または頂点が重畳することとなる。このような場合には、今回の切抜けが面F1の内側となるような辺または頂点を選択する。
【0069】
次に、面F1の辺上における切欠きの終了点Eの位置に応じて、面F1に所定の数の頂点を追加する(サブステップ52)。
具体的には、切欠きの終了点Eが、面F1の辺上の頂点と一致するか、あるいは辺の中間点にあるかにより、面F1に追加する頂点の数を決定する。この頂点追加の処理は、前述の切込み処理におけるサブステップ42とほぼ同様であり、終了点Eが辺の中間点にあれば3頂点を、辺の頂点と一致すれば2頂点を追加する。この場合にも、面F1の内部には、面積のない線状の切れ目が生じることとなる。
【0070】
次に、切欠きの開始点S及び終了点Eの間を通過する仮想線があるか否かを確認する(サブステップ53)。このような仮想線がある場合はサブステップ54へ進み、その仮想線の接続先を変更する。ない場合は、サブステップ33を終了する。この両ステップ53,54における仮想線の接続先の変更についても、後述する切分け処理において詳しく説明する。
【0071】
<サブステップ35:切入れ処理>
次に、切入れ処理について、図10及び図11を用いて説明する。図10は、この切入れ処理が行われる具体例を示している。図10Aに示すように、「切入れ」においては、切欠きの開始点S及び終了点Eが、いずれも面F1の内部に位置している。この場合も、前述の切込み処理などと同様に、面F1が面F2の表と裏にまたがることとなり、面F1の図形G2に関する内外判定は未詳となる。そして、このように切入れが生じた面F1に対し、前述した仮想線が適用される。
【0072】
切入れ処理を行うサブステップ35は、図11のフローチャートに示すように、サブステップ61〜64から構成されている。まず、サブステップ61において、面F1を構成するすべての頂点と、切欠きの開始点S及び終了点Eに関して、仮想線により接続される点として最適な位置を検討し、選択する。次に、選択された面F1の頂点と、切欠きの開始点S及び終了点Eのいずれかとを、仮想線Kで接続する(サブステップ62)。この場合の例を、図10Bに示す。
【0073】
図10Bに示すように、面F1の内部に切欠きの開始点S及び終了点Eが位置しているとき、面F1の既存の頂点M2と、切欠きの開始点Sとを、仮想線Kで接続する。また、この仮想線Kを適用する際に、面F1に対して5頂点(M21、M22、M23、M24、M25)を追加する。
【0074】
仮想線Kは、この面F1のように、その内部の一部分だけに線状の切れ目が入ったような不完全な状態の面であっても、準正常な面として通常の面と同様に取り扱うことを可能にしている。すなわち、仮想線Kにより、面F1の内部に独立した状態で生成される線状の切れ目が、面F1の既存の頂点と接続されて、面F1の辺Lへ橋渡しされる。これにより、この線状の切れ目は、面F1のデータ構造を表現する頂点の集合に取り込まれる形で表現することができる。なお、このような仮想線Kによる作用は、ステップ01で述べた「穴あき面」においても同様に発揮され、かかる「穴あき面」も準正常な面として取り扱うことができる。
【0075】
次に、切欠きの開始点S及び終了点Eの間を通過する仮想線があるか否かを確認する(サブステップ63)。このような仮想線がある場合はサブステップ64へ進み、その仮想線の接続先を変更する。ない場合は、サブステップ35を終了する。この両ステップ63,64における仮想線の接続先の変更についても、後述する切分け処理において詳しく説明する。
【0076】
<サブステップ37:切分け処理>
次に、切分け処理について、図12及び図13を用いて説明する。図12は、この切分け処理が行われる具体例を示している。図12Aに示すように、「切分け」においては、切欠きの開始点S及び終了点Eが、いずれも面F1の辺または頂点と一致している。この場合は、面F1が面F2によって分割され、分割された面F1の2つの断片が、面F2に関して表となるか裏となるかが確定する。
【0077】
切分け処理を行うサブステップ37は、図13のフローチャートに示すように、サブステップ71〜79で構成されている。まず、サブステップ71において、切欠きの開始点S及び終了点Eの妥当性を検査する。具体的には、この開始点S及び終了点Eが、過去に作成された切欠きの開始点、終了点、またはその中間の辺上である場合、この各点S、Eに2つの辺または頂点が重畳することとなる。このような場合には、開始点S及び終了点Eによる切分けが、面F1の内側となるような辺または頂点を選択する。
【0078】
次に、切欠きの開始点S及び終了点Eが、いずれも面F1の頂点と一致するか否かを確認する(サブステップ72)。一致する場合にはサブステップ73へ進み、一致しない場合にはサブステップ75へ進む。
【0079】
次に、開始点S及び終了点Eによって生じる切欠きの区間が、面F1に適用された仮想線と一致するか否かを確認する(サブステップ73)。一致する場合はサブステップ74へ進み、一致しない場合はサブステップ75へ進む。この場合の例を、図14を用いて説明する。
【0080】
図14Aに示すように、面F1は、その内部に穴P1、P2、P3、P4を有する穴あき面である。また、この面F1には仮想線K1、K2、K3、K4が適用され、これらの仮想線により、それぞれの穴P1〜P4が、面F1のいずれかの頂点または他の穴と接続されている。
ここで、穴P2と穴P3との間の部分で新たに発生した切欠きR1の区間は、穴P2と穴P3とを接続している仮想線K3と一致する。このような場合に、図14Bに示すように、既存の仮想線K3を通常の辺L1に変換する(サブステップ74)。この変換を行った後、サブステップ37を終了する。
【0081】
次に、切分けの開始点S及び終了点Eが、それぞれ異なる穴の辺上であるか否かを確認する(サブステップ75)。異なる穴の辺上である場合にはサブステップ76へ進み、そうでない場合にはサブステップ77へ進む。
【0082】
例えば、図14A及びBに示すように、新たに発生した切欠きR2の開始点S及び終了点Eは、それぞれ異なる穴P2、P4の辺上に位置している。このとき、新たな切欠きR2によって、不要となる仮想線を削除する。
具体的には、穴P2は、仮想線K2によって面F1の頂点M2と接続され、さらに仮想線K3によって穴P3と接続されている。また、穴P3は、仮想線K4によって穴P4と接続されている。このとき、仮想線K2ないしK4の階層関係は、面F1の外周から数えてK2、K3、K4の順に定義することができる。
【0083】
この場合において、新たに発生した切欠きR2により、穴P2と穴P4とは、新たに生成される辺L2で接続されることになる。そこで、この新たに生成される辺L2によって不要となる仮想線、すなわち、穴P2とP4とにそれぞれ対応する仮想線K2とK4のうち、より下位にある仮想線K4を削除する(サブステップ76)。また、より上位にある仮想線K2を削除することなく温存する。
【0084】
なお、別の切欠きR3は、穴P1と面F1の外周との間で発生している。この場合にも、前述の場合と同様に、穴P1に関して、仮想線K1を削除する。
【0085】
次に、面F1の辺上における切欠きの開始点S及び終了点Eの位置に応じて、分割後の各断片に所定の数の頂点を追加する(サブステップ77)。
具体的には、切欠きの開始点S及び終了点Eが、面F1の辺上の頂点と一致するか、あるいは辺の中間点にあるかにより、分割後の各断片に追加する頂点の数を決定する。例えば、図12Bに示すように、切欠きの開始点Sが面F1の辺Lの中間点に位置し、かつ終了点Eが面F1の頂点M6と一致する場合には、分割後の断片F11に対して2頂点(M21、M22)を追加するとともに、分割後の他の断片F12に対して1頂点(M61)を追加する。また、切欠きの開始点S及び終了点Eがともに面F1の頂点のいずれかと一致する場合は、分割後のそれぞれの断片F11、F12に対して1頂点を追加する。
【0086】
この結果、分割により発生した断片F11及びF12は、面F2に関して表となるか裏となるかが確定する。そこで、それぞれの断片F11及びF12に対して、面F2に関する表裏を示すフラグを付加する。この場合は、図14A,Bに示すように、面F1の上部で新たな切欠きR4が発生し、その切欠きR4の上側と下側で別の断片に分割される。分割後のそれぞれの断片は、面F2に関する表裏が確定し、その旨を示すフラグが付される。
【0087】
なお、このようにフラグが付されても、面F2に続く図形G2の次の面による切欠きにより、さらに分割されるような場合には、このフラグは変更される場合がある。また、次の面による切欠きにより、前述した切入れなどの線状の切れ目が発生するのみで、分割が発生しない場合には、一度確定した表裏のフラグを取り消し、再び未確定とする。
【0088】
次に、切欠きの開始点S及び終了点Eの間を通過する仮想線があるか否かを確認する(サブステップ78)。このような仮想線がある場合はサブステップ79へ進み、その仮想線の接続先を変更する。ない場合は、サブステップ37を終了する。
【0089】
この場合の具体例を図15に示す。図15Aに示すように、面F1では、その内部に新たな切分けが発生し、その開始点S1及び終了点E1の間を、既存の仮想線Kが通過している。このような場合に、仮想線Kの接続先を変更し、図15Bに示すように、切分けの区間と交差しない仮想線K’とする(サブステップ79)。この変更の後、サブステップ37を終了する。
【0090】
なお、このような仮想線の接続先の変更は、前述した切込み、切抜け、切入れの各処理においても同様に行われる。すなわち、図15Aに示す新たな切込みの開始点S2及び終了点E2、切抜けの開始点S3及び終了点E3、切入れの開始点S4及び終了点E4のそれぞれの間を通過する仮想線Kがある場合には、図15Bに示すように、仮想線Kの接続先の変更を行い、それぞれの区間と交差しない仮想線K’とする。
【0091】
次に、再び図4に戻り、サブステップ14以降の処理について説明する。まず、図形G2のすべての面について、面F1及びこれから生成されたすべての断片の切欠き処理が終了したか否かを確認する(サブステップ14)。すべての面について終了していなければ、G2から次の面を取り出してこれを面F2とし(サブステップ15)、サブステップ13へ戻り、すべての面について終了するまで、サブステップ13、14を繰り返す。終了していれば、サブステップ16へ進む。
【0092】
続いて、図形G1のすべての面について、G2による切欠き処理が終了したか否かを確認する(サブステップ16)。すべての面について終了していなければ、G1から次の面を取り出してこれを面F1とし(サブステップ17)、サブステップ12へ戻り、すべての面について終了するまで、サブステップ12ないし16を繰り返す。終了していれば、ステップ02を終了する。
【0093】
以上のように、図形G2で図形G1を切り取る処理は、面F2による面F1及びこれから生成されたすべての断片の切欠き処理の繰り返しに還元される。すなわち、図形G1及びG2における相貫関係の分析は、それぞれの図形を構成する面同士の相貫関係の分析に還元される。
【0094】
なお、面F1に対して、図形G2のすべての面による切欠き処理を行った結果、面F1の図形G2に対する表裏が確定していない場合には、補足的な処理を行って表裏を判定してもよい。例えば、面F1に関して、図形G2のすべての面が同じ側(面F1の上または下)にある場合には、面F1は図形G2の表(外側)にあると判定し、面F1が、図形G2のすべての面に関して下側にある場合には、面F1は図形G2の裏(内側)にあると判定するようにしてもよい。
【0095】
<ステップ03:裏側となる部分の除去>
再び図2に戻り、ステップ02以降の処理について説明する。ステップ03において、制御手段2は、図形G1において、図形G2の裏側となる部分を除去する。
この除去は、前述したサブステップ77において、面F1の各断片に付された、表裏を示すフラグに基づいて行われる。すなわち、図形G1を構成するすべての面において、裏を示すフラグが付されている断片を一括して除去する。これにより、図形G1において、図形G2と合成したときに、図形G2の裏側となって表示されない部分が除去される。
【0096】
<ステップ04:図形G1、G2の合成表示>
次に、制御手段2は、ステップ03において、除去されずに残った部分を有する面で構成された図形G1と、図形G2とを合成して、その結果をディスプレイなどの表示手段7に表示し、ユーザに提示する。
【0097】
この表示例を図16に示す。ここでは、図形G1としての地形Xと、図形G2としての構造物Yとの合成画面を表示した例を示している。この例では、地形Xと構造物Yとの合成画面が精度良く表示されており、特に地形Xと法面y1との接合部分には余分な隙間を生じることなく、必要かつ十分な線分のみで表示されている。
【0098】
なお、表示された図形G1及びG2において、前述の仮想線が適用された面が含まれている場合であっても、図形の表面の質感などを表示するテクスチャ表示や、明暗のコントラストを表示するシェーディング表示に際しては、仮想線を含まない通常の図形と同様に表示することができる。
【0099】
また、このように図形G1及びG2が仮想線を含んでいる場合に、この仮想線を非表示として、表示手段7に表示させないように設定してもよい。例えば、仮想線を含む図形をワイヤーフレーム(線形状)で表示する際に、この仮想線を非表示とすることにより、ノイズが少ない表示画面を得ることができる。これにより、従来の三角形分割の場合と比較して、図形演算後の図形の形状を分かりやすく表示することができる。
【0100】
以上のように、この発明の三次元図形演算プログラムによれば、図形G2で図形G1を切り取る処理を、面F2による面F1の切欠き処理の繰り返しに還元することができる。これにより、複雑な三次元図形演算を単純化でき、データ量の増大を抑制しつつ、精度の高い図形演算を行うことができる。
【0101】
また、仮想線を適用することにより、面の内部に穴を有する穴あき面や、面同士の切欠き処理において、その一部だけに線状の切れ目が入ったような不完全な状態の面を、準正常な面として取り扱うことが可能になる。これにより、これら不完全な状態の面を、従来のように図形分割することなく表現することができ、通常の面と同様に、面同士の切欠き処理を行うことができる。
【0102】
さらに、このように、面同士の切欠き処理において、準正常な面を取り扱うことにより、バッファやスタックなどの特別なデータ構造が不要となる。これにより、処理が単純化され、データ量の増大も抑制される。
また、準正常な面において新たな切欠きが発生した場合に、その新たな切欠きの発生状況に応じて、仮想線の削除や接続先の変更が行われる。これにより、仮想線は、準正常な面において常に適切に適用されることとなり、連続的な面同士の切欠き処理においても、正確に処理を行うことができる。
【0103】
なお、サブステップ13における面F2による面F1及びこれから生成されたすべての断片の切欠き処理において、エラーが発生した場合に、このエラーとなった2つの面又は面と断片の組み合わせをエラーログとして、ハードディスクドライブ装置などの記録手段5に記録してもよい。
【0104】
すなわち、図形演算のエラーは、ほとんどの場合、面F2による面F1及びこれから生成されたすべての断片の切欠き処理の過程で発生する。このとき、エラーが発生した面F1又は断片と面F2のデータを、エラーログとして記録しておくことにより、図形演算終了後において、エラーが発生した面の所在を、処理対象の図形G1及びG2から容易に探し出すことができる。また、発生したエラーが、三次元図形演算プログラムの不完全性に起因するものである場合、このエラーログを用いて、プログラムの修正やテストを行うことができ、この点でプログラムの保守性を向上させることができる。
【0105】
また、この発明の三次元図形演算プログラムは、メモリ上にロードして実行されるダイナミックリンクライブラリ(DLL)としても提供することができる。このように、この発明の三次元図形演算プログラムをダイナミックリンクライブラリとして提供することにより、他のプログラムに影響を与えることなく独立して修正や更新を行うことができ、この点でも保守性が向上する。
【0106】
また、このように、三次元図形演算プログラムをダイナミックリンクライブラリとして独立させることにより、この三次元図形演算プログラムで実現される三次元図形演算機能を、独立した機能として提供することが可能となる。これにより、かかる三次元図形演算機能の適用範囲は、本実施形態に係る景観検討装置のような、景観の検討を目的とするものに限定されることなく、他の様々な装置にも応用することができる。この場合において、かかるダイナミックリンクライブラリは、社内ネットワークやインターネットなどを経由して、ネットワーク上の各コンピュータに提供されるようにしてもよい。
【符号の説明】
【0107】
1 景観検討装置
2 制御手段(CPU)
3 記憶手段(RAM)
4 記憶手段(ROM)
5 記録手段
6 入力手段
7 表示手段
8 通信インタフェース
9 撮像手段
10 穴あき面
11 穴
12 頂点
K 仮想線
S 切欠きの開始点
E 切欠きの終了点
【特許請求の範囲】
【請求項1】
三次元空間における複数の三次元図形の相貫関係を分析し、相互に重なり合う部分を除去して各三次元図形を合成表示する三次元図形演算プログラムであって、
前記各三次元図形を、面の集合である多面体に近似した形状に表現する第1ステップと、
前記第1ステップにおいて多面体に近似した形状に表現された各三次元図形において、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する第2ステップと、
前記第2ステップにおける面同士の相貫関係の分析結果に基づき、一の三次元図形を構成する各面において、他の三次元図形と重なり合い裏側となる部分を除去する第3ステップと、
前記第3ステップにおいて除去されなかった部分を有する面からなる三次元図形同士を合成して表示する第4ステップと、
をコンピュータに実行させることを特徴とする三次元図形演算プログラム。
【請求項2】
前記第2ステップにおける面同士の相貫関係の分析は、一の三次元図形を構成する各面と、他の三次元図形を構成する各面との切欠き状態に基づいて行われ、
一の面による切欠きが、他の面の辺または頂点から始まり、かつ他の面の内部で終わる場合の処理を行う切込みステップと、
一の面による切欠きが、他の面の内部から始まり、かつ他の面の辺または頂点で終わる場合の処理を行う切抜けステップと、
一の面による切欠きが、他の面の内部から始まり、かつ他の面の内部で終わる場合の処理を行う切入れステップと、
一の面による切欠きにより、他の面が複数の断片に分割される場合に、分割後の複数の各断片の分割面に関する表裏を確定する切分けステップと、
をさらに有することを特徴とする請求項1記載の三次元図形演算プログラム。
【請求項3】
前記第1ステップにおいて多面体に近似した形状に表現された三次元図形の各面のうち、面内部に穴を有する面について、前記穴を構成するいずれかの頂点と、この穴を有する面を構成するいずれかの頂点とを仮想線で接続するサブステップをさらに有する
ことを特徴とする請求項2記載の三次元図形演算プログラム。
【請求項4】
前記切入れステップにおいて、面内部に面積のない線状の切れ目が生じた面について、前記切れ目の一端と、この切れ目が生じた面を構成するいずれかの頂点とを仮想線で接続するサブステップをさらに有する
ことを特徴とする請求項2または3に記載の三次元図形演算プログラム。
【請求項5】
前記仮想線を有する面について、前記第2ステップにおいて他の面による新たな切欠きが生じた場合、この新たな切欠きの発生状況に応じて、前記仮想線の削除もしくは接続先の変更を行うサブステップをさらに有する
ことを特徴とする請求項3または4に記載の三次元図形演算プログラム。
【請求項6】
前記第4ステップにおける合成表示に際し、前記仮想線を非表示に設定可能であることを特徴とする請求項3ないし5のいずれかに記載の三次元図形演算プログラム。
【請求項7】
前記第1ステップにおいて多面体に近似した形状に表現された三次元図形の各面が、前記第2ステップ以降の処理を適用する対象として正常であるか異常であるかを判定し、異常と判定された面に対して修正を行うサブステップをさらに有する
ことを特徴とする請求項1ないし6のいずれかに記載の三次元図形演算プログラム。
【請求項8】
前記第2ステップにおける面同士の相貫関係の分析の結果、分析エラーとなった面の組み合わせをエラーログとして記録手段に記録するサブステップをさらに有する
ことを特徴とする請求項1ないし7のいずれかに記載の三次元図形演算プログラム。
【請求項9】
メモリ上にロードして実行されるダイナミックリンクライブラリであって、請求項1ないし8のいずれかに記載の三次元図形演算プログラムを含んでいることを特徴とするダイナミックリンクライブラリ。
【請求項10】
地形又は構造物の三次元データを解析し、三次元空間における前記地形又は構造物の合成画面を表示して景観のシミュレーション及び検討を行う景観検討装置であって、
前記地形又は構造物の三次元データを入力する入力手段と、
前記入力された三次元データを記録する記録手段と、
請求項1ないし8のいずれかに記載の三次元図形演算プログラムを記憶する記憶手段と、
前記記憶手段に記憶された三次元図形演算プログラムを実行して、前記地形又は構造物の三次元データに基づき前記合成画面を生成する制御手段と、
前記生成された合成画面を表示する表示手段と、
を備えたことを特徴とする景観検討装置。
【請求項11】
前記地形又は構造物の撮像データを取得する撮像手段と、
該撮像手段により取得された撮像データを受信するための通信インタフェースと、をさらに備えたことを特徴とする請求項10に記載の景観検討装置。
【請求項1】
三次元空間における複数の三次元図形の相貫関係を分析し、相互に重なり合う部分を除去して各三次元図形を合成表示する三次元図形演算プログラムであって、
前記各三次元図形を、面の集合である多面体に近似した形状に表現する第1ステップと、
前記第1ステップにおいて多面体に近似した形状に表現された各三次元図形において、一の三次元図形を構成するすべての面に関する、他の三次元図形を構成するすべての面の相貫関係を分析する第2ステップと、
前記第2ステップにおける面同士の相貫関係の分析結果に基づき、一の三次元図形を構成する各面において、他の三次元図形と重なり合い裏側となる部分を除去する第3ステップと、
前記第3ステップにおいて除去されなかった部分を有する面からなる三次元図形同士を合成して表示する第4ステップと、
をコンピュータに実行させることを特徴とする三次元図形演算プログラム。
【請求項2】
前記第2ステップにおける面同士の相貫関係の分析は、一の三次元図形を構成する各面と、他の三次元図形を構成する各面との切欠き状態に基づいて行われ、
一の面による切欠きが、他の面の辺または頂点から始まり、かつ他の面の内部で終わる場合の処理を行う切込みステップと、
一の面による切欠きが、他の面の内部から始まり、かつ他の面の辺または頂点で終わる場合の処理を行う切抜けステップと、
一の面による切欠きが、他の面の内部から始まり、かつ他の面の内部で終わる場合の処理を行う切入れステップと、
一の面による切欠きにより、他の面が複数の断片に分割される場合に、分割後の複数の各断片の分割面に関する表裏を確定する切分けステップと、
をさらに有することを特徴とする請求項1記載の三次元図形演算プログラム。
【請求項3】
前記第1ステップにおいて多面体に近似した形状に表現された三次元図形の各面のうち、面内部に穴を有する面について、前記穴を構成するいずれかの頂点と、この穴を有する面を構成するいずれかの頂点とを仮想線で接続するサブステップをさらに有する
ことを特徴とする請求項2記載の三次元図形演算プログラム。
【請求項4】
前記切入れステップにおいて、面内部に面積のない線状の切れ目が生じた面について、前記切れ目の一端と、この切れ目が生じた面を構成するいずれかの頂点とを仮想線で接続するサブステップをさらに有する
ことを特徴とする請求項2または3に記載の三次元図形演算プログラム。
【請求項5】
前記仮想線を有する面について、前記第2ステップにおいて他の面による新たな切欠きが生じた場合、この新たな切欠きの発生状況に応じて、前記仮想線の削除もしくは接続先の変更を行うサブステップをさらに有する
ことを特徴とする請求項3または4に記載の三次元図形演算プログラム。
【請求項6】
前記第4ステップにおける合成表示に際し、前記仮想線を非表示に設定可能であることを特徴とする請求項3ないし5のいずれかに記載の三次元図形演算プログラム。
【請求項7】
前記第1ステップにおいて多面体に近似した形状に表現された三次元図形の各面が、前記第2ステップ以降の処理を適用する対象として正常であるか異常であるかを判定し、異常と判定された面に対して修正を行うサブステップをさらに有する
ことを特徴とする請求項1ないし6のいずれかに記載の三次元図形演算プログラム。
【請求項8】
前記第2ステップにおける面同士の相貫関係の分析の結果、分析エラーとなった面の組み合わせをエラーログとして記録手段に記録するサブステップをさらに有する
ことを特徴とする請求項1ないし7のいずれかに記載の三次元図形演算プログラム。
【請求項9】
メモリ上にロードして実行されるダイナミックリンクライブラリであって、請求項1ないし8のいずれかに記載の三次元図形演算プログラムを含んでいることを特徴とするダイナミックリンクライブラリ。
【請求項10】
地形又は構造物の三次元データを解析し、三次元空間における前記地形又は構造物の合成画面を表示して景観のシミュレーション及び検討を行う景観検討装置であって、
前記地形又は構造物の三次元データを入力する入力手段と、
前記入力された三次元データを記録する記録手段と、
請求項1ないし8のいずれかに記載の三次元図形演算プログラムを記憶する記憶手段と、
前記記憶手段に記憶された三次元図形演算プログラムを実行して、前記地形又は構造物の三次元データに基づき前記合成画面を生成する制御手段と、
前記生成された合成画面を表示する表示手段と、
を備えたことを特徴とする景観検討装置。
【請求項11】
前記地形又は構造物の撮像データを取得する撮像手段と、
該撮像手段により取得された撮像データを受信するための通信インタフェースと、をさらに備えたことを特徴とする請求項10に記載の景観検討装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6A】
【図6B】
【図7】
【図8】
【図9】
【図10A】
【図10B】
【図11】
【図12A】
【図12B】
【図13】
【図14A】
【図14B】
【図15A】
【図15B】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6A】
【図6B】
【図7】
【図8】
【図9】
【図10A】
【図10B】
【図11】
【図12A】
【図12B】
【図13】
【図14A】
【図14B】
【図15A】
【図15B】
【図16】
【公開番号】特開2012−190213(P2012−190213A)
【公開日】平成24年10月4日(2012.10.4)
【国際特許分類】
【出願番号】特願2011−52466(P2011−52466)
【出願日】平成23年3月10日(2011.3.10)
【出願人】(501198039)国土交通省国土技術政策総合研究所長 (23)
【Fターム(参考)】
【公開日】平成24年10月4日(2012.10.4)
【国際特許分類】
【出願日】平成23年3月10日(2011.3.10)
【出願人】(501198039)国土交通省国土技術政策総合研究所長 (23)
【Fターム(参考)】
[ Back to top ]