(57)【要約】【課題】ＣＡＤデータによって表される複数の部品の接触面を精度良く特定すること。【解決手段】接触判定装置１００は、第１の部品と第２の部品とを含む３次元モデルのＣＡＤデータ１０１を取得する。接触判定装置１００は、第１の部品を表現する要素のうち第１の要素ｅ１の法線と、第２の部品を表現する要素のうち第２の要素ｅ２を含む平面とに基づいて、第１の要素ｅ１と第２の要素ｅ２との間の第１の距離ｄ１を特定する。接触判定装置１００は、第１の距離ｄ１に応じて、第１の要素ｅ１と第２の要素ｅ２とが接触しているか否かを判定する。【選択図】図１
2018156145.tif 000002
【特許請求の範囲】
【請求項１】
第１の部品と第２の部品とを含む３次元モデルのデータを取得し、
前記第１の部品を表現する要素のうち第１の要素の法線と、前記第２の部品を表現する要素のうち第２の要素を含む平面とに基づいて、前記第１の要素と前記第２の要素との間の距離を特定し、
前記距離に応じて、前記第１の要素と前記第２の要素とが接触しているか否かを判定する、
処理をコンピュータに実行させることを特徴とする接触判定プログラム。
【請求項２】
前記第１の要素と前記第２の要素とが接触していると判定した場合、前記第１の部品を表現する要素と前記第２の部品を表現する要素とのうち、前記第１の要素と前記第２の要素とを区別可能に出力する、
ことを特徴とする請求項１に記載の接触判定プログラム。
【請求項３】
前記距離は、前記第１の要素の法線と前記第２の要素とを含む平面との第１の交点と、前記第１の要素と前記第１の要素の法線との第２の交点との距離である、
ことを特徴とする請求項１に記載の接触判定プログラム。
【請求項４】
前記第２の要素の法線と前記第１の要素を含む平面とに基づいて、前記第１の要素と前記第２の要素との間の第２の距離を特定し、
前記第１の要素と前記第２の要素とが接触しているか否かの判定は、前記第２の距離に応じて判定される、
ことを特徴とする請求項１に記載の接触判定プログラム。
【請求項５】
前記第１の要素と前記第２の要素とが接触しているか否かの判定は、前記第１の要素の法線と前記第２の要素の法線との交角の有無又は前記交角の大きさと、前記距離とに応じて判定される、
ことを特徴とする請求項１乃至４のいずれか１項に記載の接触判定プログラム。
【請求項６】
前記第１の要素と前記第２の要素とが接触している場合、前記第１の部品を表現する要素のうち、前記第１の要素に含まれる頂点を含む第３の要素に含まれる当該頂点と異なる頂点と、前記第２の要素と、に基づいて、前記第１の部品に対応する新たな部品を表現する要素を生成する、
ことを特徴とする請求項１乃至５のいずれか１項に記載の接触判定プログラム。
【請求項７】
第１の部品と第２の部品とを含む３次元モデルのデータを取得し、
前記第１の部品を表現する要素のうち第１の要素の法線と、前記第２の部品を表現する要素のうち第２の要素を含む平面とに基づいて、前記第１の要素と前記第２の要素との間の距離を特定し、
前記距離に応じて、前記第１の要素と前記第２の要素とが接触しているか否かを判定する、
処理をコンピュータが実行することを特徴とする接触判定方法。
【請求項８】
第１の部品と第２の部品とを含む３次元モデルのデータを取得し、
前記第１の部品を表現する要素のうち第１の要素の法線と、前記第２の部品を表現する要素のうち第２の要素を含む平面とに基づいて、前記第１の要素と前記第２の要素との間の距離を特定し、
前記距離に応じて、前記第１の要素と前記第２の要素とが接触しているか否かを判定する、
制御部を有することを特徴とする接触判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、接触判定プログラム、接触判定方法、および接触判定装置に関する。
【背景技術】
【０００２】
従来、構造物などの数値解析を行う技術がある。例えば、有限要素法などの数値解析では、解析対象の領域を小領域に分割して各小領域における方程式が解かれる。この数値解析を行うために、ＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）によって構造物に含まれる部品別に作成された３次元のモデルの形状を小領域に分割するメッシュ生成などが行われることにより解析用の３次元モデルが作成される。そして、この数値解析は、解析用の３次元モデルを用いて行われる。ＣＡＤにおける３次元モデルは、三角形などの要素によって各部品を表す。解析用の３次元モデルは、四面体などの形状の小領域によって各部品を表す。
【０００３】
先行技術としては、ＣＡＤデータによる複数の部品モデルの表面を複数の面要素に分割し、ある部品モデルの面要素の法線ベクトルが、他の部品モデルの面要素にあたるか否かに基づいて接触判定を行う技術がある（例えば、下記特許文献１参照。）。また、先行技術としては、解析用の３次元モデルを作成する際に、ＣＡＤデータによる３次元の形状の表面に閉空間を構成する表面メッシュを生成し、形状表面を構成する面と面の間に隙間がある場合、隣接面の境界辺上で同一の節点を共有するように表面メッシュを生成する技術がある（例えば、下記特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２６５０５０号公報
【特許文献２】特開２００６−１１３８０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＣＡＤデータが示す３次元のモデルに含まれる複数の部品の接触面を特定することが困難な場合がある。例えば、実際には複数の部品の接触面となる部分であっても、ＣＡＤデータにおいて各部品を三角形の要素によって表現する場合に、接触面に相当する異なる部品を表現する要素同士が一致しないことがある。例えば、各要素のサイズが異なれば、各要素は一致しない。このため、例えば、異なる部品を表現する要素同士の一致を判定するだけでは、各要素が複数の部品の接触面であるか否かを判定することは難しい。
【０００６】
１つの側面では、本発明は、３次元のモデルに含まれる複数の部品の接触面を精度よく特定することができる接触判定プログラム、接触判定方法、および接触判定装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、第１の部品と第２の部品とを含む３次元モデルのデータを取得し、前記第１の部品を表現する要素のうち第１の要素の法線と、前記第２の部品を表現する要素のうち第２の要素を含む平面とに基づいて、前記第１の要素と前記第２の要素との間の距離を特定し、前記距離に応じて、前記第１の要素と前記第２の要素とが接触しているか否かを判定する接触判定プログラム、接触判定方法、および接触判定装置が提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、ＣＡＤデータによって表される複数の部品の接触面を精度良く特定することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、接触判定装置による一動作例を示す説明図である。
【図２】図２は、複数の部品を含む３次元モデル例を示す説明図である。
【図３】図３は、３次元モデルからメッシュ生成によって得た解析モデル例を示す説明図である。
【図４】図４は、接触判定装置１００のハードウェア構成例を示す説明図である。
【図５】図５は、ＣＡＤデータ１０１のデータフォーマット例を示す説明図である。
【図６】図６は、接触判定装置１００の機能的構成例を示すブロック図である。
【図７】図７は、第１の部品２０１と第２の部品２０２との斜視図である。
【図８】図８は、接触面であるか否かの判定基準例を示す説明図である。
【図９】図９は、出力例を示す説明図である。
【図１０】図１０は、フリーエッジの特定例を示す説明図である。
【図１１】図１１は、第１フリーエッジｆｅ１と頂点を共有する要素の特定例を示す説明図である。
【図１２】図１２は、第１フリーエッジｆｅ１と頂点を共有する要素の削除例を示す説明図である。
【図１３】図１３は、新たな要素を生成した例を示す説明図である。
【図１４】図１４は、接触判定装置１００が行う処理手順例を示すフローチャートである。
【図１５】図１５は、図１４で示した接触面の判定処理の詳細な説明を示すフローチャートである。
【図１６】図１６は、図１４で示した要素の生成処理の詳細な説明を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、本発明にかかる接触判定プログラム、接触判定方法、および接触判定装置の実施の形態を詳細に説明する。
【００１１】
図１は、接触判定装置による一動作例を示す説明図である。接触判定装置１００は、３次元モデルに含まれる第１の部品と第２の部品との接触を判定するコンピュータである。
【００１２】
従来、例えば、ＣＡＤを用いて構造物に含まれる部品別に部品の形状を三角形（要素）で表現したモデルを示す３次元のＣＡＤデータが作成される。モデルは、例えば、コンピュータ空間上にシミュレーションされる部品や部品を含む構造物である。シミュレーション空間とは、コンピュータ上でシミュレーションされる仮想的な空間である。シミュレーション空間には、例えば、Ｘ軸とＹ軸とＺ軸との直交座標系が定義される。汎用的なＣＡＤデータとしては、例えば、ＳＴＬ（Ｓｔａｎｄａｒｄ  Ｔｒｉａｎｇｕｌａｔｅｄ  Ｌａｎｇｕａｇｅ）データがある。ＳＴＬデータでは、部品ごとに、部品の形状を表すための三角形の要素を示す要素情報と、三角形の要素に含まれる頂点を示す頂点情報とを含む。要素情報は、例えば、要素ごとに、法線の情報と頂点情報によって表される。頂点情報は、例えば、頂点の座標値（ｘ座標値，ｙ座標値，ｚ座標値）である。
【００１３】
また、有限要素法などの数値解析を行うには、ＳＴＬデータによって表される３次元のモデルをメッシュ生成によって複数の小領域に分割することにより得られる解析用のモデルが作成される。小領域の形状は、例えば四面体であるため、小領域を四面体の要素と称する。解析用のモデルを解析モデルと称する。
【００１４】
ＣＡＤデータがモデルの曲面の情報を含む場合、その曲面の情報によって３次元のモデルに含まれる複数の部品の接触面を判定することができる。しかしながら、上述した汎用的なＳＴＬデータのようにＣＡＤデータがモデルの曲面の情報を含まない場合、複数の部品の接触面を精度良く判定することは困難である。
【００１５】
例えば、部品別にモデル化し、モデル化された部品を組み合わせて構造物がモデル化される。また、部品ごとに各要素のサイズなども異なる場合がある。このため、実際には複数の部品の接触面となる部分であっても、異なる部品を表現する要素同士が面で接触しているとは限らない。この要素同士が面で接触していない例については図２に示す。
【００１６】
また、ＣＡＤデータにおいて複数の部品の接触面となる要素同士が一致していない場合、ＣＡＤデータに基づいて部品別に作成された複数の解析モデルの一部が干渉してしまうことがある。干渉するとは、複数の解析モデルが重なることである。異なる解析モデルに含まれる四面体の要素が重複してしまう場合がある。四面体の要素が重複するとは、同じ位置に異なる四面体の要素が複数設けられることである。四面体の要素が重複してしまうことを干渉とも称する。四面体の要素の干渉例については図３に示す。
【００１７】
従来、複数の解析モデルに干渉がある場合、設計者が、例えば、接触の有無を判定するための許容値に基づいて、解析モデル間の接触の有無を目視で判定する。そして、設計者は、例えば、接触していると判定した部分について、解析モデルを修正する。ただし、解析モデルのモデルデータが大規模な場合、個々の部品によってサイズが異なるため、この許容値を決定することは困難である。
【００１８】
そこで、本実施の形態では、接触判定装置１００は、各部品を三角形の要素で表す場合に、第１の部品の１つの要素の法線と、第２の部品の１つの要素を含む平面とに基づく２つの要素間の距離に応じて、２つの要素が接触しているか否かを判定する。これにより、接触判定装置１００は、２つの要素が、各部品の接触面であるか否かを判定することができる。したがって、接触判定装置１００は、各部品を三角形の要素で表すＣＡＤデータにおいて、各部品の接触面を自動で精度よく特定することができる。
【００１９】
数値解析の解析者や解析モデルの設計者などの利用者は、２つの部品の接触面が分かるため、解析モデルを作成する前に、ＳＴＬデータを変更して接触面におけるＳＴＬデータの三角形を一致させるように修正することができる。したがって、異なる解析モデル間において四面体の要素が干渉するのを抑制することができる。
【００２０】
接触判定装置１００は、第１の部品と第２の部品とを含む３次元モデルのデータを取得する。３次元モデルとは、構造物のモデルである。第１の部品と第２の部品とは、それぞれ部品のモデルである。３次元モデルのデータは、例えば、上述したＳＴＬデータなどのＣＡＤデータ１０１である。
【００２１】
次に、接触判定装置１００は、第１の部品を表現する要素のうち第１の要素ｅ１の法線と、第２の部品を表現する要素のうち第２の要素ｅ２を含む平面とに基づいて、第１の要素ｅ１と第２の要素ｅ２との間の第１の距離を特定する。要素の形状は、例えば、三角形である。第１の距離は、例えば、第１の要素ｅ１の法線と第２の要素ｅ２を含む平面との第１の交点と、第１の要素ｅ１と第１の要素ｅ１の法線との第２の交点との第１距離である。図１の例では、第２の交点は、例えば、第１の要素ｅ１の重心ａである。第１の交点は、第１の要素ｅ１の重心ａを通る法線と、第２の要素ｅ２を含む平面との交点ｐ１である。そして、接触判定装置１００は、第１の交点と、第２の交点と、の第１距離ｄ１を特定する。
【００２２】
次に、接触判定装置１００は、第１距離ｄ１に応じて、第１の要素ｅ１と第２の要素ｅ２とが接触しているか否かを判定する。具体的には、接触判定装置１００は、例えば、第１距離が第１閾値以上である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していないと判定し、第１距離が第１閾値未満である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していると判定する。ここの第１閾値は、利用者によって設定されればよく、特に限定しない。
【００２３】
また、接触判定装置１００は、第２の要素ｅ２の法線と第１の要素ｅ１を含む平面とに基づいて、第１の要素ｅ１と第２の要素ｅ２との間の第２の距離ｄ２を特定する。具体的に、第２の距離ｄ２は、第２の要素ｅ２の法線と第１の要素ｅ１を含む平面との第１の交点と、第２の要素ｅ２と第２の要素ｅ２の法線との第２の交点との距離である。ここでの第２の交点は第２の要素ｅ２の重心ｂである。第１の交点は、第２の要素ｅ２の重心ｂを通る法線と、第１の要素ｅ１を含む平面との交点ｐ２である。
【００２４】
そして、接触判定装置１００は、第２の距離ｄ２に応じて、第１の要素ｅ１と第２の要素ｅ２とが接触しているか否かを判定する。具体的には、接触判定装置１００は、例えば、第２距離が第２閾値以上である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していないと判定し、第２距離が第２閾値未満である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していると判定する。ここの第２閾値は、上述した第１閾値と同じであってもよいし、特に限定しない。
【００２５】
このように、第１の距離ｄ１と、第２の距離ｄ２とのいずれかによって接触判定がおこなわれてもよいし、第１の距離ｄ１と第２の距離ｄ２との両方によって接触判定が行われてもよい。この両方によって接触判定が行われる場合、接触判定装置１００は、第１の距離ｄ１が第１閾値未満であり、かつ第２の距離が第２閾値未満である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していると判定する。また、接触判定装置１００は、第１の距離ｄ１が第１閾値以上である場合と第２の距離ｄ２が第２閾値以上である場合との少なくともいずれかの場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していないと判定する。
【００２６】
これにより、接触判定装置１００は、例えば曲面の情報などを有さない汎用的なＳＴＬデータのように、三角形の要素によって部品を表現するＣＡＤデータ１０１であっても、異なる部品の接触面を自動で判定することができる。
【００２７】
図２は、複数の部品を含む３次元モデル例を示す説明図である。図２において、３次元モデル２００は、第１の部品２０１と、第２の部品２０２と、を含む。図２において、第１の部品２０１と第２の部品２０２とは、それぞれ複数の三角形によって形状が表現されたモデルである。後述する図７に示すように、第１の部品２０１と第２の部品２０２とは厚みがある。このため、第２の部品２０２は、直方体の一部が欠けているような形状である。また、第１の部品２０１は、車輪のような形状である。３次元モデル２００では、第１の部品２０１が第２の部品２０２の窪みに嵌っている状態である。このため、第１の部品２０１が第２の部品２０２に嵌っているため、３次元モデル２００では、第１の部品２０１と第２の部品２０２とには接触面となる部分がある。
【００２８】
しかし、複数の部品の接触面となる部分を拡大した例に示すように、第１の部品２０１の各要素のサイズと、第２の部品２０２の各要素のサイズとは異なる。実際には複数の部品の接触面となる部分であっても、異なる部品を表現する要素同士が面で接触しているとは限らない。要素同士が面で接触しているとは、要素同士が一致していることを示す。要素同士が一致しているとは、異なる部品を表す２つの要素に含まれるすべての頂点の位置が同じであることを示す。なお、異なる部品間において要素のサイズが異なる要因の１つとして、部品別にモデル化されることが挙げられる。例えば、部品別にモデル化が行われるのは、１つの構造物であっても同一の部品を何度も使用する際に１回部品をモデル化するためで流用できたり、部品の設計に変更が発生した場合に構造物全体を変更しなくてよいという設計のし易さのためである。
【００２９】
図３は、３次元モデルからメッシュ生成によって得た解析モデル例を示す説明図である。解析モデル３００は、３次元モデル２００に対して四面体のメッシュ生成を行うことにより得られる。具体的には、解析モデル３００は、第１の部品２０１と、第２の部品２０２とのそれぞれに対して四面体のメッシュ生成を行うことによって得られる。解析モデル３００は、第１の部品２０１に対してメッシュ生成した第１の解析モデル３０１と、第２の部品２０２に対してメッシュ生成した第２の解析モデル３０２と、を有する。
【００３０】
図２に示すように第１の部品２０１と第２の部品２０２との接触面において要素が一致していないと、図３に示すように解析モデル３００では、第１の解析モデル３０１に含まれる四面体の要素と、第１の解析モデル３０１に含まれる四面体の要素と、で干渉してしまう。図３において、例えば、点ｃにおいて、第１の解析モデル３０１に含まれる四面体の要素ｍｅ１と、第２の解析モデル３０２に含まれる四面体の要素ｍｅ２と、で干渉している。
【００３１】
本実施の形態では、接触判定装置１００は、ＣＡＤデータ１０１において異なるモデル間の接触面を一致させておくことで、解析モデルにおいて干渉が発生するのを抑制することができる。
【００３２】
（接触判定装置１００のハードウェア構成例）
図４は、接触判定装置１００のハードウェア構成例を示す説明図である。接触判定装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、ディスクドライブ４０４と、ディスク４０５と、を有する。接触判定装置１００は、Ｉ／Ｆ（Ｉｎｔｅｒ／Ｆａｃｅ）４０６と、キーボード４０７と、マウス４０８と、ディスプレイ４０９と、を有する。また、ＣＰＵ４０１と、ＲＯＭ４０２と、ＲＡＭ４０３と、ディスクドライブ４０４と、Ｉ／Ｆ４０６と、キーボード４０７と、マウス４０８と、ディスプレイ４０９とは、バス４００によってそれぞれ接続される。
【００３３】
ここで、ＣＰＵ４０１は、接触判定装置１００の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶する。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。ディスクドライブ４０４は、ＣＰＵ４０１の制御にしたがってディスク４０５に対するデータのリード／ライトを制御する。ディスク４０５は、ディスクドライブ４０４の制御で書き込まれたデータを記憶する。ディスク４０５としては、磁気ディスク、光ディスクなどが挙げられる。
【００３４】
Ｉ／Ｆ４０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク４１０に接続され、このネットワーク４１０を介して他の装置に接続される。そして、Ｉ／Ｆ４０６は、ネットワーク４１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ４０６には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００３５】
キーボード４０７やマウス４０８は、利用者の操作により、各種データの入力を受け付けるインターフェースである。ディスプレイ４０９は、ＣＰＵ４０１の指示により、データを出力するインターフェースである。
【００３６】
また、図示を省略するが、接触判定装置１００には、カメラから画像や動画を取り込む入力装置やマイクから音声を取り込む入力装置が設けられていてもよい。また、図示を省略するが、接触判定装置１００には、プリンタなどの出力装置が設けられていてもよい。
【００３７】
また、本実施の形態では、接触判定装置１００のハードウェア構成として、パーソナル・コンピュータを例に挙げているが、これに限らず、サーバなどであってもよい。接触判定装置１００がサーバである場合、接触判定装置１００と、利用者が操作可能な装置やディスプレイ４０９などと、がネットワーク４１０を介して接続されてもよい。
【００３８】
（ＣＡＤデータ１０１のデータフォーマット例）
図５は、ＣＡＤデータ１０１のデータフォーマット例を示す説明図である。ＣＡＤデータ１０１のデータフォーマット例として、ＳＴＬデータのデータフォーマットを例に挙げて、取得されるＣＡＤデータ１０１の一記憶例について説明する。ＣＡＤデータ１０１は、部品を表現する要素の各々について、要素の法線と、要素を構成する３頂点の座標と、を有する。
【００３９】
ここで、ＣＡＤデータ１０１では、部品の表面形状を表す三角形の情報を有するが、部品の内部形状を表す三角形の情報を有さない。なお、ＳＴＬデータにおいて、要素や頂点は、部品別に管理される。ＳＴＬデータにおいては、異なる部品において同じ位置に頂点を設ける場合、３軸の座標値が同じで異なる頂点として扱われる。本実施の形態では、理解の容易化のために、第１の部品２０１に含まれる要素の頂点と、この頂点と同じ座標値が設定された第２の部品２０２に含まれる要素の頂点とは、同一の頂点として扱う場合がある。
【００４０】
（接触判定装置１００の機能的構成例）
図６は、接触判定装置１００の機能的構成例を示すブロック図である。接触判定装置１００は、取得部６０１と、第１算出部６０２と、第２算出部６０３と、第３算出部６０４と、判定部６０５と、生成部６０６と、出力部６０７と、を有する。取得部６０１から出力部６０７までの制御部６００の処理は、例えば、図４に示すＣＰＵ４０１がアクセス可能なＲＯＭ４０２、ＲＡＭ４０３、ディスク４０５などの記憶装置に記憶されたプログラムにコーディングされている。そして、ＣＰＵ４０１が記憶装置からプログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部６００の処理が実現される。
【００４１】
取得部６０１は、例えば、第１の部品２０１と第２の部品２０２とを含む３次元モデル２００のＣＡＤデータ１０１を取得する。具体的には、取得部６０１は、ネットワーク４１０を介して他の装置からＣＡＤデータ１０１を取得してもよい。又は、取得部６０１は、ＲＯＭ４０２、ＲＡＭ４０３、ディスク４０５などの記憶装置からＣＡＤデータ１０１を取得してもよい。又は、取得部６０１は、マウス４０８やキーボード４０７などの入力装置を介して入力されることによりＣＡＤデータ１０１を取得してもよい。なお、理解の容易化のために、図２に示すように３次元モデル２００は、２つの部品を有する例を用いて説明するが、３つ以上の部品を有していてもよい。
【００４２】
図７は、第１の部品２０１と第２の部品２０２との斜視図である。取得されたＣＡＤデータ１０１は、第１の部品２０１を示す第１部品情報７０１と、第２の部品２０２を示す第２部品情報７０２と、を有する。第１部品情報７０１は、第１の部品２０１を表現する要素の要素情報と、その要素に含まれる頂点の頂点情報を有する。第２部品情報７０２は、第２の部品２０２を表現する要素の要素情報と、その要素に含まれる頂点の頂点情報を有する。
【００４３】
第１部品情報７０１によって表現される第１の部品２０１と、第２部品情報７０２によって表現される第２の部品２０２とは、それぞれ厚みがある。図２に示す３次元モデル２００では、第２の部品２０２に第１の部品２０１が嵌っているが、図７では、理解の容易化のために、第１の部品２０１と第２の部品２０２との接触面となる部分が見えるように示す。
【００４４】
次に、接触面であるか否かを判定する処理について説明する。ここで、第１算出部６０２から第３算出部６０４を用いて、接触面であるか否かの判定基準の算出例を３つ挙げる。各算出例については、図８を用いて説明する。
【００４５】
図８は、接触面であるか否かの判定基準例を示す説明図である。まず、第１算出部６０２について説明する。第１算出部６０２は、例えば、第１の部品２０１を表現する要素のうち第１の要素ｅ１の法線ｎ１と、第２の部品２０２を表現する要素のうち第２の要素ｅ２を含む平面とに基づいて、第１の要素ｅ１と第２の要素ｅ２との間の第１の距離ｄ１を特定する。
【００４６】
具体的には、第１算出部６０２は、例えば、第１の部品２０１を表現する要素からいずれかの第１の要素ｅ１と、第１の部品２０１を表現する要素からいずれかの第２の要素ｅ２と、を選択する。第１算出部６０２は、第１の要素ｅ１の法線ｎ１と第２の要素ｅ２を含む平面との第１の交点を特定する。第１算出部６０２は、第１の要素ｅ１と第１の要素ｅ１の法線ｎ１との第２の交点を特定する。第１の交点は、第２の交点から第１の要素ｅ１の法線ｎ１の方向に線を引いた際に、その線と第２の要素ｅ２を含む平面との交わる点ｐ１である。第２の交点が重心ａである。第１算出部６０２は、第１の交点（点ｐ１）と、第２の交点（重心ａ）との第１の距離ｄ１を算出する。
【００４７】
判定部６０５は、第１の距離ｄ１に応じて、第１の要素ｅ１と第２の要素ｅ２とが接触しているか否かを判定する。判定部６０５は、例えば、第１の距離ｄ１が第１閾値以上である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していないと判定する。判定部６０５は、例えば、第１の距離ｄ１が第１閾値未満である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していると判定する。
【００４８】
第２算出部６０３は、第２の要素ｅ２の法線ｎ２と第１の要素ｅ１を含む平面とに基づいて、第１の要素ｅ１と第２の要素ｅ２との間の第２の距離ｄ２を特定する。
【００４９】
具体的には、第２算出部６０３は、例えば、第１の部品２０１を表現する複数の要素からいずれかの第１の要素ｅ１と、第２の部品２０２を表現する複数の要素からいずれかの第２の要素ｅ２と、を選択する。そして、第２算出部６０３は、例えば、選択した第２の要素ｅ２の法線ｎ２と選択した第１の要素ｅ１を含む平面との第１の交点を特定する。第１の交点は、第２の交点から第２の要素ｅ２の法線ｎ２方向に線を引いた際に、その線と第１の要素ｅ１を含む平面との交わる点ｐ２である。第２算出部６０３は、例えば、第２の要素ｅ２と第２の要素ｅ２の法線ｎ２との第２の交点を特定する。ここでの第２の交点は、例えば、第２の要素ｅ２の重心ｂである。第２算出部６０３は、第１の交点（点ｐ２）と第２の交点（重心ｂ）との第２の距離ｄ２を算出する。
【００５０】
判定部６０５は、第２の距離ｄ２に応じて、第１の要素ｅ１と第２の要素ｅ２とが接触しているか否かを判定する。判定部６０５は、例えば、第２の距離ｄ２が第２閾値以上である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していないと判定する。判定部６０５は、例えば、第２の距離ｄ２が第２閾値未満である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していると判定する。
【００５１】
次に、第３算出部６０４は、例えば、第１の要素ｅ１の法線ｎ１と第２の要素ｅ２の法線ｎ２との交角θを算出する。第３算出部６０４は、例えば、第１の部品２０１を表現する複数の要素からいずれかの第１の要素ｅ１と、第２の部品２０２を表現する複数の要素からいずれかの第２の要素ｅ２と、を選択する。そして、第３算出部６０４は、例えば、第１の要素ｅ１の法線ｎ１と第２の要素ｅ２の法線ｎ２との交角θを算出する。
【００５２】
ここで、交角θが大きいほど、第１の要素ｅ１と第２の要素ｅ２とが直交していることになるため、第１の要素ｅ１と第２の要素ｅ２とは、接触していないことになる。また、第１の要素ｅ１の法線ｎ１と、第２の要素ｅ２の法線ｎ２とが平行である場合、第１の要素ｅ１と第２の要素ｅ２との交角θが算出されない。このような場合、第１の要素ｅ１と第２の要素ｅ２とは向き合っている。そして、交角θが小さいほど、第１の要素ｅ１と第２の要素ｅ２とが向き合っている。例えば、第１の距離ｄ１および／又は第２の距離ｄ２が近くて、かつ交角θが小さいほど、第１の要素ｅ１と第２の要素ｅ２とが接触している可能性が高くなる。
【００５３】
そこで、判定部６０５は、第１の距離ｄ１および／又は第２の距離ｄ２と、交角θ又は交角θの有無と、に基づいて、第１の要素ｅ１と第２の要素ｅ２とが接触しているか否かを判定する。
【００５４】
ここでは、第１の距離ｄ１および第２の距離ｄ２と、交角θと、に基づいて、第１の要素ｅ１と第２の要素ｅ２とが接触しているか否かを判定する例について説明する。より具体的には、判定部６０５は、第１の距離ｄ１が第１閾値未満であり、第２の距離ｄ２が第２閾値未満であり、かつ交角θが第３閾値未満である場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していると判定する。判定部６０５は、第１の距離ｄ１が第１閾値以上である場合と、第２の距離ｄ２が第２閾値以上である場合と、交角θが第３閾値以上である場合と、の少なくともいずれかの場合に、第１の要素ｅ１と第２の要素ｅ２とが接触していないと判定する。
【００５５】
接触判定装置１００は、第１の距離ｄ１と第２の距離ｄ２と交角θとの３つの判定基準を用いることにより、より精度よく接触面を特定することができる。
【００５６】
ここで、判定部６０５は、第１の部品２０１について、第１の部品２０１を表現する要素のうち、第２の部品２０２を表現する要素のいずれかと接触していると判定された要素の要素情報を接触面情報として格納する。判定部６０５は、第１の部品２０１について、第１の部品２０１を表現する要素のうち、第２の部品２０２を表現する要素のいずれとも接触していると判定されていない要素の要素情報を非接触面情報として格納する。
【００５７】
また、判定部６０５は、第２の部品２０２について、第２の部品２０２を表現する要素のうち、第１の部品２０１を表現する要素のいずれかと接触していると判定された要素の要素情報を接触面情報として格納する。判定部６０５は、第２の部品２０２について、第２の部品２０２を表現する要素のうち、第１の部品２０１を表現する要素のいずれかと接触していると判定されていない要素の要素情報を非接触面情報として格納する。
【００５８】
出力部６０７は、第１の要素ｅ１と第２の要素ｅ２とが接触していると判定した場合、第１の部品２０１を表現する要素と第２の部品２０２を表現する要素とのうち、第１の要素ｅ１と第２の要素ｅ２とを区別可能に出力する。出力形式としては、例えば、ディスプレイ４０９への出力、Ｉ／Ｆ４０６による外部装置への送信、ＲＡＭ４０３、ディスク４０５などの記憶装置への格納などが挙げられる。
【００５９】
図９は、出力例を示す説明図である。出力部６０７は、例えば、第１の部品２０１を表す要素のうち、第２の部品２０２を表現する要素のいずれかと接触していると判定された要素と、この要素以外の要素と、を区別可能に出力する。また、出力部６０７は、例えば、第２の部品２０２を表現する要素のうち、第１の部品２０１を表現する要素のいずれかと接触していると判定された要素と、この要素以外の要素と、を区別可能に出力する。
【００６０】
具体的には、出力部６０７は、例えば、ＣＡＤによって各部品をディスプレイ４０９などに表示する際に、接触していると判定された要素と、接触していると判定されていない要素とで異なる色を付けて表示する。また、出力部６０７は、例えば、接触していると判定された要素を強調表示する。図９では、第１の部品２０１において、接触していると判定された要素にハッチングが付されている。また、図９では、第２の部品２０２において、接触していると判定された要素と、接触されていないと判定された要素とで異なるハッチングが付されている。
【００６１】
また、出力部６０７は、各部品について、接触していると判定された複数の要素の中で、要素間で頂点を共有しあう一連の要素を１つの接触面として特定する。そして、出力部６０７は、特定した接触面の数を出力してもよい。
【００６２】
一連の要素を探索する方法例は、以下の通りである。出力部６０７は、例えば、接触していると判定された複数の要素のうちのいずれかの要素を選択する。そして、出力部６０７は、選択した要素と接触していると判定された複数の要素から、選択した要素と頂点を共有する要素を検出する。そして、出力部６０７は、選択した要素と検出した要素とを一連の要素とする。また、出力部６０７は、さらに、接触していると判定された複数の要素のうちの一連の要素以外の要素から、検出した要素と頂点を共有する要素を検出する。そして、出力部６０７は、新たに検出した要素を一連の要素に含める。このようにして、一連の要素が探索される。
【００６３】
また、図９において、第１部品情報７０１では、すべての要素の要素情報が、第１の部品２０１についての非接触面情報９０２と、第１の部品２０１についての接触面情報９０１と、に区別される。また、第２部品情報７０２では、すべての要素の要素情報が、第２の部品２０２についての非接触面情報９１２と、第２の部品２０２についての接触面情報９１１と、に区別される。
【００６４】
次に、第１の部品２０１と、第２の部品２０２との接触面において要素を一致させる処理について説明する。
【００６５】
また、生成部６０６は、第１の要素ｅ１と第２の要素ｅ２とが接触していると判定された場合、第１の部品２０１に対応する新たな部品を表現する要素を生成する。生成部６０６は、第１の部品２０１を表現する要素のうち、第１の要素ｅ１に含まれる頂点を含む第３の要素に含まれるその頂点と異なる頂点と、第２の要素ｅ２と、に基づいて、この新たな部品を表現する要素を生成する。新たな部品を表現する要素は、第１の部品２０１を表現する要素のうち第１の要素ｅ１および第３の要素以外の要素と、第２の要素ｅ２と同一の要素と、異なる頂点と第２の要素ｅ２に含まれる頂点とによって生成された要素と、を有する。
【００６６】
新たな部品を表現する要素を生成するとは、実際にはＣＡＤデータ１０１を変更することである。より詳細には、本実施の形態では、生成部６０６は、第１の部品２０１に対応する新たな部品を、第１の部品２０１を表現する要素を変更して作成する。このため、新たな部品については、第１の部品２０１とも呼ぶこととする。以下の説明において、要素や頂点に対する削除や生成する処理とは、ＣＡＤデータ１０１から要素の要素情報や頂点の頂点情報を削除することである。また、第１の部品２０１を表現する要素を変更する例を挙げるが、第１の部品２０１と第２の部品２０２とのいずれの要素を変更するかについては、特に限定せず、例えば利用者に選択させてもよい。
【００６７】
次に、図１０〜図１３を用いて、第１の部品２０１と第２の部品２０２との間の接触面の要素を一致させる処理の詳細例を説明する。
【００６８】
図１０は、フリーエッジの特定例を示す説明図である。生成部６０６は、第１の部品２０１についての接触面情報９０１に基づいて、接触していると判定された要素のエッジのうち、接触していると判定された要素間で共有していないエッジ（第１フリーエッジｆｅ１とも称する。）の頂点を特定する。そして、生成部６０６は、特定した第１フリーエッジｆｅ１の頂点の第１頂点情報１０１１を格納する。次に、生成部６０６は、第１の部品２０１についての接触面情報９０１を削除する。
【００６９】
そして、生成部６０６は、第２の部品２０２についての接触面情報９１１を複製する。生成部６０６は、第１部品情報７０１に、複製した接触面情報１００１を入れる。これにより、第１の部品２０１に対応する新たな部品を表現する要素に、接触していると判定された第２の要素ｅ２と同一の要素を含めることができる。
【００７０】
生成部６０６は、複製した接触面情報１００１に基づいて、接触していると判定された要素のエッジのうち、接触していると判定された要素間で共有していないエッジ（第２フリーエッジｆｅ２とも称する。）の頂点を特定する。そして、生成部６０６は、特定した第２フリーエッジｆｅ２の頂点の第２頂点情報１０１２を格納する。
【００７１】
図１１は、第１フリーエッジｆｅ１と頂点を共有する要素の特定例を示す説明図である。図１１において、第１フリーエッジｆｅ１に囲まれた要素は、複製した接触面情報１００１が示す要素である。
【００７２】
生成部６０６は、第１の部品２０１についての非接触面情報９０２から、第１頂点情報１０１１が示す頂点を含む要素の要素情報１１００を特定する。すなわち、生成部６０６は、第１フリーエッジｆｅ１と頂点を共有する要素を特定する。そして、生成部６０６は、要素情報１１００が示す要素に含まれる頂点のうち、第１頂点情報１０１１が示す頂点と異なる頂点の第３頂点情報１１０１を特定する。
【００７３】
図１２は、第１フリーエッジｆｅ１と頂点を共有する要素の削除例を示す説明図である。生成部６０６は、要素情報１１００を削除する。これにより、第１フリーエッジｆｅ１の頂点と同一の頂点を有する要素が削除される。
【００７４】
図１３は、新たな要素を生成した例を示す説明図である。生成部６０６は、第２頂点情報１０１２に含まれる頂点と、第３頂点情報１１０１に含まれる頂点と、に基づいて、第１の部品２０１についての新たな要素を生成する。これにより、第１の部品２０１に対応する新たな部品を表現する要素が生成される。
【００７５】
そして、出力部６０７は、新たに生成した要素によって表現された第１の部品２０１と第２の部品２０２とを含む３次元モデル２００を出力する。
【００７６】
また、上述した実施の形態に限らず、種々変更可能である。実施の形態では、生成部６０６は、第１の部品２０１の接触面の要素を、第２の部品２０２の接触面の要素に一致させる処理を行っているが、これに限らない。例えば、第１の部品２０１と第２の部品２０２とのいずれの部品の接触面の要素を他方の部品の接触面の要素に一致させるかを利用者によって選択可能としてもよい。例えば、利用者が、接触面の表示結果に応じていずれの部品の接触面の要素を一致させるかを選択してもよい。
【００７７】
（接触判定装置１００が行う処理手順例）
図１４は、接触判定装置１００が行う処理手順例を示すフローチャートである。まず、接触判定装置１００は、ＣＡＤデータ１０１を取得する（ステップＳ１４０１）。接触判定装置１００は、接触面の判定処理を行う（ステップＳ１４０２）。次に、接触判定装置１００は、要素の生成処理を行う（ステップＳ１４０３）。
【００７８】
次に、接触判定装置１００は、各接触面情報（１００１，９１１）と各非接触面情報（９０２，９１２）とに基づいて、接触面である要素と接触面でない要素とを区別可能に表示し（ステップＳ１４０４）、一連の処理を終了する。
【００７９】
また、接触判定装置１００は、ステップＳ１４０２とステップＳ１４０３との間で、接触面である要素と接触面でない要素とを区別可能に表示する処理を行ってもよい。
【００８０】
図１５は、図１４で示した接触面の判定処理の詳細な説明を示すフローチャートである。接触判定装置１００は、第１の部品２０１を表現する要素のうち、未処理の第１の要素があるか否かを判断する（ステップＳ１５０１）。次に、未処理の第１の要素があると判断された場合（ステップＳ１５０１：Ｙｅｓ）、接触判定装置１００は、未処理の第１の要素を選択する（ステップＳ１５０２）。
【００８１】
接触判定装置１００は、第２の部品２０２を表現する要素のうち、選択した第１の要素において未処理の第２の要素があるか否かを判断する（ステップＳ１５０３）。未処理の第２の要素があると判断された場合（ステップＳ１５０３：Ｙｅｓ）、接触判定装置１００は、未処理の第２の要素を選択する（ステップＳ１５０４）。次に、接触判定装置１００は、選択した第１の要素の法線と、選択した第２の要素の法線と、の交角θを算出する（ステップＳ１５０５）。
【００８２】
次に、接触判定装置１００は、交角θが第３閾値以上か否かを判断する（ステップＳ１５０６）。交角θが第３閾値以上であると判断された場合（ステップＳ１５０６：Ｙｅｓ）、接触判定装置１００は、ステップＳ１５０３に戻る。交角θが第３閾値以上でないと判断された場合（ステップＳ１５０６：Ｎｏ）、接触判定装置１００は、第１の距離ｄ１を算出する（ステップＳ１５０７）。
【００８３】
接触判定装置１００は、第１の距離ｄ１が第１閾値以上か否かを判断する（ステップＳ１５０８）。第１の距離ｄ１が第１閾値以上であると判断された場合（ステップＳ１５０８：Ｙｅｓ）、接触判定装置１００は、ステップＳ１５０３に戻る。第１の距離ｄ１が第１閾値以上でないと判断された場合（ステップＳ１５０８：Ｎｏ）、接触判定装置１００は、第２の距離ｄ２を算出する（ステップＳ１５０９）。接触判定装置１００は、第２の距離ｄ２が第２閾値以上であるか否かを判断する（ステップＳ１５１０）。
【００８４】
第２の距離ｄ２が第２閾値以上であると判断された場合（ステップＳ１５１０：Ｙｅｓ）、接触判定装置１００は、ステップＳ１５０３へ戻る。第２の距離ｄ２が第２閾値以上でないと判断された場合（ステップＳ１５１０：Ｎｏ）、接触判定装置１００は、第１の要素を示す要素情報を第１の部品２０１についての接触面情報９０１として格納する（ステップＳ１５１１）。次に、接触判定装置１００は、第２の要素を示す要素情報を第２の部品２０２についての接触面情報９１１に格納し（ステップＳ１５１２）、ステップＳ１５０１へ戻る。
【００８５】
ステップＳ１５０３において、未処理の第２の要素がないと判断された場合（ステップＳ１５０３：Ｎｏ）、接触判定装置１００は、第１の要素を示す要素情報を第１の部品２０１についての非接触面情報９０２に格納し（ステップＳ１５１３）、ステップＳ１５０１へ戻る。次に、未処理の第１の要素がないと判断された場合（ステップＳ１５０１：Ｎｏ）、接触判定装置１００は、第２の部品２０２についての接触面情報９１１に含まれない第２の要素を示す要素情報を第２の部品２０２についての非接触面情報９１２に格納し（ステップＳ１５１４）、一連の処理を終了する。
【００８６】
なお、第１の距離ｄ１と第２の距離ｄ２と交角θとについての算出処理および判定処理については、図１５に示すように、交角θ、第１の距離ｄ１、第２の距離ｄ２の順に限らず、種々変更してよいし、並列処理であってもよく、特に限定しない。
【００８７】
図１６は、図１４で示した要素の生成処理の詳細な説明を示すフローチャートである。接触判定装置１００は、第１の部品２０１についての接触面情報９０１に含まれる要素情報が示す要素のエッジのうちの第１フリーエッジｆｅ１の頂点の第１頂点情報１０１１を格納する（ステップＳ１６０１）。
【００８８】
次に、接触判定装置１００は、第１の部品２０１についての接触面情報９０１を削除する（ステップＳ１６０２）。これにより、第１の部品２０１を表現する要素から、第１の部品２０２の接触面の要素が削除される。
【００８９】
そして、接触判定装置１００は、第２の部品２０２についての接触面情報９１１を複製して、第１の部品２０１についての接触面情報９０１として格納する（ステップＳ１６０３）。次に、接触判定装置１００は、第１の部品２０１についての接触面情報９０１に含まれる要素情報が示す要素のエッジのうちの第２フリーエッジｆｅ２上の第２頂点情報１０１２を格納する（ステップＳ１６０４）。
【００９０】
次に、接触判定装置１００は、第１の部品２０１についての非接触面情報９０２から、第１頂点情報１０１１が示す頂点を含む要素を示す要素情報１１００を特定する（ステップＳ１６０５）。これにより、非接触面情報９０２から、第１フリーエッジｆｅ１の頂点を含む三角形が特定される。接触判定装置１００は、特定した要素情報１１００が示す要素の頂点のうち、第１頂点情報１０１１が示す頂点以外の頂点を特定して第３頂点情報１１０１を格納する（ステップＳ１６０６）。
【００９１】
次に、接触判定装置１００は、第１の部品２０１についての非接触面情報９０２から、要素情報１１００を削除する（ステップＳ１６０７）。次に、接触判定装置１００は、第３頂点情報１１０１と、第２頂点情報１０１２と、に基づいて、三角形の要素を再構築し（ステップＳ１６０８）、一連の処理を終了する。ステップＳ１６０８によって要素の要素情報１２００が生成される。ステップＳ１６０８によって、削除した要素情報１１００が示す要素の代わりとなる新たな要素が生成される。
【００９２】
以上説明したように、接触判定装置１００は、各部品を三角形の要素で表す場合に、第１の部品の１つの要素の法線と、第２の部品の１つの要素を含む平面とに基づく２つの要素間の距離に応じて、２つの要素が接触しているか否かを判定する。これにより、接触判定装置１００は、２つの要素が近いにあるか否かによって、２つの要素が各部品の接触面であるか否かを判定することができる。したがって、接触判定装置１００は、ＳＴＬデータのような汎用的なＣＡＤデータであっても、各部品の接触面を自動で精度よく特定することができる。このように曲面の情報を有するような有償のＣＡＤデータを使用しなくてよいため、解析の低廉化を図ることができる。
【００９３】
また、接触判定装置１００は、第１の要素と第２の要素とが接触していると判定した場合、第１の部品と第２の部品のうち、第１の要素と第２の要素とを区別可能に出力する。これにより、接触判定装置１００は、部品の接触面を見易く提示することができる。
【００９４】
また、接触判定装置１００は、第１の要素と第２の要素との距離として、第１の要素の法線と第２の要素を含む平面との第１の交点と、第１の要素と第１の要素の法線との第２の交点との距離を算出する。
【００９５】
また、接触判定装置１００は、第２の要素の法線と第１の要素を含む平面とに基づいて、第１の要素と第２の要素との間の第２の距離に応じて、第１の要素と第２の要素とが接触しているか否かを判定する。これにより、第２の要素から第１の要素を見た場合に、第１の要素と第２の要素とが接触面となるか否かが判定される。
【００９６】
また、例えば、接触面では、要素の面同士が向き合っていることが考えられる。そこで、接触判定装置１００は、第１の要素の法線および第２の要素の法線の交角と、第１の距離とに応じて、第１の要素と第２の要素とが接触しているか否かを判定する。これにより、接触判定装置１００は、第１の要素と第２の要素とが近く、かつ第１の要素と第２の要素とが向き合っている場合に、第１の要素と第２の要素とが接触面であると判定することができる。したがって、接触判定装置１００は、より精度良く部品の接触面を特定することができる。
【００９７】
また、接触判定装置１００は、第１の部品を表現する要素のうち、第１の要素に含まれる頂点を含む第３の要素に含まれるこの頂点と異なる頂点と、第２の要素と、に基づいて、第１の部品に対応する新たな部品を表現する要素を生成する。これにより、接触判定装置１００は、接触面となる部分において、第１の部品の要素と、第２の部品の要素と、を一致させることができる。したがって、接触判定装置１００は、解析モデルにおいて四面体の要素が干渉するのを抑制することができる。
【００９８】
なお、本実施の形態で説明した接触判定方法は、予め用意された接触判定プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本接触判定プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、接触判定プログラムは、インターネット等のネットワークを介して配布してもよい。
【００９９】
また、接触判定装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、例えば、上述した接触判定装置の機能をＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、接触判定装置１００を製造することができる。
【０１００】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１０１】
（付記１）第１の部品と第２の部品とを含む３次元モデルのデータを取得し、
前記第１の部品を表現する要素のうち第１の要素の法線と、前記第２の部品を表現する要素のうち第２の要素を含む平面とに基づいて、前記第１の要素と前記第２の要素との間の距離を特定し、
前記距離に応じて、前記第１の要素と前記第２の要素とが接触しているか否かを判定する、
処理をコンピュータに実行させることを特徴とする接触判定プログラム。
【０１０２】
（付記２）前記第１の要素と前記第２の要素とが接触していると判定した場合、前記第１の部品を表現する要素と前記第２の部品を表現する要素とのうち、前記第１の要素と前記第２の要素とを区別可能に出力する、
ことを特徴とする付記１に記載の接触判定プログラム。
【０１０３】
（付記３）前記距離は、前記第１の要素の法線と前記第２の要素を含む平面との第１の交点と、前記第１の要素と前記第１の要素の法線との第２の交点との距離である、
ことを特徴とする付記１に記載の接触判定プログラム。
【０１０４】
（付記４）前記第２の要素の法線と前記第１の要素を含む平面とに基づいて、前記第１の要素と前記第２の要素との間の第２の距離を特定し、
前記第１の要素と前記第２の要素とが接触しているか否かの判定は、前記第２の距離に応じて判定される、
ことを特徴とする付記１に記載の接触判定プログラム。
【０１０５】
（付記５）前記第１の要素と前記第２の要素とが接触しているか否かの判定は、前記第１の要素の法線と前記第２の要素の法線との交角の有無又は前記交角の大きさと、前記距離とに応じて判定される、
ことを特徴とする付記１乃至４のいずれか１つに記載の接触判定プログラム。
【０１０６】
（付記６）前記第１の要素と前記第２の要素とが接触している場合、前記第１の部品を表現する要素のうち、前記第１の要素に含まれる頂点を含む第３の要素に含まれる当該頂点と異なる頂点と、前記第２の要素と、に基づいて、前記第１の部品に対応する新たな部品を表現する要素を生成する、
ことを特徴とする付記１乃至５のいずれか１つに記載の接触判定プログラム。
【０１０７】
（付記７）前記新たな部品を表現する要素は、前記第１の部品を表現する要素のうち前記第１の要素および前記第３の要素以外の要素と、前記第２の要素と同一の要素と、前記異なる頂点と前記第２の要素に含まれる頂点とによって生成された要素と、を含むことを特徴とする付記６に記載の接触判定プログラム。
【０１０８】
（付記８）第１の部品と第２の部品とを含む３次元モデルのデータを取得し、
前記第１の部品を表現する要素のうち第１の要素の法線と、前記第２の部品を表現する要素のうち第２の要素を含む平面とに基づいて、前記第１の要素と前記第２の要素との間の距離を特定し、
前記距離に応じて、前記第１の要素と前記第２の要素とが接触しているか否かを判定する、
処理をコンピュータが実行することを特徴とする接触判定方法。
【０１０９】
（付記９）第１の部品と第２の部品とを含む３次元モデルのデータを取得し、
前記第１の部品を表現する要素のうち第１の要素の法線と、前記第２の部品を表現する要素のうち第２の要素を含む平面とに基づいて、前記第１の要素と前記第２の要素との間の距離を特定し、
前記距離に応じて、前記第１の要素と前記第２の要素とが接触しているか否かを判定する、
制御部を有することを特徴とする接触判定装置。
【符号の説明】
【０１１０】
１００  接触判定装置
１０１  ＣＡＤデータ
２００  ３次元モデル
２０１  第１の部品
２０２  第２の部品
３００  解析モデル
３０１  第１の解析モデル
３０２  第２の解析モデル
６００  制御部
６０１  取得部
６０２  第１算出部
６０３  第２算出部
６０４  第３算出部
６０５  判定部
６０６  生成部
６０７  出力部
７０１  第１部品情報
７０２  第２部品情報
９０１，９１１，１００１  接触面情報
９０２，９１２  非接触面情報
１０１１  第１頂点情報
１０１２  第２頂点情報
１１００，１２００  要素情報
１１０１  第３頂点情報
【図１】
2018156145.tif 000003
【図２】
2018156145.tif 000004
【図３】
2018156145.tif 000005
【図４】
2018156145.tif 000006
【図５】
2018156145.tif 000007
【図６】
2018156145.tif 000008
【図７】
2018156145.tif 000009
【図８】
2018156145.tif 000010
【図９】
2018156145.tif 000011
【図１０】
2018156145.tif 000012
【図１１】
2018156145.tif 000013
【図１２】
2018156145.tif 000014
【図１３】
2018156145.tif 000015
【図１４】
2018156145.tif 000016
【図１５】
2018156145.tif 000017
【図１６】
2018156145.tif 000018