(57)【特許請求の範囲】
【請求項１】
コンピュータ支援の設計システムにおいて、コンピュータに、幾何学的立体のエッジと置き換わる融合表面または面取り表面を、立体のソリッドモデルに組み込むための処理を実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体において、
該ソリッドモデルは、生産される装置を表しており、
曲線セグメントは、ギャップをもつ面と周囲の面との交差曲線の一部であり、
前記プログラムは、前記コンピュータに、
a）前記ソリッドモデル用の一次の融合表面または面取り表面を規定する手順と、
b）前記一次の表面と前記立体との間の一次の境界を計算する手順と、
c）前記一次の境界をトリムする手順と、
d）置き換えられる前記エッジに隣接する複数のエッジがもう使用されないと判断される場合前記複数のエッジを除去し、前記立体を幾何学的に矛盾する状態に置く手順と、
e）新しい一次の面の新しい境界を形成する新しいエッジで、除去されるエッジを置換することによって、前記一次の表面に基づいた新しい一次の融合面または面取り面を生成する手順と、
f）前記除去されるエッジの各々の頂点について、前記立体が前記頂点のまわりで幾何学的に矛盾しているかどうか調べ、矛盾しているときに、前記頂点のまわりの立体のトポロジーをトリムして、使用される以下のg)からm)の手順と、
g）前記新しい一次の面上の、幾何学的に適合しない、トポロジー的に隣接するエッジによって定義される全てのギャップを集める手順と、
h)各々のギャップについて、前記面の一部分をトリムする一連の横断セグメントから成るトリミング・パスを計算する手順であって、
前記手順ｈ）が、次のh1)からh5)の手順を含み、
h1）ギャップをもつ面のトリミング・パスが始まる開始ノードと、ギャップをもつ面のトリミング・パスが終わる終了ノードを規定する手順であって、該ノードはトリミング・パスの前記曲線セグメントである、規定する手順、
h2）前記開始ノードの端点および前記終了ノードの端点を計算する手順、
h3）現在のノードに関する子ノードを生成する手順、該手順h3)は、次のh3.1)からh3.8)の手順を含み、
h3.1）前記現在のノードおよび現在の面の開始点を規定する手順、
h3.2）前記面を、前記現在の面と交わらせる手順、
h3.3）前記手順h3.2)によって生成される、端点を含む全ての曲線を決定する手順、
h3.4）前記手順h3.3)で決定された各々の曲線について、該曲線の半無限の２つのセグメントのうちの１つである半曲線を生成する手順であって、該各々のセグメントは、端点で始まり、反対の方向をもつ、生成する手順、
h3.5）前記各々の生成された半曲線を、前記現在の面のエッジと交わらせる手順、
h3.6）前記現在の面のエッジの内側に交点が存在する場合、前記交点に関する子ノードを生成する手順、
h3.7）現在の面のエッジの内側に交点が存在しない場合、
h3.7.1）前記半曲線を、前記頂点のまわりの開いた面と交わらせ、１つまたは複数の交点を規定する手順、
h3.7.2）前記手順h3.7.1)で規定される各々の交点について、子ノードを生成する手順と、を実行する手順、
h3.8）生成された子ノードのリストを出力する手順、
h4）前記手順h3)で生成された子ノードをソートする手順、
h5）前記開始ノードから始まる全てのノードについて、前記手順h3)およびh4)を終了ノードに到達するまで繰り返す手順、
i）前記手順h)で計算されたトリミング・パスに基づいてギャップを閉じる新しいトポロジーを生成する手順と、
k）前記頂点のまわりの二次の非融合表面または非面取り表面上の全てのギャップを集める手順と、
l）立体の全ての二次の面に関して手順k)で集められたギャップについて、前記手順h)および前記手順i)を繰り返す手順と、
m)前記立体の前記ソリッドモデルを表示する手順と、
を実行させる、コンピュータ読み取り可能な記録媒体。
【請求項２】
前記手順c)がさらに、
c1）一次の境界線と、置き換えられるエッジに隣接する面のエッジの間の交点を計算する手順と、
c2）前記手順c1)で計算される交点をもたない、置き換えられるエッジに隣接する面のエッジに印を付ける手順と、
を有する、請求項１に記載の記録媒体。
【請求項３】
前記手順d)がさらに、
d1）前記手順c2)で印を付けられたエッジを除去する手順と、
d2）前記手順d1より前に前記印を付けられたエッジとの交点をもっていた前記立体のエッジを、置き換えられるエッジの頂点の方へ引き寄せる手順であって、前記境界線との前記交点をもつエッジは、前記頂点および前記交点が接続されるように引き寄せられる手順と、
を含む、請求項２に記載の記録媒体。
【請求項４】
前記エッジは、オイラー演算子KEVを前記モデルに適用することによって除去される、請求項３に記載の記録媒体。
【請求項５】
前記新しい一次の面は、オイラー演算子ADEFを前記モデルに適用することによって生成される、請求項１に記載の記録媒体。
【請求項６】
前記手順g)が、次のg1）からg6）の手順を含み、
g1）まだ処理されていない面を選ぶ手順、
g2）前記選ばれた面が前記新しい一次の面であるかどうか判断する手順、
g3）前記手順g2)で、前記選ばれた面が前記新しい一次の面であると認められる場合、前記選ばれた面が前記頂点を含むかどうか判断する手順、
g4）前記手順g3)で、選ばれた面が前記頂点を含むと認められる場合、前記頂点で始まるエッジを取得し、前記頂点で終わるエッジを取得する手順、
g5）前記手順g4)で取得されるエッジの端点が異なるかどうか判断する手順、
g6）前記手順g5)で端点が異なると判断される場合、前記選ばれた面を、ギャップをもつ全ての選択された面をもつリストに追加する手順、
前記g1）からg6）の手順は前記立体の全ての面について実行される、請求項１に記載の記録媒体。
【請求項７】
コンピュータ支援の設計システムにおいて、コンピュータに、幾何学的立体のエッジと置き換わる融合表面または面取り表面を、立体のソリッドモデルに組み込むための処理を実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体であって、
該ソリッドモデルは、生産される装置を表しており、
曲線セグメントは、ギャップをもつ面と周囲の面との交差曲線の一部であり、
前記プログラムは、前記コンピュータに、
a）前記ソリッドモデル用の一次の融合表面または面取り表面を規定する手順と、
b）前記一次の表面と前記立体との間の一次の境界を計算する手順と、
c）前記一次の境界をトリムする手順と、
d）置き換えられる前記エッジに隣接する複数のエッジがもう使用されないと判断される場合前記複数のエッジを除去し、前記立体を幾何学的に矛盾する状態に置く手順と、
e）新しい一次の面の新しい境界を形成する新しいエッジで、除去されるエッジを置換することによって、前記一次の表面に基づいた新しい一次の融合面または面取り面を生成する手順と、
f）前記除去されるエッジの各々の頂点について、前記立体が前記頂点のまわりで幾何学的に矛盾しているかどうか調べ、矛盾しているときに、前記頂点のまわりの立体のトポロジーをトリムして、使用される以下のg)からm)の手順を実行する手順と、
g）前記新しい一次の面上の、幾何学的に適合しない、トポロジー的に隣接するエッジによって定義される全てのギャップを集める手順と、
h)各々のギャップについて、前記面の一部分をトリムする一連の横断セグメントから成るトリミング・パスを計算する手順であって、
前記手順ｈ）が、次のh1)からh5)の手順を含み、
h1）ギャップをもつ面のトリミング・パスが始まる開始ノードと、ギャップをもつ面のトリミング・パスが終わる終了ノードを規定する手順であって、該ノードはトリミング・パスの前記曲線セグメントである、規定する手順、
h2）前記開始ノードの端点および前記終了ノードの端点を計算する手順、
h3）現在のノードに関する子ノードを生成する手順、
h4）前記手順h3)で生成された子ノードをソートする手順、該手順h4)は、次のh4.1)からh4.3)の手順を含み、
h4.1）各々の半曲線に、親ノードとそれぞれの半曲線との間の角度に基づく値を割り当てる手順、
h4.2）最も小さい角度をもつ半曲線を判断し、該半曲線に最も高い優先順位を割り当てる手順、
h4.3）前記最も高い優先順位をもつ半曲線の最短の曲線セグメントを決定する手順、
h5）前記開始ノードから始まる全てのノードについて、前記手順h3)およびh4)を終了ノードに到達するまで繰り返す手順、
i）前記手順h)で計算されたトリミング・パスに基づいてギャップを閉じる新しいトポロジーを生成する手順と、
k）前記頂点のまわりの二次の非融合表面または非面取り表面上の全てのギャップを集める手順と、
l）立体の全ての二次の面に関して前記手順k)で集められたギャップについて、前記手順h)および手順i)を繰り返す手順と、
m)前記立体の前記ソリッドモデルを表示する手順と、
を実行させる、コンピュータ読み取り可能な記録媒体。
【請求項８】
前記手順i)が、
i1）第１の面についてのトリミング・パスの開始ノードを、現在のセグメントとして定義する手順と、
i2）開始ノードのエッジを現在のエッジとして定義する手順と、
i3）現在のセグメントに続く次のセグメントを決定する手順と、
i4）次のセグメントに対応する第２の面の現在のエッジを決定する手順と、
i5）次のセグメントが第２の面の元のエッジと交わるかどうか評価する手順であって、
i5.1）もし交点があれば、存在するエッジと第２の面の元のエッジの間にある全てのエッジを除去する手順と、
i5.2）もし交点がなければ、第２の面に、成長し、ギャップをもつと印を付ける手順と、を含む手順i5)と、
i6）第１の面および第２の面の間に新しいエッジを生成する手順と、
i7）現在のエッジと存在するエッジの間の全てのエッジを、新しいエッジの開始頂点に引き寄せる手順と、
i8）現在の頂点のまわりの残りのエッジを、新しいエッジの終了頂点に引き寄せる手順と、
i9）次のセグメントを現在のセグメントとして定義する手順と、
i10）新しいエッジを現在のエッジとして定義する手順と、
i11）次のセグメントがトリミング・パスの終了ノードであると判断されるまで、前記手順i3)からi10)を繰り返す手順と、
により、ギャップをもつ第１の面と該第１の面に隣接する第２の面との間に新しいエッジを生成する、請求項１に記載の記録媒体。
【請求項９】
前記手順k)が、次のk1)からk5)を含み、
k1）まだ処理されていない面を選択する手順、
k2）選ばれた面が頂点を含むかどうか判断する手順、
k3）前記手順k2)で、選ばれた面が前記頂点を含むと認められる場合、前記頂点で始まるエッジを取得し、前記頂点で終わるエッジを取得する手順、
k4）前記手順k3)で取得されるエッジの端点が異なるかどうか判断する手順、
k5）前記手順k4)で新しい端点は異なると認められる場合、選ばれた面を、ギャップをもつ全ての選ばれた面を含むリストに追加する手順、
前記k1)からk5)の手順は、前記立体の全ての面について実行される、請求項１に記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コンピュータ支援の設計システム(CADシステム)で、幾何学的立体のエッジと置き換わる融合(blend;ブレンド)または面取り表面を、立体のソリッドモデルに組み込む方法に関する。例えば機械部品のような物理的な物体の設計では、多くの場合物体のエッジを融合したり、面取りする必要がある。この発明は、物理的な物体のグラフィック表現を格納し、それを３次元的に等角図で表示することができ、ユーザーがこの表現を対話的に修正することができる3D-CADシステムで、融合するまたは面取りする操作の実行に関する。
【０００２】
【従来の技術】
CADシステムは、機械部品、電子部品または他の物体の設計に広く使われており、そのタイプのシステムはいくつか市販されている。これらの全部のシステムの共通の特徴は、ユーザが物体を対話的なモードで設計することである。すなわち、立体(body)は、それがユーザーによって設計される限り画面上に表示され、ユーザーは、すでに存在する構造に修正および/または追加を適用するコマンドを入力することができる。
【０００３】
設計中の幾何学的物体を表示するため、典型的に陰極線管(CRT)または液晶ディスプレイ(LCD)が使用される。物体は等角図で表示される。また、表示される物体は、コンピュータ生成される光源によって照らされ、現実的な３次元画像をもたらす。補足または修正のコマンドは、好ましくはコンピュータ・マウス、グラフィック・タブレットまたはライトペンのような適当な入力手段によって入力される。画面上の遠近法表現に代わって、設計中の物体の２次元または断面図を表示することもできる。ユーザがいくつかの方向から物体を見ることができるように、いくつかの既知のCADシステムは、置きかえられた物体を異なった軸のまわりで回転させることができる。編集プロセスが終了し、設計される物体がその最終的な形状を呈したとき、対応するハードコピーをプリンタまたはプロッタによって作り出すことができる。さらに物体を表すデータから、穿孔テープや磁気テープを作り出すこともでき、このテープは、所望の物理的な物体を製作するため、数値で制御される機械工具によって直接使用することができる。
【０００４】
市販の3D-CADシステムの例として、境界表面を通して間接的にソリッドモデルを表すいわゆる「境界表現」モデラー(B-repモデラー)の類に属するヒューレット・パッカード社のプレシジョン・エンジニアリング・ソリッド・デザイナー(precision engineering solid designer)4.0がある。幾何学的情報に加えて、B-repモデラーは、幾何学的実体間の隣接関係を説明するさらなるトポロジー的情報(topological information)を格納する。最も一般的に使用されるモデラーの他の類は、簡単な幾何学的物体に適用される結合または交差のような一連の基本操作の結果としてソリッドモデルを表現する「構造的ソリッド幾何形態の手法(constructive solid geometric approach)」(CSG手法)に基づいている。特にB-repモデル上の表現形式に関するより詳細な記述は、Mantyla M.の「An introduction to solid modelling」(Computer Science Press、Rockville 1988)で見ることができる。
【０００５】
B-rep方式の主な利点は、それがモデルの局所的な修正、特にエッジを融合させるまたは面取りするプロセスにかなり適しているという事実である。この場合、ソリッドモデルの鋭いエッジは、複数の隣接する面を、滑らかに(融合)または平らに(面取り)接続する表面と置き換えられる。両方の操作、特にエッジの融合は、ストレス状態を分散し、流体フロー特性を高めることを含む、機械設計の中のいくつかの目的にかなう。従って融合操作の信頼性は、多くの場合、3D-CADシステムにおける全体の設計の完了のために極めて重要である。
【０００６】
以下に、いくつかのタイプの融合および面取り操作を、図25および図26を参照してより詳しく記述する。
【０００７】
図25aは、物体2000の形状を規定する複数の面2002、2004、2006を含む幾何学的物体2000を等角図で示している。物体2000のそれぞれの面2002ないし2006の間には、エッジ2008ないし2024が形成される。以下で、物体2000の１つのエッジが融合される。図25を参照して記述される例で、融合されるエッジは、エッジ2008である。
【０００８】
物体2000の面2002および面2004の間の融合表面を生成するのに使用されるいくつかの手法がある。ここで、可能な手法のうちの２つが、図25bおよび図25cを参照してより詳細に記述される。図25bには、図25aに示される物体にいわゆる「一定半径の回転ボール融合」操作を適用した後の結果の物体2000が示される。分かりやすいように、物体の中の変更されないエッジを定義する参照符号は省略する。図25bから理解できるように、元のエッジ2008は、融合表面2026を面2002に接続する第１の新しいエッジ2028と、融合表面2026を面2004に接続する第２の新しいエッジ2030をもつ融合表面2026と置き替えられる。さらに、融合表面2026は、２つの丸められたエッジ2032および2034を含む。図25bに示されるように、面2002および面2004の表面面積は、これらの面の図25aに示される元の表面面積と比較すると小さい。言い換えると、面2002から2006は縮む。
【０００９】
融合表面2026は、ボールが元のエッジ2008に沿って隣接する面2002および2004と接触しながら動くことによって生成されると考えることができる。ボールが隣接する面2002および2004と接触する線は、図25bに示されるように第１および第２の新しいエッジ2028および2030を規定する。
【００１０】
図25cを参照すると、融合表面を生成するための更なる手法がより詳細に表されている。図25cに示される融合表面2036は、物体に、いわゆる「可変半径の回転ボール融合」操作を適用することによって生成される。新しい第１および新しい第２のエッジ2028および2030の間の距離が一定である図25bとは違って、図25cでは、融合表面2036のそれぞれの新しく形成されたエッジ2038および2040の間の距離は、図25cの左から右へと成長する。融合表面2036は、さらにエッジ2042および2044を含む。これらのエッジ2042および2044は同じ長さではない。
【００１１】
図25cに示される融合表面2036は、ボールが、元のエッジ2008に沿って隣接する面2002および2004に接触しながら移動し、エッジ2008に沿って移動する間にボールの半径が徐々に変えられることによって生成される考えられる。言い換えると、図25cは、図25bを参照して記述された基本の回転ボール融合操作の一般化を説明する。
【００１２】
図26を参照して、幾何学的物体の隣接する面の間に面取り表面を生成する異なった手法をより詳しく記述する。図26aには、元の物体が等角図で示されている。図26aに示される物体は、図25aに示されるものと同一である。従って、図26aに示される物体の説明は省略する。図26には、図25と同一の参照符号が使用されている点に注意する。
【００１３】
図26bに、「一定距離の面取り」操作を図26aに示される立体に適用した後の結果の立体が示されている。この操作を元の物体2000に適用することにより、面2002および2004の間に面取り表面2102が生成される。面取り表面は、第１の新しいエッジ2104および第２の新しいエッジ2106、そしてエッジ2108および2110によって境界を示される。面2102と図25bの面2026の間の違いは、面2002および2004が平坦な表面2102によって接続されるということである。このことは、図25bに示されるような丸められた線ではなく、直線であるエッジ2108および2110から明らかである。言い換えると、図26aに示される元の立体2000のエッジ2008は、元のエッジ2008と同じ距離を持つ２本の曲線を接続する平面2102と置き換えられ、上記２本の曲線は、新しいエッジ2104および2106になる。図26bに示される例で、面取り表面2102は、一定の角度で元の面2008に適用されるのではない点に注意する。これは、元の面2002と2004の間のエッジ2108の角度が、面2002と2004の間の新しいエッジ2110の角度とは異なることを意味する。
【００１４】
図26cを参照して、「一定の距離/角度の面取り」操作を図26aの立体に適用した結果として達成される物体を説明する。元のエッジ2008は、第１の新しいエッジ2116および第２の新しいエッジ2114によって境界を示される面取り表面2112と置き換えられる。さらに面取り表面は、エッジ2118および2120を含む。図26bに示される立体と比較したときの違いは、両方のエッジ2108および2120が、面2002および2004の間で同じ角度を定めていることである。言い換えると、隣接する面2002および2004上の曲線2114および2116によって境界を示される面取り表面2112は、元のエッジ2008から一定の距離をもち、元のエッジ2008によって規定される曲線に沿って、固定される角度で面2102を切断する。
【００１５】
立体または幾何学的物体のエッジの融合または面取りは、本質的に図27および図28を参照して後述される２つの主要なステップから構成される。これらの２つの図は、融合表面の生成の２つの例を含む。
【００１６】
図27aには、元の物体2200が示されている。この物体は、複数の面F1からF5を含み、それぞれの面の間の交わりは、複数のエッジe1およびe12を規定する。図27を参照して記述される例で、融合されるエッジは、面F1およびF5を接続するエッジe12である。
【００１７】
第１のステップは、図27bを参照して記述され、融合表面の幾何学的形態の作成を含む。融合表面Fの表面の幾何学的形態を生成するステップは、表面Fの幾何学的パラメータの決定を含む。図27bから理解できるように、融合表面Fは、第１のエッジE14、第２のエッジE15、第３のエッジE16および第４のエッジE17を含む。エッジE16およびE17hは丸められており、融合表面Fの凸状を規定することに注意する。さらに融合表面Fの表面の幾何学的形態の作成は、融合表面Fが元の立体2200の元の面と交わる位置の決定を含む。図27bで、既存の面F1およびF5とのそれぞれの交わりは、融合表面Fのエッジe14およびe15の一部分によって形成され、元の面F2、F3およびF4との交わりは、参照符号e18、e19およびe20によって示される。
【００１８】
図27cには、エッジe12を融合するための第２の主要なステップである、表面の幾何的学的形態のソリッドモデルへの組み込みの結果として達成される物体を示す。表面の幾何学的形態のソリッドモデルへの組み込みによって、元のエッジe12は、エッジe14'、e15'、e16'、e18、e19およびe20によって境界を示される融合表面Fと置き換えられる。立体2200の面は、図27aと比較すると小さく、参照符号F1'、F2'、F3'、F4'、F5'によって示される。このように、融合表面の物体2000への組み込みは、結果として面を縮ませることになる。
【００１９】
図28を参照して、融合表面の作成の更なる例を記述する。図28aに、全体的な物体2300を示す。この物体2300は、複数の面F1、F2、F3、F4、F5およびF6を含む。それぞれの面の交わりに、それぞれのエッジe1、e2、e3、e4、e5、e6、e7、e8、e9、e10、e11、e12、e13、e14、e15およびe16が規定される。
【００２０】
図28に示される例に従う融合されるエッジは、元の面F5およびF6の間のエッジe15である。図27bを参照してすでに述べたように、主要な第１のステップの中で、融合表面Fの表面の幾何学的形態が、図28bに示されるように生成される。分かりやすいように、融合操作に影響されないエッジを示す参照符号は省略されている。融合表面Fは、４つのエッジe17ないしe20を含み、そこでエッジe19およびe20は丸められているので、表面Fの凸状を規定する。
【００２１】
図28cに、融合表面がソリッドモデルに組み込まれた後の物体を示す。理解できるように、元の面F2およびF4は変えられないままであるが、元の面F1、F3、F5およびF6は変えられており、それらはアポストロフィーを使用して示される。面F1'およびF3'は成長する一方、面F6'およびF7'は縮む。
【００２２】
幾何学的形態の作成の数学はよく理解されており、融合表面特に回転ボールの融合について、表面の幾何学的形態の作成および近似に関する莫大な量の文献が存在することを述べておく。立体のエッジを融合するまたは面取りするための上述の主要な２つのステップは、Vida J.、Martin R.R.およびVardy T.の「A survey of blending methods that use parametric surfaces」(Computer Design、VoIume 5、No5、1994、ページ341-355)、およびWoodwark J.P.の「Blends in geometrical modelling」(The mathematics of surface II、Martin R.R.(ed.) Oxford University Press、1987、ページ255-297)により詳しく記述されている。
【００２３】
融合または面取り表面をソリッドモデルに組み込む問題は、まだ確実には(reliably)解決されていない。問題は、製造可能な物体である有効な多様体ソリッドを生むようにモデルの幾何学的形態およびトポロジーを調整することから成る。このプロセスは、元の立体のエッジおよび面のような既存のトポロジー的要素を除去し、新しいものを生成することを含みうる。
【００２４】
既知の方法は、トポロジーが新しい面によって「のみこまれる(swallowed)」という第１のタイプの問題を処理する。この既知の方法の本質的な特徴は、隣接するトポロジー的要素が常に縮む状況を処理できることであり、それは、元のエッジや面の一部が新しい面によって「切り取られる」ことを意味する。この点に関して、この既知の方法は、表面を組み込む問題を確実に解決する。しかしこの既知の方法は、既存のエッジまたは面が成長する状況を処理することができない。有効な解決法を提供するため、いくつかの既存のトポロジー的要素が「成長する」必要がある場合によくあることだが、多くの実際的な状況で、縮む要素しか処理できないというのは全く十分ではない。この可能性は、元の立体の中で完全に離れていたトポロジーを接続し、それらの間にエッジや頂点のような新しい要素を生成することを含む。この状況は、特に頂点で出会ういくつかのエッジが同時に融合されようとするときに生じ、そして新しい融合面はどれもが成長する。
【００２５】
【発明が解決しようとする課題】
縮むトポロジーの場合、結果の立体は、単に既存の要素との交わりから組み立てることができる。成長するトポロジーの問題は、幾何学的形態およびトポロジーの間の依存により、本質的に一層複雑である。すなわち、組み込まれる幾何学的形態に依存して、面のような元々ばらばらである要素が結合されなければならなかったり、エッジのような新しいものが生成されなければならない。現在のCADシステムは、この問題を満足に解決することができない。成長するトポロジーのある特別なケースは実現されるが、より複雑なものは、確実には処理されない。これは、完全な融合操作または面取り操作の失敗を引き起こしたり、機械で実際に製造できない立体の作成をもたらす。
【００２６】
【課題を解決するための手段】
この発明の目的は、融合または面取り表面の組み込みによってトポロジーが成長するケースを確実に処理する、融合および面取り表面を組み込む方法を提供することである。
【００２７】
この目的は、請求項１に従う方法によって解決される。
【００２８】
この発明は、幾何学的立体のエッジと置き換わる融合または面取り表面を、立体のソリッドモデルに組み込む方法であって、
a)一次の融合または面取り表面を規定するステップと、
b)上記一次の表面および上記立体の間の一次の境界線を計算するステップと、
c)上記一次の境界線をトリムするステップと、
d)置き換えられるエッジに隣接する複数のエッジが廃退すると判断される場合、上記複数のエッジを除去し、上記立体を幾何学的に矛盾する状態におくステップと、
e)除去されるエッジの代わりに新しい一次の面の新しい境界を示す新しいエッジを用いることによって、新しい一次の融合または面取り面を生成するステップと、
f)上記除去されるエッジの各々の頂点について、上記立体が上記頂点のまわりで幾何学的に矛盾するかどうか調べ、もしそうならば、上記頂点のまわりの上記立体のトポロジーをトリムするように、
g)新しい一次の面上の、トポロジー的に隣接するが、幾何学的に適合しないエッジで規定される全てのギャップを集めるステップと、
h)各々のギャップについて、面の一部をトリムする一連の横断セグメントから成るトリミング・パスを計算するステップと、
i)上記ステップh)で計算されたトリミング・パスに基づいてギャップを閉じる新しいトポロジーを生成するステップと、
j)上記頂点のまわりの二次の、非融合または非面取り面上の全てのギャップを集めるステップと、
k)上記立体の全ての二次の面について上記ステップk)で集められるギャップに関して、上記ステップh)およびi)を繰り返すステップと、
を実行するステップと、
を含む方法を提供する。
【００２９】
この発明に従って新しい表面をソリッドモデルに組み込む方法は、いくつかの標準のステップを含み、それらは、一時的に、いくつかの部分的に無限な面をもつ多様体でないソリッドを生む。この発明に従う方法は、欠けている境界をコンピュータ計算する、すなわち無限の部分を「トリム」し、新しい要素をモデルに組み込む。したがってこの方法は、ソリッドモデルの中の単なる「穴」、すなわち境界を示す１つのループだけをもつ穴が、満たされようとする場合には必ず適用することができる。しかし融合または面取り表面のモデルへの組み込みは、一次の最も重要な適用である。
【００３０】
この発明に従う方法は、新しい表面の幾何学的形態には依存しない。それは、一定および可変半径の融合、および面取り表面の全てのタイプに適用することができる。
【００３１】
この発明の更なる好ましい実施例は、後述される実施態様の中で定義される。
【００３２】
【発明の実施の形態】
この発明の好ましい実施例を詳細に述べる前に、後述の中で使用されるB-repソリッドモデルに関する用語を手短に述べる。
【００３３】
ソリッドモデルは、「頂点」、「エッジ」および「面」から構成される「立体」と呼ばれる。多様体の立体上で、エッジは、２つの頂点によって範囲を定められる３次元曲線の有限の部分に対応し、面は、一連のエッジによって境界を示される面の有限の部分に対応する。さらに、多様体のエッジには２つの隣接する面が存在する。
【００３４】
モデラーすなわちCADシステムは、立体を表す幾何学的およびトポロジー的情報を格納し、例えば立体の「全部の面を訪問する」というように、ソリッドモデルの全ての要素を「訪問し」、あらゆる要素に追加の情報を付与するためのメカニズムを提供する。例えば、融合表面には、特別に印を付けることができる。これらのメカニズムは、例えば立体の「全ての融合表面を訪問する」ように、立体の要素のサブセットを抽出するために一緒に使用される。
【００３５】
典型的に、立体のトポロジー的修正は、トポロジー的に有効なモデルを保証するいわゆるオイラー演算子によって実行される。例えば、「エッジを除去すること」に言及するとき、これは、オイラー演算子KEV(kill edge vertex)がモデルに適用されることを意味する。「エッジおよび面を追加する」という用語に言及するとき、これは、オイラー演算子ADEF(add edge face)がモデルに適用されることを意味する。オイラー演算子に関する詳細は、Mantyla M.の「An introduction to solid modelling」(Computer Science Press、Rockville、1988)を参照されたい。
【００３６】
この発明に従う操作の短い概要を与えるために、融合表面が組み込まれる物体を示している図１を参照する。図１に示される物体は、融合表面の元の物体への組み込みの間に起こりうる全てのケース、すなわち面の収縮、面の成長および新しい面による元の面ののみこみ(swallowing)を含む一例である。
【００３７】
図1aは、第１の方向から見た物体100の等角図である。図1bは、第２の方向から見た物体100の等角図である。図1aおよび1bから理解できるように、物体100は、面F1ないしF12によって規定される非常に複雑な形状をもつ。融合されようとするエッジは、参照符号eによって示される。分かりやすいように、残りのエッジを示す参照符号は省略されている。
【００３８】
図1cおよび図1dに、この発明に従う方法の完了後の物体100を示す。図1cは、第１の方向から見た物体100の等角図であり、図1dは、第２の方向から見た物体100の等角図である。
【００３９】
図１から分かるように、融合表面Fの組み込みは、元の立体の異なった面上に異なった結果をもつ。より具体的には、融合表面は、面F2、F3、F7、F8およびF11を切り込む、すなわちこれらの面は収縮する。面F1は、融合表面Fによって完全にのみこまれる。面F4、F5およびF6は成長している。面F9、F10およびF12は、融合表面Fの組み込みによる影響を受けない。
【００４０】
上述したように、先行技術CADシステムは融合表面Fの組み込みの結果である面の成長を確実に処理することができない。従ってこの発明の好ましい実施例の以下の記述では、成長する面の処置に焦点を置く。収縮するまたは消滅するトポロジー的要素の処理は、必要な時にのみ指示される。
【００４１】
以下で、この発明に従う方法の第１の主要ステップを述べるために図2ないし図5を参照する。
【００４２】
図2aないし図5bは、それぞれのステップが実行された後の立体の結果の構造を示す、立体200の斜視図である。
【００４３】
図2aに、元の立体200を示す。立体200は、複数の面F1ないしF5、RFおよびLFを含む。それぞれの面は、エッジR1ないしR4、RN、LN、e1ないしe4、およびEに囲まれている。分かりやすいように、エッジEのまわりの融合表面の組み込みに影響されない外側のエッジには、参照符号を付していない。図2ないし図5に関して述べられる実施例で、面RFおよびLFが隣接するエッジEは、この発明の方法に従って融合表面を組み込むことによって融合される。融合されるエッジEは、図2aに示されるように開始頂点SVおよび終了頂点EVに関連する。図2aの右側の丸く囲まれた部分は、エッジe1ないしe4が位置する場所を明示するために拡大して示される。以下の記述は融合表面の組み込みに関して行われるが、当業者であれば、面取り表面を組み込むときに、この発明の方法を同等に適用できることが分かるであろう。
【００４４】
上で概要を述べたように、立体のトポロジー的修正はオイラー演算子によって実施される。しかし、上述されたオイラー演算子の適用によるトポロジーの修正によって、幾何学的に矛盾するモデルが生じることがある。例えば、図2aに示される立体のエッジe1を除去するとき、残りのエッジE、e2およびe3は、頂点SVの方へ引き寄せられる。しかしこれらのエッジの幾何学的な点は、SVの位置とは異なる。このように、エッジは幾何学的に矛盾するようになる、すなわちトポロジー的端点SVは、幾何学的端点とは異なる。
【００４５】
図には、処理される立体のトポロジー的状態が示されている。幾何学的に矛盾しないエッジは実線で描かれ、矛盾するエッジは、破線で描かれる。図2aは元の立体を示すので、全てのエッジは、全てが幾何学的に矛盾しないように実線で描かれている。一例として、図5aを参照すると、面Fは、2つの破線のエッジによって境界を示されており、それらのエッジが、幾何学的境界を表しているのではなく、中間のトポロジー的状態を示していることを意味する。
【００４６】
図2bないし図5aを参照して、エッジの融合表面による置き換えを詳細に記述する。
【００４７】
図2bに示される第１のステップで、融合表面Fが、幾何学的に生成される。この生成は、融合表面の一次の境界線ep1およびep2の計算、さらに融合表面自体の計算を含む。融合表面自体の計算は、融合表面Fの形状、例えば表面Fの凸状などの規定を含む。融合表面Fの一次の境界線ep1およびep2は、例えば一定半径の回転ボールの融合操作を、立体200のエッジEに適用することによって生成される。一次の境界線は、この場合回転ボールが接触する曲線である。
【００４８】
残りのステップは、置き換えられる元のエッジEの端点SVおよびEVの両方に対称に適用される。以下では開始頂点SVについてのみ考える。
【００４９】
図2cに示される更なるステップで、一次の境界線がトリムされる。この一次の境界線のトリミングは、一次の境界線ep1およびep2と、置き換えられるエッジEに隣接する面RFおよびLF上のエッジRNおよびLNの交点RVおよびLVをそれぞれ見つけることを含む。
【００５０】
面RFについて考えるとき、一次の境界線をトリムするために使用されるルーチンは、開始頂点SVから始まり、エッジe1(図2aを参照)と、融合表面Fの一次の境界線ep1との交わりを見つけようとする。交点はないので、エッジe1は印を付けられ、ルーチンは、次のエッジe2との交わりを見つけようとする。再度交点は存在しない。従ってエッジe2も印を付けられる。そしてルーチンは、エッジRNである次のエッジの、融合表面Fの一次の境界線ep1との交点を見つけようとする。この場合は、交点RVが存在する。同じことが、対向する面LFにも適用され、エッジe3およびe4は印を付けられ、交点LVをもたらす。
【００５１】
表面Fの一次の境界線ep1およびep2のトリミングによって、面Fの第１の境界線RBおよび面Fの第２の境界線LBが生じる。境界線RBおよびLBは、図2cに太線で描かれていることに注意されたい。
【００５２】
図2bおよび2cを参照して記述されるステップは、元の立体の修正を含まない点に注意する。これまでで、組み込まれる新しい幾何学的形態のみが決定された。比喩的に言うと、融合表面の幾何学的形態は、図2bおよび2cに示されるように立体の「最上部に」描かれている。
【００５３】
以下に記述されるステップは、実際に、元の立体のトポロジー的修正を含むものである。
【００５４】
図3aないし図4aを参照して、廃退する隣接するエッジの除去を、より詳しく記述する。図2cを参照して記述された前のステップで印を付けられた全てのエッジ、すなわちエッジEと融合表面Fの左右の境界線との交点RVおよびLVをもつエッジすなわちエッジRNおよびLNとの間に位置する全てのエッジは、オイラー演算子KEVの適用によってモデルから除去される。
【００５５】
図3aは、前に印を付けられたエッジe1が除去された後の立体200のトポロジー的状態を示す第１のエッジe1の除去により、前に第１のエッジe1と交点をもっていたエッジは、開始頂点SVの方へ引き寄せられる。前にエッジe1に接続していたエッジR2およびe2の端点は、開始頂点SVの方へ引き寄せられる。エッジR2およびe2は、開始頂点SVにそれらの新しい端点をもつ。
【００５６】
図3bは、融合表面Fの一次の境界線のトリミング中に印を付けられたエッジe2の除去を示す。結果の立体2000を、図3bに示す。エッジe2を除去することにより、エッジe2と交わっていたエッジの端点は、図3aに関して記述されたように開始頂点の方へ動かされる。立体200のエッジe2を除去することによって、エッジR1およびRNの端点は、開始頂点SVの方へ動かされる。エッジRNと融合表面Fのトリムされた境界線との交点RVは、開始頂点SVに接続され、エッジRNは、エッジRNの残りの部分は変わらないままであるように開始頂点SVの方へ引き寄せられる点に注意する。この理由は、立体200のどの位置で融合表面が始まるかを決定するために、融合表面Fの一次の境界線が提供されるということである。この表面の境界線の外にある融合表面Fの外側のエリアは、融合表面の立体への組み込みによって変わらない。従って、融合表面Fの境界LBおよびRBの外側にある面RFおよびLFの一部は、変わらないままである。それゆえエッジRNは、部分的にのみ破線で示されている。
【００５７】
図4aに、エッジe3が除去された後の立体200を示す。エッジe3の除去により、元々エッジe3に接続されていたエッジR3の端点は、開始頂点SVの方へ引き寄せられる。図4bは、エッジe4が除去された後の立体200を示す。エッジe4の除去により、エッジR4の端点および前にエッジe4に接続されていたエッジLNの端点は、開始頂点SVの方に描かれている。面LFの場合、エッジe4の除去によって、開始頂点とエッジLN上の交点LVとを直接に接続するようになる。エッジLNの残りの部分は、変わらないままである。
【００５８】
図4bは、一次の境界線のトリミングの間に印を付けられた全てのエッジが除去された後の立体200を示す。上述されたエッジの除去により、全ての残りのエッジは、1点すなわち開始頂点SVで交わる。これは、立体200を幾何学的に矛盾する状態においたままである。現在開始頂点SVで交わっているエッジはどれも、図2aに示される元の立体の１点では交わっていなかったからである。例えば、図4bに従うと、エッジR1およびR4は、現在１点で交わっているが、元の立体を示す図2aに従うと、エッジR1およびR4の間に交わりはない。したがって、図4bに示される全てのエッジは、それらが幾何学的に矛盾するので破線で示されている。
【００５９】
この発明に従う方法が完了するとき、立体は、再びトポロジー的および幾何学的に矛盾しない多様体になる。
【００６０】
図5aを参照して、新しい融合表面Fが生成された後に達成される立体200を記述する。この場合、元のエッジE(図4bを参照)は、「バナナ様」の形状を持つ新しい面Fと置き換えられる。このバナナ形状は、線A-A'に沿った立体200の断面図である図5bから一層明らかである。図5bから理解できるように、新しい融合表面Fは、元のエッジEに取って代わり、表面RFおよびLFと接続する。元のエッジEの新しい融合表面Fとの置き換えは、新しいエッジ、新しい面Fを生成し、それに応じてデータ構造を更新するオイラー演算子ADEF(add edge face)の適用によって達成される。更なる処理のため、新しく生成される面Fにも「融合表面」と印が付けられる。
【００６１】
元の融合表面および元の境界線は、新しい面F、および新しいエッジRBおよびLBのそれぞれと関連するが、図5aに示されるFの周囲のエッジは、面Fの幾何学的に有効な境界線をまだ表していない。図2ないし図5に関して上述したステップを実行することにより、立体200は、ある状態すなわち幾何学的に無効な状態に置かれ、それは、幾何学的に有効な状態を達成するために更なるステップを必要とする。
【００６２】
これは、普遍的ルーチンを立体に適用することによって達成される。図6は、普遍的ルーチンのフローチャートであり、以下でより詳しく記述する。
【００６３】
ステップS300でルーチンに入る。ステップ01とも呼ばれるステップS302で、一次のギャップが集められる。ステップS302で、頂点のまわりの一次の融合表面または面取り表面上の全てのギャップが、集められる。トポロジー的に隣接する２つのエッジが幾何学的に適合しない、すなわちエッジは同じ頂点に接続されるが、端点は幾何学的に異なるという事実によって、ギャップは特徴づけられることに注意する。一次のギャップS302を集めるステップは、以下でより詳しく記述する。ステップS304で、処理されるギャップがもっと存在するか判断される。処理されるギャップがこれ以上ない場合、ステップS306で示されるように、普遍的ルーチンを離れる。ステップS304で、処理されるギャップがもっとあると判断される場合、普遍的ルーチンのステップ02とも呼ばれるステップS308が実行される。ステップS308で、処理される現在のギャップについてトリミング・パスが計算される。トリミング・パスは、面の無限な部分を適切にトリムする一連の曲線セグメントから構成される。ステップS308のより詳細な記述は、以下で与えられる。普遍的ルーチンのステップ03とも呼ばれるステップS310では、ステップS308で計算されたトリミング・パスが組み込まれ、起こりうる新しいギャップに印がつけられる。ステップS310によって、ギャップを閉じる必要がある新しいトポロジーが生成される。新しいトポロジーの生成は、ステップS308によって計算される幾何学的形態に基づく。より詳細な記述は、以下で与えられる。普遍的ルーチンのステップ04とも呼ばれるステップS312で、新しいギャップが集められる。ステップS312によって、ステップS310で印を付けられた新しいギャップは、例えばあらゆるギャップを含むリストにこれらの新しいギャップを加えることにより集められる。ステップS312の後、ルーチンはステップS304に戻る。
【００６４】
普遍的ルーチンの上記の記述から、ステップS304で始まる全てのステップは、物体の中に見つけられるあらゆるギャップについて実行されることが明らかである。
【００６５】
図7および図8を参照して、普遍的ルーチンのステップ01および04すなわちステップS302およびS312の記述をする。
【００６６】
図7は、普遍的ルーチンのステップS302をより詳しく述べている。ステップS400で、普遍的ルーチンからサブルーチンに入る。図7に示されるサブルーチンのための入力は、いくつかの融合面および穴やギャップに対応する頂点を含むモデルである。図7は、頂点SVが選ばれる一つの実施例に関する。しかし、図7に示されるサブルーチンは、頂点EVのような他の頂点にも同等に適用できることに注意する。ステップS402で、モデルのまだ訪問されていない面があるかどうか調べられる。ステップS402で、モデルの全ての面が訪問されていると判断される場合、サブルーチンは、ステップS404で終わり、普遍的ルーチンに戻る。さらに、サブルーチン01によって集められた一次のギャップのリストLが、普遍的ルーチンへ出力される。ステップS402で、モデル上にまだ訪問されていない面があると判断される場合、ステップS406が実行され、次の面Fiが集められる。ステップS408で、選ばれた面Fiが融合表面であるかどうか判断される。選ばれた面Fiが融合表面でない場合、サブルーチンはステップS402に戻る。ステップS408で、選ばれた面Fiが融合表面であると判断される場合、サブルーチンはステップS410に進む。ステップS410で、面Fiが開始頂点を含むかどうか判断される。そうでない場合、サブルーチンは、ステップS402に続く。面Fiが開始頂点SVを含むと判断される場合、サブルーチンはステップS412に続く。このステップで、開始頂点SVで始まる面FiのエッジIおよび開始頂点SVで終わる面FiのエッジOが決定される。ステップS414で、エッジIの始点がedge0の端点に等しいかどうか調べられる。そうである場合、サブルーチンはステップS402に戻る。エッジIの始点がエッジOの端点と異なる場合、ステップ416で、面FiがギャップのリストLに追加される。そしてサブルーチンはステップS402に戻る。
【００６７】
図8を参照して、新しいギャップを集めるサブルーチン04をより詳細に記述する。ステップS450で、普遍的ルーチンからサブルーチン04に入る。再びサブルーチン04の入力は、融合表面、および穴またはギャップに対応する頂点すなわち図8に示される実施例の中の開始頂点SVをもつモデルである。ステップS452で、まだ訪問されていない面が存在するかどうか調べられる。モデルの全ての面が訪問されていると判断される場合、ステップS454でサブルーチン04を離れ、全ての二次のギャップのリストSが、普遍的ルーチンへ出力される。二次のギャップは、二次の表面すなわち非融合の表面上に形成される。ステップS452で、まだ訪問されていない複数の面または少なくとも１つの面があると判断される場合、サブルーチンはステップS456に進み、次の面Fiが集められる。ステップS458で、面Fiが開始頂点SVを含むかどうか判断される。そうでない場合、サブルーチンはステップS452に戻る。ステップS458で、面Fiが開始頂点を含むと判断される場合、ステップS460で、開始頂点SVで始まる面FiのエッジI、および開始頂点SVで終わる面FiのエッジOが決定される。ステップS462で、エッジIの始点がエッジOの端点であるかどうか判断される。そうである場合、サブルーチンはステップS452に戻る。ステップS464でエッジIの始点がエッジOの端点と異なる場合、面Fiが、二次のギャップのリストSに追加される。そしてサブルーチンはステップS452に戻る。
【００６８】
普遍的ルーチンの残りの主要ステップ02および03の詳細な記述を与える前に、図6に示される普遍的ルーチンの各々の繰り返しの後の結果の立体を、図9を参照して記述する。以下の記述のため、置き換えられるエッジEの終了頂点EVに関して、融合表面Fは立体200にすでに正しく組み込まれていると仮定する。従って以下の記述は、開始頂点SVに関してのみ行われる。
【００６９】
図9aに、普遍的ルーチンの、融合表面上で見つかった一次のギャップが閉じられるステップの後の立体200を示す。第１のステップS302で、開始頂点SVのまわりの一次のギャップが集められ、面Fは、ギャップをもつものとしてサブルーチン01から出力される。普遍的ルーチンのステップ02および03の１回目の繰り返しは、面Fについてトリミング・パスを生成し、面Fについてトリミング・パスを組み込む。組み込まれたトリミング・パスは、図9aにエッジC0およびC1で示される。図9aから理解できるように、ここで面Fの境界を示す全てのエッジは、幾何学的に矛盾しておらず、これらのエッジを実線として描くことによって示されている。頂点SVに結びつけられる残りのエッジ、すなわちR1、R2、R3およびR4は、まだ幾何学的に矛盾しているので破線で示される。
【００７０】
普遍的ルーチンのステップ03で、面F1は、「二次のギャップ」をもつと印を付けられ、処理されるギャップのリストに追加される。ステップ04により、先行のステップで印を付けられた面F1は、図8に関して述べたように２次のギャップのリストに追加される。普遍的ルーチンの次の繰り返しは、面F1についてトリミング・パスを計算し、組み込む。
【００７１】
図9bに示されるように、エッジC2およびC3は、普遍的ルーチンの２回目の繰り返しによって組み込まれる。実線で示されるように、ここで面F1の境界を示す全てのエッジは幾何学的に矛盾しないが、残りのエッジR2、R3およびR4はまだ幾何学的に矛盾している。普遍的ルーチンのステップ03で、面F2およびF4は、ギャップをもつと印を付けられ、ステップ04で二次のギャップのリストに追加される。
【００７２】
ステップ02および04の３回目の繰り返しで、面F2上のギャップは、図9cに示されるように新しいエッジC4を生成することによって閉じられる。ステップ03で、面F3は、ギャップをもつと印を付けられ、ステップ04で二次のギャップのリストに追加される。
【００７３】
普遍的ルーチンの最後の繰り返しで、面F3およびF4上のギャップが閉じられる。面F5上のギャップは、明示的には処理されないが、周囲のギャップを閉じることの副産物としてトリムされることに注意する。。
【００７４】
以下に、普遍的ルーチンのステップ02および03をより詳しく記述する。
【００７５】
普遍的ルーチンのサブルーチン02の記述のため、最初に図5aに示される立体の頂点SVのまわりの基本のトポロジーを示す図10を参照する。トポロジーは、頂点SVのまわりで星様の形状をもつ。以下に、面Fについてトリミング・パスの決定を記述する。トリミング・パスは、エッジRBから始まり、エッジLBで終わる。しかし面Fの「エッジRBからエッジLBにいく」ことは全く強制的ではないことに注意する。始点がエッジLBに選ばれる場合、この方法は、対称に働く。パス検出プロセスと組み込みプロセスを分離することとあいまってこの特性は、ルーチンが、境界RBから始まる解決法を見つけそこなった場合、それは再度適用され、境界線LBから始まるという利益をもたらす。
【００７６】
普遍的ルーチンのサブルーチン02は、面Fについてトリミング・パスを計算する。普遍的ルーチンのステップ02で決定されるパスは、例えば面Fの表面と周囲の面との交差曲線の複数の部分(図10を参照)から構成される。面Fの境界を示すいくつかの可能性のあるパスがあることに注意する。図11に関して、単純化されるモデルについて異なった解決法が示される。図11aは、融合表面Fを組み込むことによってエッジEが融合される元の立体を示す。図11bは、望ましい結果を示し、図11cは、多様体でないソリッドモデルをもたらす別の解決法を示す。この可能性のある複数の解決法は、いくつかの理由をもつ。第１に、概して２つの面の間には、いくつかの交差曲線がある。第２に、曲線と面の間には、多くの場合いくつかの交点がある。第３に、最も重大なことには、成長するトポロジーの場合、互いに交わる起こりうるいくつかの面がある。説明のため、図9aを参照する。面Fおよび面F1の間の交差曲線が与えられると、残りの全ての面F2ないしF5は、次の交差曲線としてありえる候補である。
【００７７】
従って、可能性のある解決法の中で、有効なソリッドモデルを導く最善のものを見つけなければならない。これは、可能性のある全ての解決法のトリー上でいわゆる深さ第１検索を実行する、図6に示される普遍的ルーチンのサブルーチン02によって達成される。直観的に、これは、これまでに見つけた最善の解決法が、端点または「行き止まり」に達するまで続けられることを意味する。後者の場合、トリーは「逆戻りされる」。すなわちパスの最後のセグメントは無視され、検索は第２の最善のセグメントで続けられることを意味する。
【００７８】
普遍的ルーチンのサブルーチン02の好ましい実施例を記述する前に、このサブルーチンの一般的なステップをより詳しく記述する。
【００７９】
図12は、ギャップをもつ面についてトリミング・パスを計算するために使用される普遍的ルーチンのサブルーチン02のフローチャートである。ステップS800でサブルーチンに入り、ステップS802にすすみ、そこでギャップの前処理が実行される。この前処理ステップは、より詳しく後述される。ステップS804で、処理されようとしているギャップがまだ開いているかどうか調べられる。ギャップがもう開いていない場合、サブルーチンはステップS806に続き、そこでサブルーチンが中止され、普遍的ルーチンに戻る。ギャップがまだ開いている場合、サブルーチンはステップS808に進み、ノード(0,0)は、開始するノードすなわち開始ノードSにセットされる。さらに添字iおよび添字jは、0にセットされる。深さ第一検索トリーのノードのより詳しい記述は、以下に与えられる。ステップS810で、現在のノードは、ノードN(j,i)にセットされる。ステップS812で、現在のノードの子供ノードN(j+1,i)が生成される。ステップS812は、後述されるサブルーチンD1をトリガーする。ステップS814で、ステップS812で生成された子供ノードがソートされる。ステップS816で、ノードN(j+1,i)が有効かどうか判断される。そうでない場合、ステップS818で添字iが1ずつインクリメントされ、サブルーチンはステップS818からステップS816に戻る。ステップS816で、ノードが有効であると判断される場合、ステップS820で、終了ノードEに到達したかどうか調べられる。そうでない場合、ステップS822で、添字jが1ずつインクリメントされ、サブルーチンはステップS810に戻る。ステップS820で終了ノードに到達したと判断される場合、サブルーチンはステップS806で止まり、普遍的ルーチンに戻る。
【００８０】
図13を参照して、ステップS812の中の子供ノードの作成をより詳しく述べる。ステップS900で、サブルーチン02から、子供ノードを生成するサブルーチンD1に入る。サブルーチンD1について入力は、始点EPおよび現在の面Fcである。ステップS902で、今処理されたギャップを見つけた面Fの表面を、現在の面Fcの表面と交わらせる。ステップS903で、端点を含む全ての曲線Ciが決定され、ここでiは、0からnに及ぶ添字である。ステップS904で、いわゆる半曲線Sj(j=0...2n)が生成される。ステップS906で、添字kは、0にセットされる。ステップS908で、添字kに対応する半曲線を、現在の面Fcのエッジと交わらせる。ステップS910で、現在の面Fcの元のエッジの内側に交点Iが存在するかどうか判断される。元のエッジの内側にそのような交点がない場合、サブルーチンD1は、ステップS912にすすみ、そこで半曲線を、開始頂点Svのまわりの全ての開いた面と交わらせ、交点Ip(p=0...q)をもたらす。ステップS914で、ステップS912で決定された各々の交点について子供ノードが生成される。そしてサブルーチンはステップS916にすすみ、そこで添字kは1ずつインクリメントされる。
【００８１】
ステップS910で、現在の面Fcの元のエッジの内側に交点Iがあると判断される場合、ステップS918で、１つの子供ノードが生成され、サブルーチンはステップS916に続く。
【００８２】
ステップS920で、添字kが2nより大きいかどうか調べられる。そうでない場合、サブルーチンD1はステップS908に続く。ステップS920で、kが2nより大きいと認められる場合、サブルーチンD1はステップS922で止まり、サブルーチン02に戻る。ステップS922で、生成された子供ノードCpのリストが、サブルーチン02に出力される。
【００８３】
以下で、普遍的ルーチンのサブルーチン02に従ってトリミング・パスの生成または計算を説明する好ましい実施例が、図14および図15を参照してより詳しく記述される。以下は、図2aに示されるような元の立体200を基準として記述され、立体は現在図5aに示されるような状態にある。サブルーチン02の詳細な記述より先に、立体200の状態を、図14を参照してより詳しく考える。簡潔にするため、融合表面Fは、図14で立体200の後ろの端部に実線のエッジで示されるように、すでに頂点EV(図2aを参照)のまわりで処理されていると仮定する。
【００８４】
しかし開始頂点SVのまわりで、立体は、エッジRN、LNおよびR1ないしR4を示す破線によって示されるように、まだ幾何学的に矛盾している。たとえば、元の立体のエッジR1およびR4に対応する線(図2aを参照)は交わらないので、多様体のソリッドモデルの中に共通の頂点をもつことができない。これは、頂点SVのまわりで、立体200に「穴」やギャップがあることを意味する。より正確には、穴を囲む面はもはや有限ではない。たとえば面F4の一連のエッジは、エッジR3およびエッジR4の間に「ギャップ」をもつ。すなわちエッジR3およびR4の両方、および面F4は部分的に無限である。多様体のソリッドモデルを組み立てるため、これらのトポロジーは、「トリム」されて、基礎となる幾何学的形態の有限な部分にならなければならない。この最後の最も複雑な操作は、図14に示される物体200に、図6の普遍的ルーチンを適用することによって実行される。まずトリミング・パスを計算するためのサブルーチン02をより詳しく記述する。
【００８５】
サブルーチン02は、起こりうる全ての解決法のトリーの深さ第１検索を行う。検索トリーのノードは、パスの曲線セグメントである。ギャップをもたらすエッジを考える、すなわち面Fをトリミングする場合、エッジRBおよびLB(図14を参照）もパスの一部であると考えられる。こうして、面Fの中のギャップを満たすため、開始ノードSはRBであり、終了ノードEはLBである。
【００８６】
前処理ステップ(ステップS802)で、曲線セグメントSおよびEの端点を決定しなければならない。面Fについて、これらは、図15aおよび図15bに示されるようにエッジRNおよびLNとの交点RVおよびLVである。パス・ノードの交点RVである端点EPが分かると、次の曲線セグメントを運ぶ面も見つかることに注意する。次の曲線セグメントを運ぶこの面は、現在の面Fcと呼ばれ、図12および図13に関して記述されたように、子供ノードを生成するサブルーチンD1の１つの入力パラメータである。融合表面F上のギャップが閉じられようとしている現在のケースで、次の曲線セグメントを行う現在の面Fcは、面F1である。
【００８７】
前処理が完了された後に、子供ノードが生成される。子供ノードを決定するために、面Fおよび面F1の間の全ての交差曲線が計算されまたはコンピュータ計算され(ステップS902)、端点EPを通る全ての曲線が抽出される(ステップS903)。あらゆる曲線について、端点epで反対方向に始まる２つの半無限のセグメントがある。以下で、これらのセグメントは半曲線と呼ばれる。面Fおよび面F1の交わりについて、そのような２つの半曲線があり、それらは、図15aに示される参照符号S0およびS1によって示される。図示のために、エッジRBは、図l0bでRVの位置の方へ動かされたこと注意する。しかしサブルーチン02のステップは、図14の立体上に実行されることに注意する。
【００８８】
半曲線に対応する子供ノードが生成される前に、これら半曲線の端点が決定される。半曲線の端点の決定のため、これらの半曲線を、面F1の既存の全てのエッジと交わらせる(ステップS908)。半曲線S0について、これは、面F1で始まり、交点IかエッジRNのどちらかに到達するまでF1のまわりを時計回りにすすむことを意味する。面F1の元のエッジの内側に交点Iが存在する場合(ステップS910)、新しい子供ノードを表す新しいセグメント(EP,i)が決定される(S918)。図15aに示される半曲線S0について、そのような端点は存在しない。したがって、半曲線S0を、頂点SVに結びつけられる、面Fおよび面F1を含まない全ての開いた面すなわち面F2ないしF5と交わらせる(ステップS912)。半曲線S0について、これは、面F5およびF2との交点I0およびI1をそれぞれもたらす。あらゆる交点は、範囲を制限される曲線セグメントを規定し、それゆえ半曲線S0について、２つの子供ノード(RV,I0)および(RV,I1)がある(ステップS914)。それから同じプロセスが、半曲線S1に適用される。これは、最初のノードSについて子供ノードの作成を完了する。そして生成された子供ノードは、サブルーチン02へ出力される(ステップS922)。
【００８９】
次のステップは、生成された子供ノードのソートである(ステップS814)。まず最初に、半曲線上に位置する曲線セグメントのグループを考える。ノードRVと半曲線の間の角度に基づく値は、あらゆる半曲線に割り当てられ、面Fの内側の角度が取り上げられる。この値に基づいて、最も小さい角度をもつ半曲線に最も高い優先度を割り当てることにより、半曲線をソートする。ソートは、クイックソート(QuickSort)ルーチンのような標準のルーチンによって行われる。面FおよびF1の間の交わりについて、これは、順序{S0,S1}をもたらす。
【００９０】
第２のステップで、あらゆる半曲線上の曲線セグメントは、それらの長さに関してソートされ、その結果として順序は{(RV,I0),(RV,I1)...半曲線S0上のセグメント..}となる。このように、現在最善のパスについて次のセグメントは、(RV,I0)である。I0は面F5との交点であるので(図15aを参照)、次のセグメントは、面FおよびF5の間の交わり上になければならない。
【００９１】
終了ノードEに到達していないので、サブルーチン02はステップS810に続く。再び子供ノードを生成するためのサブルーチンD1に入り、その入力は、前の曲線セグメントの端点である始点I0であり、現在の面は面F5である。ステップS902ないしS904を実行することによって、図15bに概略で示されるように、始点I0を通る２つの半曲線S2およびS3が生じる。点LVは、単に図示の目的で動かされたことに注意する。半曲線S2およびS3は、面F5のエッジと交わる。半曲線S2について、これは、エッジLNから始まるとき、交点は面F5の元のエッジの内側に見つけられ、すなわち点LVであることを意味する(ステップS910)。従って半曲線S2によって生成される１つの子供ノード(ステップS918)、すなわちセグメント(I0、LV）が存在する。半曲線S2によって生成される子供ノードを生成し、全ての子供ノードをソートすることによって、順序{(I0、LV)..半曲線S2上のセグメント..)｝が達成される。
【００９２】
ノード(I0,IV)は、探されなければならない次のものである。しかし端点LVは境界線LB上に位置しており、これは境界線LBである終了ノードEに到達したことを意味する。こうして面F上のギャップについてトリミング・パス[(RV,I0)(I0,LV)]が見つけられた。
【００９３】
この場合のように、ルーチンは、逆戻りする必要なく、有効なトリミング・パスを作り出す。しかしソートは、基本的に局部的な判断であるので、あらゆるレベルで包括的な有効性について検査が実行されなければならない(ステップS816)。例えば図11に示される単純化される例を再び考える。子供ノードのソートの間、点I1(図11cを参照)が、「最善のもの」として選ばれた。次の考察はセグメント(I1,I3)を導き、セグメントの最後の考察は(I3,V)である。しかしこの時点で、自己が交差するパスが生成された。これは有効性検査によって検出され(ステップS816)、解決法が有効でない場合、それは拒絶される。この場合、逆戻りする操作が実行され、サブルーチンは、点I5および対応する面F5で始まり、最終的に正しい解決法で終わる。
【００９４】
この例はまた、幾何学的形態の生成およびトポロジーの生成の分離の利点を説明する。セグメント(RV,I1)および(I1,I3)が、それらの生成のすぐ後に組み込まれる場合、さらにセグメント(RV,I5)を調査するために、立体の初期状態を再生成する必要があった。しかし、トポロジー的操作の逆は、一般にユニークでなく、現在の状態になるいくつかの初期立体があることを意味する。このユニークでない性質は、検索ルーチンの逆戻りを禁じる。これを避けるために、有効性検査(ステップS816)は、２つの重要なテストを実行する。第１のテストは、トリミング・パスの自己の交差について調べることであり、第２のテストは、パスと既存のエッジとの交点についての検査である。
【００９５】
検査で無効な部分的パスが検出されて場合は必ず、最後のノードが除去され、ルーチンは逆戻りする。このようにして包括的な一貫した立体を保証するトリミング・パスを生成することができる。あるギャップについて完全なトリミング・パスが分かったときだけ、第２のサブルーチン03が、普遍的ルーチンによってトリガーされる。そしてサブルーチン03は、パスをトポロジー的にモデルに組み込む。
【００９６】
以下に、トリミング・パスを組み込み、新しいギャップに印を付けるサブルーチン03を、図16を参照してより詳しく述べる。
【００９７】
ステップS1100で、普遍的ルーチンからサブルーチン03に入る。サブルーチン03について入力は、穴またはギャップをもつ立体または物体と、面Fに関するトリミング・パスTである。ステップS1102で、トリミング・パスTの開始ノードFは、現在のセグメントにセットされ、開始ノードSのエッジは、現在のエッジにセットされる。ステップS1104で、現在のセグメントの次にくるセグメントが決定される。このセグメントは、現在のセグメントの後続(successor)Siと呼ばれる。ステップS1106で、後続がトリミング・パスTの終了ノードEであるかどうか判断される。そうである場合、ステップS1108でサブルーチン03を離れ、普遍的ルーチンに戻る。サブルーチン03の出力は、組み込まれたトリミング・パスTをもつ立体200である。
【００９８】
ステップS1106で、後続がトリミング・パスの終了ノードではないと判断される場合、ステップS1110で、現在のエッジの終了頂点が、現在の頂点にセットされる。ステップS1112で、後続Siに対応する面Fiが決定され、ステップS1114で、現在の頂点のまわりの反時計回りの回転が、面Fiのエッジeiに到達するまで実行される。ステップS1116で、後続セグメントSiが、二次の面とも呼ばれる面Fiの元のエッジe-intと交わるかどうか判断される。そうである場合、ステップS1118で、エッジeiおよびe-intの間の全てのエッジが消され(killed)、サブルーチンはステップS1120に続く。ステップS1116で、セグメントSiがエッジe-intと交わらないと判断される場合、ステップS1122で、面Fiは、成長すると印を付けられる。そしてサブルーチンはステップS1120に続く。このステップで、ギャップをもつ面Fと二次の面Fiの間に新しいエッジe-newが生成される。ステップS1123で、現在のエッジとエッジeiの間の全てのエッジは、新しいエッジe-newの開始頂点に結びつけられる。ステップS1124で、現在の頂点のまわりの残りのエッジが、新しいエッジe-newの終了頂点に結びつけられる。ステップS1126で、現在のセグメントは、後続セグメントSiと設定され、現在のエッジは、新しいエッジe-newと設定される。サブルーチンは、ステップS1104に戻る。
【００９９】
図17を参照して、トリミング・パスの組み込みの好ましい実施例をより詳しく述べる。トリミング・パスは、基本的に幾何学的情報すなわち所与のギャップを閉じる曲線セグメントから構成される。それに加えて、パスの組み込みに関する情報が提供される。あらゆる曲線セグメントについて、新しいエッジは、一次の面Fと二次の面との間に生成されなければならない。図17aに示されように、これは、セグメント(RV,I0)の場合、面Fと面F1の間に新しいエッジがあり、セグメント(I0,LV)の場合、面Fおよび面F5の間に新しいエッジが生成されることを意味する(図17bを参照)。面Fについてパスを組み込むとき、最初の現在のエッジは、エッジRBであり、開始ノードSの後続セグメントは、セグメント(RV,I0)であるセグメントSiである(ステップS1102およびS1104)。二次の面Fiに対応するエッジは、エッジLNである。新しいセグメントSiが既存のエッジe-intと交わる場合、二次の面Fiは縮む。この場合、エッジLNであるエッジeiと交わるエッジe-intの間の全てのエッジは、除去される(ステップS1116およびS1118)。そのような交点が存在しないとき、組み込みは一層複雑である。パスは、元のエッジを通る面F1を残さないという事実から、面F1が成長することは明らかである。したがって、面F1は、さらに普遍的ルーチンのステップ04の中で処理するために印を付けられる(図6を参照)。
【０１００】
図17aで、面FおよびF1の間に、エッジC0である新しいエッジe-newが生成される。RBおよびRN(反時計回り)の間の全てのエッジは、新しいエッジC0の開始頂点に結びつけられ、残りのエッジは、新しいエッジC0の終了頂点に結びつけられる(ステップS1120からS1124)。図17aは、結果の立体を示す。
【０１０１】
図16に示されるサブルーチン03のループの２回目の繰り返しで、セグメント(I0,IV)が組み込まれる。対応する面は面F5であり、従って新しいエッジe-newは、面FとF5の間のエッジE1である。現在のエッジC0と、面F5上に位置するエッジすなわちエッジR4の間の全てのエッジは、図17bに示されるようにエッジC1の開始頂点に結びつけられる。トリミング・パスのセグメント(I0,LV)の後続は、点LVである終了ノードである。従って、面Fについてパスの組み込みが完了する。面Fのまわりの全てのエッジは、現在は幾何学的およびトポロジー的に矛盾しないので、実線で示されることに注意する。面F1は、サブルーチン03のこの繰り返しで印を付けられるので、普遍的ルーチンのステップ04がこの面を集め、面F1のトリミング・パスの計算および組み込みをトリガーする。
【０１０２】
ここで面F1についてトリミング・パスの計算およびトリミング・パスの組み込みを、図18を参照して記述する。
【０１０３】
面F1上のトリミング・パスの計算は、開始ノードSおよび終了ノードEの端点を見つけるための一般的な前処理ステップ(ステップS802)から始まる。図18を参照して記述される実施例で、開始ノードはエッジR1であり、終了ノードはエッジC0である。エッジC0の端点は、隣り合うエッジC1と幾何学的に正しく接続されているので、すでに正しい。しかしエッジR1は、トポロジー的に隣接するエッジのどれとも適合しない。直観的に、図2aに示されるように、元の立体のエッジの範囲の比較から明らかなように、エッジはあまりに短い。端点を見つけるために、「光線発射」技術が使用される。エッジR1は、半無限の光線とみなすことができる。エッジR1の端点である点V1を見つけるために、この光線を、その終了頂点に結びつける全ての開いた面と交わらせ、R1を最短にする最初の交点が、端点V1をもたらす。「光線発射」技術を使用することにより、サブルーチン02の上述の前処理ステップ(ステップS802)の間に、曲線セグメントSおよびEの端点も決定される。
【０１０４】
エッジR1に関して、光線発射技術は、次のように実行される。エッジR1は、その終了頂点のまわり全ての開いた面で、すなわち面F3、F4およびF5と交わる。R1を最短にする交点が、エッジR1の新しい端点である。この場合、それは、図18に示されるように面F4との交点V1である。エッジR1の拡張は、２つの結果を持つ。第１に、隣接する面すなわち面F2は、その元のエッジの１つすなわちエッジR1が成長するので、成長すると印を付けられる。第２に、エッジR1の拡張によってギャップが閉じられたかどうか調べる必要がある。そうではないので、サブルーチン02のステップS804の後にくるステップが実行される。
【０１０５】
最初に、面F1と、エッジR1が交わる面すなわち面F4との間の全ての交差曲線が計算される(ステップS902)。これは、頂点V1から上の方を指している半曲線S4および頂点V1から下の方を指している半曲線S5をもたらす(ステップS904)。ここで半曲線S4およびS5と、面F4のエッジとの交点が決定される(ステップS908)。面F4の既存のエッジの内側には点がないので、半曲線S4およびS5について新しい曲線セグメントが、光線発射手法によって組み立てられる(ステップS910およびS912)。S4とエッジR1の間の角度は、半曲線S5およびエッジ01の間の角度よりも小さいので、半曲線S4およびS5のソートは、順序{S4,S5}を確立する。続いて起こる曲線セグメントのソーティングは、順序{(V1,V2),..半曲線S4上の残りのセグメント,..半曲線S5上のセグメント..}を確立する。頂点V2は、(V1,V2)と面F5との交わりであるので、次のセグメントは、面F1およびF2の間の交差曲線上にある。可能性のある全ての曲線セグメントを生成し、それらをソートした後、「最善のセグメント」(V2,V0)が見つけられる。このセグメントは、ちょうどその端点でエッジC1と交わる。
【０１０６】
図19を参照して、面V1のトリミング・パスの組み込みを記述する。トリミング・パス[(V1,V2)(V2,V0)]の組み込みを、図19aおよび図19bに示す。最初に、面F1および面F4の間のエッジC2が生成される。エッジR1と、面F4上の第１のエッジであるエッジR3との間の全てのエッジは、エッジC2の開始頂点V0に結びつけられたままである。残りのエッジR4は、エッジC2の終わりまで動く。面F4のエッジの内側に交わりはないので、この面は、成長していると印を付けられる。２回目の繰り返しで、エッジC3が生成される。しかしこの場合、エッジC1との交点である頂点V0があった。したがって、面F5は印を付けられる必要がない。さらに、エッジR4とエッジC2との間にはエッジがないので、どのエッジも除去される必要がない。
【０１０７】
図20を参照して、サブルーチン03によって印を付けられている面F2のトリミング・パスの計算および組み込みを記述する。面F2のトリミング・パスの計算は、エッジR2の端点V3を生ずる前処理ステップ(ステップS802)から成る。エッジR2は前処理ステップで拡張されたので、面F3は成長していると印を付けられる。トリミング・パス(V3,V2)の組み込みは、全く簡単である。新しいエッジC4が生成され、図20に示される立体が達成される。この立体はすでにトポロジーをもつが、元のエッジR3およびR4がまだ短かすぎるので、面F3ないしF5上のギャップは、まだ開いている。
【０１０８】
図21を参照して、面F3、F4およびF5上の残りのギャップの処理を記述する。面F3およびF4上のギャップは、前処理ステップS802のみを必要とする。両方のケースで、開始ノードのエッジは、前処理ステップによって拡張される。拡張は対応するギャップをすでに閉じるので、繰り返しループに入ることはない。
【０１０９】
面F5は、決して成長していると印を付けられないことに注意する。トリミング・パスは、面FおよびF1ないしF4上のギャップを閉じることの副産物として計算され、組み込まれる。
【０１１０】
図22は、この発明の方法を図2aに示される立体に適用することによって達成される結果の立体を示す。図22は、融合表面Fが上述した方法によって組み込まれた立体200を示す。図22から理解できるように、この発明の方法によって生成される新しい頂点および新しいエッジの全てが、図22に示される。現在の発明に従う方法は、トポロジーをトリミングして、基礎をなす幾何学的形態の有限部分にするという複雑な操作の信頼できる処理を可能にする。これは、極のまわりのあらゆる面の有限な領域について点および曲線を決定し、多様体ソリッドの立体が達成されるようにトリミングの連続に対応するトポロジーを生成することによって達成される。
【０１１１】
この発明に従う方法は、普遍的な解決法を与える既存の方法の能力をもつ。特に、隣接するトポロジーが融合表面によってのみこまれる状況を見つけ、処理することが可能である。
【０１１２】
この発明の方法の重要な特徴は、以下の通りである。
【０１１３】
−残りの開いた面に関連しないあらゆる面のトリミング。まだモデルの中に他の開いている面をもつところで、トリミング・パスの計算および立体へのトポロジー的組み込みが行われる。特に、これはいくつかの融合を同時に処理することを可能にする。
【０１１４】
−所与のギャップをトリムする間の追加のギャップの検出。すなわち二次のすなわち非融合表面上のギャップが、一次のギャップをトリムしている間に記録される。これによって、隣接する面が縮むおよび成長するという区別は必要でない。成長する面が更なる処理のために抽出される一方、縮む隣接する面は、一次の面を処理する「副作用」としてトリムされる。
【０１１５】
−トリミング・パスの幾何学的形態の決定およびトポロジー的組み込みの区別。先行技術の方法と違って、この発明に従う方法は、まず最初に、ギャップを閉じるために必要とされるトリミング・パス全体を計算し、それを立体に組み込む。これは、一連の曲線セグメントの決定のためにあるルーチンを使用することを許す。通常トポロジー的修正の逆転はユニークでないので、部分的なトリミング・パスの完了する前の立体への組み込みは、検索ルーチンの逆戻りを禁じる。
【０１１６】
−トリミング・パスを決定するための強力なサブルーチン。たとえいくつかの周囲の面が開いていても、トリミング・パスは、解決法を見つけるに十分に強力な検索ルーチンによって見つけられる。さらに、このルーチンは、隣接するトポロジーが縮むまたは完全に消滅する状況を検出する。
【０１１７】
−トポロジー的修正を実行するサブルーチン。これは、トリミング・パスを組み込むのに必要である。特にこのプロセスは、成長する隣接のトポロジーを処理し、別の面によってのみこまれるトポロジー的要素の実際の除去を実施する。
【０１１８】
この発明に従う方法の上述の好ましい実施例は、ただ１つの融合表面が組み込まれる立体に関して述べられたが、この発明に従う方法は、図23に関して記述されるように、複雑な立体の複数の融合表面を組み込むこともできることに注目すべきである。
【０１１９】
図23aに、複雑な立体1800を示す。この立体は、複数の面AないしIを含む。同時に融合されるエッジは、e1、e2およびe3と示される。図23bおよび図23cは、エッジe1ないしe3が融合された後の立体1800の起こりうる２つの構成を示す。両方のケースで、エッジe1ないしe3は、融合表面F1からF3と置き換えられ、それらの物体1800への組み込みは、新しいトポロジーが生成される結果をもたらす。図23cから最もよく理解できるように、元の面BおよびHは成長し、事実上１つの共通の面になる。
【０１２０】
この発明に従う方法を実行するのに適した3D-CADシステムの典型的な構成要素を示す概略図である図24を参照する。主プロセッサ1900は、グラフィック・センサ1902を介して例えばCRTのような表示画面1904に接続する。設計中の幾何学的物体1906は、画面1904上に表示される。主プロセッサ1900は、画面1904上に表示される幾何学的物体を生成し、修正するための計算を実施する。プリンタ1908は、コンセントレータ1910を介して主プロセッサ1900に接続される。プリンタは、画面上に表示される画像のハード・コピーや、CADシステムのデータ・メモリ1912に格納される幾何学的物体のハード・コピーを作り出すことができる。データ・メモリ1912は、主プロセッサに接続され、磁気または光ディスクのような大容量の記憶装置を含む。プログラム・メモリ1914は、設計中の幾何学的物体の作成および計算のために使用される命令を含む。
【０１２１】
CADシステムとの相互の作用のために、ユーザーが利用できるいくつかの入力手段がある。示される実施例に、画面上に表示されるカーソルを制御するコンピュータ・マウス1916がある。さらに画面上に、ユーザが画面上に表示されるカーソルを位置づけることにより所望のコマンドを選ぶことができるコマンド・メニューも表示される。さらに画面上に、ユーザがマウスの適切な動きによってカーソルを表示された物体に位置づけ、起動キーを押すことによって所望のコマンドを選ぶことができるコマンド・メニューが表示される。表示されるメニュー・オプションの例は、画面上に表示される物体への融合表面の低下(degradation)である。マウスに加えて、コマンドやデータをプロセッサに入力するためのキーボード1918が、与えられる。更なる入力手段は、複数のノブを含むノブボックス1920であり、それによって、表示される物体は、多様な軸のまわりで回転することができ、特定の方向に線形にシフトする。ユーザが、特定の部分(patch)を置き換えるために融合表面を立体に組み込むオプションを選択するとき、上述したこの発明のステップは、主プロセッサ1900によって実行され、この方法はプログラム・メモリ1914に存在する。
【０１２２】
本発明は例として次の実施態様を含む。
（１）コンピュータ支援の設計システムで、幾何学的立体(200)のエッジ(E)に取って代わる融合または面取り表面(F)を、立体のソリッドモデルに組み込む方法であって、
a）一次の融合または面取り表面を規定するステップと、
b）上記一次の表面および上記立体の間の一次の境界を計算するステップと、
c）上記一次の境界をトリムするステップと、
d）置き換えられるエッジ(E)に隣接する複数のエッジが廃退すると判断される場合、上記複数のエッジを除去し、上記立体(200)を幾何学的に矛盾する状態に置くステップと、
e）除去されるエッジ(E)に代わって新しい一次の面の新しい境界を形成する新しいエッジ(RB、LB)を用いて、新しい一次の融合または面取り面(F)を生成するステップと、
f）除去されるエッジ(E)の各々の頂点(SV、EV)について、立体(200)が上記頂点のまわりで幾何学的に矛盾しているかどうか調べ、もしそうならば、上記頂点のまわりの立体のトポロジーをトリムするように、
g）新しい一次の面(F)上の、幾何学的に適合しない、トポロジー的に隣接するエッジによって定義される全てのギャップを集めるステップ(S302)と、
h)各々のギャップについて、面の一部分をトリムする一連の横断セグメントのから成るトリミング・パス(T)を計算するステップ(S308)と、
i）上記ステップh)で計算されたトリミング・パス（T）に基づいてギャップを閉じる新しいトポロジーを生成するステップ(S310)と、
j）上記頂点のまわりの二次の非融合または非面取り面(F1ないしF5)上の全てのギャップを集めるステップ(S312)と、
k）立体の全ての二次の面に関してステップk)で集められたギャップについて、上記ステップh)およびi)を繰り返すステップと、
を実行するステップと、
を含む上記方法。
【０１２３】
（２）上記ステップc)がさらに、
c1）一次の境界線と、置き換えられるエッジ(E)に隣接する面(RF、LF)のエッジの間の交点(RV、LV)を計算するステップと、
c2）ステップc1)で計算される交点をもたない、置き換えられるエッジ(E)に隣接する面のエッジ(e1ないしe4)に印を付けるステップと、
を含む、上記(1)の方法。
【０１２４】
（３）上記ステップd)がさらに、
d1）上記ステップc2)で印を付けられたエッジ(e1ないしe4)を除去するステップと、
d2）上記ステップd1より前に上記印を付けられたエッジとの交点をもっていた上記立体のエッジ(R1ないしR4、RN、LN)を、置き換えられるエッジの頂点の方へ引き寄せるステップであって、上記境界線との上記交点(RV、LV)をもつエッジは、上記頂点および上記交点が接続されるように引き寄せられるステップと、
を含む、上記(2)に従う方法。
【０１２５】
（４）上記エッジは、オイラー演算子KEVを上記モデルに適用することによって除去される、上記(3)に従う方法。
（５）上記新しい一次の面は、オイラー演算子ADEFを上記モデルに適用することによって生成される、上記(1)から(4)のいずれかに従う方法。
【０１２６】
（６）上記ステップg)は、立体の全ての面について実行される、
g1）まだ処理されていない面を選ぶステップ(S402、S406)と、
g2）選ばれた面が上記新しい一次の面であるかどうか判断するステップ(S408)と、
g3）上記ステップg2)で、上記選ばれた面が上記新しい一次の面であると認められる場合、上記選ばれた面が上記頂点を含むかどうか判断するステップ(S410)と、
g4）上記ステップg3)で、選ばれた面が上記頂点を含むと認められる場合、上記頂点で始まるエッジを取得し、上記頂点で終わるエッジを取得するステップ(S412)と、
g5）上記ステップg4)で取得されるエッジの端点が異なるかどうか判断するステップ(S414)と、
g6）上記ステップg5)で端点が異なると判断される場合、選ばれた面を、ギャップをもつ全ての選択された面をもつリストに追加するステップ(S416)と、
を含む、上記(1)から(5)のいずれかに従う方法。
【０１２７】
（７）上記ステップh)は、
h1）ギャップをもつ面のトリミング・パスが始まる開始ノードと、ギャップをもつ面のトリミング・パス(T)が終わる終了ノードを規定するステップであって、ノードは、トリミング・パス(S802)の曲線セグメントであるステップと、
h2）上記開始ノードの端点および上記終了ノードの端点を計算するステップと、
h3）現在のノードについて子供ノードを生成するステップ(S812)と、
h4）上記ステップで生成された子供ノードをソートするステップ(S814)と、
h5）上記開始ノードから始まる全てのノードについて、上記ステップh3)およびh4)を終了ノードに到達するまで繰り返すステップと、
を含み、上記曲線セグメントは、ギャップをもつ面と周囲の面との交差曲線の一部である、上記(1)から(6)のいずれかに従う方法。
【０１２８】
（８）上記ステップh3)がさらに、
h3.1）現在のノードおよび現在の面の開始を規定するステップと、
h3.2）上記面を、現在の面と交わらせるステップ(S902)と、
h3.3）ステップh3.2)によって生成される、端点を含む全ての曲線を決定するステップ(S903)と、
h3.4）上記ステップh3.3)で決定される各々の曲線について、半曲線(S0,S4)を生成するステップであって、上記半曲線は、各々の曲線の半無限の２つのセグメントのうちの１つであり、各々のセグメントは、端点で始まり、反対の方向をもつステップ(S904)と、
h3.5）各々の生成された半曲線を、現在の面のエッジと交わらせるステップ(S90)と、
h3.6）現在の面のエッジの内側に交点が存在する場合、上記交点について子供ノードを生成するステップ(S918)と、
h3.7）現在の面のエッジの内側に交点が存在しない場合、
h3.7.1）上記半曲線を、上記頂点のまわりの開いた面と交わらせ、１つまたは複数の交点を規定するステップ(S912)と、
h3.7.2）上記ステップh3.7.1)で規定される各々の交点について、子供ノードを生成するステップ(S916)と、
を実行するステップと、
h3.8）生成された子供ノードのリストを出力するステップ(S922)と、
を含む、上記(7)に従う方法。
【０１２９】
（９）上記ステップh4)は、
h4.1）各々の半曲線(S0,S4)に、親ノードとそれぞれの半曲線の間の角度に基づく値を割り当てるステップと、
h4.2）最も小さい角度をもつ半曲線を判断し、それに最も高い優先順位を割り当てるステップと、
h4.3）最も高い優先順位をもつ半曲線の最短の曲線セグメントを決定するステップと、
を含む、上記(7)または(8)に従う方法。
（１０）上記ステップi)は、
i1）第１の面についてのトリミング・パス(T)の開始ノードを、現在のセグメントとして定義するステップと、
i2）開始ノードのエッジを現在のエッジとして定義するステップと、
i3）現在のセグメントに続く次のセグメントを決定するステップ(S1104)と、
i4）次のセグメントに対応する第２の面の現在のエッジを決定するステップ(S1110)と、
i5）次のセグメントが第２の面の元のエッジと交わるかどうか評価するステップ（S1116）と、
i5.1）もし交点があれば、存在するエッジと第２の面の元のエッジの間にある全てのエッジを除去するステップ(S1118)と、
i5.2）もし交点がなければ、第２の面に、成長し、ギャップをもつと印を付けるステップ(S1122)と、
i6）第１の面および第２の面の間に新しいエッジを生成するステップ(S1120)と、
i7）現在のエッジと存在するエッジの間の全てのエッジを、新しいエッジの開始頂点に引き寄せるステップ(S1122)と、
i8）現在の頂点のまわりの残りのエッジを、新しいエッジの終了頂点に引き寄せるステップ(S1124)と、
i9）次のセグメントを現在のセグメントとして定義するステップと、
i10）新しいエッジを現在のエッジとして定義するステップと、
i11）次のセグメントがトリミング・パスの終了ノードであると判断されるまで、上記ステップi3)ないしi10)を繰り返すステップと、
を実行することにより、ギャップをもつ第１の面と第１の面に隣接する第２の面との間に新しいエッジを生成する、上記(1)から(10)のいずれかに従う方法。
【０１３０】
（１１）上記ステップk)は、
k1）まだ処理されていない面を選択するステップ(S452、S456)と、
k2）選ばれた面が頂点を含むかどうか判断するステップ(S458)と、
k3）上記ステップk2)で、選ばれた面が上記頂点を含むと認められる場合、上記頂点で始まるエッジを取得し、上記頂点で終わるエッジを取得するステップ(S460)と、
k4）上記ステップk3)で取得されるエッジの端点が異なるかどうか判断するステップ(S462)と、
k5）上記ステップk4)で新しい端点は異なると認められる場合、選ばれた面を、ギャップをもつ全ての選ばれた面を含むリストに追加するステップ(S464)と、
を含み、ステップk1)ないしk5)は、立体(200)の全ての面について実行される、上記(1)ないし(10)のいずれかに従う方法。
【０１３１】
（１２）コンピューター支援の設計システムであって、
幾何学的物体(1906)を生成し、修正するためのコマンドおよびデータを入れる入力手段(1910、1916、1918、1920)と、
幾何学的物体を生成し、修正するための計算を実施する処理手段(1900、1902)と、
幾何学的物体の表現を格納し、物体の生成および修正に関する命令を格納するメモリ手段(1912、1914)と、
幾何学的物体を表示し、ユーザーによって選ばれる必要がある、置き換えられるエッジ(E)を表示し、融合または面取り表面が組み込まれた物体を表示する表示手段(1904)と、
を備え、上記処理手段およびメモリ手段は、上記(1)から(11)のいずれかに従う方法を実施するように動作する、上記コンピュータ支援の設計システム。
【０１３２】
【発明の効果】
本発明の方法によれば、融合または面取り表面の組み込みによってトポロジーが収縮する、成長する、消滅するケースを確実に処理することができ、それによって複雑な立体に複数の融合または面取り表面を組み込むことが可能である。
【図面の簡単な説明】
【図１】隣接する表面の収縮、消滅および成長をもたらす複雑な融合操作の効果を説明する幾何学的立体を示す図。
【図２】融合表面を立体に組み込むための第１のステップを示す図。
【図３】融合表面を立体に組み込むための第１のステップを示す図。
【図４】融合表面を立体に組み込むための第１のステップを示す図。
【図５】融合表面を立体に組み込むための第１のステップを示す図。
【図６】この発明に従う普遍的ルーチンを示すフローチャート。
【図７】普遍的ルーチンのステップ01を示すフローチャート。
【図８】普遍的ルーチンのステップ04を示すフローチャート。
【図９】立体のそれぞれの面上の出発頂点SVのまわりのギャップの閉鎖を示す図。
【図１０】頂点SVのまわりの初期のトポロジーを幾何学的に示す図。
【図１１】元の物体および可能性のある解決法を示す図。
【図１２】トリミング・パスを見つけるための深さ第１(depth-first)の検索ルーチンのフローチャート。
【図１３】パスのトリーについて子供ノードを生成するフローチャート。
【図１４】EVのまわりの融合表面を、SVのまわりの穴でトリムした後の中間立体を示す図。
【図１５】面F上のトリミング・パスのための半曲線を示す図。
【図１６】トリミング・パスを組み込むためのルーチンを示すフローチャート。
【図１７】面Fのトリミング・パスの組み込みを示す図。
【図１８】面F1についてトリミング・パスを示す図。
【図１９】面F1のトリミング・パスの組み込みを示す図。
【図２０】面F2についてトリミング・パスを示す図。
【図２１】面F3ないしF5についてトリミング・パスを示す図。
【図２２】融合表面を図2aに表される立体に組み込んだ結果の融合された立体を示す図。
【図２３】複数の融合表面が同時に組み込まれるこの発明の更なる実施例を示す図。
【図２４】この発明を取り入れた3D-CADシステムの構成要素を示す概略図。
【図２５】一定および可変半径の融合操作を適用した後に生じる物体を示す図。
【図２６】一定の距離、および一定の距離/角度面取り操作を適用した後の結果の物体を示す図。
【図２７】隣接する面を結果として縮ませる、融合表面の組み込みを示す図。
【図２８】隣接する面を結果として成長させる、融合表面の組み込みを示す図。
【符号の説明】
S302      一次のギャップを集めるステップ
S304      処理するギャップがあるか判断するステップ
S308      トリミング・パスを計算するステップ
S310      トリミング・パスを組み込み、新しいギャップに印を付けるステップS312      新しいギャップを集めるステップ
【図１】
0003955368.tif 000002
【図２】
0003955368.tif 000003
【図３】
0003955368.tif 000004
【図４】
0003955368.tif 000005
【図５】
0003955368.tif 000006
【図６】
0003955368.tif 000007
【図７】
0003955368.tif 000008
【図８】
0003955368.tif 000009
【図９】
0003955368.tif 000010
【図１０】
0003955368.tif 000011
【図１１】
0003955368.tif 000012
【図１２】
0003955368.tif 000013
【図１３】
0003955368.tif 000014
【図１４】
0003955368.tif 000015
【図１５】
0003955368.tif 000016
【図１６】
0003955368.tif 000017
【図１７】
0003955368.tif 000018
【図１８】
0003955368.tif 000019
【図１９】
0003955368.tif 000020
【図２０】
0003955368.tif 000021
【図２１】
0003955368.tif 000022
【図２２】
0003955368.tif 000023
【図２３】
0003955368.tif 000024
【図２４】
0003955368.tif 000025
【図２５】
0003955368.tif 000026
【図２６】
0003955368.tif 000027
【図２７】
0003955368.tif 000028
【図２８】
0003955368.tif 000029