(57)【特許請求の範囲】
【請求項１】
入力に応じて、３次元モデルの断面を特定し、
特定した前記断面に含まれる複数の線分それぞれにおいて線分上を所定の立体の中心が位置する状態で移動させ、前記所定の立体を移動させた際の、前記所定の立体と前記３次元モデルとの重複領域の体積を算出し、
前記複数の線分のうち、算出した前記重複領域の体積が最大である線分を特定し、
特定した前記線分における、前記所定の立体を移動させた際の、前記所定の立体と前記３次元モデルとの重複領域の体積の変化に応じて、前記線分に含まれる点から前記断面の中心点を判定し、出力する、
処理をコンピュータに実行させることを特徴とする中心判定プログラム。
【請求項２】
前記断面を特定する処理は、前記３次元モデルに含まれる複数の四面体のうち、前記３次元モデルの表面に含まれるいずれかの四面体が有する面の法線を特定し、特定した前記法線と、前記いずれかの四面体が有する面に含まれる辺とに基づく平面を特定し、特定した前記平面のうち前記３次元モデルと重複する面を前記断面として特定する処理である、ことを特徴とする請求項１に記載の中心判定プログラム。
【請求項３】
前記重複領域の体積を算出する処理は、前記所定の立体を移動させた際の、前記３次元モデルに含まれる複数の四面体のうちの前記所定の立体に内包される四面体の体積の和を前記重複領域の体積として算出する処理である、ことを特徴とする請求項１または２に記載の中心判定プログラム。
【請求項４】
前記断面の中心点を判定する処理は、特定した前記線分に含まれる各点のうち算出した前記重複領域の体積が最大となる点を前記中心点として判定する処理である、ことを特徴とする請求項１〜３のいずれか一項に記載の中心判定プログラム。
【請求項５】
入力に応じて特定された前記３次元モデルの複数の断面の各々について判定した前記中心点を結ぶ中心軸を特定する、ことを特徴とする請求項１〜４のいずれか一項に記載の中心判定プログラム。
【請求項６】
前記所定の立体は、球体である、ことを特徴とする請求項１〜５のいずれか一項に記載の中心判定プログラム。
【請求項７】
前記球体の直径は、前記複数の線分のそれぞれの長さのうちの最大の長さに基づく値である、ことを特徴とする請求項６に記載の中心判定プログラム。
【請求項８】
入力に応じて、３次元モデルの断面を特定し、
前記３次元モデルの表面に含まれ、かつ特定した前記断面上の点と、前記３次元モデルの表面に含まれ、かつ特定した前記断面上の複数の点それぞれとを結ぶ複数の線分を特定し、
特定した前記複数の線分のそれぞれに含まれる複数の点において、所定の立体の中心が前記複数の線分のそれぞれに含まれる複数の点それぞれに一致する位置に、前記所定の立体を配置した際の前記所定の立体と前記３次元モデルとの重複領域の体積を算出し、
前記複数の線分のうち、前記複数の線分それぞれに含まれる複数の点における前記所定の立体と前記３次元モデルとの重複領域の体積の和が最大の線分を特定し、
特定した前記線分に含まれる複数の点における前記所定の立体と前記３次元モデルとの重複領域の体積に基づいて、前記断面の中心点を判定する、
処理をコンピュータに実行させることを特徴とする中心判定プログラム。
【請求項９】
入力に応じて、３次元モデルの断面を特定し、
特定した前記断面に含まれる複数の線分それぞれにおいて線分上を所定の立体の中心が位置する状態で移動させ、前記所定の立体を移動させた際の、前記所定の立体と前記３次元モデルとの重複領域の体積を算出し、
前記複数の線分のうち、算出した前記重複領域の体積が最大である線分を特定し、
特定した前記線分における、前記所定の立体を移動させた際の、前記所定の立体と前記３次元モデルとの重複領域の体積の変化に応じて、前記線分に含まれる点から前記断面の中心点を判定し、出力する、
処理をコンピュータが実行することを特徴とする中心判定方法。
【請求項１０】
入力に応じて、３次元モデルの断面を特定し、
前記３次元モデルの表面に含まれ、かつ特定した前記断面上の点と、前記３次元モデルの表面に含まれ、かつ特定した前記断面上の複数の点それぞれとを結ぶ複数の線分を特定し、
特定した前記複数の線分のそれぞれに含まれる複数の点において、所定の立体の中心が前記複数の線分のそれぞれに含まれる複数の点それぞれに一致する位置に、前記所定の立体を配置した際の前記所定の立体と前記３次元モデルとの重複領域の体積を算出し、
前記複数の線分のうち、前記複数の線分それぞれに含まれる複数の点における前記所定の立体と前記３次元モデルとの重複領域の体積の和が最大の線分を特定し、
特定した前記線分に含まれる複数の点における前記所定の立体と前記３次元モデルとの重複領域の体積に基づいて、前記断面の中心点を判定する、
処理をコンピュータが実行することを特徴とする中心判定方法。
【請求項１１】
入力に応じて、３次元モデルの断面を特定し、特定した前記断面に含まれる複数の線分それぞれにおいて線分上を所定の立体の中心が位置する状態で移動させ、前記所定の立体を移動させた際の、前記所定の立体と前記３次元モデルとの重複領域の体積を算出し、前記複数の線分のうち、算出した前記重複領域の体積が最大である線分を特定し、特定した前記線分における、前記所定の立体を移動させた際の、前記所定の立体と前記３次元モデルとの重複領域の体積の変化に応じて、前記線分に含まれる点から前記断面の中心点を判定し、出力する、制御部、
を有することを特徴とする中心判定装置。
【請求項１２】
入力に応じて、３次元モデルの断面を特定し、前記３次元モデルの表面に含まれ、かつ特定した前記断面上の点と、前記３次元モデルの表面に含まれ、かつ特定した前記断面上の複数の点それぞれとを結ぶ複数の線分を特定し、特定した前記複数の線分のそれぞれに含まれる複数の点において、所定の立体の中心が前記複数の線分のそれぞれに含まれる複数の点それぞれに一致する位置に、前記所定の立体を配置した際の前記所定の立体と前記３次元モデルとの重複領域の体積を算出し、前記複数の線分のうち、前記複数の線分それぞれに含まれる複数の点における前記所定の立体と前記３次元モデルとの重複領域の体積の和が最大の線分を特定し、特定した前記線分に含まれる複数の点における前記所定の立体と前記３次元モデルとの重複領域の体積に基づいて、前記断面の中心点を判定する、制御部、
を有することを特徴とする中心判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中心判定プログラム、中心判定方法、および中心判定装置に関する。
【背景技術】
【０００２】
従来、流体解析等の数値解析を行う技術がある。数値解析を行うためには、ＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）によって作成されたモデルに対して要素分割などが行われ、解析用の３次元モデルが作成される。
【０００３】
先行技術としては、円柱外の複数の点からそれぞれ２通りの接平面とその法線ベクトルおよび２等分平面を設定し、すべての２等分平面の交線またはそれに最も近い直線である円柱中心軸の位置および向きを算出し、円柱中心軸と接平面との距離として円柱の径を算出する技術がある（例えば、以下特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−０５１６３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来、解析モデルは複数の要素で表されるため、解析モデルには中心に関する中心情報がないという問題点がある。例えば、管などを流れる流体を解析する際に管の中心に関する中心情報が用いられる。中心情報がないと、解析者が手作業によって中心情報を作成するなど解析者の手間がかかる。
【０００６】
１つの側面では、本発明は、中心情報がない解析モデルの断面の中心を判定できる中心判定プログラム、中心判定方法、および中心判定装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、入力に応じて、３次元モデルの断面を特定し、特定した前記断面に含まれる複数の線分それぞれにおいて線分上を所定の立体の中心が位置する状態で移動させ、前記所定の立体を移動させた際の、前記所定の立体と前記３次元モデルとの重複領域の体積を算出し、前記複数の線分のうち、算出した前記重複領域の体積が最大である線分を特定し、特定した前記線分における、前記所定の立体を移動させた際の、前記所定の立体と前記３次元モデルとの重複領域の体積の変化に応じて、前記線分に含まれる点から前記断面の中心点を判定し、出力する中心判定プログラム、中心判定方法、および中心判定装置が提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、中心情報がない解析モデルの断面の中心を判定できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、中心判定装置の一動作例を示す説明図である。
【図２】図２は、中心判定装置のハードウェア構成例を示す説明図である。
【図３】図３は、中心判定装置の機能的構成例を示すブロック図である。
【図４】図４は、ＣＡＤデータによる立体モデルと解析モデルデータによる解析モデル例を示す説明図である。
【図５】図５は、解析モデルデータのデータ構成例を示す説明図である。
【図６】図６は、テトラ選択による法線および３次元モデル４０１の断面の決定例を示す説明図である。
【図７】図７は、断面が得られない例を示す説明図である。
【図８】図８は、複数の線分を引いた例（その１）を示す説明図である。
【図９】図９は、球体の直径の算出例を示す説明図である。
【図１０】図１０は、球体の移動例を示す説明図である。
【図１１】図１１は、体積の算出例を示す説明図である。
【図１２】図１２は、線分における体積の変化例を示す説明図である。
【図１３】図１３は、断面の中心点を得る例を示す説明図である。
【図１４】図１４は、複数の線分を引いた例（その２）を示す説明図である。
【図１５】図１５は、管の中心軸を求める例を示す説明図である。
【図１６】図１６は、中心判定装置による中心判定処理手順例を示すフローチャートである。
【図１７】図１７は、中心判定装置による断面の特定処理手順例を示すフローチャートである。
【図１８】図１８は、中心判定装置による体積の算出処理手順例を示すフローチャートである。
【図１９】図１９は、中心点の特定処理手順例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかる中心判定プログラム、中心判定方法、および中心判定装置の実施の形態を詳細に説明する。
【００１１】
図１は、中心判定装置の一動作例を示す説明図である。中心判定装置１００は、管などの３次元モデル１０１の断面１０２の中心を判定するコンピュータである。３次元モデル１０１は、解析対象の物体や人体を近似させることにより数値解析が可能な状態にしたものであり、シミュレーション空間上に配置されるものである。
【００１２】
シミュレーション空間とは、解析対象の物理的な物体や人体の内部とその物体や人体の外部の空間とを含む解析領域をコンピュータ上に表すために設定された空間である。解析対象モデルは、シミュレーション空間上に模擬された物体や人体を細かな小領域である要素に分割し、要素の集まりとして全体の解析対象の物体や人体の形状を表す。要素の形状としては、例えば、四面体、五面体、六面体などが挙げられる。本実施の形態では、要素の形状として四面体を例に挙げ、要素をテトラとも称する。シミュレーション空間には、例えば、ｘ軸とｙ軸とｚ軸とを有する３次元の直交座標系が定義される。
【００１３】
従来、解析モデルは複数の要素で表されるため、解析モデルには中心に関する中心情報がないという問題点がある。例えば、管などを流れる流体の解析を行うために、管の中心に関する中心情報が用いられる。しかし、３次元の形状を表すＣＡＤデータにおいて中心に関する情報があれば流用可能な場合もあるが、ＣＡＤデータにも中心に関する中心情報がない場合がある。流体の解析を行う前に解析者などの利用者が手動で管の中心を判定して中心情報を作成しなければならないため、利用者の手間がかかる。
【００１４】
そこで、本実施の形態では、中心判定装置１００は、解析モデルの断面１０２上の各線分について線分上の各位置に立体の中心を配置した場合の該立体と該モデルとの重複領域の体積に基づいて、当該各位置から断面１０２の中心点を特定する。これにより、中心情報がない解析モデルの断面１０２の中心を判定できる。そして、中心情報を簡単に得られるため、利用者の手間を省くことができる。図１の例では、３次元モデル１０１は管を表すモデルである。ここでは、３次元モデル１０１は円柱であるが、管は円柱であるとも限らないため、利用者が中心を判定することは困難である。
【００１５】
まず、中心判定装置１００は、入力に応じて、３次元モデル１０１の断面１０２を特定する。中心判定装置１００は、例えば、利用者の操作によっていずれの範囲を解析対象とするかの指定を受け付けてもよい。また、中心判定装置１００は、例えば、利用者の操作によって指定された高さにある３次元モデル１０１の断面１０２を特定する。
【００１６】
つぎに、中心判定装置１００は、特定した断面１０２に含まれる複数の線分のそれぞれにおいて線分上を所定の立体の中心が位置する状態で所定の立体を移動させる。図１の例では所定の立体は球体ｂである。図１の例では、断面１０２に含まれる複数の線分は線分ｅ１〜ｅ５である。
【００１７】
つぎに、中心判定装置１００は、球体ｂを移動させた際の、球体ｂと３次元モデル１０１との重複領域の体積を算出する。中心判定装置１００は、球体ｂを移動させる移動間隔は利用者の操作に応じた入力によって決定してもよい。図１の例では、中心判定装置１００は、線分ｅ２の点ｐ２１〜ｐ２５のそれぞれに球体ｂを配置した際の、球体ｂと３次元モデル１０１との重複領域の体積を算出する。また、図１の例では、中心判定装置１００は、線分ｅ３の点ｐ３１〜ｐ３６のそれぞれに球体ｂを配置した際の、球体ｂと３次元モデル１０１との重複領域の体積を算出する。
【００１８】
中心判定装置１００は、複数の線分のうち、算出した重複領域の体積が最大である線分を特定する。図１の例では、算出した重複領域の体積が最大である線分は線分ｅ３である。
【００１９】
そして、中心判定装置１００は、特定した線分における、球体ｂを移動させた際の、球体ｂと３次元モデル１０１との重複領域の体積の変化に応じて、線分に含まれる点から断面１０２の中心点を判定する。中心判定装置１００は、特定した線分ｅ３の各点のうち、算出した体積が最も大きい点ｐ３４を中心点とする。つぎに、中心判定装置１００は、中心点を出力する。中心判定装置１００は、例えば、ディスプレイなどに３次元モデル１０１と断面１０２と中心点とを表示する。これにより、中心情報がない解析モデルの断面１０２の中心を判定できる。
【００２０】
（中心判定装置１００のハードウェア構成例）
図２は、中心判定装置のハードウェア構成例を示す説明図である。中心判定装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、ディスクドライブ２０４と、ディスク２０５と、を有する。中心判定装置１００は、Ｉ／Ｆ（Ｉｎｔｅｒ／Ｆａｃｅ）２０６と、キーボード２０７と、マウス２０８と、ディスプレイ２０９と、を有する。また、ＣＰＵ２０１と、ＲＯＭ２０２と、ＲＡＭ２０３と、ディスクドライブ２０４と、Ｉ／Ｆ２０６と、キーボード２０７と、マウス２０８と、ディスプレイ２０９とは、バス２００によってそれぞれ接続される。
【００２１】
ここで、ＣＰＵ２０１は、中心判定装置１００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶する。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがってディスク２０５に対するデータのリード／ライトを制御する。ディスク２０５は、ディスクドライブ２０４の制御で書き込まれたデータを記憶する。ディスク２０５としては、磁気ディスク、光ディスクなどが挙げられる。
【００２２】
Ｉ／Ｆ２０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１０に接続され、このネットワーク２１０を介して他の装置に接続される。そして、Ｉ／Ｆ２０６は、ネットワーク２１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０６には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００２３】
キーボード２０７やマウス２０８は、利用者の操作により、各種データの入力を受け付けるインターフェースである。ディスプレイ２０９は、ＣＰＵ２０１の指示により、データを出力するインターフェースである。
【００２４】
また、図示を省略するが、中心判定装置１００には、カメラから画像や動画を取り込む入力装置やマイクから音声を取り込む入力装置が設けられていてもよい。また、図示を省略するが、中心判定装置１００には、プリンタなどの出力装置が設けられていてもよい。
【００２５】
また、本実施の形態では、中心判定装置１００のハードウェア構成として、パーソナル・コンピュータを例に挙げているが、これに限らず、サーバなどであってもよい。中心判定装置１００がサーバである場合、中心判定装置１００と利用者の操作可能な装置やディスプレイ２０９などがネットワーク２１０を介して接続されてもよい。
【００２６】
（中心判定装置１００の機能的構成例）
図３は、中心判定装置の機能的構成例を示すブロック図である。中心判定装置１００は、受付部３０１と、断面作成部３０２と、線分作成部３０３と、直径決定部３０４と、移動部３０５と、算出部３０６と、第１特定部３０７と、第２特定部３０８と、判定部３０９と、第３特定部３１０と、出力部３１１と、を有する。受付部３０１から出力部３１１までの制御部の処理は、例えば、図２に示すＣＰＵ２０１がアクセス可能なＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムにコーディングされている。そして、ＣＰＵ２０１が記憶装置から該プログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部の処理が実現される。また、制御部の処理結果は、例えば、ＲＡＭ２０３、ＲＯＭ２０２、ディスク２０５などの記憶装置に記憶される。
【００２７】
各部において、線分、平面、断面、点、球体、中心軸などを作成する処理は、実際の空間に作成するのではなく、シミュレーション空間に作成する。シミュレーション空間に作成するとは、解析モデルデータやＣＡＤデータにおいて線分、平面、断面、点、球体、中心軸を表す情報を生成することに相当する。
【００２８】
図４は、ＣＡＤデータによる立体モデルと解析モデルデータによる解析モデル例を示す説明図である。立体モデル４００は、物体や人体をポリゴンで表した３次元形状のモデルである。立体モデル４００は、ＣＡＤデータによって表される。ＣＡＤデータは、ＣＡＤを用いて作成される。
【００２９】
３次元モデル４０１は、物体や人体の形状を複数のメッシュに分割することによって表した３次元形状のモデルである。３次元モデル４０１は、解析モデルデータによって表される。解析モデルデータは、ＣＡＥ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｅｎｇｉｎｅｅｒｉｎｇ）を用いて立体モデル４００に対してメッシュ分割を行うことにより作成される。本実施の形態では、解析対象の物体が管であるため、３次元モデル４０１を管とも称する。
【００３０】
図５は、解析モデルデータのデータ構成例を示す説明図である。解析モデルデータ５００は、テトラＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）、節点ＩＤ、各座標などを表す情報を有する。図５には、１つのテトラを示す。テトラのＩＤが「１００００」である。
【００３１】
解析モデルデータ５００は、テトラデータ５０１と、節点データ５１０と、を有する。図５（１）に示すように、テトラデータ５０１は、テトラＩＤ、４つの節点ＩＤのフィールドを有する。テトラデータ５０１には、各フィールドに情報が設定されることによりレコード（５０２−１など）として記憶される。テトラＩＤのフィールドには、テトラの識別情報であるテトラＩＤが設定される。
【００３２】
テトラＩＤ「１００００」を例に挙げると、節点ＩＤが「４００００」〜「４０００３」である。
【００３３】
図５（２）に示すように、節点データ５１０は、節点の位置情報を表す。節点データ５１０は、節点ＩＤ、ｘ座標、ｙ座標、ｚ座標のフィールドを有する。各フィールドに情報が設定されることによりレコード（５１１−１など）として記憶される。節点ＩＤのフィールドには、節点の識別情報である節点ＩＤが設定される。ｘ座標のフィールドには、節点のｘ座標値が設定される。ｙ座標のフィールドには、節点のｙ座標値が設定される。ｚ座標のフィールドには、節点のｚ座標値が設定される。
【００３４】
図３に示す受付部３０１は、利用者の操作によって３次元モデル４０１の入口と出口の指定を受け付ける。受付部３０１は、ディスプレイ２０９などに表示された３次元モデル４０１において３次元モデル４０１の入口と出口の指定を、マウス２０８やキーボード２０７などの操作入力によって受け付ける。
【００３５】
図６は、テトラ選択による法線および３次元モデル４０１の断面の決定例を示す説明図である。断面作成部３０２は、３次元モデル４０１表面に含まれるテトラからいずれかのテトラを選択する。図６の例では、断面作成部３０２はテトラｔａを選択する。
【００３６】
断面作成部３０２は、選択したテトラｔａの底面から、管の内部方向に法線を生成する。つぎに、断面作成部３０２は、選択したテトラｔａの底面のうちのいずれかの辺を選択する。そして、断面作成部３０２は、選択された一辺と、法線と、に基づいて、平面６００を作成する。つづいて、断面作成部３０２は、作成した平面６００と３次元モデル４０１との重複部分を断面６０１として作成する。
【００３７】
図７は、断面が得られない例を示す説明図である。図７に示すように、作成された平面７００が３次元モデル４０１の入口７０１または出口７０２である端面と交わる場合、３次元モデル４０１の断面が得られない。
【００３８】
そこで、断面作成部３０２は、平面を作成後に、作成した平面が３次元モデル４０１の入口７０１または出口７０２である端面と交わるか否かを判断する。そして、断面作成部３０２は、作成した平面が端面と交わらない場合、図６を用いて説明したように断面を作成する。
【００３９】
断面作成部３０２は、作成した平面が端面と交わると判断した場合、選択したテトラｔａの底面のうちの未選択の辺を新たに選択する。つぎに、断面作成部３０２は、図６で説明したように、選択した辺と法線とに基づいて平面を作成する。そして、断面作成部３０２は、作成した平面と３次元モデル４０１との重複部分を断面として作成する。
【００４０】
つぎに、線分作成部３０３は、作成された断面上において、法線の始点または断面上のいずれかの点を基準として、断面上に複数の線分を作成する。ここでは、法線の始点を基準とする例を挙げる。基準とするとは、例えば、法線の始点を各線分の始点とすることを示す。複数の線分を作成する際に法線の始点を使用することにより新たに線分の始点を求めるための時間が不要となるため、処理時間の短縮化を図ることができる。
【００４１】
線分作成部３０３は、始点からランダムに複数の線分を作成する。または、線分作成部３０３は、法線の始点を基準として、法線とある角度を成す線分を断面上に複数作成する。線分作成部３０３は、例えば、法線と２５度を成す線分を作成する。そして、線分作成部３０３は、法線と５０度を成す線分を作成する。さらに、線分作成部３０３は、法線と７５度を成す線分を作成する。このように、線分作成部３０３は、角度を順に大きくして複数の線分を作成してもよい。
【００４２】
図８は、複数の線分を引いた例（その１）を示す説明図である。図８に示すように、法線は３次元モデル４０１である管の表面に対して垂直になるとは限らないため、法線とある角度を成す線分を作成することにより管の中心軸に近くなる線分を作成することができる。
【００４３】
図８の例では、線分作成部３０３が、作成された断面上において、法線の始点を始点として断面上に複数の線分ｅ１〜ｅ５を作成する。線分ｅ２は法線である。
【００４４】
つぎに、移動部３０５は、特定した断面に含まれる複数の線分のそれぞれにおいて線分上を所定の立体の中心が位置する状態で所定の立体を移動させる。そして、算出部３０６は、所定の立体を移動させた際の、所定の立体と３次元モデル４０１との重複領域の体積を算出する。所定の立体が球体や多面体などであると、所定の立体の中心から所定の表面の距離が均等であるほど、最終的に得られる中心点が正確である可能性が高くなる。例えば、正多面体であると、面数が多いほど、最終的な中心点の精度の向上を図ることができる。また、所定の立体が球体であると、移動部３０５は、中心と半径の情報によって簡単にシミュレーション空間に球体を生成することができる。このため、計算時間の短縮化を図ることができる。
【００４５】
本実施の形態では、所定の立体を球体として説明する。図８には、各線分について、球体が配置された例を示す。ここで、移動部３０５によって移動させる球体の直径について説明する。例えば、球体は少なくともテトラ単体よりも大きくなければならない。このため、直径決定部３０４は、球体の直径を選択されたテトラの１０倍程度のように設定してもよい。
【００４６】
また、直径決定部３０４は、球体の直径を、複数の線分のそれぞれの長さのうちの最大の長さに基づく値に決定する。最大の長さに基づく値とは、最大の長さそのものであったり、最大の長さにマージンを加算または減算した値である。図９に球体の直径の算出例を示す。
【００４７】
図９は、球体の直径の算出例を示す説明図である。直径決定部３０４は、複数の線分の各々について線分の長さを算出する。線分の長さを算出する処理は３次元のベクトルの長さを求める処理と同じである。例えば、直径決定部３０４は、複数の線分の各々について、線分の始点と、線分と３次元モデル４０１の表面との交点と、の距離を算出する。図９には、線分ｅ３の長さＤ３の算出式を示す。
【００４８】
そして、直径決定部３０４は、算出した長さＤ１からＤ５のうち最大の長さＤ３を球体９００の直径に決定する。例えば、球体９００の直径が小さすぎると、球体９００を線分の各位置に移動させた際に球体９００と３次元モデル４０１との重複領域の体積が最大となる位置の数が多くなってしまう。また、球体９００の直径が断面よりも大きすぎると、球体９００を線分の各位置に移動させた際に球体９００と３次元モデル４０１との重複領域の体積が最大となる位置の数が多くなってしまう。そこで、各線分の長さのうちの最大の長さを球体９００の直径とすることにより、球体９００が断面の線分の方向について全体を含むことが可能となり、球体９００と管との重複領域の体積が最大となる位置の数を少なくすることができる。したがって、中心点を求める精度の向上を図ることができる。
【００４９】
つぎに、移動部３０５は、複数の線分の各々について、線分上を球体９００の中心が位置する状態で移動させる。移動間隔は、例えば、３次元モデル４０１の表面に含まれ選択されたテトラに含まれる辺の長さ程度であってもよい。
【００５０】
図１０は、球体の移動例を示す説明図である。線分ｅ３を例に挙げると、移動部３０５は、線分ｅ３の始点ｓ１から終点ｓｎに球体９００の中心が順に位置するように移動させる。算出部３０６は、球体９００を移動させた際の、球体９００と３次元モデル４０１との重複領域の体積を算出する。
【００５１】
図１１は、体積の算出例を示す説明図である。算出部３０６は、体積を算出するために、球体９００と３次元モデル４０１との重複領域を特定する。例えば、算出部３０６は、３次元モデル４０１に含まれるテトラのうち球体９００に包含されるテトラを重複領域として特定する。図１１の例では、算出部３０６が、「テトラｔ１、ｔ２、ｔ３、ｔ４，ｔ５・・・」などのように球体９００に内包されるテトラを特定する。そして、算出部３０６は、特定されたテトラの体積の合計値を重複領域の体積として算出する。図１１の例では、算出部３０６は、「テトラｔ１、ｔ２、ｔ３、ｔ４，ｔ５・・・」の体積の和を重複領域の体積として算出する。
【００５２】
つぎに、図３に示す第１特定部３０７は、複数の線分のうち、算出した重複領域の体積が最大である線分を特定する。第１特定部３０７は、最も大きい体積が同一の線分が複数ある場合、最も大きい体積が算出された線分のうち、最も大きい体積が算出された移動点の数が最も多い線分を特定する。各線分について複数の移動点における体積が算出されるため、第１特定部３０７は、より多くの移動点において最大の体積となる線分を特定することにより、中心点を得るための精度の向上を図ることができる。
【００５３】
図１２は、線分における体積の変化例を示す説明図である。図１２には、２つの線分についての各移動点における体積のグラフを示す。グラフ１２００とグラフ１２０１とは、線分の始点から終点までの間の各移動に球体９００の中心を移動させた場合における球体９００に内包されるテトラの体積の和を示す。グラフ１２００によって表される線分の各移動点における体積と、グラフ１２０１によって表される線分の各移動点における体積と、において、最大体積は同じである。このような場合、第１特定部３０７は、体積にピークがなく最大体積である移動点が多く存在するような線分を選択する。
【００５４】
第２特定部３０８は、第１特定部３０７によって特定された線分についての体積の変化に基づいて球体９００の中心点を特定する。
【００５５】
グラフ１２００のように体積のピークがある場合には、第２特定部３０８は、体積のピークである球体９００の中心点を特定する。グラフ１２０１のように体積のピークがない場合には、第２特定部３０８は、体積が最大値となる各球体９００の中心点のうちの中央に位置する中心点を特定する。
【００５６】
判定部３０９は、第２特定部３０８によって特定された球体９００の中心点に基づいて、断面の中心点を決定する。
【００５７】
図１３は、断面の中心点を得る例を示す説明図である。判定部３０９は、例えば、第２特定部３０８によって特定された球体９００の中心点の最近傍のテトラの節点を断面の中心点に決定する。図１３の例では、特定された球体９００の中心点と最近傍のテトラの節点とが一致している。
【００５８】
そして、出力部３１１は、断面の中心点を出力する。出力部３１１は、例えば、ディスプレイ２０９などに３次元モデル４０１に合わせて断面の中心点を表示する。また、出力部３１１は、例えば、中心軸を表す情報をＲＡＭ２０３やディスク２０５などの記憶装置に格納する。
【００５９】
以上の例では、図３に示す線分作成部３０３は、複数の線分を作成する際に、線分の始点を法線の始点としたが、これに限らず、断面上に位置するいずれかの点であってもよい。また、線分作成部３０３は、複数の線分を作成する際に、線分の始点を１個所としたが、複数の始点から複数の線分を作成してもよい。
【００６０】
図１４は、複数の線分を引いた例（その２）を示す説明図である。線分作成部３０３は、３次元モデル４０１の表面に含まれ、かつ特定した断面上の点と、３次元モデル４０１の表面に含まれ、かつ特定した断面上の複数の点それぞれとを結ぶ複数の線分を特定する。
【００６１】
３次元モデル４０１の表面に含まれ、かつ断面上の点は、例えば、線分の始点となる。始点は、断面上から無作為に選択されてもよい。また、図１４（１−１）や図１４（２−１）に示すように、様々な方向から線分を作成可能なように、線分作成部３０３は、始点ｓｔ１と始点ｓｔ２のように始点を複数選択してもよい。
【００６２】
また、３次元モデル４０１の表面に含まれ、かつ特定した断面上の複数の点は、例えば、線分の終点となる。複数の終点は、断面上から無作為に選択されてもよい。また、図１４（１−１）や図１４（２−１）に示すように、線分作成部３０３は、断面において互いに離れた位置にある複数の終点を選択してもよい。
【００６３】
図１４（１−１）の例では、線分作成部３０３が、始点ｓｔ１に対して終点ｅｄ１１〜ｅｄ１６を選択する。線分作成部３０３は、始点ｓｔ１と、終点ｅｄ１１〜ｅｄ１６のそれぞれと、を結ぶ複数の線分ｅ１１〜ｅ１６を特定する。
【００６４】
また、図１４（２−１）の例では、線分作成部３０３が、始点ｓｔ２に対して終点ｅｄ２１〜ｅｄ２５を選択する。線分作成部３０３は、始点ｓｔ２と、終点ｅｄ２１〜ｅｄ２５のそれぞれと、を結ぶ複数の線分ｅ２１〜ｅ２５を特定する。
【００６５】
つぎに、移動部３０５は、複数の線分のそれぞれに含まれる複数の点において、球体９００の中心が複数の線分のそれぞれに含まれる複数の点それぞれに一致する位置に、球体９００を配置する。図１４（１−２）の例では、移動部３０５は、線分ｅ１４に含まれる始点ｓｔ１，点ｐ１１〜ｐ１４，終点ｅｄ１４などのそれぞれに一致する位置に、球体９００を配置する。また、図１４（２−２）の例では、移動部３０５は、線分ｅ２３に含まれる始点ｓｔ２，点ｐ２１〜ｐ２４，終点ｅｄ２３などのそれぞれに一致する位置に、球体９００を配置する。
【００６６】
そして、算出部３０６は、球体９００を配置した際の球体９００と３次元モデル４０１との重複領域の体積を算出する。そして、第１特定部３０７は、複数の線分のうち、複数の線分それぞれに含まれる複数の点における球体９００と３次元モデル４０１との重複領域の体積の和が最大の線分を特定する。つぎに、判定部３０９は、特定した線分に含まれる複数の点における球体９００と３次元モデル４０１との重複領域の体積に基づいて、断面の中心点を判定する。
【００６７】
以上、管を表す３次元モデル４０１から断面を１つ特定して断面についての中心点を求める例を挙げたが、中心判定装置１００は、複数の断面の各々について中心点を求めることにより３次元モデル４０１の中心軸を求めてもよい。
【００６８】
図１５は、管の中心軸を求める例を示す説明図である。断面作成部３０２は、管を表す３次元モデル４０１の表面に含まれるテトラから、高さの異なる複数のテトラを選択する。求める断面の数については、利用者の操作によって受け付けてもよい。例えば、受付部３０１は、利用者の操作によって３次元モデル４０１の入口７０１と出口７０２の指定を受け付ける際に、断面の数の指定を受け付ける。また、断面間の間隔や各断面の高さについても利用者の操作によって受け付けてもよい。例えば、受付部３０１は、利用者の操作によって３次元モデル４０１の入口７０１と出口７０２の指定を受け付ける際に、断面間の間隔や各断面の高さの指定を受け付ける。
【００６９】
例えば、断面作成部３０２は、３次元モデル４０１の表面に含まれるテトラから、高さの異なる指定数のテトラを選択する。図１５の例では、断面の数は４つである。そして、断面作成部３０２は、選択した各テトラについて、テトラに含まれる辺を選択する。これにより、図１５に示すように、４辺が選択され、４つの断面１５０１〜１５０４が特定される。図１５に示すように、管の表面に含まれる四面体は滑らかに接続されていないため、各断面は３次元モデル４０１である管の表面に対して垂直とは限らない。
【００７０】
そして、上述した各部の処理によって各断面について中心点が特定される。断面１５０１については中心点１５１１が特定される。断面１５０２については中心点１５１２が特定される。断面１５０３については中心点１５１３が特定される。断面１５０４については中心点１５１４が特定される。
【００７１】
そして、判定部３０９は、例えば、各断面の中心点を通過する軸を３次元モデル４０１の中心軸１５００として特定する。出力部３１１は、中心軸を出力する。出力部３１１は、例えば、ディスプレイ２０９などに３次元モデル４０１に合わせて中心軸を表示する。また、出力部３１１は、例えば、中心軸を表す情報をＲＡＭ２０３やディスク２０５などの記憶装置に格納する。
【００７２】
（中心判定装置１００による中心判定処理手順例）
図１６は、中心判定装置による中心判定処理手順例を示すフローチャートである。中心判定装置１００は、解析モデルデータ５００を取得する（ステップＳ１６０１）。つぎに、中心判定装置１００は、３次元モデルの管の入口７０１および出口０２の指定を受け付けて、解析モデルの入り口および出口を設定する（ステップＳ１６０２）。
【００７３】
そして、中心判定装置１００は、３次元モデル４０１の管表面に含まれるテトラからそれぞれ異なる高さにあるテトラを複数選択する（ステップＳ１６０３）。中心判定装置１００は、選択したテトラのうち未対象のテトラがあるか否かを判断する（ステップＳ１６０４）。未対象のテトラがあると判断された場合（ステップＳ１６０４：Ｙｅｓ）、中心判定装置１００は、複数のテトラのうち未対象のテトラを１つ対象として選択する（ステップＳ１６０５）。そして、中心判定装置１００は、断面の特定処理を行う（ステップＳ１６０６）。
【００７４】
つぎに、中心判定装置１００は、体積の算出処理を行う（ステップＳ１６０７）。そして、中心判定装置１００は、中心点の特定処理を行い（ステップＳ１６０８）、ステップＳ１６０４へ戻る。ステップＳ１６０４において、未対象のテトラがないと判断された場合（ステップＳ１６０４：Ｎｏ）、中心判定装置１００は、決定した各通過点を結ぶ３次元モデル４０１の中心軸を特定する（ステップＳ１６０９）。そして、中心判定装置１００は、特定した中心軸を出力し（ステップＳ１６１０）、一連の処理を終了する。
【００７５】
図１７は、中心判定装置による断面の特定処理手順例を示すフローチャートである。中心判定装置１００は、選択したテトラの底面から管内部方向の法線を特定する（ステップＳ１７０１）。つぎに、中心判定装置１００は、選択したテトラの底面のうちの未選択の辺を選択する（ステップＳ１７０２）。
【００７６】
つぎに、中心判定装置１００は、選択した辺と、特定した法線と、に基づき平面を生成する（ステップＳ１７０３）。そして、中心判定装置１００は、平面が３次元モデル４０１の端面と交わるか否かを判断する（ステップＳ１７０４）。端面は、入口７０１と出口７０２である。平面が３次元モデル４０１の端面と交わると判断された場合（ステップＳ１７０４：Ｙｅｓ）、中心判定装置１００は、ステップＳ１７０２へ戻る。平面が３次元モデル４０１の端面と交わらないと判断された場合（ステップＳ１７０４：Ｎｏ）、中心判定装置１００は、平面のうち３次元モデル４０１と重複する部分を３次元モデル４０１の管の断面として抽出し（ステップＳ１７０５）、一連の処理を終了する。
【００７７】
図１８は、中心判定装置による体積の算出処理手順例を示すフローチャートである。中心判定装置１００は、断面上において、法線の始点を基準に断面上に複数の線分を作成する（ステップＳ１８０１）。そして、中心判定装置１００は、複数の線分と管表面との交点の各々について、法線の始点との距離を算出する（ステップＳ１８０２）。つぎに、中心判定装置１００は、最も長い距離を球体９００の直径に決定する（ステップＳ１８０３）。
【００７８】
そして、中心判定装置１００は、複数の線分から未選択の線分を選択する（ステップＳ１８０４）。つぎに、中心判定装置１００は、選択した線分の始点に、決定した直径の球体９００の中心を配置した状態における球体９００と３次元モデル４０１との重複領域の体積を算出する（ステップＳ１８０５）。つづいて、中心判定装置１００は、線分上に球体９００の中心が位置する状態で終点の方向に所定の長さ移動させる（ステップＳ１８０６）。ここで、終点とは、線分の端点であり、始点と異なる点である。ステップＳ１８０６においては、中心判定装置１００は、線分上を終点の方向に球体９００の中心を移動させる。
【００７９】
つぎに、中心判定装置１００は、移動できたか否かを判断する（ステップＳ１８０７）。移動できない場合とは、現在の球体９００の中心を終点の方向に所定の長さ移動させると線分から外れてしまう場合である。移動できたと判断された場合（ステップＳ１８０７：Ｙｅｓ）、中心判定装置１００は、移動後の球体９００と３次元モデル４０１との重複領域の体積を算出し（ステップＳ１８０８）、ステップＳ１８０６へ戻る。
【００８０】
移動できないと判断された場合（ステップＳ１８０７：Ｎｏ）、中心判定装置１００は、未選択の線分があるか否かを判断する（ステップＳ１８０９）。未選択の線分があると判断された場合（ステップＳ１８０９：Ｙｅｓ）、中心判定装置１００は、ステップＳ１８０４へ戻る。一方、未選択の線分がないと判断された場合（ステップＳ１８０９：Ｎｏ）、中心判定装置１００は、一連の処理を終了する。
【００８１】
図１９は、中心点の特定処理手順例を示すフローチャートである。中心判定装置１００は、体積が最大の線分を特定する（ステップＳ１９０１）。つぎに、中心判定装置１００は、特定した線分についての体積の変化に基づき断面の中心点を特定する（ステップＳ１９０２）。つづいて、中心判定装置１００は、特定した中心点の近傍のテトラの節点を管中心軸の通過点に決定し（ステップＳ１９０３）、一連の処理を終了する。
【００８２】
以上説明したように、中心判定装置１００は、解析モデルの断面上の各線分について線分上の各位置に立体の中心を配置した場合の該立体と該モデルとの重複領域の体積に基づいて、当該各位置から断面の中心点を特定する。これにより、中心情報がない解析モデルの断面の中心を判定できる。そして、中心点が簡単に得られるため、利用者の手間を省くことができる。
【００８３】
また、中心判定装置１００は、複数の四面体のうち３次元モデル４０１の表面に含まれるいずれかの四面体が有する面の法線を特定し、特定した法線と面に含まれる辺とに基づく平面のうち、３次元モデル４０１と重複する面を断面として特定する。これにより、３次元モデル４０１の断面を簡単に特定することができ、計算時間の短縮化を図ることができる。
【００８４】
また、中心判定装置１００は、所定の立体を移動させた際の、３次元モデル４０１に含まれる複数の四面体のうちの所定の立体に内包される四面体の体積の和を重複領域の体積として算出する。これにより、３次元モデル４０１と所定の立体との重複領域の体積を簡単に算出することができ、計算時間の短縮化を図ることができる。
【００８５】
また、所定の立体と３次元モデル４０１とがより大きく重複した方が所定の立体の位置が３次元モデル４０１の断面の中心である可能性が高くなる。このため、中心判定装置１００は、特定した線分に含まれる各点のうち、算出した重複領域の体積が最大となる点を中心点として判定する。これにより、中心情報がない解析モデルの断面の中心が得られる精度の向上を図ることができる。
【００８６】
また、中心判定装置１００は、線分上で所定の立体を移動時に所定の立体と３次元モデル４０１との重複領域の体積が最大となる線分の点が複数ある場合、最大となる点のうちの中心の点を断面の中心点として判定する。これにより、中心情報がない解析モデルの断面の中心が得られる精度の向上を図ることができる。
【００８７】
また、中心判定装置１００は、複数の四面体に含まれる各節点のうち、算出した重複領域の体積が最大となる位置に最も近い節点を中心点として特定する。これにより、四面体の節点に中心を設定することができるため、解析に利用しやすくなる。
【００８８】
また、中心判定装置１００は、３次元モデル４０１の複数の断面の各々について特定した中心点に基づき中心軸を特定する。これにより、管などの中心軸を特定することが可能となり、利用者の手間を省くことができる。
【００８９】
また、所定の立体の中心から所定の表面の距離が均等であるほど、所定の立体が断面を均等に包含することができる。このため、中心判定装置１００は、所定の立体を球体９００とする。これにより、所定の立体の中心から所定の表面の距離が均等となる球体９００であれば、最終的に得られる中心点が正確である可能性が高くなる。
【００９０】
また、例えば、球体９００の直径が小さすぎると、球体９００を線分の各位置に移動させた際に球体９００と管との重複領域の体積が最大となる位置の数が多くなってしまう。また、球体９００の直径が断面よりも大きすぎると、球体９００を線分の各位置に移動させた際に球体９００と管との重複領域の体積が最大となる位置の数が多くなってしまう。そこで、中心判定装置１００は、球体９００の直径を、複数の線分のそれぞれの長さのうちの最大の長さに基づく値とする。これにより、球体９００が断面の線分の方向について全体を含むことが可能となり、球体９００と管との重複領域の体積が最大となる位置の数を少なくすることができる。したがって、中心点を求める精度の向上を図ることができる。
【００９１】
なお、本実施の形態で説明した中心判定方法は、予め用意された中心判定プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本中心判定プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、中心判定プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【００９２】
ｅ１〜ｅ５，ｅ１１〜ｅ１６，ｅ２１〜ｅ２５  線分
１００  中心判定装置
１０１，４０１  ３次元モデル
１０２，６０１，１５０１，１５０２，１５０３，１５０４  断面
３０１  受付部
３０２  断面作成部
３０３  線分作成部
３０４  直径決定部
３０５  移動部
３０６  算出部
３０７  第１特定部
３０８  第２特定部
３０９  判定部
３１０  第３特定部
３１１  出力部
５００  解析モデルデータ
６００，７００  平面
９００  球体
１５００  中心軸
１５１１，１５１２，１５１３，１５１４  中心点
ｔａ，ｔ１〜ｔ５  テトラ
【図１】
0006651978.tif 000002
【図２】
0006651978.tif 000003
【図３】
0006651978.tif 000004
【図４】
0006651978.tif 000005
【図５】
0006651978.tif 000006
【図６】
0006651978.tif 000007
【図７】
0006651978.tif 000008
【図８】
0006651978.tif 000009
【図９】
0006651978.tif 000010
【図１０】
0006651978.tif 000011
【図１１】
0006651978.tif 000012
【図１２】
0006651978.tif 000013
【図１３】
0006651978.tif 000014
【図１４】
0006651978.tif 000015
【図１５】
0006651978.tif 000016
【図１６】
0006651978.tif 000017
【図１７】
0006651978.tif 000018
【図１８】
0006651978.tif 000019
【図１９】
0006651978.tif 000020