【解決手段】物体のn(nは2以上の整数)次元形状が多角形の複数の面からなる多面体で表現された表面形状データを用いて任意の点が前記多面体の内側にあるか否かを判定する情報処理装置であって、前記複数の面のうち、前記格子点から垂線が引ける前記面である直交面を特定する特定部と、前記特定部により特定された前記直交面の重心位置から前記格子点への第1のベクトルと、当該直交面の法線ベクトルである第2のベクトルとのなす角を算出する算出部と、前記算出部が算出した前記なす角が90度以上であれば、前記格子点が前記多面体の内側にあると判定する第1判定部と、を備える。
物体のn(nは2以上の整数)次元形状が多角形の複数の面からなる多面体で表現された表面形状データを用いて任意の格子点が前記多面体の内側にあるか否かを判定する情報処理装置であって、
前記複数の面のうち、前記格子点から垂線が引ける前記面である直交面を特定する特定部と、
前記特定部により特定された前記直交面の重心位置から前記格子点への第1のベクトルと、当該直交面の法線ベクトルである第2のベクトルとのなす角を算出する算出部と、
前記算出部が算出した前記なす角が90度以上であれば、前記格子点が前記多面体の内側にあると判定する第1判定部と、
を備える情報処理装置。
【発明を実施するための形態】
【0012】
以下、本実施形態に係る情報処理装置を、図面を用いて説明する。
【0013】
図1は、本実施形態に係る情報処理装置1の概略構成の一例を示す図である。
本実施形態に係る情報処理装置1は、物体のn(nは2以上の整数)次元形状が多角形の複数の面からなる多面体で表現された表面形状データを用いて任意の点が当該多面体の内部にあるか否かを判定する内外判定処理を実行する。情報処理装置1は、例えば、コンピュータである。本実施形態では、nは3である。
【0014】
本実施形態に係る内外判定処理は、上記物体の周囲の流れ場を予測するCFD(Computational Fluid Dynamics:数値流体力学)解析を行う前に実行される。CFD解析処理は、モデル化された空間内を複数のメッシュ(以下、「計算格子」という。)に分割して、各計算格子点P上で方程式を解くことで上記空間に置かれた上記物体周囲の流れ場を予測する解析手法である。本実施形態に係る内外判定処理は、CFD解析処理を実施するにあたって、計算格子点Pが物体の内側か外側かを判定する処理を計算格子点Pごとに行うことであり、Crossing Number Algorithmとは異なる処理である。
情報処理装置1は、内外判定処理だけを実行してもよいし、内外判定処理及びCFD解析処理を実行してもよい。なお、CFD解析処理は、公知の技術であるため、詳細を省略する。
【0015】
なお、本実施形態の表面形状データは、上記物体のCADデータからSTL(Standard Triangulated Languageの略でStereolithographyとも呼ばれる)フォーマットで変換されたデータである。したがって、STLフォーマットで表現された物体は、小さな三角形(ボリゴン)の面(以下、「ポリゴン面」という。)Mの集合体で表現される。
【0016】
なお、表面形状データは、ポリゴン面Mの向きの情報として法線ベクトルVnをポリゴン面Mごとに有している。法線ベクトルVnは、物体の外側を示す単位ベクトルである。
【0017】
次に、本実施形態に係る情報処理装置1のハードウエア構成について、
図1を用いて説明する。
図1は、本実施形態に係る情報処理装置1のハードウエア構成の一例を示す図である。
【0018】
図1に示すように、情報処理装置1は、プロセッサ10、メモリ11、記憶装置12、入力インタフェース(入力I/F)13、表示インタフェース(表示I/F)14、及び通信インタフェース(通信I/F)15を備える。情報処理装置1のハードウエアの各構成要素は、一例として、バスBを介して相互に接続される。
【0019】
プロセッサ10は、情報処理装置1の全体を制御する。
プロセッサ10は、記憶装置12に記憶される第1のプログラムを実行することにより、内外判定処理を実行する。プロセッサ10は、記憶装置12に記憶される第2のプログラムを実行することにより、CFD解析処理を実行する。
【0020】
プロセッサ10は、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphic s Processing Unit)、マイクロプロセッサ(microprocessor)、プロセッサコア(processor core)、マルチプロセッサ(multiprocessor)、ASIC(Application-Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等を含み、集積回路(IC(Integrated Circuit)チップ、LSI(Large Scale Integration))等に形成された論理回路(ハードウェア)や専用回路によって内外判定処理やCFD解析処理を実現してもよい。また、プロセッサ10は、複数のCPUにより構成されてもよい。
【0021】
メモリ11は、ストレージ203からロードしたプログラムを一時的に記憶し、プロセッサ10に対して作業領域を提供する。メモリ11には、プロセッサ10がプログラムを実行している間に生成される各種データも一時的に格納される。例えば、メモリ11は、RAM(Random Access Memory)である。
【0022】
記憶装置12は、非一時的なコンピュータ可読媒体(non−transitory computer readable medium)である。記憶装置12は、第1のプログラム及び第2のプログラムを格納する。また、記憶装置12は、上記物体の表面形状データを格納する。さらに、記憶装置12は、複数に分割された計算格子を有する3次元空間の情報(以下、「計算格子データ」という。)を格納する。例えば、記憶装置12は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM等である。
【0023】
入力I/F13には、操作部100が接続されている。例えば、操作部100は、キーボード及びマウスを備える。ただし、操作部100は、これに限定されず、入力ボタンやスイッチ、マイク、表示装置101の表示画面に対するポイント操作に用いられるマウスやタッチパッド等のポインティングデバイス等の入力デバイスを備えてもよい。また、操作部100は、スマートフォンやタブレット等の携帯情報端末であってもよい。入力I/F13は、操作部100から送信される信号(以下、「操作信号」という。)をプロセッサ10に送信する。
【0024】
表示I/F14には、表示装置101が接続されている。表示I/F14は、プロセッサ10からの命令に従って、表示装置101の表示画面に表示させる。例えば、表示装置101は、CRT(Cathode Ray Tube)ディスプレイまたは液晶ディスプレイである。
【0025】
通信インタフェース(通信I/F)15は、通信ネットワーク102に接続されている。通信I/F15は、通信ネットワーク102を介して、他の情報処理装置(例えば、コンピュータ)との間でデータの送受信を行う。通信ネットワーク102は、無線通信の伝送路であってもよいし、有線通信の伝送路であってもよいし、無線通信の伝送路及び有線通信の伝送路の組み合わせであってもよい。通信I/F15は、各種データをプロセッサ10からの命令に従って、他の情報処理装置に送信する。また、通信I/F15は、他の情報処理装置から送信された各種データを受信し、プロセッサ10に伝達する。
【0026】
次に、本実施形態に係る内外判定処理を実行するためのプロセッサ10の機能部について、
図2を用いて説明する。
図2は、本実施形態に係る内外判定処理を実行するためのプロセッサ10の各機能部を示す図である。
【0027】
プロセッサ10は、三次元空間内の複数の計算格子点Pのそれぞれに対して、計算格子点Pが物体の内側か外側かを判定する内外判定処理を実行する。具体的には、プロセッサ10は、三次元空間内の複数の計算格子点Pのうち、内外判定処理の処理対象の計算格子点P(以下、「対象格子点Pt」という。)を選択する。そして、プロセッサ10は、対象格子点Ptから垂線が引けるポリゴン面の法線ベクトルVnと、当該ポリゴン面の重心位置から対象格子点Ptまでのベクトル(以下、「距離ベクトルVd」という。)とのなす角αを求め、なす角αが90度以上である場合には対象格子点Ptが物体の内側にあると判定する内外判定処理を実行する。なお、プロセッサ10は、対象格子点Ptから垂線が引けるポリゴン面がない場合には当該対象格子点Ptの内外判定処理を終了して、他の計算格子点Pを対象格子点Ptに選択して内外判定処理を実行してもよい。なお、距離ベクトルVdは、本発明の「第1のベクトル」である。なお、法線ベクトルVnは、本発明の「第2のベクトル」である。
【0028】
プロセッサ10は、データ読込部20、モデル生成部21、第1選択部22、第2選択部23、重心位置決定部24、ベクトル算出部25、特定部26、角度算出部27及び内外判定部28を備える。なお、内外判定部28は、本発明の「第1判定部」の一例である。
【0029】
データ読込部20は、計算格子データを記憶装置12から読み込む。データ読込部20は、表面形状データを記憶装置12から読み込む。なお、表面形状データには、各ポリゴン面の法線ベクトルVnの情報も含まれている。
【0030】
モデル生成部21は、データ読込部20に読み込まれた計算格子データ及び表面形状データに基づいて、複数の計算格子で分割された三次元空間上に、物体の形状を示す三次元モデルを生成する。この三次元モデルは、複数のポリゴン面M1〜Mm(mは4以上の整数)で表現されたポリゴンモデルである。なお、モデル生成部21は、各ポリゴン面が法線ベクトルVnを有していない場合には、各ポリゴン面の法線ベクトルVnを計算してもよい。なお、各ポリゴン面の法線ベクトルVnは、すべて物体の外側を向く方向となる。
【0031】
第1選択部22は、複数の計算格子点Pのうち、一つを対象格子点Ptとして選択する。例えば、第1選択部22は、複数の計算格子点Pのそれぞれに内外判定処理が実行される順番を付し、その順番に沿って対象格子点Ptを選択する。
【0032】
第2選択部23は、複数のポリゴン面M1〜Mmのうち、一つを対象ポリゴン面Mtとして選択する。例えば、第2選択部23は、複数のポリゴン面M1〜Mmのそれぞれに番号を付し、その番号の順に対象ポリゴン面Mtを選択する。また、第2選択部23は、複数のポリゴン面M1〜Mmのうち、対象格子点Ptから近い順に対象ポリゴン面Mtを選択してもよい。なお、対象ポリゴン面Mtは、本発明の「対象面」の一例である。
【0033】
重心位置決定部24は、対象ポリゴン面Mtの重心位置Gを決定する。例えば、対象ポリゴン面Mtの3つの頂点が(x1,y1,z1)、(x2,y2,z2)、(x3,y3,z3)である場合には、重心位置決定部24は、以下に示す公知の公式でポリゴン面Mの重心位置Gを求める。
【0034】
重心位置G=((x1+y1+z1)/3),((x2+y2+z2)/3),((x3+y3+z3)/3)
【0035】
ベクトル算出部25は、対象ポリゴン面Mtの重心位置Gから対象格子点Ptまでのベクトルである距離ベクトルVdを求める。ここで、三次元空間における各計算格子点Pの位置のデータ(例えば、座標)は、計算格子データに含まれている。そのため、ベクトル算出部25は、計算格子データから対象格子点Ptの位置を取得することができる。したがって、例えば、ベクトル算出部25は、重心位置Gから対象格子点Ptの位置までの距離ベクトルVdを公知のベクトルの公式を用いることで算出する。
【0036】
特定部26は、複数のポリゴン面M1〜Mmのうち、対象格子点Ptから垂線が引けるポリゴン面である直交面を特定する直交面特定処理を実行する。例えば、特定部26は、複数のポリゴン面M1〜Mmのうち、対象格子点Ptから垂線が引けるポリゴン面(直交面)があるか否かを判定する。「対象格子点Ptから垂線が引けるポリゴン面がある」ことは、対象格子点Ptが複数のポリゴン面M1〜Mmの少なくとも一つ以上のポリゴン面の垂直方向に存在することと同義である。換言すれば、「対象格子点Ptから垂線が引けるポリゴン面がある」ことは、対象格子点Ptが複数のポリゴン面M1〜Mmの少なくとも一つ以上のポリゴン面の垂線上に存在することと同義である。
なお、特定部26は、複数のポリゴン面M1〜Mmのうち、対象格子点Ptから垂線が引けるポリゴン面である直交面が特定できない場合(直交面がない場合)には、当該対象格子点Ptが物体の外側であると判定してもよいし、当該対象格子点Ptの内外判定処理を終了して内外判定処理が実施されていない計算格子点Pを対象格子点Ptに設定して直交面特定処理を実行してもよい。
【0037】
以下に、上記直交面特定処理を行うための特定部26の各機能部について説明する。
例えば、特定部26は、直線生成部30、交差有無判定部31及び面内外判定部32を備える。交差有無判定部31は、本発明の「第3判定部」の一例である。面内外判定部32は、本発明の「第2判定部」の一例である。
【0038】
直線生成部30は、対象ポリゴン面Mtの法線ベクトルから法線方向を読み取る。そして、直線生成部30は、対象格子点Ptを通り、法線方向に平行でかつ対象ポリゴン面Mtに向かう直線Lpを生成する直線生成処理を実行する。
【0039】
交差有無判定部31は、直線Lpが複数のポリゴン面M1〜Mmのいずれかのポリゴン面と交差するか否かを判定する交差判定処理を実行する。交差有無判定部31は、直線Lpが複数のポリゴン面M1〜Mmのいずれかのポリゴン面と交差すると判定した場合には、当該ポリゴン面Mと直線Lpとが交差する位置(以下、「交差位置Z」という。)を求める。
【0040】
面内外判定部32は、交差位置Zが対象ポリゴン面Mtの面内にあるか否かを判定する面内外判定処理を実行する。例えば、対象ポリゴン面Mtの3つの頂点が位置P1〜P3である場合において、面内外判定部32は、位置P1から位置P2へのベクトルと位置P2から交差位置Zへのベクトルとの外積である第1の外積を求める。面内外判定部32は、位置P2から位置P3へのベクトルと位置P3から交差位置Zへのベクトルとの外積である第2の外積を求める。面内外判定部32は、位置P3から位置P1へのベクトルと位置P1から交差位置Zへのベクトルとの外積である第3の外積を求める。そして、面内外判定部32は、第1の外積、第2の外積及び第3の外積の各外積の符号がすべて一致していれば、交差位置Zが対象ポリゴン面Mtの面内にあると判定する。一方、面内外判定部32は、第1の外積、第2の外積及び第3の外積の各符号のいずれかが他の符号と異なれば、交差位置Zが対象ポリゴン面Mtの面外にあると判定する。ただし、面内外判定部32は、交差位置Zが対象ポリゴン面Mtの面内にあるか否かを判定できればよく、上記外積を用いた方法以外にも、公知の技術を用いてもよい。
【0041】
面内外判定部32によって交差位置Zが対象ポリゴン面Mtの面内にあると判定された場合には、当該対象ポリゴン面Mtが対象格子点Ptから垂線が引けるポリゴン面、すなわち直交面であると特定されたことになる。
【0042】
角度算出部27は、特定部26により特定された直交面の重心位置Gから対象格子点Ptへの距離ベクトルVdを求め、その距離ベクトルVdと当該直交面の法線ベクトルVnとのなす角αを算出する。
【0043】
内外判定部28は、角度算出部27が算出したなす角αが90度以上であれば、対象格子点Ptが三次元空間における物体の内部にあると判定する。一方、内外判定部28は、角度算出部27が算出したなす角αが90度未満であれば、対象格子点Ptが三次元空間における物体の外部にあると判定する。
【0044】
図3を用いて、本実施形態に係る内外判定処理について、説明する。
図3は、本実施形態に係る内外判定処理について説明する図であって、説明の便宜上、2次元の空間について示している。
【0045】
図3に示すように、プロセッサ10は、複数の計算格子点P(
図3に示す●)のうち、計算格子点P1を対象格子点Ptに選択したとする。この場合には、例えば、プロセッサ10は、ポリゴン面M1を対象ポリゴン面Mtとして選択して、ポリゴン面M1の重心位置G1を求める。さらに、プロセッサ10は、計算格子点P1からポリゴン面M1に対して、ポリゴン面M1の法線方向と平行な直線Lp1を引く。
図3に示す例では、計算格子点P1は、ポリゴン面M1の垂線上に存在しているため、垂線Lp1とポリゴン面Mとの交差位置Z1は、面内外判定処理により対象ポリゴン面Mtであるポリゴン面M1の面内にあると判定される。したがって、プロセッサ10は、ポリゴン面M1の重心位置G1から計算格子点P1への距離ベクトルVd1を求め、その距離ベクトルVd1とポリゴン面M1の法線ベクトルVn1とのなす角α1を算出する。そして、プロセッサ10は、なす角α1が90度未満か否かを判定する。
図3に示す例では、なす角α1が90度未満であるため、プロセッサ10は、計算格子点P1が物体の外側であると判定する。
【0046】
次に、
図3において、プロセッサ10は、複数の計算格子点P(
図3に示す●)のうち、計算格子点P2を対象格子点Ptに選択したとする。この場合には、例えば、プロセッサ10は、ポリゴン面M4を対象ポリゴン面Mtとして選択して、ポリゴン面M4の重心位置G2を求める。さらに、プロセッサ10は、計算格子点P2からポリゴン面M4に対して、ポリゴン面M4の法線方向と平行な直線Lp2を引く。
図3に示す例では、計算格子点P2は、ポリゴン面M4の垂線上に存在しているため、垂線Lp2とポリゴン面Mとの交差位置Z2は、面内外判定処理により対象ポリゴン面Mtであるポリゴン面M4の面内にあると判定される。したがって、プロセッサ10は、ポリゴン面M4の重心位置G2から計算格子点P2への距離ベクトルVd2を求め、その距離ベクトルVd2とポリゴン面M4の法線ベクトルVn2とのなす角α2を算出する。そして、プロセッサ10は、なす角α2が90度未満か否かを判定する。
図3に示す例では、なす角α2が90度以上であるため、プロセッサ10は、計算格子点P2が物体の内側であると判定する。
【0047】
次に、本実施形態に係る情報処理装置1の動作の全体の流れについて、
図4を用いて説明する。
図4は、本実施形態に係る情報処理装置1の動作の全体の流れを示す図である。
【0048】
プロセッサ10は、物体のCADデータをSTLフォーマットに変換したデータである表面形状データを記憶装置12に保存する(ステップS101)。また、プロセッサ10は、解析対象である物体を包含する三次元空間の範囲の計算格子のデータ、すなわち上記計算格子データを記憶装置12に保存する(ステップS102)。プロセッサ10は、CADデータ及び計算格子データを通信ネットワーク102から取得してもよいし、外部の記憶装置から取得してもよい。
【0049】
プロセッサ10は、CFD解析処理を実行するための第2のプログラムを通信ネットワーク102から取得して記憶装置12に保存する(ステップS103)。
プロセッサ10は、入力I/F13から内部判定処理を指示するコマンドを示す操作信号を受信すると(ステップS104)、記憶装置12から内部判定処理を実行するための第1のプログラムを読み込み、読み込んだ第1のプログラムを実行することによりすべての計算格子点に対して内外判定処理を実行する(ステップS105)。これにより、情報処理装置1は、CFD解析処理を実行するにあたって、ポリゴン面Mと交差する計算格子点の位置を把握することができる。すなわち、情報処理装置1は、複数の計算格子で分割された三次元空間において、どこに各ポリゴン面Mがあるのかを特定できる。
【0050】
プロセッサ10は、すべての計算格子点に対して内外判定処理が終了した場合には、記憶装置12から第2のプログラムを読み込み、読み込んだ第2のプログラムを実行することによりCFD解析処理を実行する(ステップS106)。そして、CFD解析処理が完了すると、表示I/F14は、CFD解析処理の解析結果を表示装置101に表示する(ステップS107)。
【0051】
次に、本実施形態に係る内外判定処理の動作の流れについて、
図5を用いて説明する。
図5は、本実施形態に係る内外判定処理の動作のフロー図である。
【0052】
プロセッサ10は、計算格子データを記憶装置12から読み込む(ステップS201)。プロセッサ10は、表面形状データを記憶装置12から読み込む(ステップS202)。そして、プロセッサ10は、データ読込部20に読み込まれた計算格子データ及び表面形状データに基づいて、複数の計算格子で分割された三次元空間上に、複数のポリゴン面M1〜Mmで表現されたポリゴンモデルを生成する。
【0053】
プロセッサ10は、複数の計算格子点Pのうち、一つを対象格子点Ptとして選択する(ステップS203)。また、プロセッサ10は、複数のポリゴン面M1〜Mmのうち、一つを対象ポリゴン面Mtとして選択する(ステップS204)。
【0054】
プロセッサ10は、対象ポリゴン面Mtを選択すると、その選択した対象ポリゴン面Mtの重心位置Gを算出する(ステップS205)。そして、プロセッサ10は、算出した対象ポリゴン面Mtの重心位置Gから対象格子点Ptまでの距離ベクトルVdを求める(ステップS206)。
【0055】
プロセッサ10は、対象ポリゴン面Mtの法線ベクトルから法線方向を読み取り、対象格子点Ptを通り、当該法線方向に平行でかつ対象ポリゴン面Mtに向かう直線Lpを生成する(ステップS207)。プロセッサ10は、直線Lpと複数のポリゴン面M1〜Mmとが交差するか否かを判定する交差判定処理を実行する(ステップS208)。プロセッサ10は、直線Lpが複数のポリゴン面M1〜Mmのいずれかのポリゴン面と交差すると判定した場合には、当該ポリゴン面Mと直線Lpとの交点位置Zを求める。一方、プロセッサ10は、直線Lpが複数のポリゴン面M1〜Mmのいずれかのポリゴン面とも交差しないと判定された場合には、すべてのポリゴン面Mを対象ポリゴン面Mtとして選択したか否かを判定する(ステップS209)。プロセッサ10は、対象ポリゴン面Mtとして選択していないポリゴン面Mがある場合には、ステップS204の処理に移行する。一方、プロセッサ10は、対象ポリゴン面Mtとして選択していないポリゴン面Mがない場合には、ステップS215の処理に移行する。
【0056】
プロセッサ10は、交点位置Zを求めると、交差位置Zが対象ポリゴン面Mtの面内にあるか否かを判定する面内外判定処理を実行する(ステップS210)。プロセッサ10は、交差位置Zが対象ポリゴン面Mtの面内にあると判定された場合には、当該対象ポリゴン面Mtが対象格子点Ptから垂線が引けるポリゴン面、すなわち直交面であると判定する。一方、プロセッサ10は交差位置Zが対象ポリゴン面Mtの面内にないと判定された場合には、ステップS209の処理に移行する。
【0057】
プロセッサ10は、交差位置Zが対象ポリゴン面Mtの面内にあると判定された場合には、対象ポリゴン面Mtの重心位置Gから対象格子点Ptへの距離ベクトルVdを求め、その距離ベクトルVdと当該対象ポリゴン面Mtの法線ベクトルVnとのなす角αを算出する(ステップS211)。そして、プロセッサ10は、なす角αが90度未満か否かを判定し(ステップS212)、なす角αが90度未満であれば対象格子点Ptが物体の外側にあると判定する(ステップS213)。一方、内外判定部28は、なす角αが90度以上であれば、対象格子点Ptが物体の内側にあると判定する(ステップS214)。
【0058】
プロセッサ10は、対象格子点Ptの内外判定が終了すると、全ての計算格子点に対して物体の内側か外側かの処理が終了したか否かを判定する(ステップS215)。プロセッサ10は、全ての計算格子点に対して物体の内側か外側かの処理が終了したと判定した場合には、
図5に示す処理を終了する(ステップS215)。一方、プロセッサ10は、全ての計算格子点に対して物体の内側か外側かの処理が終了していないと判定した場合には、ステップS203の処理に移行する。
【0059】
次に、本実施形態に係る内外判定処理の効果について、
図6を用いて説明する。
図6(a)は、ポリゴン面M1に穴がある場合における従来の内外判定処理であるCrossing Number Algorithmを説明する図である。
図6(b)は、ポリゴン面M1に穴がある場合における本実施形態に係る内外判定処理を説明する図である。
【0060】
図6(a)に示すように、Crossing Number Algorithmは、ある点からの直線とポリゴン面との交差する数で内外判定を行う。したがって、ポリゴン面の一部に穴が開いていると、
図6(a)に示す領域H全体が物体の内側と判定されてしまう。
一方、
図6(b)に示すように、本実施形態に係る内外判定処理では、ポリゴン面の一部に穴が開いている場合には、局所的に計算格子点P1のみ内側と判定されるだけであって、従来のように領域H全体が物体の内側と判定されることがない。したがって、本実施形態に係る内外判定処理は、内外判定の判定精度を従来よりも向上させることができる。
【0061】
なお、本発明は上記実施形態に限定されるものではなく、例えば以下のような変形例が考えられる。
【0062】
(変形例1)上記実施形態において、プロセッサ10は、すべての計算格子点Mについて、内外判定処理を実行したが、これに限定されない。例えば、プロセッサ10(例えば、特定部26)は、対象格子点Ptと交差位置Zとの間の距離が所定値以上である場合には、当該対象格子点Ptの内外判定処理を停止してもよい。この場合には、プロセッサ10は、他の計算格子点を対象格子点Ptに選定して、その対象格子点Ptに対して内外判定処理を実行する。一例として、例えば、
図7に示すように、ステップS208において、特定部26(例えば、交差有無判定部31)は、交差判定処理を実行して、交点位置Zを求めた場合には、対象格子点Ptと交差位置Zとの距離が所定値以上か否かを判定する(ステップS301)。そして、プロセッサ10は、対象格子点Ptと交差位置Zとの距離が所定値以上である場合には、ステップS215に移行し、当該距離が所定値未満である場合にはステップS210に移行する。
【0063】
対象格子点Ptと交差位置Zとの間の距離が所定値以上である場合とは、当該対象格子点が物体から遠い位置であることを示す。ここで、CFD解析処理では、どこに物体の壁があるのかという情報のみが重要であって、物体から遠い位置にある計算格子点の情報はそもそもCFD解析処理を行うにあたって不必要な場合がある。そこで、プロセッサ10は、対象格子点Ptと交差位置Zとの間の距離が所定値以上である場合には、当該対象格子点が内側か外側かを判定する処理を行わなくてもよい。これにより、情報処理装置1は、処理負荷を低減することができる。
【0064】
(変形例2)上記実施形態において、プロセッサ10は、対象格子点Ptが物体の外側か内側かを判定した場合には、すべてのポリゴン面Mを対象ポリゴン面Mtとして選択していなくても、次の計算格子点に対して内外判定処理を実施したが、これに限定されない。例えば、プロセッサ10は、一つの対象格子点Ptにおいて、直交面が2つ以上ある場合には、各直交面に対してなす角αを求め、各なす角αがそれぞれ90度未満か否かを判定してもよい。
【0065】
(変形例3)上記実施形態において、特定部26は、複数のポリゴン面M1〜Mmのうち、対象格子点Ptから垂線が引けるポリゴン面である直交面を特定できればよく、その特定方法には特に限定されない。
【0066】
以上、説明したように、本実施形態に係る情報処理装置1は、対象格子点Ptから垂線が引けるポリゴン面Mの重心位置Gから対象格子点Ptへの距離ベクトルVdと、当該ポリゴン面Mの法線ベクトルVnとのなす角αを算出する。そして、情報処理装置1は、なす角αが90度以上であれば、対象格子点Ptが多面体、すなわち物体の内側にあると判定する。
【0067】
このような構成によれば、情報処理装置1は、STLフォーマットで表現された表面形状データに対して、穴を埋める作業を実施することなく、内外判定の判定精度を従来よりも向上させることができる。
【0068】
ところで、内外判定処理を実施する上で、処理負荷を低減させるために、三次元空間を複数の領域に分割してそれぞれの領域で並列に内外判定処理を実行する場合がある。この内外判定処理の並列化を実現する場合において、内外判定処理として従来のCrossing Number Algorithmを用いると、各領域間でポリゴン面と交差する直線の位置や交差数の整合性をとる必要があり、上記並列化を実現するにあたって制約がある。
一方、本実施形態に係る情報処理装置1は、距離ベクトルVdと法線ベクトルVnとのなす角αに基づいて内外判定処理を実施するため、上記整合性を考慮する必要がなく、上記並列化を実現する上で制約がない。