(57)【特許請求の範囲】
【請求項１】
コンピュータに、
部品の形状と位置とを含む部品情報を格納する格納部から、部品情報を読み出し、
位置を更新する更新部品を前記部品の中から特定し、
前記更新部品と接触する接触部品を前記部品の中から特定し、
前記更新部品の位置を更新し、
前記接触部品の重力方向の接触状態を検出し、
検出した接触状態から前記接触部品の落下状況を判定する
処理を実行させる判定プログラム。
【請求項２】
検出した接触状態から前記接触部品の落下状況を判定する際に、前記重力方向に、前記接触部品と接触する部品が存在しない場合に、前記接触部品は自由落下すると判定する
請求項１に記載の判定プログラム。
【請求項３】
検出した接触状態から前記接触部品の落下状況を判定する際に、前記接触部品と接触する部品の接触部分と、前記接触部品の重心とを水平面に投影させた場合に、前記接触部分によって囲まれる最小の多角形内に前記重心が含まれていないときに、前記接触部品は回転落下すると判定する
請求項１に記載の判定プログラム。
【請求項４】
前記接触部品の重力方向の接触状態を検出する際に、前記接触部品に接触する部品を新たな接触部品として、該接触部品が地面に接する部品となるまで前記接触状態を検出する処理を繰り返し行い、
検出した接触状態から前記接触部品の落下状況を判定する際に、前記新たな接触部品の重力方向の接触状態から該新たな接触部品の落下状況を判定する
請求項１〜３のいずれか一つに記載の判定プログラム。
【請求項５】
さらに、コンピュータに、部品の接触関係を抽出する処理を実行させ、
検出した接触状態から前記接触部品の落下状況を判定する際に、前記部品の接触関係に基づいて、前記接触部品の落下状況を判定する
請求項１〜４のいずれか一つに記載の判定プログラム。
【請求項６】
部品の形状と位置とを含む部品情報を格納する格納部から、部品情報を読み出す生成部と、
位置を更新する更新部品を前記部品の中から特定する第一の特定部と、
前記更新部品と接触する接触部品を前記部品の中から特定する第二の特定部と、
前記更新部品の位置を更新する更新部と、
前記接触部品の重力方向の接触状態を検出する検出部と、
検出した接触状態から前記接触部品の落下状況を判定する判定部と、
を有することを特徴とする判定装置。
【請求項７】
コンピュータが実行する判定方法であって、
部品の形状と位置とを含む部品情報を格納する格納部から、部品情報を読み出し、
位置を更新する更新部品を前記部品の中から特定し、
前記更新部品と接触する接触部品を前記部品の中から特定し、
前記更新部品の位置を更新し、
前記接触部品の重力方向の接触状態を検出し、
検出した接触状態から前記接触部品の落下状況を判定する
ことを特徴とする判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、判定プログラム、判定装置および判定方法に関する。
【背景技術】
【０００２】
従来、部品の組み立てや、分解作業を支援するアニメーションを表示する装置がある。この装置で表示されるアニメーションを作成する作成者は、組み立てや分解作業によって、落下する部品を想定し、組み立てや分解作業に伴い発生する部品の落下が表現されるようにアニメーションを作成する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２６５８４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来の技術では、落下する部品をアニメーションの作成者が想定するため、落下する部品を自動的に判定することができないという問題がある。
【０００５】
開示の技術は、上記に鑑みてなされたものであって、落下する部品を自動的に判定することができる判定プログラム、判定装置および判定方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願の開示する判定プログラムは、一つの態様において、コンピュータに、部品の形状と位置とを含む部品情報を格納する格納部から、部品情報を読み出す処理を実行させる。また、本願の開示する判定プログラムは、コンピュータに、位置を更新する更新部品を部品の中から特定する処理を実行させる。また、本願の開示する判定プログラムは、コンピュータに、更新部品と接触する接触部品を特定する処理を実行させる。また、本願の開示する判定プログラムは、コンピュータに、更新部品の位置を更新する処理を実行させる。また、本願の開示する判定プログラムは、コンピュータに、接触部品の重力方向の接触状態を検出する処理を実行させる。また、本願の開示する判定プログラムは、コンピュータに、検出した接触状態から接触部品の落下状況を判定する処理を実行させる。
【発明の効果】
【０００７】
本願の開示する判定プログラムの一つの態様によれば、落下する部品を自動的に判定することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１に係る判定装置の構成を示す図である。
【図２】図２は、判定装置の処理を説明するための図である。
【図３】図３は、判定装置の処理を説明するための図である。
【図４】図４は、実施例１に係る自由落下判定処理の手順を示すフローチャートである。
【図５】図５は、実施例２に係る判定装置の構成を示す図である。
【図６】図６は、判定装置の処理を説明するための図である。
【図７】図７は、判定装置の処理を説明するための図である。
【図８Ａ】図８Ａは、検出部により生成される最小多角形の領域と、重心との関係の一例を示す図である。
【図８Ｂ】図８Ｂは、検出部により生成される最小多角形の領域と、重心との関係の一例を示す図である。
【図９】図９は、実施例２に係る回転落下判定処理の手順を示すフローチャートである。
【図１０】図１０は、実施例３に係る判定装置の構成を示す図である。
【図１１】図１１は、判定装置の処理を説明するための図である。
【図１２】図１２は、ツリー情報が示す部品の接触関係を示すツリーの一例を示す図である。
【図１３】図１３は、判定装置の処理を説明するための図である。
【図１４】図１４は、判定装置の処理を説明するための図である。
【図１５】図１５は、判定装置の処理を説明するための図である。
【図１６】図１６は、実施例３に係るツリー生成処理の手順を示すフローチャートである。
【図１７】図１７は、実施例３に係る落下状況判定処理の手順を示すフローチャートである。
【図１８】図１８は、判定プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００９】
以下に、本願の開示する判定プログラム、判定装置および判定方法の各実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１０】
［判定装置の構成］
実施例１に係る判定装置について説明する。図１は、実施例１に係る判定装置の構成を示す図である。本実施例にかかる判定装置１０は、部品の自由落下を判定するものである。図１に示すように、判定装置１０は、入力部１１と、出力部１２と、記憶部１３と、制御部１４とを有する。
【００１１】
入力部１１は、各種情報を制御部１４に入力する。例えば、入力部１１は、ユーザから、後述の自由落下判定処理を実行する指示を受け付けて、受け付けた指示を制御部１４に入力する。また、入力部１１は、ユーザから、位置を移動させる、すなわち、位置を更新させる部品の識別情報（ＩＤ：ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）を受け付けて、受け付けた識別情報を制御部１４に入力する。入力部１１のデバイスの一例としては、マウスやキーボードなどの操作受付デバイスが挙げられる。
【００１２】
出力部１２は、各種の情報を出力する。例えば、出力部１２は、後述の判定部１４ｆにより自由落下すると判定された部品が自由落下するように、後述の修正部１４ｇにより修正された画像情報が示す画像を表示する。出力部１２のデバイスの一例としては、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）などの表示デバイスなどが挙げられる。
【００１３】
記憶部１３は、各種情報を記憶する。例えば、記憶部１３は、部品情報１３ａを記憶する。部品情報１３ａは、出力部１２により画像が表示される部品に関する情報である。例えば、部品情報１３ａには、部品の位置を示す位置情報、部品の３次元形状を示す形状情報などが部品毎に含まれる。また、部品情報１３ａとして、ＣＡＤ（Computer  Aided  Design）データを用いることができる。部品情報１３ａに含まれる各部品の位置情報の一例としては、各部品の重心位置などが挙げられる。また、後述する重力方向については、部品情報１３ａが示す各部品が仮想的に存在する三次元空間上に予め定義されているものとする。また、後述する地面についても、部品情報１３ａが示す各部品が仮想的に存在する三次元空間上に予め定義されているものとする。なお、「記憶部」は、「格納部」とも称される。
【００１４】
記憶部１３は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部１３は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。
【００１５】
制御部１４は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１に示すように、制御部１４は、生成部１４ａと、第一の特定部１４ｂと、第二の特定部１４ｃと、更新部１４ｄと、検出部１４ｅと、判定部１４ｆと、修正部１４ｇとを有する。
【００１６】
生成部１４ａは、部品の形状と位置とを含む部品情報を格納する格納部から、部品情報を読み出して画像情報を生成する。例えば、生成部１４ａは、記憶部１３に記憶された部品情報１３ａを読み出す。そして、生成部１４ａは、読み出した部品情報１３ａの位置および形状に基づいて、出力部１２で表示される画像の画像情報を生成する。図２は、判定装置の処理を説明するための図である。図２の例では、部品Ａ２１と、部品Ｂ２２および部品Ｃ２３とが接触している場合が示されている。また、図２の例では、部品Ｃ２３と部品Ｄ２４とが接触している場合が示されている。また、図２の例では、部品Ｄ２４が、地面に接触している場合が示されている。図２の例では、生成部１４ａは、部品Ａ２１、部品Ｂ２２、部品Ｃ２３、部品Ｄ２４の位置情報および形状情報などを含む部品情報１３ａを記憶部１３から読み出す。そして、図２の例では、生成部１４ａは、読み出した部品情報１３ａの各部品の位置情報が示す位置、および形状情報が示す形状に基づいて、部品Ａ２１、部品Ｂ２２、部品Ｃ２３、部品Ｄ２４の画像を含む画像情報を生成する。なお、出力部１２で表示される画像の画像情報は、出力部１２で表示される場合に、後述の判定部１４により、自由落下すると判定された部品が自由落下するように修正される。
【００１７】
第一の特定部１４ｂは、位置を更新する部品である更新部品を部品の中から特定する。例えば、第一の特定部１４ｂは、入力部１１から入力された位置を更新させる部品の識別情報を受信して取得することで、更新部品を部品の中から特定する。図２の例では、部品Ａ２１の識別情報が入力部１１から入力された場合が示されている。この場合、第一の特定部１４ｂは、部品Ａ２１を更新部品として、部品Ａ２１〜Ｄ２１の中から特定する。
【００１８】
第二の特定部１４ｃは、更新部品と接触する部品である接触部品を特定する。例えば、第二の特定部１４ｃは、更新部品を重力方向に微少量移動させる。微少量の一例としては、部品が位置する３次元空間において２、３ｍｍなどが挙げられる。そして、第二の特定部１４ｃは、他の部品と干渉が起きた場合には、干渉が起きた部品を、更新部品と接触する接触部品として特定する。続いて、第二の特定部１４ｃは、特定した接触部品を接触部品リストに追加する。
【００１９】
図２の例では、第二の特定部１４ｃは、更新部品Ａ２１を重力方向に微少量移動させた場合に、部品Ｂ２２および部品Ｃ２３と干渉が起きるので、部品Ｂ２２および部品Ｃ２３を更新部品Ａ２１と接触する接触部品として特定する。
【００２０】
更新部１４ｄは、更新部品の位置を更新する。例えば、更新部１４ｄは、更新部品を、移動方向に所定距離移動させ、移動後の位置を更新部品の位置として更新する。図３は、判定装置の処理を説明するための図である。図３の例では、更新部品として、位置が（ＸＡ１、ＹＡ１、ＺＡ１）である部品Ａ２１が特定された場合が示されている。また、図３の例では、更新部品Ａ２１が図中右方向に所定距離Ｘ移動される場合が示されている。なお、移動後の更新部品Ａ２１の位置を（ＸＡ２、ＹＡ２、ＺＡ２）とする。図３の例では、更新部１４ｄは、更新部品Ａ２１の位置を（ＸＡ２、ＹＡ２、ＺＡ２）に更新する。
【００２１】
検出部１４ｅは、接触部品の重力方向の接触状態を検出する。例えば、検出部１４ｅは、接触部品リストの接触部品のうち、未選択の接触部品を一つ選択し、選択した接触部品を重力方向に微少量移動させる。微少量の一例としては、部品が位置する３次元空間において２、３ｍｍなどが挙げられる。そして、検出部１４ｅは、接触状態として、他の部品と干渉する状態であるか否かを検出する。そして、検出部１４ｅは、接触部品が他の部品と干渉する状態であることを検出した場合には、接触部品と干渉する他の部品を接触部品リストに追加する。ただし、検出部１４ｅは、接触部品と干渉する他の部品が、地面と接する部品であるベース部品の場合には、接触部品リストに追加しない。これは、接触部品リストの部品は、後述の判定部１４ｆにより自由落下するか否かの判定対象となるが、ベース部品については、地面に接しているため自由落下することがないので、かかる判定対象から外すためである。図３の例では、検出部１４ｅは、接触部品Ｂ２２が他の部品と干渉しない状態であることを検出する場合が示されている。また、図３の例では、検出部１４ｅは、接触部品Ｃ２３が他の部品と干渉する状態であることを検出する場合が示されている。
【００２２】
判定部１４ｆは、検出した接触状態から接触部品の落下状況を判定する。例えば、判定部１４ｆは、検出部１４ｅにより接触部品が他の部品と干渉しない状態であることが検出された場合には、この接触部品が自由落下すると判定する。また、判定部１４ｆは、検出部１４ｅにより接触部品が他の部品と干渉する状態であることが検出された場合には、この接触部品が自由落下しないと判定する。そして、判定部１４ｆは、自由落下すると判定された接触部品を自由落下部品リストに追加する。図３の例では、判定部１４ｆは、部品Ｂ２２が自由落下すると判定する。また、図３の例では、判定部１４ｆは、部品Ｃ２３が自由落下しないと判定する。
【００２３】
修正部１４ｇは、自由落下すると判定された部品が、出力部１２の表示上において、自由落下するように、画像情報を修正する。例えば、修正部１４ｇは、判定部１４ｆにより自由落下すると判定された部品が、表示上で自由落下するように、生成部１４ａにより生成された画像情報を修正する。そして、修正部１４ｇは、修正した画像情報を出力部１２に出力する。図３の例では、修正部１４ｇは、部品Ｂ２２が自由落下するように、生成部１４ａにより生成された画像情報を修正する。
【００２４】
制御部１４は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００２５】
［処理の流れ］
次に、本実施例に係る判定装置１０の処理の流れを説明する。図４は、実施例１に係る自由落下判定処理の手順を示すフローチャートである。この自由落下判定処理は、入力部１１から自由落下判定処理を実行する指示を制御部１４が入力された場合に、実行される。
【００２６】
図４に示すように、第一の特定部１４ｂは、位置を更新させる部品の識別情報を受信した場合（ステップＳ１０１肯定）には、更新部品を部品の中から特定する（ステップＳ１０２）。生成部１４ａは、記憶部１３から部品情報１３ａを読み出して画像情報を生成する（ステップＳ１０３）。第二の特定部１４ｃは、更新部品と接触する接触部品を特定し、特定した接触部品を接触部品リストに追加する（ステップＳ１０４）。
【００２７】
更新部１４ｄは、更新部品の位置を更新する（ステップＳ１０５）。検出部１４ｅは、接触部品リストのうち、未選択の接触部品を一つ選択し、選択した接触部品を重力方向に微少量移動させる（ステップＳ１０６）。検出部１４ｅは、接触部品が他の部品と干渉したか否かを判定する（ステップＳ１０７）。
【００２８】
接触部品が他の部品と干渉しない場合（ステップＳ１０７否定）には、判定部１４ｆは、接触部品が自由落下すると判定し、自由落下すると判定した接触部品を自由落下部品リストに追加し（ステップＳ１０８）、ステップＳ１１１へ進む。一方、接触部品が他の部品と干渉する場合（ステップＳ１０７肯定）には、検出部１４ｅは、接触部品と干渉する他の部品が、ベース部品であるか否かを判定する（ステップＳ１０９）。接触部品と干渉する他の部品が、ベース部品でない場合（ステップＳ１０９否定）には、検出部１４ｅは、接触部と干渉する他の部品を接触部品リストに追加する（ステップＳ１１０）。そして、検出部１４ｅは、接触部品リストの接触部品のうち、上記のステップＳ１０６で未選択の接触部品があるか否かを判定する（ステップＳ１１１）。未選択の接触部品がある場合（ステップＳ１１１肯定）には、ステップＳ１０６に戻る。一方、未選択の接触部品がない場合（ステップＳ１１１否定）には、修正部１４ｇは、次のような処理を行う。すなわち、修正部１４ｇは、自由落下すると判定された部品が、表示上で自由落下するように、生成部１４ａにより生成された画像情報を修正し、修正した画像情報を出力部１２に出力し（ステップＳ１１２）、処理を終了する。また、接触部品と干渉する他の部品が、ベース部品である場合（ステップＳ１０９肯定）には、ステップＳ１１１へ進む。
【００２９】
［実施例１の効果］
上述してきたように、本実施例に係る判定装置１０は、部品の形状と位置とを含む部品情報を格納する格納部である記憶部１３から、部品情報１３ａを読み出して画像情報を生成する。また、本実施例に係る判定装置１０は、位置を更新する部品である更新部品を部品の中から特定する。また、本実施例に係る判定装置１０は、更新部品と接触する部品である接触部品を特定する。また、本実施例に係る判定装置１０は、更新部品の位置を更新する。また、本実施例に係る判定装置１０は、接触部品の重力方向の接触状態を検出する。また、本実施例に係る判定装置１０は、検出した接触状態から接触部品の落下状況を判定する。したがって、本実施例に係る判定装置１０によれば、自動的に部品の落下を判定することができる。
【００３０】
また、本実施例に係る判定装置１０は、重力方向に、接触部品と接触する部品が存在しない場合に、接触部品は自由落下すると判定する。したがって、本実施例に係る判定装置１０によれば、自動的に部品の自由落下を判定することができる。
【００３１】
また、本実施例に係る判定装置１０は、接触部品に接触する部品を新たな接触部品として、接触部品が地面に接する部品であるベース部品となるまで接触状態を検出する処理を繰り返し行う。また、本実施例に係る判定装置１０は、新たな接触部品の重力方向の接触状態から新たな接触部品の落下状況を判定する。これにより、更新部品と地面との間に存在する部品全てについて、落下状況を判定することができる。
【実施例２】
【００３２】
さて、上記の実施例１では、自由落下を判定する場合を例示したが、開示の装置はこれに限定されない。そこで、実施例２では、回転落下を判定する場合について説明する。
【００３３】
［判定装置３０の構成］
図５は、実施例２に係る判定装置の構成を示す図である。図５に示すように、判定装置３０は、制御部３４を有する。かかる制御部３４は、図１に示す実施例１に係る制御部１４と比較して、第二の特定部１４ｃ、検出部１４ｅおよび判定部１４ｆに代えて、第二の特定部３４ｃ、検出部３４ｅおよび判定部３４ｆを有する点が異なる。なお、以下では、上記の実施例１と同様の機能を果たす回路や機器については図１と同様の符号を付し、その説明は省略することとする。本実施例では、判定装置３０は、部品の回転落下を判定する。また、本実施例では、入力部１１は、ユーザから、後述の回転落下判定処理を実行する指示を受け付けて、受け付けた指示を制御部３４に入力する。
【００３４】
第二の特定部３４ｃは、更新部品と接触する部品である接触部品を特定する。例えば、第二の特定部３４ｃは、更新部品を全方向に微少量移動させる。微少量の一例としては、部品が位置する３次元空間において２、３ｍｍなどが挙げられる。そして、第二の特定部３４ｃは、他の部品と干渉が起きた場合には、干渉が起きた部品を、更新部品と接触する接触部品として特定する。
【００３５】
図６および図７は、判定装置の処理を説明するための図である。図６の例では、部品Ａ４１と、部品Ｂ４２および部品Ｃ４３とが接触している場合が示されている。また、図６の例では、部品Ｂ４２および部品Ｃ４３が、地面に接触している場合が示されている。また、図６の例では、部品Ｂ４２の識別情報が入力部１１から制御部１４に入力された場合が示されている。この場合、第一の特定部１４ｂは、部品Ｂ４２を更新部品として、部品Ａ４１〜部品Ｃ４３の中から特定する。また、図６の例では、第二の特定部３４ｃは、更新部品Ｂ４２を全方向に微少量移動させた場合に、部品Ａ４１および部品Ｃ４３と干渉が起きるので、部品Ａ４１および部品Ｃ４３を更新部品Ｂ４２と接触する接触部品として特定する。
【００３６】
また、図７の例では、位置が（ＸＢ１、ＹＢ１、ＺＢ１）である更新部品Ｂ４２が図中左方向に所定距離Ｘ移動される場合が示されている。なお、移動後の更新部品Ｂ４２の位置を（ＸＢ２、ＹＢ２、ＺＢ２）とする。図７の例では、更新部１４ｄは、更新部品Ｂ４２の位置を（ＸＢ２、ＹＢ２、ＺＢ２）に更新する。
【００３７】
検出部３４ｅは、接触部品と接触する部品の接触部分と、接触部品の重心とを水平面に投影させた場合に、接触部分によって囲まれる最小の多角形内に重心が含まれているか否かを判定することにより、接触状態を検出する。例えば、検出部３４ｅは、接触部品の移動量が指定量に達するまで、接触部品を重力方向に微少量ずつ移動させる。微少量の一例としては、部品が位置する３次元空間において２、３ｍｍなどが挙げられる。また、検出部３４ｅは、他の部品と干渉が起きた場合には、干渉が起きた部分の位置座標を干渉点リストに追加する。すなわち、干渉点リストには、干渉が起きた部分の位置座標である干渉点の集合が含まれる。そして、検出部３４ｅは、干渉点リストの位置座標が示す干渉点の集合である接触部分（干渉部分）と、接触部品の重心とを水平面に投影させる。続いて、検出部３４ｅは、接触部分によって囲まれる最小多角形であって水平面上の最小多角形の領域を生成する。そして、検出部３４ｅは、最小多角形内に重心が含まれているか否かを判定することにより、接触状態を検出する。
【００３８】
図８Ａおよび図８Ｂは、検出部により生成される最小多角形の領域と、重心との関係の一例を示す図である。図８Ａの例では、接触部分によって囲まれる最小多角形５１内に、接触部品の重心５０が含まれていないため、検出部３４ｅは、最小多角形内に重心が含まれていないと判定する。ここで、最小多角形内に重心が含まれていない場合には、接触部品は回転落下する。また、図８Ｂの例では、接触部分によって囲まれる最小多角形５１内に、接触部品の重心５０が含まれるため、検出部３４ｅは、最小多角形内に重心が含まれていると判定する。ここで、最小多角形内に重心が含まれている場合には、接触部品は回転落下しない。このようにして、検出部３４ｅは、接触状態を検出する。
【００３９】
判定部３４ｆは、検出した接触状態から接触部品の落下状況を判定する。例えば、判定部３４ｆは、検出部３４ｅにより最小多角形内に重心が含まれていないと判定された場合には、接触部品が回転落下すると判定する。また、判定部３４ｆは、検出部３４ｅにより最小多角形内に重心が含まれていると判定された場合には、接触部品が回転落下しないと判定する。そして、判定部３４ｆは、回転落下すると判定された接触部品を回転落下部品リストに追加する。図７の例では、判定部３４ｆは、部品Ａ４１が回転落下すると判定する。
【００４０】
修正部３４ｇは、回転落下すると判定された部品が、出力部１２の表示上において、回転落下するように、画像情報を修正する。例えば、修正部３４ｇは、判定部３４ｆにより回転落下すると判定された部品が、表示上で回転落下するように、生成部１４ａにより生成された画像情報を修正する。そして、修正部３４ｇは、修正した画像情報を出力部１２に出力する。図７の例では、修正部３４ｇは、部品Ａ４１が回転落下するように、生成部１４ａにより生成された画像情報を修正する。
【００４１】
制御部３４は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００４２】
［処理の流れ］
次に、本実施例に係る判定装置３０の処理の流れを説明する。図９は、実施例２に係る回転落下判定処理の手順を示すフローチャートである。この回転落下判定処理は、入力部１１から回転落下判定処理を実行する指示を制御部３４が入力された場合に、実行される。
【００４３】
図９に示すように、第一の特定部１４ｂは、位置を更新させる部品の識別情報を受信した場合（ステップＳ２０１肯定）には、更新部品を部品の中から特定する（ステップＳ２０２）。生成部１４ａは、記憶部１３から部品情報１３ａを読み出して画像情報を生成する（ステップＳ２０３）。第二の特定部３４ｃは、更新部品と接触する接触部品を特定する（ステップＳ２０４）。
【００４４】
更新部１４ｄは、更新部品の位置を更新する（ステップＳ２０５）。検出部３４ｅは、接触部品を重力方向に微少量移動させる（ステップＳ２０６）。検出部３４ｅは、接触部品が他の部品と干渉したか否かを判定する（ステップＳ２０７）。接触部品が他の部品と干渉しない場合（ステップＳ２０７否定）には、ステップＳ２０９へ進む。一方、接触部品が他の部品と干渉した場合（ステップＳ２０７肯定）には、検出部３４ｅは、干渉が起きた部分の位置座標を干渉点リストに追加する（ステップＳ２０８）。検出部３４ｅは、接触部品の移動量が指定量に達したか否かを判定する（ステップＳ２０９）。接触部品の移動量が指定量に達していない場合（ステップＳ２０９否定）には、ステップＳ２０６に戻る。
【００４５】
一方、接触部品の移動量が指定量に達した場合（ステップＳ２０９肯定）には、検出部３４ｅは、干渉点リストの位置座標が示す干渉点の集合である接触部分（干渉部分）と、接触部品の重心とを水平面に投影させる（ステップＳ２１０）。検出部３４ｅは、接触部分によって囲まれる最小多角形であって水平面上の最小多角形の領域内に、重心が含まれているか否かを判定する（ステップＳ２１１）。最小多角形内の領域内に重心が含まれていない場合（ステップＳ２１１否定）には、判定部３４ｆは、接触部品が回転落下すると判定する（ステップＳ２１２）。一方、最小多角形内の領域内に重心が含まれている場合（ステップＳ２１１肯定）には、判定部３４ｆは、接触部品が回転落下しないと判定する（ステップＳ２１３）。そして、接触部品が回転落下すると判定された場合には、修正部３４ｇは、次のような処理を行う。すなわち、修正部３４ｇは、回転落下すると判定された部品が、表示上で回転落下するように、生成部１４ａにより生成された画像情報を修正し、修正した画像情報を出力部１２に出力し（ステップＳ２１４）、処理を終了する。
【００４６】
［実施例２の効果］
上述してきたように、本実施例に係る判定装置３０は、部品の形状と位置とを含む部品情報を格納する格納部である記憶部１３から、部品情報１３ａを読み出して画像情報を生成する。また、本実施例に係る判定装置３０は、位置を更新する部品である更新部品を部品の中から特定する。また、本実施例に係る判定装置３０は、更新部品と接触する部品である接触部品を特定する。また、本実施例に係る判定装置３０は、更新部品の位置を更新する。また、本実施例に係る判定装置３０は、接触部品の重力方向の接触状態を検出する。また、本実施例に係る判定装置３０は、検出した接触状態から接触部品の落下状況を判定する。したがって、本実施例に係る判定装置３０によれば、自動的に部品の落下を判定することができる。
【００４７】
また、本実施例に係る判定装置３０は、接触部品と接触する部品の接触部分と、接触部品の重心とを水平面に投影させた場合に、接触部分によって囲まれる最小の多角形内に重心が含まれていないときに、接触部品は回転落下すると判定する。したがって、本実施例に係る判定装置３０によれば、自動的に部品の回転落下を判定することができる。
【実施例３】
【００４８】
実施例３では、部品の接触関係を予め抽出し、抽出した部品の接触関係に基づいて、接触部品の自由落下および回転落下を判定する場合について説明する。
【００４９】
［判定装置５０の構成］
図１０は、実施例３に係る判定装置の構成を示す図である。図１０に示すように、判定装置５０は、記憶部５３と、制御部５４とを有する。記憶部５３は、図１に示す実施例１に係る記憶部１３と比較して、新たに、ツリー情報５３ｂを記憶する点が異なる。ツリー情報５３ｂには、後述のツリー生成部５４ｈにより部品の接触関係が登録される。すなわち、本実施例では、このツリー情報５３ｂが示す部品の接触関係を用いて、部品の落下状況を判定するため、判定の都度、個々の部品の接触関係を検出した場合と比較して、より速い計算速度で、部品の落下状況を判定することができる。なお、ツリー情報５３ｂについては、後述する。また、制御部５４は、図１に示す実施例１に係る制御部１４と比較して、ツリー生成部５４ｈが新たに設けられた点が異なる。また、制御部５４は、制御部１４と比較して、検出部１４ｅ、判定部１４ｆ、修正部１４ｇに代えて、検出部５４ｅ、判定部５４ｆ、修正部５４ｇを有する点が異なる。また、制御部５４は、制御部１４と比較して、第二の特定部１４ｃを有さない点が異なる。なお、以下では、上記の実施例１、２と同様の機能を果たす回路や機器については図１、図５と同様の符号を付し、その説明は省略することとする。
【００５０】
本実施例の判定装置５０は、部品の接触関係を予め抽出し、抽出した部品の接触関係に基づいて、部品の落下状況を判定する。これにより、本実施例によれば、より速い計算速度で、落下状況を判定することができる。また、本実施例では、入力部１１は、ユーザから、後述の落下状況判定処理を実行する指示を受け付けて、受け付けた指示を制御部５４に入力する。また、本実施例では、入力部１１は、ユーザから、後述のツリー生成処理を実行する指示を受け付けて、受け付けた指示を制御部５４に入力する。
【００５１】
ツリー生成部５４ｈは、部品の接触関係を抽出する。例えば、ツリー生成部５４ｈは、部品情報１３ａに定義された地面を移動部品として、重力方向と反対方向に移動させる。そして、ツリー生成部５４ｈは、地面が他の部品と干渉したか否かを判定する。地面が他の部品と干渉した場合には、ツリー生成部５４ｈは、地面と干渉した部品をベース部品とする。そして、ツリー生成部５４ｈは、干渉した部品を移動部品とする。次に、ツリー生成部５４ｈは、移動部品を重力方向と反対方向に微少量移動させる。続いて、ツリー生成部５４ｈは、移動部品が他の部品と干渉したか否かを判定する。移動部品が他の部品と干渉した場合には、ツリー生成部５４ｈは、移動部品と、干渉した他の部品とが接触することを示す関係をツリー情報５３ｂに追加する。その後、ツリー生成部５４ｈは、干渉した他の部品を、新たな移動部品とし、上記の処理を再び行う。
【００５２】
具体例を挙げて説明する。図１１は、判定装置の処理を説明するための図である。図１１の例では、部品Ａ６１と、部品Ｂ６２および部品Ｃ６３とが接触している場合が示されている。また、図１１の例では、部品Ｃ６３が、地面６４に接触している場合が示されている。このような場合には、ツリー生成部５４ｈは、地面６４を移動部品として、重力方向と反対方向に移動させる。そして、ツリー生成部５４ｈは、地面６４が他の部品と干渉したか否かを判定する。図６の例では、ツリー生成部５４ｈは、地面６４が部品Ｃ６３と干渉したと判定する。そして、ツリー生成部５４ｈは、地面６４と干渉した部品Ｃ６３をベース部品とする。そして、ツリー生成部５４ｈは、干渉した部品Ｃ６３を移動部品とする。次に、ツリー生成部５４ｈは、移動部品Ｃ６３を重力方向と反対方向に微少量移動させる。続いて、ツリー生成部５４ｈは、移動部品Ｃ６３が他の部品と干渉したか否かを判定する。図６の例では、ツリー生成部５４ｈは、移動部品Ｃ６３が部品Ａ６１と干渉したと判定する。そして、ツリー生成部５４ｈは、移動部品Ｃ６３と、干渉した部品Ａ６１とが接触することを示す関係をツリー情報５３ｂに追加する。その後、ツリー生成部５４ｈは、干渉した部品Ａ６１を新たな移動部品とし、上記と同様の処理を繰り返し行う。その結果、ツリー生成部５４ｈは、地面と部品Ｃ６３とが接触し、部品Ｃ６３と部品Ａ６１とが接触し、部品Ａ６１と部品Ｂ６２とが接触することを示す関係を、ツリー情報５３ｂに追加する。
【００５３】
図１２は、ツリー情報が示す部品の接触関係を示すツリーの一例を示す図である。図１２の例では、ツリー情報５３ｂが示す接触関係が、地面と部品Ｃ６３とが接触し、部品Ｃ６３と部品Ａ６１とが接触し、部品Ａ６１と部品Ｂ６２とが接触することを示す関係である場合が示されている。この接触関係は、先の図１１に示した部品の接触関係と同一である。また、図１２の例では、上位階層に存在する部品ほど、ベース部品に近いものとして表現されているが、ツリー情報５３ｂが示す接触関係の表現方法は任意の方法を用いることができる。例えば、下位階層に存在する部品ほど、ベース部品に近いものとして表現してもよい。
【００５４】
また、図１２の例において、部品Ａ６１を分解、すなわち部品Ａ６１を移動させた場合には、同図から、部品Ｂ６２が、ベース部品とのつながりがツリー上で消えてしまうため、部品Ｂ６２が落下することが、ツリー情報５３ｂが示すツリーから容易に分かる。また、各部品を分解などにより外した場合、すなわち部品の位置を更新させた場合には、ツリー情報５３ｂが示すツリーから、位置が更新された部品の部分のみを更新すれば、全部品の接触関係を把握することが可能な情報が生成できる。そのため、判定装置５０は、落下状況を判定するたびに、部品の接触関係を検出する場合と比較して、ツリー情報５３ｂを用いることで、より速い計算事件で落下状況を判定することができる。
【００５５】
検出部５４ｅは、実施例２に係る検出部３４ｅと同様の機能を有する。すなわち、検出部５４ｅは、部品の回転落下を判定する際に用いられる接触状態を検出する。
【００５６】
判定部５４ｆは、実施例２に係る判定部３４ｆと同様の機能を有する。すなわち、判定部５４ｆは、部品の回転落下を判定する。
【００５７】
また、判定部５４ｆは、更新部品を、後述の落下判定処理の処理対象の部品である部品Ｋとする。また、判定部５４ｆは、部品Ｋと接触する部品であって、下位の接触部品をツリーから検索し、処理対象の部品のリストである部品リストｋに追加する。また、判定部５４ｆは、部品リストｋの部品のうち、未選択の部品Ｌを一つ選択する。そして、判定部５４ｆは、ツリー上において、選択した部品Ｌの上位に接続している部品を、ツリー情報５３ｂから検索する。そして、判定部５４ｆは、検索の結果、部品Ｌの上位に接続している部品が得られた場合には、得られた部品を部品リストｌに追加する。
【００５８】
そして、判定部５４ｆは、部品リストｌに部品が含まれていない状態、いわゆる「空」であるか否かを判定する。部品リストｌに部品が含まれている場合には、検出部５４ｅおよび判定部５４ｆは、実施例２と同様に、部品Ｌの回転落下を判定する。そして、部品Ｌが回転落下すると判定された場合には、判定部５４ｆは、部品Ｌを部品リストｍと部品リストｎに追加する。ここで、判定部５４ｆは、部品Ｌが回転落下することを示す情報を、部品Ｌに付加して、部品リストｎに追加する。
【００５９】
一方、判定部５４ｆは、部品リストｌに部品が含まれていない場合には、部品Ｌが自由落下すると判定する。そして、部品Ｌが自由落下すると判定された場合には、判定部５４ｆは、部品Ｌを部品リストｍと部品リストｎに追加する。ここで、判定部５４ｆは、部品Ｌが自由落下することを示す情報を、部品Ｌに付加して、部品リストｎに追加する。
【００６０】
また、判定部５４ｆは、部品リストｋに未選択の部品が含まれていない場合には、部品リストｍの部品のうち、未選択の部品Ｍを選択する。そして、判定部５４ｆは、選択した部品Ｍを、部品Ｋとし、部品Ｋを、部品リストｋに追加し、上記の処理を再び行う。一方、部品リストｍに未選択の部品Ｍが含まれていない場合には、処理を終了する。なお、処理を終了した際に、リストｎには、自由落下または回転落下することが示す情報が付加された部品が含まれる。
【００６１】
修正部５４ｇは、実施例１に係る修正部１４ｇおよび実施例２に係る修正部３４ｇと同様の機能を有する。すなわち、修正部５４ｇは、自由落下すると判定された部品が、出力部１２の表示上において、自由落下するように、画像情報を修正する。また、修正部５４ｇは、回転落下すると判定された部品が、出力部１２の表示上において、回転落下するように、画像情報を修正する。
【００６２】
図１３、図１４および図１５は、判定装置の処理を説明するための図である。図１３の例では、部品Ａ７１が、地面に接触している場合が示されている。また、図１３の例では、部品Ａ７１と、部品Ｂ７２および部品Ｃ７３とが接触している場合が示されている。また、図１３の例では、部品Ｂ７２および部品Ｃ７３と、部品Ｄ７４とが接触している場合が示されている。また、図１３の例では、部品Ｄ７４と、部品Ｅ７５、部品Ｆ７６および部品Ｇ７７とが接触している場合が示されている。また、図１３の例では、部品Ｆ７６と、部品Ｈ７８とが接触している場合が示されている。
【００６３】
図１３の例の場合では、ツリー生成部５４ｈは、図１４に示すようなツリーを表すツリー情報５３ｂを生成する。図１４の例では、部品Ａ７１と、部品Ｂ７２および部品Ｃ７３とが接触していることを示す関係が示されている。また、図１４の例では、部品Ｂ７２および部品Ｃ７３と、部品Ｄ７４とが接触していることを示す関係が示されている。また、図１４の例では、部品Ｄ７４と、部品Ｅ７５、部品Ｆ７６および部品Ｇ７７とが接触していることを示す関係が示されている。また、図１４の例では、部品Ｆ７６と、部品Ｈ７８とが接触していることを示す関係が示されている。
【００６４】
図１３および図１４の例において、部品Ｃ７３を分解して取り除いた場合、すなわち、部品Ｃの位置を更新した場合には、判定装置５０は、次のように、各部品の自由落下および回転落下を判定する。すなわち、判定装置５０は、ツリー上で、部品Ｃ７３と接触している下位の部品を検索する。図１４の例では、判定装置５０は、部品Ｃ７３と接触している下位の部品として、部品Ｄ７４を検索する。この部品Ｄ７４が落下判定処理の対象の部品となる。また、図１５の例は、部品Ｃ７３が取り除かれた場合が示されている。
【００６５】
判定装置５０は、部品Ｄ７４の上位に接触する部品があるか否かを判定する。部品Ｄ７４の上位に接触する部品がない場合には、部品Ｄ７４が自由落下すると判定する。図１５の例では、部品Ｄ７４の上位に接触する部品Ｂ７２があるので、判定装置５０は、部品Ｄ７４が自由落下しないと判定する。しかしながら、部品Ｄ７４が回転落下をする可能性があるので、次に、判定装置５０は、部品Ｄ７４が回転落下をするか否かの判定を行う。この回転落下の判定方法は、実施例２での回転落下の判定方法と同様である。
【００６６】
そして、判定装置５０は、上述した自由落下および回転落下の判定を、部品Ｄ７４より下位の部品に対して行い、部品Ｄ７４の落下により、下位の部品が落下するか否かを判定する。
【００６７】
制御部５４は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００６８】
［処理の流れ］
次に、本実施例に係る判定装置５０の処理の流れを説明する。図１６は、実施例３に係るツリー生成処理の手順を示すフローチャートである。このツリー生成処理は、入力部１１からツリー生成処理を実行する指示を制御部５４が入力された場合に、実行される。
【００６９】
図１６に示すように、ツリー生成部５４ｈは、部品情報１３ａに定義された地面を移動部品とする（ステップＳ３０１）。ツリー生成部５４ｈは、移動部品を重力方向と反対方向に移動させる（ステップＳ３０２）。
【００７０】
ツリー生成部５４ｈは、移動部品が他の部品と干渉したか否かを判定する（ステップＳ３０３）。移動部品が他の部品と干渉した場合（ステップＳ３０３肯定）には、ツリー生成部５４ｈは、地面と干渉した部品をベース部品とする（ステップＳ３０４）。ツリー生成部５４ｈは、干渉した部品を移動部品とする（ステップＳ３０５）。ツリー生成部５４ｈは、移動部品を重力方向と反対方向に微少量移動させる（ステップＳ３０６）。
【００７１】
ツリー生成部５４ｈは、移動部品が他の部品と干渉したか否かを判定する（ステップＳ３０７）。移動部品が他の部品と干渉した場合（ステップＳ３０７肯定）には、ツリー生成部５４ｈは、移動部品と、干渉した他の部品とが接触することを示す関係をツリー情報５３ｂに追加し（ステップＳ３０８）、ステップＳ３０５に戻る。一方、移動部品が他の部品と干渉しない場合（ステップＳ３０７否定）、および移動部品が他の部品と干渉しない場合（ステップＳ３０３否定）には、処理を終了する。
【００７２】
図１７は、実施例３に係る落下状況判定処理の手順を示すフローチャートである。この落下状況判定処理は、入力部１１から落下状況処理を実行する指示を制御部５４が入力された場合に、実行される。
【００７３】
図１７に示すように、第一の特定部１４ｂは、位置を更新させる部品の識別情報を受信した場合（ステップＳ４０１肯定）には、更新部品を部品の中から特定する（ステップＳ４０２）。
【００７４】
判定部５４ｆは、更新部品を、部品Ｋとする（ステップＳ４０３）。判定部５４ｆは、判定部５４ｆは、部品Ｋと接触する部品であって、下位の接触部品をツリーから検索し、処理対象の部品のリストである部品リストｋに追加する（ステップＳ４０４）。判定部５４ｆは、部品リストｋの部品のうち、未選択の部品Ｌがあるか否かを判定する（ステップＳ４０５）。未選択の部品Ｌがある場合（ステップＳ４０５肯定）には、判定部５４ｆは、未選択の部品Ｌを一つ選択する（ステップＳ４０６）。判定部５４ｆは、ツリー上において、選択した部品Ｌの上位に接続している部品を、ツリー情報５３ｂから検索し、検索の結果、部品Ｌの上位に接続している部品が得られた場合には、得られた部品を部品リストｌに追加する（ステップＳ４０７）。
【００７５】
判定部５４ｆは、部品リストｌに部品が含まれていない状態、いわゆる「空」であるか否かを判定する（ステップＳ４０８）。部品リストｌに部品が含まれている場合（ステップＳ４０８否定）には、検出部５４ｅおよび判定部５４ｆは、実施例２と同様に、部品Ｌの回転落下を判定する（ステップＳ４０９）。判定部５４ｆは、ステップＳ４０９で部品Ｌが回転落下すると判定されたか否かを判定する（ステップＳ４１０）。部品Ｌが回転落下すると判定された場合（ステップＳ４１０肯定）には、判定部５４ｆは、部品Ｌを部品リストｍと部品リストｎに追加する。ここで、判定部５４ｆは、部品Ｌが回転落下することを示す情報を、部品Ｌに付加して、部品リストｎに追加する（ステップＳ４１１）。一方、部品Ｌが回転落下すると判定されない場合（ステップＳ４１０否定）には、ステップＳ４０５に戻る。
【００７６】
また、部品リストｌに部品が含まれていない場合（ステップＳ４０８肯定）には、判定部５４ｆは、部品Ｌが自由落下すると判定し（ステップＳ４１２）、ステップＳ４１１で、部品Ｌを部品リストｍと部品リストｎに追加する。ここで、判定部５４ｆは、部品Ｌが自由落下することを示す情報を、部品Ｌに付加して、部品リストｎに追加する。
【００７７】
また、部品リストｋに未選択の部品が含まれていない場合（ステップＳ４０５否定）には、判定部５４ｆは、部品リストｍに未選択の部品Ｍが含まれているか否かを判定する（ステップＳ４１３）。未選択の部品Ｍが含まれている場合（ステップＳ４１３肯定）には、判定部５４ｆは、部品リストｍの部品のうち、未選択の部品Ｍを選択する（ステップＳ４１４）。判定部５４ｆは、選択した部品Ｍを、部品Ｋとし、部品Ｋを、部品リストｋに追加し（ステップＳ４１５）、ステップＳ４０４に戻る。
【００７８】
一方、部品リストｍに未選択の部品Ｍが含まれていない場合（ステップＳ４１３否定）には、処理を終了する。
【００７９】
［実施例３の効果］
上述してきたように、本実施例に係る判定装置５０は、部品の形状と位置とを含む部品情報を格納する格納部である記憶部５３から、部品情報１３ａを読み出して画像情報を生成する。また、本実施例に係る判定装置５０は、位置を更新する部品である更新部品を部品の中から特定する。また、本実施例に係る判定装置５０は、更新部品と接触する部品である接触部品を特定する。また、本実施例に係る判定装置５０は、更新部品の位置を更新する。また、本実施例に係る判定装置５０は、接触部品の重力方向の接触状態を検出する。また、本実施例に係る判定装置５０は、検出した接触状態から接触部品の落下状況を判定する。したがって、本実施例に係る判定装置５０によれば、自動的に部品の落下を判定することができる。
【００８０】
また、本実施例に係る判定装置５０は、重力方向に、接触部品と接触する部品が存在しない場合に、接触部品は自由落下すると判定する。したがって、本実施例に係る判定装置５０によれば、自動的に部品の自由落下を判定することができる。
【００８１】
また、本実施例に係る判定装置５０は、接触部品と接触する部品の接触部分と、接触部品の重心とを水平面に投影させた場合に、接触部分によって囲まれる最小の多角形内に重心が含まれていないときに、接触部品は回転落下すると判定する。したがって、本実施例に係る判定装置５０によれば、自動的に部品の回転落下を判定することができる。
【００８２】
また、本実施例に係る判定装置５０は、接触部品に接触する部品を新たな接触部品として、接触部品が地面に接する部品であるベース部品となるまで接触状態を検出する処理を繰り返し行う。また、本実施例に係る判定装置５０は、新たな接触部品の重力方向の接触状態から新たな接触部品の落下状況を判定する。これにより、更新部品と地面との間に存在する部品全てについて、落下状況を判定することができる。
【００８３】
また、本実施例に係る判定装置５０は、部品の接触関係を抽出し、抽出した部品の接触関係に基づいて、接触部品の落下状況を判定する。したがって、本実施例に係る判定装置５０によれば、部品の接触関係を用いて、部品の落下状況を判定するため、判定の都度、個々の部品の接触関係を検出した場合と比較して、より速い計算速度で、部品の落下状況を判定することができる。
【００８４】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００８５】
例えば、実施例１〜３において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【００８６】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。例えば、図１７に示すステップＳ４０９、Ｓ４１０をまとめたりすることもできる。
【００８７】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。
【００８８】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図１、図５、図１０に示す判定部と、修正部とが統合されてもよい。
【実施例４】
【００８９】
［判定プログラム］
また、上記の各実施例で説明した各判定装置の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図１８を用いて、上記の実施例で説明した判定装置と同様の機能を有する判定プログラムを実行するコンピュータの一例を説明する。図１８は、判定プログラムを実行するコンピュータを示す図である。
【００９０】
図１８に示すように、実施例４におけるコンピュータは、ＣＰＵ（Central  Processing  Unit）３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０とを有する。これら３１０〜３４０の各部は、バス３５０を介して接続される。
【００９１】
ＲＯＭ３２０には、上記の各実施例で示す生成部、ツリー生成部、第一の特定部、第二の特定部、更新部、検出部、判定部、修正部と同様の機能を発揮する判定プログラム３２０ａが予め記憶される。なお、判定プログラム３２０ａについては、適宜分離しても良い。
【００９２】
そして、ＣＰＵ３１０が、判定プログラム３２０ａをＲＯＭ３２０から読み出して実行する。
【００９３】
そして、ＨＤＤ３３０には、部品情報、ツリー情報が設けられる。これら部品情報、ツリー情報のそれぞれは、部品情報１３ａ、ツリー情報５３ｂのそれぞれに対応する。
【００９４】
そして、ＣＰＵ３１０は、部品情報、ツリー情報を読み出してＲＡＭ３４０に格納する。さらに、ＣＰＵ３１０は、ＲＡＭ３４０に格納された部品情報、ツリー情報を用いて、判定プログラムを実行する。なお、ＲＡＭ３４０に格納される各データは、常に全てのデータがＲＡＭ３４０に格納される必要はなく、処理に必要なデータのみがＲＡＭ３４０に格納されれば良い。
【００９５】
なお、上記した判定プログラムについては、必ずしも最初からＲＯＭ３２０に記憶させておく必要はない。
【００９６】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。  
【００９７】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【００９８】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
【００９９】
（付記１）コンピュータに、
部品の形状と位置とを含む部品情報を格納する格納部から、部品情報を読み出し、
位置を更新する更新部品を前記部品の中から特定し、
前記更新部品と接触する接触部品を前記部品の中から特定し、
前記更新部品の位置を更新し、
前記接触部品の重力方向の接触状態を検出し、
検出した接触状態から前記接触部品の落下状況を判定する
処理を実行させる判定プログラム。
【０１００】
（付記２）前記落下状況を判定する処理は、前記重力方向に、前記接触部品と接触する部品が存在しない場合に、前記接触部品は自由落下すると判定する
付記１に記載の判定プログラム。
【０１０１】
（付記３）前記落下状況を判定する処理は、前記接触部品と接触する部品の接触部分と、前記接触部品の重心とを水平面に投影させた場合に、前記接触部分によって囲まれる最小の多角形内に前記重心が含まれていないときに、前記接触部品は回転落下すると判定する
付記１に記載の判定プログラム。
【０１０２】
（付記４）前記接触部品の重力方向の接触状態を検出する処理は、前記接触部品に接触する部品を新たな接触部品として、該接触部品が地面に接する部品となるまで前記接触状態を検出する処理を繰り返し行い、
前記落下状況を判定する処理は、前記新たな接触部品の重力方向の接触状態から該新たな接触部品の落下状況を判定する
付記１〜３のいずれか一つに記載の判定プログラム。
【０１０３】
（付記５）さらに、コンピュータに、部品の接触関係を抽出する処理を実行させ、
前記落下状況を判定する処理は、前記部品の接触関係に基づいて、前記接触部品の落下状況を判定する
付記１〜４のいずれか一つに記載の判定プログラム。
【０１０４】
（付記６）部品の形状と位置とを含む部品情報を格納する格納部から、部品情報を読み出す生成部と、
位置を更新する更新部品を前記部品の中から特定する第一の特定部と、
前記更新部品と接触する接触部品を前記部品の中から特定する第二の特定部と、
前記更新部品の位置を更新する更新部と、
前記接触部品の重力方向の接触状態を検出する検出部と、
検出した接触状態から前記接触部品の落下状況を判定する判定部と、
を有することを特徴とする判定装置。
【０１０５】
（付記７）前記判定部は、前記重力方向に、前記接触部品と接触する部品が存在しない場合に、前記接触部品は自由落下すると判定する
付記６に記載の判定装置。
【０１０６】
（付記８）前記判定部は、前記接触部品と接触する部品の接触部分と、前記接触部品の重心とを水平面に投影させた場合に、前記接触部分によって囲まれる最小の多角形内に前記重心が含まれていないときに、前記接触部品は回転落下すると判定する
付記６に記載の判定装置。
【０１０７】
（付記９）前記検出部は、前記接触部品に接触する部品を新たな接触部品として、該接触部品が地面に接する部品となるまで前記接触状態を検出する処理を繰り返し行い、
前記落下状況を判定する処理は、前記新たな接触部品の重力方向の接触状態から該新たな接触部品の落下状況を判定する
付記６〜８のいずれか一つに記載の判定装置。
【０１０８】
（付記１０）さらに、部品の接触関係を抽出する抽出部を有し、
前記判定部は、前記部品の接触関係に基づいて、前記接触部品の落下状況を判定する
付記６〜９のいずれか一つに記載の判定装置。
【０１０９】
（付記１１）コンピュータが実行する判定方法であって、
部品の形状と位置とを含む部品情報を格納する格納部から、部品情報を読み出し、
位置を更新する更新部品を前記部品の中から特定し、
前記更新部品と接触する接触部品を前記部品の中から特定し、
前記更新部品の位置を更新し、
前記接触部品の重力方向の接触状態を検出し、
検出した接触状態から前記接触部品の落下状況を判定する
ことを特徴とする判定方法。
【０１１０】
（付記１２）前記落下状況を判定する方法は、前記重力方向に、前記接触部品と接触する部品が存在しない場合に、前記接触部品は自由落下すると判定する
付記１１に記載の判定方法。
【０１１１】
（付記１３）前記落下状況を判定する方法は、前記接触部品と接触する部品の接触部分と、前記接触部品の重心とを水平面に投影させた場合に、前記接触部分によって囲まれる最小の多角形内に前記重心が含まれていないときに、前記接触部品は回転落下すると判定する
付記１１に記載の判定方法。
【０１１２】
（付記１４）前記接触部品の重力方向の接触状態を検出する方法は、前記接触部品に接触する部品を新たな接触部品として、該接触部品が地面に接する部品となるまで前記接触状態を検出する処理を繰り返し行い、
前記落下状況を判定する方法は、前記新たな接触部品の重力方向の接触状態から該新たな接触部品の落下状況を判定する
付記１１〜１３のいずれか一つに記載の判定方法。
【０１１３】
（付記１５）さらに、コンピュータに、部品の接触関係を抽出する方法を実行させ、
前記落下状況を判定する方法は、前記部品の接触関係に基づいて、前記接触部品の落下状況を判定する
付記１１〜１４のいずれか一つに記載の判定方法。
【符号の説明】
【０１１４】
１０      判定装置
１１      入力部
１２      出力部
１３      記憶部
１３ａ    部品情報
１４      制御部
１４ａ    生成部
１４ｂ    第一の特定部
１４ｃ    第二の特定部
１４ｄ    更新部
１４ｅ    検出部
１４ｆ    判定部
１４ｇ    修正部
【図１】
0005648543.tif 000002
【図２】
0005648543.tif 000003
【図３】
0005648543.tif 000004
【図４】
0005648543.tif 000005
【図５】
0005648543.tif 000006
【図６】
0005648543.tif 000007
【図７】
0005648543.tif 000008
【図８Ａ】
0005648543.tif 000009
【図８Ｂ】
0005648543.tif 000010
【図９】
0005648543.tif 000011
【図１０】
0005648543.tif 000012
【図１１】
0005648543.tif 000013
【図１２】
0005648543.tif 000014
【図１３】
0005648543.tif 000015
【図１４】
0005648543.tif 000016
【図１５】
0005648543.tif 000017
【図１６】
0005648543.tif 000018
【図１７】
0005648543.tif 000019
【図１８】
0005648543.tif 000020