(57)【要約】  【課題】３次元幾何データにおける幾何矛盾（自己干渉等）を検出しかつ除去する方法を提供する。特に、３次元幾何データの形状演算において、形状演算を何回も実行しても、演算に破綻が生じない３次元幾何データの幾何無矛盾化処理方法を提供する。  【解決手段】３次元幾何データに対して演算処理を行い、前記演算処理過程で生成及び処理された幾何データを記憶する３次元幾何データ処理システムＳＳにおいて、処理される３次元幾何データにおける幾何矛盾を検出しかつ除去する方法であって、３次元幾何図形の表面データである境界面データを、３角形面データまたは３角形の３つの頂点が同一直線上となるゼロ３角形データにより構成し処理するステップと、前記３次元幾何データの数値を必要精度に応じて任意に切り捨てる座標値データステップと、前記数値データ切り捨てステップにより、発生する幾何矛盾を検出し除去する幾何矛盾検出除去ステップとを有するようにした。【選択図】図１
2005196684.tif 000002
【特許請求の範囲】
【請求項１】
３次元幾何データに対して演算処理を行い、前記演算処理過程で生成及び処理された幾何データを記憶する３次元幾何データ処理システムにおいて、処理される３次元幾何データにおける幾何矛盾を検出しかつ除去する方法であって、
３次元幾何図形の表面データである境界面データを、３角形面データまたは３角形の３つの頂点が同一直線上となるゼロ３角形データにより構成し処理する３角形／ゼロ３角形データ処理ステップと、
前記３次元幾何データの数値を必要精度に応じて任意に切り捨てる数値データ切り捨て処理ステップと、
前記数値データ切り捨て処理ステップにより、発生する幾何矛盾を検出し除去する幾何無矛盾化処理ステップと、
を有することを特徴とする３次元幾何データの無矛盾化方法。
【請求項２】
前記幾何無矛盾化処理ステップが、
縮退３角形面を検出し除去する縮退３角形面の検出除去処理ステップ、重なり３角形面を検出し除去する面の重なり検出除去処理ステップ、および矛盾立体を検出し除去する矛盾立体の検出除去処理ステップのうち少なくともいずれかのステップを含むものであることを特徴とする請求項１記載の３次元幾何データの無矛盾化方法。
【請求項３】
縮退３角形面の検出除去処理ステップが、２頂点が同一点となるいびつな３角形、３頂点が同一点となるいびつな３角形、および３頂点が同一直線上となるいびつな３角形を検出し除去するものであることを特徴とする請求項２記載の３次元幾何データの無矛盾化方法。
【請求項４】
面の重なり検出除去処理ステップが、組にした３角形面データの同一平面判定および面の向き判定の判定結果に基づき、３角形面が重なっていると判定された３角形面に対してその重なりを除去するようにした処理であることを特徴とする請求項２または３記載の３次元幾何データの無矛盾化方法。
【請求項５】
矛盾立体の検出除去処理ステップが、
同じ立体を構成する面同士が交差している立体を検出し除去するものであることを特徴とする請求項２乃至４いずれか記載の３次元幾何データの無矛盾化方法。
【請求項６】
矛盾立体の検出除去処理ステップが、
自己干渉立体の分離処理を行うステップ、立体の最上位３角形面の探索処理を行うステップ、立体の最近傍上位立体の探索処理を行うステップ、最近傍上位立体順に立体データのソーティングを行うステップ、面の向きによる立体の消去処理を行うステップからなることを特徴とする請求項２乃至５いずれか記載の３次元幾何データの無矛盾化方法。
【請求項７】
前記各ステップにおいて、
４次元同次座標系処理と可変長ビットの演算を用いて無誤差演算を行うことを特徴とする請求項１乃至６いすれか記載の３次元幾何データの無矛盾化方法。
【請求項８】
３次元幾何データに対して演算処理を行い、前記演算処理過程で生成及び処理された幾何データを記憶する３次元幾何データ処理システムであって、
３次元幾何図形の表面データである境界面データを、３角形面データまたは３角形の３つの頂点が同一直線上となるゼロ３角形データにより構成し処理する３角形／ゼロ３角形データ処理部と、
前記３次元幾何データの数値を必要精度に応じて任意に切り捨てる数値データ切り捨て処理部と、
前記数値データ切り捨て処理部により、発生する幾何矛盾を検出し除去する幾何無矛盾化処理部と、
を有することを特徴とする３次元幾何データの無矛盾化システム。
【請求項９】
前記幾何無矛盾化処理部が、
縮退３角形面を検出し除去する縮退３角形処理部、重なり３角形面を検出し除去する重なり３角形処理部、および矛盾立体を検出し除去する矛盾立体処理部のうち少なくともいずれかの処理部を含むものであることを特徴とする請求項８記載の３次元幾何データの無矛盾化システム。
【請求項１０】
縮退３角形処理部が、２頂点が同一点となるいびつな３角形、３頂点が同一点となるいびつな３角形、および３頂点が同一直線上となるいびつな３角形を検出し除去するものであることを特徴とする請求項９記載の３次元幾何データの無矛盾化システム。
【請求項１１】
重なり３角形処理部が、組にした３角形面データの同一平面判定および面の向き判定の判定結果に基づき、３角形面が重なっていると判定された３角形面に対してその重なりを除去する処理をすることを特徴とする請求項９または１０記載の３次元幾何データの無矛盾化システム。
【請求項１２】
矛盾立体処理部が、
同じ立体を構成する面同士が交差している立体を検出し除去する処理を行うことを特徴とする請求項９乃至１１いずれか記載の３次元幾何データの無矛盾化システム。
【請求項１３】
矛盾立体処理部が、
自己干渉立体の分離処理と、立体の最上位３角形面の探索処理と、立体の最近傍上位立体の探索処理と、最近傍上位立体順に立体データのソーティングを行う処理と、面の向きによる立体の消去処理とを行うように構成していることを特徴とする請求項９乃至１２いずれか記載の３次元幾何データの無矛盾化システム。
【請求項１４】
前記各処理部において、
４次元同次座標系処理と可変長ビットの演算を用いて無誤差演算を行うことを特徴とする請求項８乃至１３いすれか記載の３次元幾何データの無矛盾化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元幾何データの演算処理方法及びそのシステムに関する。
【背景技術】
【０００２】
従来技術では、幾何演算は浮動小数点演算を用いて行うのが一般的である。浮動小数点演算では数値の丸め（切り捨て）が行われるために演算誤差が発生する。そして、このような浮動小数点演算が繰り返されると、誤差が蓄積していく。
【０００３】
このような演算誤差のために、浮動小数点演算をベースとした幾何演算処理（図形処理）では、処理が破綻し処理系に暴走（バグ）が生じるという問題点があった。このような処理系の暴走へのこれまでの対処方法は、それぞれの破綻に対応した例外処理ルーチン（アドホック的）を作成することにより対応していた。そして、このような例外処理ルーチンはかなりの量となり、また次第に増加していく。すなわち、根本的に処理系の破綻を回避することが出来なかった。
【０００４】
この幾何処理の破綻の問題を解決する１つの方法を提案した。この提案では、以下に示す３つの特徴を有し、これにより無誤差形状演算を実現している。そして、計算誤差をまったくなくすことにより、計算誤差から生じる幾何演算の破綻を回避している（例えば特許文献１参照）。
（１）超３角形（ゼロ３角形）幾何データ処理
（２）４次元同次座標系幾何処理
（３）可変長ビットの整数演算
【特許文献１】特許第３１５１７１０号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
通常の３角形面データ処理およびゼロ３角形を含む超３角形データ処理は、多角形面データ処理と比較して、より単純なデータ構造及び処理アルゴリズムとなるので、その処理系の高信頼性を確保することが容易である。
【０００６】
しかしながら、通常の３角形面データ処理および超３角形データ処理でも、誤差による破綻は免れない。この幾何演算の誤差による破綻の問題を根本的に解決するために、特許第３１５１７１０号では、ゼロ３角形幾何データ処理および４次元同次座標系幾何処理等を用いて、数値（座標値）の桁数が、ある一定の上限値以上に増大しない効率的な無誤算形状演算方法を実現している。
【０００７】
しかし、この特許では、１回限りの形状演算をある上限以下の桁数で効率よく行う方式を提供している。複数回の形状演算を実行すると、やはり桁数が増大していく。この無誤差演算に伴う桁数の増大は数理的に原理的なもので不可避である。
【０００８】
このような桁数の増大を回避する現実的かつ実用的な方法は、必要精度に応じて数値（座標値）を切り捨てることである。しかしながら、幾何処理において、このような方法を取ると、幾何矛盾が発生する。
【０００９】
本発明は、このような課題に着目してなされたものであって、主たる目的は、上述のような幾何矛盾を検出しかつ除去する汎用的かつ効率的な方法およびその方法を利用したシステムを提供することにある。例えば、３次元幾何データの形状演算において、形状演算を何回も実行しても、演算に破綻が生じない、かつ処理を効率的、高速に実行することが可能な３次元幾何データの演算方法、すなわち幾何無矛盾化処理方法およびその方法を利用したシステムを提供することにある。
【課題を解決するための手段】
【００１０】
すなわち、本発明の３次元幾何データの無矛盾化方法は、３次元幾何データに対して演算処理を行い、これらの処理過程で生成及び処理された幾何データを記憶する３次元幾何データ処理システムにおいて、、以下により構成される方法を有することを特徴とする。
（１）３次元幾何図形の表面データである境界面データを、３角形面データまたは３角形の３つの頂点が同一直線上となるゼロ３角形データにより構成し処理する。特に、ゼロ３角形データ形式を用いた幾何処理により、不必要な数値桁数の増大および不必要なデータ量の増大を抑制する。
（２）３次元幾何データを構成する頂点データの座標値データ等を必要精度に応じて切り捨てを行い、数値桁数の増大に対処する。
（３）前記座標値データ等の切り捨て処理により、発生する幾何矛盾を検出し除去する。この処理は、縮退３角形面の検出除去処理、面の重なり検出除去処理および矛盾立体の検出除去処理から構成される。
（４）上記のすべての処理を、４次元同次座標系幾何処理と可変長ビット演算により無誤差演算で行う。４次元同次座標系幾何処理を用いることにより、割り算を排除し、すべての演算を無誤差で行うことができる。
例えば、１÷３のように割り算があると循環小数（無限の桁数）となり、有限の桁数（ビット長）で表現することが出来なくなり、無誤算演算が出来なくなる。これに対して、割り算が必要でない４次元同次座標系幾何処理では、扱う数値が全て有限桁数の有理数であるとすれば、その演算結果も有限桁数の有理数となる。無限桁数の循環小数等になることはない。
【発明の効果】
【００１１】
以上に説明したように本発明の３次元幾何データの無矛盾化方法およびその方法を利用したシステムによれば、３次元幾何図形の表面データである境界面データを、３角形面データまたは３角形の３つの頂点が同一直線上となるゼロ３角形データにより構成し処理し、特に、ゼロ３角形データ形式を用いた幾何処理により、不必要な数値桁数の増大および不必要なデータ量の増大を抑制することができ、また、３次元幾何データを構成する頂点データの座標値データ等を必要精度に応じて切り捨てを行い、数値桁数の増大に対処することができ、さらに、座標値データ等の切り捨て処理により、発生する幾何矛盾を検出し除去することができるので、効果的に、３次元幾何データにおける幾何矛盾を検出し除去することができる。すなわち、無矛盾な誤りのない３次元幾何データを生成することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施形態を、図面を参照して説明するが、まず始めに、簡単に従来の３次元幾何処理、および、本発明で用いる４次元同時座標幾何演算について説明をしておく。
【００１３】
従来の３次元幾何処理は、３次元のユークリッド座標系（Ｘ、Ｙ、Ｚ）を用いて行われてきた。そして、この座標系を用いた幾何演算では、割り算が通常発生する。本発明では、次元を１次元上げた４次元の同次座標系（Ｘ、Ｙ、Ｚ、ｗ）を用いて幾何処理を行う。このような４次元処理を幾何演算に用いることにより、全ての演算は加減算とかけ算のみで済み、割り算は必要でなくなる。
【００１４】
従って、本発明では、頂点データは、この４次元同次座標（Ｘ、Ｙ、Ｚ、ｗ）を用いて表現される。また、本発明では、座標値Ｘ、Ｙ、Ｚ、ｗは、全て可変長ビットの整数表現となる。すなわち、図３（４）に示すように、数値は、そのビット長と、符号（＋、−）と、整数表現された数値とから構成される。以下、本発明では、特に断らない限り、座標系は４次元同次座標系での実施である。
＜４次元同次座標幾何演算＞
以下、本実施形態で用いる４次元同次座標幾何演算に関して説明する。なお、特に説明なきもので、太文字のものはベクトル、行列を表すものとする。
（１）２点から線の生成
２点Ｖ0＝（Ｘ0、Ｙ0、Ｚ0、ｗ0）及びＶ1＝（Ｘ1、Ｙ1、Ｚ1、ｗ1）を通る直線Ｌ01は次式（数１）で与えられる。ただし、Ｖ0、Ｖ1、Ｌ01はベクトル、行列を表している。
【００１５】
【数１】
2005196684.tif 000003
ここで、Ｐ01等は、下式（数２）で与えられる。
【００１６】
【数２】
2005196684.tif 000004
（２）３点から面の生成（平面係数の算出）
３点Ｖ0＝（Ｘ0、Ｙ0、Ｚ0、ｗ0）、Ｖ1＝（Ｘ1、Ｙ1、Ｚ1、ｗ1）、Ｖ2＝（Ｘ2、Ｙ2、Ｚ2、ｗ2）を通る面Ｆ012は、次式（数３）で与えられる。ただし、Ｖ0、Ｖ1、Ｖ2、Ｆ012はベクトル、行列を表している。
【００１７】
【数３】
2005196684.tif 000005
ここで、Ａ012等は、下式（数４）で与えられる。
【００１８】
【数４】
2005196684.tif 000006
（３）線と面の交点計算
２点Ｖa＝（Ｘa、Ｙa、Ｚa、ｗa）およびＶb＝（Ｘb、Ｙb、Ｚb、ｗb）を通る直線と、面Ｆ012との交点Ｖは、次式（数５）で与えられる。ただし、Ｖa、Ｖb、Ｆ012はベクトル、行列を表している。
【００１９】
【数５】
2005196684.tif 000007
ここで、Ｓa012等は、下式（数６）で与えられる。
【００２０】
【数６】
2005196684.tif 000008
（４）２点の一致判定
２点Ｖ0＝（Ｘ0、Ｙ0、Ｚ0、ｗ0）とＶ1＝（Ｘ1、Ｙ1、Ｚ1、ｗ1）の一致判定は、前記２点を通る直線Ｌ01において以下（数７）となることである。ただし、Ｖ0、Ｖ1、Ｌ01はベクトル、行列を表している。
【００２１】
【数７】
2005196684.tif 000009
（５）２面の一致判定
下式（数８）で表される２つの平面ｆ0とｆ1との一致判定は，点と面の双対性により，式（数７）と同じ形式となる。
【００２２】
【数８】
2005196684.tif 000010
（６）点の面に対する位置判定
点Ｖ＝（Ｘ、Ｙ、Ｚ、ｗ）が，平面Ｆ012に対してどの位置にあるかの判定は次式（数９）で与えられる。ただし、Ｖ、Ｆ012はベクトル、行列を表している。
【００２３】
【数９】
2005196684.tif 000011
式（数９）において、sの符号＋、０、−に対応して、点は、面の正側、面上、面の負側となる。
（７）２線分の向き判定
２線分Ｌ01とＬ23が同一直線である時には、両者の向きの判定は、次式（数１０）で与えられる。ただし、Ｌ01、Ｌ23はベクトル、行列を表している。
【００２４】
【数１０】
2005196684.tif 000012
上記の式（数１０）において、両者の向きは、ｓが正の時は同じ方向、負の時は逆向きとなる。
（８）２面の向き判定
２面Ｆ012とＦ345が同一平面である時には、両者の向きの判定は次式（数１１）で与えられる。ただし、Ｆ012、Ｆ345はベクトル、行列を表している。
【００２５】
【数１１】
2005196684.tif 000013
上記の（７）の場合と同様に、両者の向きは、ｓが正の時は同じ方向、負の時は逆向きとなる。
＜超３角形幾何データ＞
本発明では、ゼロ３角形を用いた図形処理方式（超３角形幾何処理方式）を提案している。次に、本発明の特徴であるゼロ３角形幾何とそのデータ構造に関して説明する。
【００２６】
従来の３次元形状表現（境界面表現）においては、図２（２）に示すように多角形面表現が用いられてきた。以下、多角形面を単に多角形と呼称する。  図２において、（３）は（２）の多角形表現を通常の３角形面表現とした斜視図である。以下、３角形面を単に３角形と呼称する。
【００２７】
これに対して、本発明の実施例で例示する超３角形表現は、（４）のようになる。すなわち、図２（４）において、頂点Ｃ、Ｄ、Ｇ、及びＨは同一直線上にある。そして、３角形ＣＤＨ、ＤＧＨは頂点が同一直線上となり面積がゼロとなる。これらの３角形をゼロ３角形と呼称している。ゼロ３角形は３角形が完全につぶれた「線形の３角形」とみなすことができる。
【００２８】
また、３つの頂点が同一直線上にない通常の３角形を実３角形と呼称している。そして、これらの実３角形とゼロ３角形とを組み合わせた幾何表現形式を拡張された表現形式ということで超３角形幾何表現と呼称している。
【００２９】
図２（４）と（３）の３角形の数を比較すると、超３角形表現では４個（ゼロ３角形は２個）、通常３角形表現では６個となる。ゼロ３角形を用いることにより、より少ない実３角形（通常３角形）で面分を表現することが可能となる。このような特徴により、超３角形処理では、３角形幾何の表現性とその処理性が飛躍的に増大する。
【００３０】
本発明のデータ構造は、図３に示すように、（１）立体データ、（２）実３角形データ、（３）ゼロ３角形データ、（４）頂点データ、そして（５）交線データから構成される。
【００３１】
立体データは、実３角形データおよびゼロ３角形データの集合体である。従って、これらのデータへのポインタで構成される。ここで、ポインタとは、記憶装置（メモリ）上において、該当データが格納されている番地（アドレス）を示すデータである。
【００３２】
実３角形データ及びゼロ３角形データは、データ構造上は全く同じ形式となり、３角形の３つの頂点データへのポインタ(v0、v1、v2)と、３つの隣接する実３角形データ或いはゼロ３角形データへのポインタ(t0、t1、t2)とから構成される。また、頂点データは、４次元同次座標形式（Ｘ、Ｙ、Ｚ、ｗ)で格納される。座標値は、可変長ビットの整数表現となる。すなわち、ビット長、符号（＋、−）および数値（ビット列）から構成される。
【００３３】
交線データは、交線の始点及び終点となる頂点データへのポインタ(v0、v1)と、交線を挟んで隣接する２つの３角形データへのポインタ(t0、t1)とから構成される。
＜システム構成＞
以下、本発明の一実施形態を、図面を参照して説明する。
【００３４】
本発明の３次元幾何データの無矛盾化システムたる３次元幾何データ処理システムＳＳは、図１８に示すように、ＣＰＵ１０１、メモリ１０２、外部記憶装置１０３、マウスやキーボードなどの入力手段１０４、ディスプレイなどの出力手段１０５、外部機器０６と通信するための外部機器インタフェース１０６を主な構成要素とする。
【００３５】
そして、前記外部記憶装置１０３やメモリ１０２に記憶する所定のプログラムを作動させることにより、前記ＣＰＵ１０１や周辺機器を作動させ、該３次元幾何データ処理システムＳＳが、３次元幾何データ処理部０１，幾何データ記憶部０２，４次元同次座標系幾何処理部（プリュッカー座標演算器）０３，可変長ビット整数演算器０４、外部機器インターフェース部０５等としての機能を発揮するようにしている。
【００３６】
以下、各部を説明する。
【００３７】
３次元幾何データ処理部０１は、３角形／ゼロ３角形データ処理部０７、数値データ切り捨て処理部０８、幾何無矛盾化処理部０９としての機能を発揮するものである。
【００３８】
より具体的には、３角形／ゼロ３角形データ処理部０７は、外部機器インタフェース１０６により入力された３次元形状データを通常の３角形データ、あるいは超３角形データに変換するものである。
【００３９】
数値データ切り捨て処理部０８は、頂点データ等の数値データを、必要精度に応じて切り捨てる処理を行うものである。
【００４０】
幾何無矛盾化処理部０９は、前記数値データ切り捨て処理部０８において、数値データの切り捨てにより発生する幾何矛盾をなくす処理を行うものである。なお、本実施形態では、この幾何無矛盾化処理部０９が、縮退３角形処理部１０、重なり３角形処理部１１、矛盾立体処理部１２としての機能を発揮するように構成している。
【００４１】
幾何データ記憶部０２は、前記外部記憶装置１０３およびメモリ１０２の少なくともいずれか一方の所定領域に形成されるものであって、本実施形態では、さらに、立体データ記憶部１３、実３角形データ記憶部１４、ゼロ３角形データ記憶部１５、頂点データ記憶部１６、交線データ記憶部１７からなるように構成している。
【００４２】
より具体的には、立体データ記憶部１３、実３角形データ記憶部１４、ゼロ３角形データ記憶部１５、頂点データ記憶部１６、交線データ記憶部１７は、前記３次元幾何データ処理部０１で生成された超３角形データを構成する、立体データ、実３角形データ、ゼロ３角形データ、頂点データおよび交線データを、それぞれ、記憶するものである。
【００４３】
４次元同次座標系幾何処理部０３は、全ての幾何演算を４次元同次座標系に基づいて行うものである。即ち、プリュッカー座標演算が行われる。
【００４４】
可変長ビット整数演算器０４は、加算器、減算器および乗算器としての機能を有するものである。そして、加算、減算及び乗算が可変長ビットの整数演算を用いて、無誤差で行うようにしている。なお、この可変長ビット整数演算器０４においては、除算器としての機能がないのが特徴である。
【００４５】
外部機器インターフェース部０５は、前記３次元幾何データ処理部で処理された演算結果などを外部機器０６に対して出力する機能と、前記外部機器０６からのデータを受け付け前記３次元幾何データ処理部０１に対して出力する機能とを有するものであって、前記外部機器インターフェース１０６等を利用して構成している。
【００４６】
次に、本実施形態の３次元幾何データ処理システムＳＳの動作についてフロー図などを用いて説明する。
【００４７】
特に、本実施形態の根幹をなす幾何無矛盾化処理部０９における幾何無矛盾化処理について詳細に説明する。頂点データの下位桁の数値の切り捨てを行うと、次の３つの幾何矛盾が発生する可能性がある。
（１）  縮退３角形（いびつな３角形）
（２）  面の重なり（３角形の重なり）
（３）  矛盾立体（立体の自己干渉等）
ここで、このような幾何矛盾を検出し除去する処理を「無矛盾化処理」と呼ぶことにする。この無矛盾化処理の全体フローチャートは図４に示すようになる。
【００４８】
すなわち、［ａ］縮退３角形の検出除去処理（ステップ４００）、［ｂ］重なり３角形の検出除去処理（ステップ４０１）、［ｃ］矛盾立体の検出除去処理（ステップ４０２）の順で幾何無矛盾化処理が行われる。
【００４９】
なお、［ｃ］矛盾立体の検出除去処理はさらに、［ｃ１］自己干渉立体の分離処理（ステップ４０３）、［ｃ２］立体の最上位３角形の探索処理（ステップ４０４）、［ｃ３］立体の最近傍上位立体の探索処理（ステップ４０５）、［ｃ４］最近傍上位立体順に立体データのソーティング（ステップ４０６）、［ｃ５］面の向きによる立体の消去処理（ステップ４０７）の順で行われる。
【００５０】
以下、幾何矛盾化処理部０９における各処理［ａ］、［ｂ］、［ｃ１］〜［ｃ５］について説明する。
【００５１】
［ａ］縮退３角形の検出除去処理
頂点データの下位桁の数値の切り捨てを行うと、立体を構成する３角形面において、図５（１）〜（３）に示すように、以下の３つの「いびつな」３角形が発生する可能性がある。このようないびつな３角形を「縮退３角形」と呼ぶ。
（１）  ２頂点が同一点となる３角形
（２）  ３頂点が同一点となる３角形
（３）  ３頂点が同一直線上となる３角形（ゼロ３角形）
縮退３角形の検出とその除去処理について、図６のフローチャートを用いて説明する。まず、３角形データ（実３角形データおよびゼロ３角形データ）を幾何データ記憶部０２から順次取り出し、その頂点データｖ０、ｖ１、ｖ２を頂点データ記憶部１６から順次読み込む（ステップ６００）。その３つの頂点データｖ０、ｖ１、ｖ２に関して同一点判定処理を行う。ｖ０＝ｖ１となる場合は（ステップ６０１）、辺ｖ０ｖ１を挟んで隣接する２つの３角形データ（図５（４）の例ではｔ０とｔ１）を消去する。これに伴い、図５（４）に示すように、消去される３角形ｔ０、ｔ１を取り囲む４つの周辺３角形ｔ２、ｔ３、ｔ４、ｔ５の隣接接続情報を変更する。図５（４）では、ｔ０とｔ１の消去に伴い、ｔ２とｔ３、およびｔ４とｔ５が隣接するようになる。また、ｖ１を頂点に持つすべての３角形データの頂点ｖ１をｖ０とする。図５（４）では、ｖ１を頂点に持つ３角形面ｔ３、ｔ５、ｔ６の頂点ｖ１をｖ０に変更する。そして、頂点データｖ１を消去する（ステップ６０２）。ｖ０＝ｖ２、ｖ１＝ｖ２となる場合も同様の処理を行う（ステップ６０３〜６０６）。以上の処理が、（１）２頂点が同一点となる場合、および（２）３頂点が同一点となる場合の縮退３角形データの検出消去処理である。
【００５２】
次に、同一頂点を持たない３角形データに対して、その３つの頂点データｖ０、ｖ１、ｖ２の同一直線判定処理を行う（ステップ６０７）。これらの３つの頂点が同一直線上となる場合は、この３角形データをゼロ３角形データとして、ゼロ３角形データ記憶部１５に保存する（ステップ６０８）。同一直線上とならない場合は、通常３角形であるので、実３角形データ記憶部１４に書き込む（ステップ６０９）。以上の処理をすべての３角形データに関して行う。
【００５３】
このように、ゼロ３角形幾何処理を行っているので、３角形の３つの頂点が同一直線上となる場合は、このゼロ３角形を特段消去する必要も、例外処理する必要もない。
【００５４】
［ｂ］重なり３角形の検出除去処理
幾何矛盾の１つとして、図８（８）に示すように、３角形面が重なり「面のしわ」となる場合がある。図８（８）では、形状の断面図を示しており、頂点Ａ、Ｂ、Ｃ、Ｄ、Ｅは同一平面上にある。そして、３角形面ｔｉとｔｊが重なっている。このように面が重なる時は、図８（８）に矢印として示すように、面の向きは必ず逆となる。
【００５５】
このような重なり３角形データの検出除去処理について、図７のフローチャートを用いて説明する。まず、同一平面上となり、かつ面の向きが逆となる２つの３角形データのペアを探索する。このために、２つの実３角形データｔｉ、ｔｊを幾何データ記憶部０２から順次読み出し、同一平面判定および面の向き判定を行う（ステップ７０１〜７０３）。
【００５６】
両者が同一平面かつ面の向きが逆となる場合が、重なり面処理の対象となる。同一平面とならない場合または向きが同じとなる場合は次の実３角形データのペアに処理を進める。
【００５７】
両者が同一平面かつ面の向きが逆となる場合は、両者ｔｉとｔｊが重なるかどうかの判定を行う（ステップ７０４）。重ならない場合は次の実３角形データのペアに処理を進める。
【００５８】
両者が重なる場合は、一方の３角形の頂点により他方の３角形を分割する（ステップ７０５）。この時のパターンは図８（１）〜（４）に示すように４通りある。図８では３角形ＡＢＣが頂点Ｄにより分割される。そして、図８（１）と（２）のパターンの場合のみが分割処理の対象となる。本実施形態では、不必要な分割をなくすために「ゼロ３角形分割」を行う（図８（２）の場合）。ここでは、３角形ＡＤＣがゼロ３角形となる。
【００５９】
次に、この分割された３角形が他方の分割される前の３角形の内部にあるかどうかの判定処理を順次行う（ステップ７０６）。判定される３角形の３つの頂点すべてが、もう一方の３角形の内部（辺上を含む）となる場合は、前者の３角形は後者の内部となる（含まれる）。そして、内部となる場合は、この３角形データを消去する（ステップ７０８）。
【００６０】
また、判定される３角形の３つの頂点が、他方の内部および外部の両方となる場合（またがる場合）は、「３角形の位相変形」を行い（ステップ７０７）、判定される３角形が他方の内部あるいは外部のどちらかになるようにする。
【００６１】
図８（５）の例では、分割される前の３角形として、ＡＢＣとＤＥＦが重なっている。これらが互いに他を分割しあうと、３角形ＡＢＣは、図８（６）のように分割される。ここで、３角形ＣＤＥとＣＦＤは、３角形ＤＥＦに対して、内部となる部分と外部となる部分の両方がある。そこで、この２つの３角形が構成する４角形ＣＦＤＥにおいて、その対角線となる辺ＣＤをＥＦと付け替え、新たな３角形ＤＥＦとＣＦＥを生成する（図８（７））。これが３角形の位相変形である。これを繰り返すことにより最終的に、３角形は他方の３角形の内部か外部かのどちらか一方となり、内部および外部の両方に「またがる」場合は存在しなくなる。
【００６２】
分割された３角形が、他方の分割される前の３角形の外部となる場合は、次の分割された３角形データに処理を進める。以上の処理を、すべての分割された３角形データに関して行う。
【００６３】
最後に、消去された３角形に隣接する３角形データを相互に接続する処理（接続情報の更新処理）を行う（ステップ７１０）。以上の処理を、同一平面上かつ面の向きが逆となる実３角形データのすべてのペアにおいて行う。これにより、すべての重なり３角形（面のしわ）を消去することができる。
【００６４】
［ｃ］矛盾立体の検出除去処理
［ｃ１］自己干渉立体の分離処理
自己干渉立体とは、図１０（１）、（２）に示すように、同じ立体を構成する面（３角形面）どうしが交差している立体である。自己干渉立体の分離処理では、図１０（３）、（４）に示すように、この交差している面（３角形面）をその交線において分割し、１つの閉じた面（立体）とする処理である。
【００６５】
図１０では、立体の断面図を示している。灰色領域が形状の内部である。図１０（１）では、立体の一部で表裏が逆転している。矛盾立体が発生している。そこで、図１０（２）に示すように、この部分を切り離す処理が分離処理となる。また、図１０（３）では、立体の内部にある穴が外部にはみ出している。そこで、図１０（４）に示すように、このはみ出し部分を分離する。
【００６６】
自己干渉立体の分離処理の流れを、図９のフローチャートを用いて説明する。２つの実３角形データｔｉ、ｔｊを順次幾何データ記憶部０２から取り出し、両者の交差判定処理を行う（ステップ９０１〜９０３）。交差する場合は、両方の３角形ｔｉ、ｔｊの共通交線ｓｋを求めて、この共通交線において両者を分割する（ステップ９０４）。
【００６７】
図１０（５）の例では、交線ＡＢにおいて、３角形ｔｉとｔｊが交差している。この時、共通交線ｓｋはＣＤとなる。本実施形態では、重なり３角形検出除去処理において説明したように、不必要な分割をなくすために、「ゼロ３角形分割」を行う。ここでの分割パターンは、図１０（６）に示すように２通りとなる。共通交線ＣＤにおいて、その端点Ｃ側は３角形の辺上となり、ゼロ３角形分割が行われ、３角形ＥＣＧはゼロ３角形となる。もう一方の端点Ｄは、３角形面内となり、通常の分割が行われる。
【００６８】
そして、この分割処理において、共通交線と一致する３角形の辺が存在しない場合は、重なり３角形検出除去処理において説明した位相変形を行い、共通交線と一致する３角形の辺を生成する。以上の処理をすべての実３角形データのペアに関して繰り返す。
【００６９】
次に、この交線ｓｋを挟んで隣接する３角形の隣接情報を、図１１、１２に示すように変更する（ステップ９０７〜９０９）。この処理をすべての交線データｓｋに関して行う。これにより、自己干渉立体を分離することができる。
【００７０】
図１１、１２は、自己干渉立体の分離処理において求めた共通交線ｓｋ近傍の面の交差パターンを示している。これらは立体の断面図であり、黒点は共通交線を示している。また、ハッチングがある側が立体の内部である。
【００７１】
図１１（１）では、面（３角形面）ｔａとｔｂが完全に交差している。この場合は当然両者の面の接続関係を、共通交線において、切り替える。図１１（２）の場合は、両者の面が形状の内側（内部）において接している場合である。この場合も、接続関係を切り替える。図１１（３）の場合は、両者の面が形状の外側（外部）において接している場合である。この場合は、接続関係は切り替えずそのままとする。図１１（４）は、両者の面が接し、かつ面の向きが同じとなる場合である。この場合も、接続関係は切り替えない。
【００７２】
図１２（１）、（２）は、面（３角形面）ｔａとｔｂにおいて、同一平面となる部分がある場合である。このような場合は、ｔａがｔｂに対して内部となる場合のみ、接続関係を切り替える。従って、図１２（１）の場合のみ、切り替える。図１２（２）の場合は、ｔａがｔｂに対して外部となるので、接続関係は切り替えない。ここでは、内部となる場合を切り替えるとしたが、この基準をまったく逆にして、外部となる場合を切り替えるとしても何ら問題はない。
【００７３】
また、図１２（１）、（２）では、同一平面となる部分の面の向きが同じとなる場合を図示しているが、もちろん、面の向きが逆となる場合も存在する。しかし、このような場合は、「重なり３角形の検出除去処理」（同一平面かつ面の向きが逆）において、検出除去処理されるので、ここでは、対象外となる。
【００７４】
［ｃ２］最上位３角形の探索処理
最上位３角形とは、１つの立体（１つの閉じた境界面）において、その立体を構成する３角形の中で、Ｚ座標値が最大となる頂点を持ち、かつ上面が存在しない３角形である。４次元同次座標系において、頂点Ｖa＝（Ｘa、Ｙa、Ｚa、ｗa）のＺ座標値がＶb＝（Ｘb、Ｙb、Ｚb、ｗb）より大きいとは以下の式（数１２）が成り立つことである。
【００７５】
【数１２】
2005196684.tif 000014
また、３角形Ｆ012が３角形Ｆ345に対して（Ｚ座標軸に関して）上面となるとは、この２つの３角形Ｆ012とＦ345がＺ座標軸方向からみて重なり、かつ３角形Ｆ012の３つの頂点Ｖ0＝（Ｘ0、Ｙ0、Ｚ0、ｗ0）、Ｖ1＝（Ｘ1、Ｙ1、Ｚ1、ｗ1）、Ｖ2＝（Ｘ2、Ｙ2、Ｚ2、ｗ2）において、以下の式（数１３）が成り立つことである。ただし、３角形Ｆ012とＦ345は交差しないとする。
【００７６】
【数１３】
2005196684.tif 000015
ここで、ｓ0等は、下式（数１４）で与えられる。
【００７７】
【数１４】
2005196684.tif 000016
さらに、２つの３角形が、Ｚ座標軸方向からみて、重なるかどうかの判定処理に関して説明する。４次元同次座標系（Ｘ、Ｙ、Ｚ、ｗ）において、Ｚ座標を無視した３次元同次座標系（Ｘ、Ｙ、ｗ）を想定する。この座標系における３角形の重なり判定処理に帰着することができる。この処理は、３角形の頂点と、方向を持った辺との位置関係判定処理（領域判定処理）に帰着する。
【００７８】
最上位３角形を求める処理を、図１３のフローチャートを用いて説明する。まず最上位頂点Ｖｍａｘに適当な初期値（例えば存在する頂点データ）を代入する（ステップ１３００）。次に、処理対象となる１つの立体を構成する実３角形データを幾何データ記憶部０２から順次読み出し、さらにその実３角形を構成する３つの頂点データｖ０ｉ、ｖ１ｉ、ｖ２ｉを幾何データ記憶部０２から読み出し比較し、Ｚ座標値が最大となる頂点データＶを求める（ステップ１３０１）。
【００７９】
次に、この頂点データＶと最上位頂点データＶｍａｘのＺ座標値を比較する（ステップ１３０２）。Ｖが大きい場合は、Ｖｍａｘ＝Ｖとする（ステップ１３０３）。以上の処理を、処理対象立体のすべての実３角形データに関して行う。以上の処理により、処理対象立体において、Ｚ座標値が最大となる最上位頂点Ｖｍａｘが求まる。
【００８０】
次に、最上位３角形Ｔｍａｘと基準３角形Ｔｂａｓｅに適当な初期値を代入する。例えば処理対象立体おいて、最上位頂点Ｖｍａｘを頂点に持つ適当な実３角形データを両者に代入する（ステップ１３０５）。そして、処理対象立体において、この最上位頂点Ｖｍａｘを頂点に持つ実３角形データｔｉを順次幾何データ記憶部０２から取り出す（ステップ１３０６、１３０７）。
【００８１】
次に、この３角形ｔｉとＴｂａｓｅがＺ座標軸方向からみて重なるかどうかの判定を行う（ステップ１３０８）。重なる場合は、この３角形ｔｉとＴｍａｘがＺ座標軸方向からみて重なるかどうかの判定を行う（ステップ１３０９）。重なる場合は、ｔｉとＴｍａｘの位置関係をチェックする（ステップ１３１０）。ｔｉがＴｍａｘの上面となる場合（Ｔｍａｘ＜ｔｉ）はＴｍａｘ=ｔｉとする（ステップ１３１１）。以上の処理をすべての実３角形データｔｉに関して行う。これにより、最上位３角形Ｔｍａｘが求まる。
【００８２】
［ｃ３］最近傍上位立体を求める処理
ある立体ｂｉの最近傍上位立体ｂｎｅａｒとは、以下の条件を満たす立体のことである（図１５参照）。すなわち、最近傍上位立体とは、ある立体（１つの閉じた境界面）に、Ｚ座標軸正方向に最も近い立体のことである。
（１）立体ｂｉの最上位頂点Ｖmax＝（Ｘmax、Ｙmax、Ｚmax、ｗmax）にＺ座標軸  と平行に正方向に立てた半直線と交差あるいは接する立体。
（２）この交点あるいは接点をＶnear＝（Ｘnear、Ｙnear、Ｚnear、ｗnear）とすると  、Ｖnearは頂点Ｖmax＝（Ｘmax、Ｙmax、Ｚmax、ｗmax）に最近傍となる立体。  ここで、Ｖnearを最近傍上位点と呼ぶことにする。
（３）Ｚ座標軸方向から見て、立体ｂｉの最上位３角形Ｔｍａｘと重なる上面Ｔｎｅａ  ｒを持つ立体。
（４）上記上面Ｔｎｅａｒが複数個ある場合は、その中で最も下面となる面を持つ立体  。ここで、下面とは、３角形ｔ２が３角形ｔ３の上面となる場合、逆にｔ３はｔ２に  対して下面となる（図１５参照）。また、この最も下面となる面Ｔｎｅａｒを最近傍  上位３角形と呼ぶことにする。
【００８３】
図１５の例では、立体の断面図を示している。ここでは、立体ｂｉの最上位頂点はＶｍａｘ＝ｖ０、最上位３角形はＴｍａｘ＝ｔ１である。立体ｂ（ｊ＋１）は、半直線Ｌと接し、かつ最近傍頂点ｖ１を持つが、Ｔｍａｘと重なる面が存在しない。そこで、立体ｂ（ｊ＋１）は、立体ｂｉの最近傍上位立体ではない。
【００８４】
一方、立体ｂｊは、半直線Ｌと接し、かつ（立体ｂ（ｊ＋１）は対象外となるので）最近傍上位点（頂点）ｖ２を持ち、かつ最上位３角形Ｔｍａｘと重なる面ｔ３が存在する。そこで、立体ｂｊが、立体ｂｉの最近傍上位立体となる。ここで、最上位３角形Ｔｍａｘと重なる面はｔ２とｔ３の２つが存在するが、両者を比較すると、ｔ３がｔ２の下面となるので、ｔ３が最近傍上位３角形Ｔｎｅａｒとなる。
【００８５】
最近傍上位立体を求める処理に関して、図１４のフローチャートを用いて説明する。ここでは、立体ｂｉの最近傍上位立体ｂｎｅａｒを求める。まず、立体ｂｉの最上位頂点Ｖｍａｘを通るＺ座標軸と平行な直線Ｌを求める。そして、最近傍上位頂点Ｖｎｅａｒ等を初期設定する（ステップ１４００）。例えば、Ｖｎｅａｒには、Ｚ座標値に適当な大きな値、Ｘ、Ｙ、ｗ座標値にＶｍａｘと同じ値を代入しておけばよい。また、ＮＵＬＬは「値なし」（該当データなし）を意味する。
【００８６】
次に、立体ｂｉとは異なる他の立体ｂｊの実３角形データｔｊｋを幾何データ記憶部０２から順次読み込む（ステップ１４０２）。そして、このｔｊｋと直線Ｌとの交点Ｖｓが存在するかどうかを判定し、存在する場合はＶｓを求める（ステップ１４０３）。
【００８７】
交点Ｖｓが存在する場合は、ＶｍａｘとＶｓのＺ座標値を比較する（ステップ１４０４）。ＶｓのＺ座標値がＶｍａｘのＺ座標値より小さい場合（Ｖｓ＜Ｖｍａｘ）は、次の実３角形データに処理を移す。逆に、Ｖｍａｘ＜＝Ｖｓとなる場合は、この３角形ｔｊｋとＴｍａｘがＺ座標軸方向からみて重なるかどうかの判定（ステップ１４０５）、および頂点データを比較して、ｔｊｋがＴｍａｘの上面となるかどうか（Ｔｍａｘ＜＝ｔｊｋ）の判定処理を行う（ステップ１４０６）。
【００８８】
ｔｊｋとＴｍａｘがＺ座標軸方向からみて重なり、かつｔｊｋがＴｍａｘの上面となる場合（Ｔｍａｘ＜＝ｔｊｋ）は、ＶｓとＶｎｅａｒを比較する（ステップ１４０７）。Ｖｎｅａｒ＜Ｖｓとなる場合は、次の実３角形データに処理を移す。Ｖｓ＜Ｖｎｅａｒとなる場合はステップ１４１０に処理を進める。
【００８９】
Ｖｓ＝Ｖｎｅａｒとなる場合は、３角形ｔｊｋとＴｎｅａｒがＺ座標軸方向からみて重なるかどうかの判定（ステップ１４０８）、および頂点データを比較して、ｔｊｋがＴｎｅａｒの下面となるかどうか（ｔｊｋ＜＝Ｔｎｅａｒ）の判定処理を行う（ステップ１４０９）。
【００９０】
ｔｊｋとＴｎｅａｒがＺ座標軸方向からみて重なり、かつｔｊｋがＴｎｅａｒの下面となる場合（ｔｊｋ＜＝Ｔｎｅａｒ）は、Ｖｎｅａｒ＝Ｖｓ、Ｔｎｅａｒ＝ｔｊｋ、ｂｎｅａｒ＝ｂｊとする（ステップ１４１０）。
【００９１】
以上の処理を、立体ｂｉ以外のすべての実３角形データに関して行う。以上の処理により、立体ｂｉの最近傍上位立体ｂｎｅａｒ、最近傍上位頂点Ｖｎｅａｒ、最近傍上位３角形Ｔｎｅａｒが求まる。
【００９２】
［ｃ４］最近傍上位立体順に立体データのソーティング
最近傍上位立体順に立体データｂｉをソーティング処理するとは、立体データ（幾何データの集合体（実３角形データまたはゼロ３角形データの集合体））ｂｉとｂｊ（ｉ＜ｊ）において、ｂｉの最近傍上位立体ｂｎｅａｒがｂｊとなる場合は、両者のデータの順番を入れ替えることである。すなわち、ここではｂｉがｂｊよりもデータの先頭にある（ｉ＜ｊ）ので、ｂｉとｂｊのデータ順を入れ替え、ｂｊがｂｉよりもデータの先頭となるようにする。
【００９３】
この処理により、ある立体ｂｉの最近傍上位立体データｂｎｅａｒは、必ず立体データｂｉよりも上位となる（先頭となる）。図１５の例では、立体データの順番は上位から、ｂ（ｊ＋２）、ｂｊ、ｂ（ｊ＋１）、ｂｉの順番となる。
【００９４】
［ｃ５］面の向きによる立体の消去処理
面の向きによる立体の消去処理とは、ある立体の面の表裏が最近傍上位立体との関係で矛盾する場合は、この矛盾する立体データの消去を行う処理である。
【００９５】
図１７を用いて、面の向きと矛盾立体との関係を説明する。図１７は立体の断面図を表している。また、ハッチングのある側が立体（形状）の内部、ない側が立体の外部を表現している。言い換えれば、矢印の向きが立体の内部を表している。
【００９６】
図１７（１）および（２）の場合は、立体Ａにおいて、最近傍上位立体がない場合である。このような場合は、立体Ａの最上位面（最上位３角形）のＺ軸方向の向きを用いて判定を行う。図１７では、立体Ａにおける矢印はすべて、立体Ａの最上位３角形（面）のＺ軸方向の向きを表している。
【００９７】
図１７（１）では、立体Ａの最上位３角形のＺ軸方向の向きはマイナスとなっている。このような場合は、立体Ａは矛盾立体ではないので、消去されない。一方、図１７（２）では、立体Ａの最上位３角形のＺ軸方向の向きはプラスとなっている。このような場合は、立体Ａは矛盾立体となる（空間全体に立体の内部が広がっている）ので、消去される。
【００９８】
図１７（３）〜（６）の場合は、立体Ａの最近傍上位立体が存在する場合である。ここでは、立体Ｂが立体Ａの最近傍上位立体となる。また、立体Ｂにおける矢印はすべて、立体Ａに対する最近傍上位３角形（面）のＺ軸方向の向きを表している。
【００９９】
図１７（３）〜（６）の場合は、立体Ａの最上位３角形と、立体Ａに対する（立体Ｂに属する）最近傍上位３角形のＺ軸方向の向きの組み合わせをチェックする。図１７（３）と（６）に示すように、両者のＺ軸方向の向きが逆となる場合は、立体Ａは立体Ｂに対して「無矛盾立体」となる。そこで、このような場合は、立体Ａは消去されない。
【０１００】
一方、図１７（４）と（５）の場合は、両者のＺ軸方向の向きが同じとなる。このような場合は、立体Ａは立体Ｂに対して「矛盾立体」となる。そこで、このような場合は、立体Ａは消去される。
【０１０１】
次に、面の向きによる立体の消去処理に関して、図１６のフローチャートを用いて説明する。ここでは、立体データｂｉの幾何矛盾チェックを、データ順に（データの先頭から）行う。まず、初期処理として、すべての立体データの消去フラグをすべてＯＦＦとする（ステップ１６００）。ここで、ＯＦＦは消去しない（無矛盾立体である）を意味する。そして、立体ｂ＝ｂｉとする（ステップ１６０１）。次に、立体ｂの最近傍上位立体ｂｎｅａｒが存在するかをチェックする（ステップ１６０２）。
【０１０２】
存在しない場合は、立体ｂｉの最上位３角形ＴｍａｘのＺ座標軸方向の向きをチェックする（ステップ１６０３）。正の場合は幾何矛盾となるので、立体データｂｉの消去フラグをＯＮ（消去を意味する）とする（ステップ１６０７）。負の場合は幾何矛盾とならないので、立体データｂｉの消去フラグをＯＦＦのままとする。ここでの処理は、図１７（１）と（２）の場合に対応している。
【０１０３】
立体ｂの最近傍上位立体ｂｎｅａｒが存在する場合は、ｂｎｅａｒの消去フラグがＯＮかＯＦＦかのチェックを行う（ステップ１６０４）。消去フラグがＯＮの場合は、この最近傍上位立体ｂｎｅａｒは矛盾立体であり消去されるので、ｂ＝ｂｎｅａｒとし（ステップ１６０５）、さらに上位の消去フラグがＯＦＦとなっている無矛盾立体である最近傍上位立体を探す。
【０１０４】
消去フラグがＯＦＦとなっている最近傍上位立体ｂｎｅａｒが存在する場合は、このｂｎｅａｒの最近傍上位３角形Ｔｎｅａｒと、立体ｂｉの最上位３角形ＴｍａｘのＺ座標軸方向の向きの組み合わせをチェックする（ステップ１６０６）。ＴｎｅａｒとＴｍａｘのＺ座標軸方向の面の向きの組み合わせが同じとなる場合は（図１７（４）と（５）の場合）、立体ｂｉは矛盾立体となるので、立体ｂｉの消去フラグをＯＮとする（ステップ１６０７）。面の向きの組み合わせが逆となる場合は（図１７（３）と（６）の場合）、立体ｂｉは矛盾しないので、消去フラグはＯＦＦのままとする。そして、次の立体に処理を移す。以上の処理を、すべての立体データに関して行うことにより、すべての立体の幾何矛盾チェックが完了し、その結果として、消去フラグの値（ＯＮまたはＯＦＦ）が確定する。
【０１０５】
最後に、消去フラグがＯＮとなっているすべての立体データを幾何データ記憶部０２から消去する（ステップ１６０９）。これにより、すべての矛盾立体が消去され、無矛盾立体だけが保存される。
【０１０６】
以上に詳述したように、本実施形態の３次元幾何データ処理システムＳＳによれば、３次元幾何図形の表面データである境界面データを、３角形面データまたは３角形の３つの頂点が同一直線上となるゼロ３角形データにより構成し処理する３角形／ゼロ３角形データ処理部０７と、前記３次元幾何データの数値を必要精度に応じて任意に切り捨てる数値データ切り捨て処理部０８と、前記数値データ切り捨て処理部０８により、発生する幾何矛盾を検出し除去する幾何無矛盾化処理部０９とを具備しているので、３次元幾何図形の表面データである境界面データを、３角形面データまたは３角形の３つの頂点が同一直線上となるゼロ３角形データにより構成し処理し、特に、ゼロ３角形データ形式を用いた幾何処理により、不必要な桁数の増大および不必要なデータ量の増大を抑制することができ、また、３次元幾何データを構成する頂点データの座標値データ等を必要精度に応じて切り捨てを行い、数値桁数の増大に対処することができ、さらに、座標値データ等の切り捨て処理により、発生する幾何矛盾を検出し除去することができるので、効果的に、３次元幾何データにおける幾何矛盾を検出し除去することができる。すなわち、無矛盾な誤りのない３次元幾何データを生成することができる。
【０１０７】
また、前記幾何無矛盾化処理部０９が、縮退３角形を検出し除去する縮退３角形処理部１０、重なり３角形を検出し除去する重なり３角形処理部１１、および自己干渉立体等を検出し除去する矛盾立体処理部１２を含むようにしているので、幾何学的な矛盾にすべて対応することができる。
【０１０８】
特に、縮退３角形処理部１０によって、２頂点が同一点となるいびつな３角形、３頂点が同一点となるいびつな３角形、および３頂点が同一直線上となるいびつな３角形を、検出し除去することが確実にできる。
【０１０９】
また、重なり３角形処理部１１によって、３角形面が重なっていると判定された３角形に対してその重なりを除去することを確実に行える。
【０１１０】
また、矛盾立体処理部１２が、自己干渉立体の分離処理と、立体の最上位３角形の探索処理と、立体の最近傍上位立体の探索処理と、最近傍上位立体順に立体データのソーティングを行う処理と、面の向きによる立体の消去処理とを行うように構成しているので、立体に矛盾のあるものを、確実に除去することができる。
【０１１１】
加えて、各処理部において、４次元同次座標系処理と可変長ビットの演算を用いて無誤差演算を行うようにしているので、演算を何回実行してもその演算に破綻が生じず、システムを安定して作動させることができる。
【０１１２】
なお、本発明は、以上に詳述した実施形態に限られるものではない。
【０１１３】
例えば、本実施形態では、３次元幾何データ処理システムＳＳを、スタンドアローン型で動作させているが、インターネット等の通信回線網を介して接続される端末装置およびサーバ装置からなるものとしてもよい。
【０１１４】
その他、各部の具体的構成についても上記実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲で種々変形が可能である。
【図面の簡単な説明】
【０１１５】
【図１】本発明の一実施形態における３次元幾何データの無矛盾化処理システムの機能構成図。
【図２】同実施形態における従来と本発明の形状表現法の違いを示す図。
【図３】同実施形態におけるデータ構造を示す図。
【図４】同実施形態における幾何無矛盾化処理の全体フローを示す図。
【図５】同実施形態における縮退３角形およびその除去処理に関する説明図。
【図６】同実施形態における縮退３角形の検出除去処理のフローチャート。
【図７】同実施形態における重なり３角形の検出除去処理のフローチャート。
【図８】同実施形態における重なり３角形の検出除去処理に関する説明図。
【図９】同実施形態における自己干渉立体の分離処理のフローチャート。
【図１０】同実施形態における自己干渉立体の分離処理に関する説明図。
【図１１】同実施形態における自己干渉立体の面の交差パターンに関する説明図。
【図１２】同実施形態における自己干渉立体の面の交差パターンに関する説明図。
【図１３】同実施形態における立体の最上位３角形探索処理のフローチャート。
【図１４】同実施形態における最近傍上位立体探索処理のフローチャート。
【図１５】同実施形態における最近傍上位立体に関する説明図。
【図１６】同実施形態における幾何矛盾立体の消去処理のフローチャート。
【図１７】同実施形態における幾何矛盾立体に関する説明図。
【図１８】同実施形態における３次元幾何データの無矛盾化処理システムの機器構成図。
【符号の説明】
【０１１６】
ＳＳ・・・３次元幾何データの無矛盾化システム（３次元幾何データ処理システム）
０７・・・３角形／ゼロ３角形データ処理部
０８・・・数値データ切り捨て処理部
０９・・・幾何無矛盾化処理部
１０・・・縮退３角形処理部
１１・・・重なり３角形処理部
１２・・・矛盾立体処理部
【図１】
2005196684.tif 000017
【図２】
2005196684.tif 000018
【図３】
2005196684.tif 000019
【図４】
2005196684.tif 000020
【図５】
2005196684.tif 000021
【図６】
2005196684.tif 000022
【図７】
2005196684.tif 000023
【図８】
2005196684.tif 000024
【図９】
2005196684.tif 000025
【図１０】
2005196684.tif 000026
【図１１】
2005196684.tif 000027
【図１２】
2005196684.tif 000028
【図１３】
2005196684.tif 000029
【図１４】
2005196684.tif 000030
【図１５】
2005196684.tif 000031
【図１６】
2005196684.tif 000032
【図１７】
2005196684.tif 000033
【図１８】
2005196684.tif 000034