(57)【特許請求の範囲】
【請求項１】
計算機支援幾何学的デザインシステムにおける、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトから、前記第１のモデル化オブジェクトを第１の三角形分割多面体閉面によってモデル化し、前記第２のモデル化オブジェクトを第２の三角形分割多面体閉面によってモデル化し、結果として得られる三角形分割多面体閉面を計算するためのコンピュータが実行する方法であって、
前記第１のモデル化オブジェクトの三角形と、前記第２のモデル化オブジェクトの三角形との間の積集合を計算するステップ（Ｓ３０）と、
前記第１のモデル化オブジェクトの三角形および第２のモデル化オブジェクトの三角形を、前記積集合に隣接する多角形ファセットに分割するステップ（Ｓ４０）と、
各三角形および各多角形ファセット用に、２つの巻き数対ｐ、ｑを計算するステップ（Ｓ６０）であって、各巻き数対の第１の巻き数を、前記第１の三角形分割多面体閉面から計算し、各巻き数対の第２の巻き数を、前記第２の三角形分割多面体閉面から計算するステップと、
各三角形および各多角形ファセット用に係数ｋを計算するステップ（Ｓ７０）であって、前記係数を、各三角形および各多角形ファセットの前記２つの巻き数対ｐ、ｑを入力としてもつ関数φで計算するステップと、
三角形および多角形ファセットを、前記計算された係数に従って、選択するステップ（Ｓ８０）と、
前記選択された多角形ファセットを三角形分割するステップ（Ｓ９０）と、
前記選択された三角形および前記三角形分割された選択された多角形ファセットをもつ、結果として得られる前記三角形分割多面体閉面を取得するステップ（Ｓ１００）と
を備えたことを特徴とする方法。
【請求項２】
三角形分割多面体閉面によってモデル化された前記第１のモデル化オブジェクトまたは三角形分割多面体閉面によってモデル化された前記第２のモデル化オブジェクトの少なくとも一方は、自己積集合を含み、
前記三角形の間の積集合を計算するステップは、三角形分割多面体閉面によってモデル化された前記第１のモデル化オブジェクトまたは三角形分割多面体閉面によってモデル化された前記第２のモデル化オブジェクトの前記少なくとも一方の三角形の間の積集合を計算するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記三角形を分割するステップの後に、
少なくとも１つの領域を計算するステップであって、領域は互いに隣接し、かつ前記計算された積集合の１つによって区切られる、三角形および／または多角形ファセットの集合を有するステップをさらに含むことを特徴とする請求項１または２に記載の方法。
【請求項４】
前記領域のすべての三角形および／またはすべての多角形ファセットを判定するステップであって、前記三角形および／または多角形ファセットは、計算された共通の積集合に隣接し、各三角形および／または各多角形ファセットは、前記各三角形および／または前記各多角形ファセットの独自のジオメトリおよび独自の配向に従って定義される法線ベクトルを有するステップと、
所与の三角形ファセットまたは所与の多角形ファセット用に２つの巻き数対ｐ、ｑを計算するステップと、
前記所与の三角形または多角形ファセットから開始して、前記計算された積集合の周りを動径方向に従って回転するステップと、
前記計算された積集合に隣接する他の三角形および／または他の多角形ファセットの交差を検出するステップと、
各交差の後に、前記交差した三角形および／または前記交差した多角形ファセットの前記法線ベクトルの配向に従って、前記２つの巻き数対ｐ、ｑを更新するステップと
をさらに備えたことを特徴とする請求項３に記載の方法。
【請求項５】
前記２つの巻き数対を計算するステップにおいて、
前記第１の巻き数対Ｃbelowは、前記三角形および前記多角形ファセットの法線ベクトルに従って、前記三角形および前記多角形ファセットの下であり、
前記第２の巻き数対Ｃaboveは、前記三角形および多角形ファセットの前記法線ベクトルに従って、前記三角形および多角形ファセットの上であることを特徴とする請求項１乃至４のいずれかに記載の方法。
【請求項６】
各三角形および各多角形ファセットの前記２つの巻き数対ｐ、ｑを入力としてもつ前記関数φは、
φ（ｐ，ｑ）＝ｍｉｎ（１，ｐ＋ｑ）
φ（ｐ，ｑ）＝ｐ×ｑ
φ（ｐ，ｑ）＝ｍａｘ（０，ｐ−ｑ）
という演算の１つを実行することを特徴とする請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記三角形および前記多角形ファセットは、前記計算された係数ｋがゼロとは異なるときに選択されることを特徴とする請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記積集合を計算するステップにおいて、前記第１のモデル化オブジェクトの前記三角形と前記第２のモデル化オブジェクトの前記三角形との間の三角形の共通エッジまたは共通頂点は除外されることを特徴とする請求項１乃至７のいずれかに記載の方法。
【請求項９】
前記積集合を計算するステップは、精密な算術を用いて実施されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記三角形を分割するステップの後で、前記計算された積集合を表すオーバーレイを計算するステップをさらに含むことを特徴とする請求項１乃至９のいずれかに記載の方法。
【請求項１１】
前記計算されたオーバーレイは、有理座標を有することを特徴とする請求項１０に記載の方法。
【請求項１２】
第１のモデル化オブジェクトおよび第２のモデル化オブジェクトから、前記第１のモデル化オブジェクトを第１の三角形分割多面体閉面によってモデル化し、前記第２のモデル化オブジェクトを第２の三角形分割多面体閉面によってモデル化し、結果として得られる三角形分割多面体閉面を計算するコンピュータ可読媒体に記憶されるコンピュータプログラムであって、前記コンピュータプログラムは、請求項１乃至１１のいずれかに記載の方法をコンピュータに実行させるコードを備えたことを特徴とするコンピュータプログラム。
【請求項１３】
第１のモデル化オブジェクトおよび第２のモデル化オブジェクトから、前記第１のモデル化オブジェクトを第１の三角形分割多面体閉面によってモデル化し、前記第２のモデル化オブジェクトを第２の三角形分割多面体閉面によってモデル化し、結果として得られる三角形分割多面体閉面を計算する機器であって、請求項１乃至１１のいずれかに記載の方法を実行する手段を備えたことを特徴とする機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムおよびシステムの分野に関連し、より具体的には、計算機支援幾何学的デザイン（ＣＡＧＤ）および３次元多面立体のシミュレーションの分野に関する。
【背景技術】
【０００２】
計算機支援技法は、ＣＡＤおよびＣＡＭシステムにおけるコンピュータ計算に適した形でオブジェクトを表すソフトウェアソリューションに関する計算機支援幾何学的デザイン、すなわちＣＡＧＤを含むことで知られている。計算機支援設計（すなわちＣＡＤ）は、製品デザインをオーサリングするソフトウェアソリューションにも関連する。同様にＣＡＥは、計算機支援エンジニアリングを表す頭字語であり、たとえば、将来の製品の物理的挙動をシミュレートするソフトウェアソリューションに関する。ＣＡＭは、計算機支援製造を表し、通常、製造プロセスおよび製造工程を定義するソフトウェアソリューションを含む。
【０００３】
ダッソー・システムズ(Dassault Systemes)によってＣＡＴＩＡ（登録商標）(Computer Aided Three Dimensional Interactive Application)という商標で提供されているものなど、部品、部品アセンブリ（assemblies、組立部）およびその製品のデザインのための多くのシステムおよびプログラムが、市場で提供されている。ＣＡＴＩＡとは、マルチプラットフォームＣＡＧＤ／ＣＡＤ／ＣＡＭ／ＣＡＥソフトウェア・スイートであり、一般に３Ｄ製品ライフサイクル管理（ＰＬＭ）ソフトウェア・スイートと呼ばれる。ＣＡＴＩＡは、オブジェクト形状（ＣＡＧＤ）の概念化から、設計（ＣＡＤ）および製造（ＣＡＭ）を介し、分析（ＣＡＥ）にまで渡る、多段階の製品開発（ＣＡｘ）をサポートする。このソフトウェア・スイートは、アプリケーションプログラミングインタフェース（ＡＰＩ）によりカスタマイズ可能である。一部のバージョンは、専用のＡＰＩの下で、様々なプログラミング言語で適合され得る。
【０００４】
こうしたいわゆるＣＡＧＤ／ＣＡＤシステムは特に、ユーザが、オブジェクトまたはオブジェクトのアセンブリの、複雑な３次元（３Ｄ）モデルを構築し操作することを可能にする。ＣＡＤシステムはこのように、エッジまたはラインを使って、ある場合には面を用いて、モデル化オブジェクトの表現を提供する。こうしたＣＡＤシステムは、部品または部品アセンブリを、主としてジオメトリ(geometry)の仕様であるモデル化オブジェクトとして管理する。具体的には、ＣＡＤファイルは仕様を含み、仕様からジオメトリが生成される。ジオメトリから、表現が生成される。仕様、ジオメトリおよび表現は、単一のＣＡＤファイルまたは複数のファイルに記憶することができる。ＣＡＤシステムは、設計者に対して、モデル化オブジェクトを表すグラフィックツールを含む。こうしたツールは、複雑なオブジェクトの表示のために設けられる。ＣＡＤシステムにおいてオブジェクトを表すファイルの典型的なサイズは、部分的にはメガバイトの範囲まで拡張し、アセンブリは、数千の部品を含み得る。ＣＡＤシステムは、オブジェクトのモデルを管理し、モデルは電子ファイルに記憶される。
【０００５】
公知のＣＡＧＤ／ＣＡＤシステムでの機械部品のデザインは、上記部品の幾何学的形状および寸法を、機能要件および製造要件に合わせるように定義することと見なされ得る。主として、結果として得られる形状は、設計者によって作成される、たとえば座、ポケット、溝、シャフトなどの基本特徴の組合せである。複雑な幾何学的計算およびトポロジー計算(topological computations)を通して、ＣＡＧＤ／ＣＡＤシステムは、立体（機械部品）の境界表現を、たとえば、閉配向面(closed and oriented surface)として生み出す。
【０００６】
たとえば、幾何学的デザイン（ＣＡＧＤ）、機械加工シミュレーション、ロボット工学、またはデジタルモックアップの分野において、掃引容積(swept volumes)の概念が知られている。以下で「プロファイル」と呼ばれる立体、およびその軌道が与えられると、掃引容積を、その軌道に沿ったプロファイルのすべての位置の和集合と呼ぶ。掃引容積の表現は、動く部品および機構において、形状をデザインし、材料除去または追加のプロセスをシミュレートし、不調和を検出し、隙間を計算するのに使われ得る。たとえば、掃引容積の算出は、動作中に振動する車両モータの必要空間を判定するのに有用である。または、掃引容積の算出は、その車輪が緩衝装置のおかげで左右に曲がり、上下に動く間に車両の車輪の必要空間を判定するのに有用である。また、掃引容積は、製造ツールの必要空間を判定するのに有用である。
【０００７】
いわゆる掃引容積の計算は、２００８年１１月７日の特許文献１に提示されている。
【０００８】
多面体モデリングおよび処理は、ＣＡＧＤのコンテキストにおいて至る所で見られる。多面立体に関して堅牢かつ正確なブール演算（たとえば、和集合、積集合、差集合）を実際に実施することは、このコンテキストにおける本質的要件である。このような演算子の産業的実施では、座標の浮動小数点表現または整数表現を、いわゆるイプシロンプログラミングの経験則(epsilon-programming heuristics)とともに利用する。
【０００９】
一般に、イプシロンプログラミングは、等値性テスト(equality tests)ｘ＝ｙを、等値性テスト｜ｘ−ｙ｜≦ε「イプシロンまで(up to epsilon)」で置き換えることであり、ここでεは、従来の数値閾値表記である。詳細については、たとえば非特許文献１に見ることができる。
【００１０】
理論的観点からは、浮動小数点パラダイムに基づく通常の幾何学モデリングおよび処理には、正確かつ科学的な基盤が欠けている。実際に、浮動小数点フレームワークに基づく正確なブール演算子の開発は困難であり、コストがかかり、科学よりもむしろ芸術である。実際、浮動小数点丸め誤差は、組合せの矛盾、たとえば、トポロジーの矛盾を誘発し得る。
【００１１】
イプシロンプログラミングパラダイムにより、こうした矛盾を克服することができるが、イプシロンプログラミングに基づく技法は、信頼できる理論的フレームワークによってサポートされない。実際、こうした技法は、場合によっては、十分な堅牢性の達成のためには、際限の無いタスクを要する専門技術を必要とする。
【００１２】
あるいは、最近の実装では、たとえば非特許文献２、非特許文献３、および非特許文献４に詳述されているように、正確な述語技術(exact predicates technology)に基づく正確な計算パラダイムを用いる。
【００１３】
正確な計算パラダイムでは、あるジオメトリを構築する必要があるとき、結果には有理数または代数表現を使う必要があるが、これは時間および空間を消費するアルゴリズムにつながる。現実のＣＡＧＤアプリケーションでは、幾何学処理アルゴリズムの入力は、一般に、その前のアルゴリズムの出力であり、純粋かつ正確な計算手法は、数表現の指数関数的増加を生じさせることになるため可能ではない。
【００１４】
したがって、出力の座標を、有理数から浮動小数点数に「丸める」ことが必要である。しかし、このような丸め手順は一般に安全ではない。実際、この丸めは、図１に示すように、局所的な自己積集合(local self-intersection)を生成する場合がある。多角形４は、自己積集合がないので有効な多角形である。背景のグリッドは、丸められた数値を表す。丸めは、初期多角形の各頂点を、それに最も近いグリッド点で置き換えることである。ドットによる多角形２は、黒い多角形の丸め結果であり、この多角形２は、自己積集合３のため無効である。
【００１５】
このような自己積集合は、自己積集合が認められていないため結果が意味の無いものとなる。また、自己積集合は、さらにアルゴリズムを失敗させる可能性がある。
【００１６】
多面体鎖(polyhedral chains)をもつ立体の従来の多面体表現の間の自然な関係は、たとえば非特許文献５および非特許文献６という２つの論文に取り上げられている。
【００１７】
第１の論文において、著者は、ある種のＣＳＧ（構築的立体ジオメトリ）を通して立体を表すことを提案している。鎖は、多面体の線形組合せとして表され、各多面体は、それに関連づけられた半空間の有限族(finite family of half-spaces)によって表される。この手法の堅牢性が厳密には頂点ベースの表現を避けることにあるため、この表現に対するブール演算などのモデリング演算子の実行は、いかなる明確な頂点の構築も必要としない。
【００１８】
第２の論文は、対応する鎖に対する、特に「正規鎖(normal chain)」と呼ばれる表現に対するブール演算子と代数演算との間の単純な関係を示しているが、鎖とは、原点すべてを、その頂点の１つとして共有する配向された単体の線形組合せとして表される。たとえば、それぞれｎ個およびｍ個の四面体の鎖の形式和(formal sum)で表される２つの立体の積集合は、対応するｎ×ｍ個の四面体ペアの積集合の、ｎ×ｍの三角形分割の形式和にある。
【００１９】
両方の論文は、多面体鎖をもつ立体の従来の多面体表現の間の自然な関係に焦点を当てている。ただし、こうした論文は、一般化されたブール演算子ではないブール演算に依拠している。
【００２０】
実際、すべてのＣＡＧＤシステムは、同一構造によりブール演算を実行する。アルゴリズムの詳細は、個々のＣＡＧＤシステムによって変わり得るが、主なステップは同じである。ブール演算の入力は、立体の有効な境界表現によって定義される２つの立体Ａ、Ｂである。有効な境界表現は、立体の境界が、自己積集合をもたない閉面(closed surface)であることを意味する。標準ブール演算は、和集合、積集合および差集合であり、一般に∪、∩および−と記される。
【００２１】
従来のアルゴリズムは、入力される立体が有効であるという前提に強く依存し、有効な立体を提供する。言い換えると、境界立体Ａ、Ｂは、いかなる自己積集合ももたない。従来のアルゴリズムのステップは、図２〜７と関連して、以下の通りである。
【００２２】
１．立体の有効な境界表現によって定義される２つの立体Ａ、Ｂを入力する（図２）。
【００２３】
２．立体Ａの境界を立体Ｂの境界で、およびその反対でトリミングする（図３）。
【００２４】
３．立体Ｂに対して、立体Ａの境界の各部分を位置決めする。立体Ａの境界部分は、立体Ｂの内側または外側である（図４）。
【００２５】
４．立体Ａに対して、立体Ｂの境界の各部分を位置決めする。立体Ｂの境界部分は、立体Ａの内側または外側である（図５）。
【００２６】
５．ブール演算タイプに依存して、境界の無用な部分を破棄する。
（ｉ）和集合Ａ＋Ｂ：立体Ｂの内側にある立体Ａの境界部分および立体Ａの内側にある立体Ｂの境界部分を破棄する。
（ｉｉ）積集合Ａ・Ｂ：立体Ｂの外側にある立体Ａの境界部分および立体Ａの外側にある立体Ｂの境界部分を破棄する。
（ｉｉｉ）差集合Ａ−Ｂ：立体Ｂの内側にある立体Ａの境界部分および立体Ａの外側にある立体Ｂの境界部分を破棄する（図６）。
【００２７】
６．得られた立体を、上のステップで与えられた境界部分をマージすることによって合成する（図７）。
【００２８】
上記分析を要約すると、通常の多面体表現は数値に依存するので、従来技術は、丸め誤差に関して過度に敏感である。実際、最先端の多面体は、自己積集合を生じ得るので、その結果、最先端の有効性の基準によると矛盾のあるものになる。したがって、従来技術の解決策は、有効性が影響を受け得るので、堅牢性に欠ける場合がある。
【００２９】
したがって、堅牢な一般化ブール演算子により、モデル化オブジェクトの境界を計算する、こうした堅牢な一般化ブール演算子および正確な方法の必要性が残されている。
【先行技術文献】
【特許文献】
【００３０】
【特許文献１】European Patent Application No. 08291047.2
【非特許文献】
【００３１】
【非特許文献１】"Robustness and Randomness", D. Michelucci, J.M. Moreau, S. Foufou - Lecture Notes In Computer Science, 2008, Springer
【非特許文献２】"Robustness in geometric computations", C.M. Hoffmann, Journal of Computing and Information Science in Engineering, 1:143, 2001
【非特許文献３】"Robust geometric computation", C.K. Yap, Handbook of discrete and computational geometry, pages 653-668, 1997
【非特許文献４】"Efficient Delaunay triangulation using rational arithmetic", M. Karasick, D. Lieber, and L.R. Nackman, ACM Transactions on Graphics (TOG), 10(1):71-91, 1991
【非特許文献５】"Convex polyhedral chains: a representation for geometric data", O. Gunther and E. Wong, Computer Aided design, volume 21 number 3 april 1989
【非特許文献６】"Geometric modelling Based on simplicial chains", F. R. Feito and M. Rivero, Comput. & Graphics, Vol. 22, No. 5, pp. 611-619, 1998
【非特許文献７】chapters 4 and 5 of John Willard Milnor's book "Topology from the differentiable point of view", Princeton University Press; Revised edition (November 24, 1997), ISBN-13: 978-0691048338
【非特許文献８】"simulation of simplicity", H. Edelsbrunner, EP. Mucke - ACM Transactions on Graphics (TOG), Volume 9, Issue 1, January 1990, pages: 66 - 104, ISSN:0730-0301
【非特許文献９】"Polyhedral modelling with multiprecision integer arithmetic", S. Fortune, Computer Aided Design, 29 (2), pages 123-133, 1997
【非特許文献１０】"Efficient exact arithmetic for computational geometry", S. Fortune and C.J. Van Wyk, Proceedings of the ninth annual symposium on Computational geometry, pages 163-172, ACM New York, NY, USA, 1993
【非特許文献１１】"A lazy exact arithmetic", Mohand Ourabah Benouamer, P. Jaillon, Dominique Michelucci, and Jean-Michel Moreau, IEEE Symposium on Computer Arithmetic, pages 242-249, 1993
【非特許文献１２】"Solid Representation and Operation Using-Extended Octrees", P. Brunet and I. Navazo, ACM Transactions on Graphics, 9(2) pages 170-197, 1990
【非特許文献１３】"Fundamental techniques for geometric and solid modeling" and C.M. Hoffmann and G. Vanecek, Manufacturing and Automation Systems: Techniques and Technologies, 48 pages 347-356, 1990. Paragraph II.B
【発明の概要】
【００３２】
第１の態様によると、本発明は、計算機支援幾何学的デザインシステムにおける、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトから結果として得られる三角形分割された多面体の閉面（closed triangulated polyhedral surface、以下、三角形分割多面体閉面）を計算するコンピュータ実行プロセスとして実行され、
第１のモデル化オブジェクトは、第１の三角形分割多面体閉面によってモデル化され、第２のモデル化オブジェクトは、第２の三角形分割多面体閉面によってモデル化され、本プロセスは、
第１のモデル化オブジェクトの三角形と第２のモデル化オブジェクトの三角形との間の積集合を計算すること、
第１のモデル化オブジェクトおよび第２のモデル化オブジェクトの三角形を、上記積集合に隣接する多角形ファセットに分割すること、
各三角形および各多角形ファセット用に、２つの巻き数(winding number)対ｐ、ｑを計算することであって、各巻き数対の第１の巻き数は、第１の三角形分割多面体閉面から計算され、各巻き数対の第２の巻き数は、第２の三角形分割多面体閉面から計算されること、
各三角形および各多角形ファセット用に係数ｋを計算することであって、係数は、各三角形および各多角形ファセットの２つの巻き数対ｐ、ｑを入力としてもつ関数φを用いて計算されること、
計算された係数に従って、三角形および多角形ファセットを選択すること、
前期選択された多角形ファセットを三角形分割すること、ならびに
選択された三角形および三角形分割された選択多角形ファセットをもつ、三角形分割多面体閉面結果を取得することを含む。
【００３３】
実施形態において、本プロセスは、以下の特徴の１つまたは複数を含み得る。
【００３４】
三角形分割多面体閉面によってモデル化された第１のモデル化オブジェクトまたは第２のモデル化オブジェクトの少なくとも一方は、自己積集合を含み、三角形の間の積集合を計算するステップは、三角形分割多面体閉面によってモデル化された第１のモデル化オブジェクトまたは第２のモデル化オブジェクトの上記少なくとも一方の三角形の間の積集合を計算することをさらに含む。
【００３５】
少なくとも１つの領域を計算することであって、領域は、互いと隣接しかつ計算された積集合の１つによって区切られる、三角形および／または多角形ファセットの集合を含む。
【００３６】
上記領域のすべての三角形および／または多角形ファセットを判定し、三角形および／または多角形ファセットは、計算された共通の積集合に隣接し、各三角形および／または多角形ファセットは、上記各三角形および／または多角形ファセットの独自のジオメトリおよび独自の配向に従って定義される法線ベクトルと、所与の三角形ファセットまたは所与の多角形ファセット用に２つの巻き数対ｐ、ｑを計算することと、所与の三角形または多角形ファセットから開始して、上記計算された積集合の周りを動径方向に従って回転することと、上記計算された積集合に隣接する他の三角形および／または多角形ファセットの交差を検出することと、各交差の後に、上記交差される三角形および／または多角形ファセットの法線ベクトルの配向に従って、上記２つの巻き数対ｐ、ｑを更新することとを含む。
【００３７】
第１の巻き数対Ｃbelowは、上記三角形および多角形ファセットの法線ベクトルに従って、上記三角形および多角形ファセットの下であり、第２の巻き数対Ｃaboveは、上記三角形および多角形ファセットの法線ベクトルに従って、上記三角形および多角形ファセットの上である。
【００３８】
各三角形および各多角形ファセットの２つの巻き数対ｐ、ｑを入力としてもつ関数φは、
φ（ｐ，ｑ）＝ｍｉｎ（１，ｐ＋ｑ）
φ（ｐ，ｑ）＝ｐ×ｑ
φ（ｐ，ｑ）＝ｍａｘ（０，ｐ−ｑ）
という演算の１つを実行する。
【００３９】
三角形および多角形ファセットは、計算された係数ｋがゼロとは異なるときに選択される。
【００４０】
積集合を計算するステップで、第１のモデル化オブジェクトの三角形と第２のモデル化オブジェクトの三角形との間の三角形の共通エッジまたは共通頂点は除外される。
【００４１】
積集合を計算するステップは、精密な算術を用いて実行される。
【００４２】
三角形を分割するステップの後で、計算された積集合を表すオーバーレイを計算するステップ。
【００４３】
計算されたオーバーレイは、有理座標をもつ。
【００４４】
別の態様によると、本発明は、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトから結果として得られる三角形分割多面体閉面を計算する、コンピュータ可読媒体に記憶されるコンピュータプログラムとして実施され、第１のモデル化オブジェクトは、第１の三角形分割多面体閉面によってモデル化され、第２のモデル化オブジェクトは、第２の三角形分割多面体閉面によってモデル化され、コンピュータプログラムは、コンピュータに上記プロセスのステップをとらせるコード手段を含む。
【００４５】
別の態様によると、本発明は、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトから結果として得られる三角形分割多面体閉面を計算する機器として実施され、第１のモデル化オブジェクトは第１の三角形分割多面体閉面によってモデル化され、第２のモデル化オブジェクトは第２の三角形分割多面体閉面によってモデル化され、機器は、上記プロセスのステップを実行する手段を含む。
【図面の簡単な説明】
【００４６】
本発明を実施するシステムおよび本発明によるプロセスを、非限定的実施例として、かつ添付の図面を参照して以下に記載する。
【００４７】
【図１】有理数から浮動小数点数への座標の丸めによって生成される軌跡の自己相互作用関係(local self-interaction)の例を示す図である。
【図２】立体の２つの境界に対してブール演算を実行する従来のアルゴリズムのステップを例示する図である。
【図３】立体の２つの境界に対してブール演算を実行する従来のアルゴリズムのステップを例示する図である。
【図４】立体の２つの境界に対してブール演算を実行する従来のアルゴリズムのステップを例示する図である。
【図５】立体の２つの境界に対してブール演算を実行する従来のアルゴリズムのステップを例示する図である。
【図６】立体の２つの境界に対してブール演算を実行する従来のアルゴリズムのステップを例示する図である。
【図７】立体の２つの境界に対してブール演算を実行する従来のアルゴリズムのステップを例示する図である。
【図８】単体２環(simplicial 2-cycle)の支持集合(support)および補集合の例を示す図である。
【図９】単体２環の支持集合および補集合の例を示す図である。
【図１０】図８、９の自己交差型(self intersecting)単体２環の巻き数を示す図である。
【図１１】図１０の正の巻き数によって定義される立体を例示する図である。
【図１２】一般化されたブール演算の定義を示す実施例を示す図である。
【図１３】一般化されたブール演算の定義を示す実施例を示す図である。
【図１４】一般化されたブール演算の定義を示す実施例を示す図である。
【図１５】一般化されたブール演算の定義を示す実施例を示す図である。
【図１６】一般化されたブール演算の定義を示す実施例を示す図である。
【図１７】一般化されたブール演算の定義を示す実施例を示す図である。
【図１８】本発明を実施する、三角形分割多面体閉面の結果を計算するプロセスを示すフローチャートである。
【図１９】図１８に示すプロセスを示す実施例である。
【図２０】図１８に示すプロセスを示す実施例である。
【図２１】図１８に示すプロセスを示す実施例である。
【図２２】図１８に示すプロセスを示す実施例である。
【図２３】図１８に示すプロセスを示す実施例である。
【図２４】多様体エッジおよび非多様体エッジの例を示す図である。
【図２５】多様体エッジおよび非多様体エッジの例を示す図である。
【図２６】巻き数伝播(propagation)アルゴリズムの例を示す図である。
【図２７】巻き数伝播アルゴリズムの例を示す図である。
【図２８】図１２から１５、図１９から２２に示されるオブジェクトの３次元表現を示す図である。
【図２９】図１２から１５、図１９から２２に示されるオブジェクトの３次元表現を示す図である。
【図３０】図１２から１５、図１９から２２に示されるオブジェクトの３次元表現を示す図である。
【発明を実施するための形態】
【００４８】
本発明は、計算機支援幾何学的デザインシステムにおける、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトから結果として得られる三角形分割多面体閉面を計算するコンピュータ実施プロセスを対象とする。第１のモデル化オブジェクトは、第１の三角形分割多面体閉面によってモデル化され、第２のモデル化オブジェクトは、第２の三角形分割多面体閉面によってモデル化される。このプロセスは、第１のモデル化オブジェクトの三角形と第２のモデル化オブジェクトの三角形との間の積集合を計算するステップを含む。次に、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトの三角形は、その積集合に隣接する多角形ファセットに分割される。次いで、２つの巻き数対（ｐ、ｑと記す）が、各三角形および各多角形ファセット用に計算される。各巻き数対の第１の巻き数は、第１の三角形分割多面体閉面から計算され、各巻き数対の第２の巻き数は、第２の三角形分割多面体閉面から計算される。次いで、係数（ｋと記す）が、各三角形および各多角形ファセット用に計算される。この係数は、各三角形および各多角形ファセットの２つの巻き数対（ｐ、ｑと記す）を入力としてもつ関数φで計算される。次に、三角形および多角形ファセットが、計算された係数に従って選択される。多角形ファセットは三角形分割され、結果として得られる三角形分割多面体閉面が、選択された三角形および三角形分割された選択多角形ファセットを用いて取得される。
【００４９】
有利には、本発明は、三角形分割多面体閉面によってモデル化されるとともに、たとえば、単体２環などの多面体環(polyhedral cycle)として表される第１のモデル化オブジェクトおよび第２のモデル化オブジェクトの間のブール演算を素早く正確に計算するのに適した、一般的、効率的かつ堅牢な方法を提供する。被演算子の有効性チェックは、第１のモデル化オブジェクトおよび／または第２のモデル化オブジェクトが自己積集合をもつかどうかを検証するのにさほど必要がないため、比較的速い。したがって、チェックするための一意の基準は、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトの密閉性(watertightness)である。さらに、この密閉性基準が遵守される場合、本発明は、それゆえに、その結果の品質を保証することができる。
言い換えると、第１のモデル化オブジェクトおよび／または第２のモデル化オブジェクトに対する連続的演算は、失敗を発生することなく実施することができる。したがって、いくつかの演算が連続して実行され得るので、堅牢性が増す。さらに、こうした演算は、たとえば、正の巻き数のみを保つことによって、巻き数対を計算することにより取得される内部空間および外部空間の概念のおかげで一般化される。
【００５０】
単体的複体(simplicial complex)とは、点、線分、三角形、およびより一般的にはそのｐ次元の等価物を「貼り合わせる(gluing together)」ことによって構築される位相空間である。単体的複体を使う利点の１つは、こうした複体のプロパティが、任意の次元ｍに関しても一般化され得ることである。単体的複体は、２００８年１１月７日の特許文献１の２から５ページに記載されている他の方法より資源を必要としない単純な算術演算によりモデル化オブジェクトの境界を計算することを可能にする。具体的には、単体的複体は、トポロジー的(topologically)に矛盾のない閉多面体表現を提供する。この表現は、それ自体と交わり得るが、組合せとして密閉(combinatorial watertight)である。具体的には、微小摂動または浮動小数点の丸めが出力に適用される場合、有効な（トポロジーとして正しく、密閉な）ままであるので、堅牢性をもたらす。
【００５１】
単体的２鎖とは、単体的複体の特定のケースである。３次元ユークリッド空間内の単体的２鎖は、三角形の集合とともに、３Ｄ空間内の座標によって与えられる有限の頂点集合によって定義される。各三角形は、頂点のインデックスからなる順序付けられた３つ組と、その多重度を定義する整数とによって定義される。三角形の多重度の符号と、その三角形を定義する組の順序とを同時に変えることからなる演算は、鎖を変えない。単体２環とは、以下で定義されるゼロ境界条件(zero boundary condition)を満足する単体的２鎖である。
【００５２】
有利には、立体を表す単体２環の有効性の基準は純粋に組合せであり、すなわち通常の多面体表現とは異なり、数値に依存しないので、本発明は、従来技術と比較して堅牢性を提供する。
【００５３】
具体的には、提案される一般化されたブール演算子は、数の丸めに耐性があり、座標の丸めは、被演算子の有効性に影響しない。たとえば、被演算子の頂点に対して、浮動小数点算術計算を使って回転を適用すると、組合せの構造を維持するので、その有効性には影響しない。逆に、最先端の多面体に同じ回転（実際には、きわめて通常の演算）を適用すると、自己積集合を生じる可能性があるので、最先端の有効性の基準（図１を参照して上述した）に従うと、その結果は矛盾するものになる。
【００５４】
言い換えると、本発明は、頂点座標が整数や浮動小数点などの固定長の数表現を使う単体２環による立体の表現に適合する、一般化されたブール演算子である。一般に、単体２環とは、自己積集合を特徴とし得る三角形分割多面体閉面である。
【００５５】
ここで図８を参照し、Ｃで記す単体２環が与えられると、Ｃの支持集合｜Ｃ｜は、単体２環Ｃの三角形すべての和集合として定義される。支持集合｜Ｃ｜はしたがって、３Ｄ空間Ｒ3の部分集合である。図８において、｜Ｃ｜は、２つの自己積集合８１、８２を特徴とするＣの支持集合である。
【００５６】
多面体環のすべての三角形の和集合であるものは、「多面体環」（たとえば、Ｃで記す単体２環）の「支持集合」と定義される。３Ｄ空間内の、多面体環の支持集合の補集合の結合された要素は、３Ｄセルと呼ばれる。１つの３Ｄセルだけが、境界されず、「外部セル」と呼ばれる。
【００５７】
ここで図９を参照すると、Ｒ3−｜Ｃ｜と記す、｜Ｃ｜の３Ｄ補集合は、少なくとも２つの結合要素を含む。グレーエリアは、｜Ｃ｜の補集合の結合された要素を表す。４つの結合要素９１、９２、９３、９４がある。４つの要素を越えると、「外側」９１には境界がない。
【００５８】
｜Ｃ｜の補集合の各点には、図１０に示すように、巻き数と呼ばれる、明確に定義された整数が関連づけられる。巻き数は、｜Ｃ｜の補集合の各結合要素９２、９３、９４に対する定数であり、｜Ｃ｜に対してはいかなる巻き数も定義されない。
【００５９】
Ｃと記す、単体２環などの多面体環が与えられると、Ｃの各三角形が、その３つの頂点によって順序づけによって配向され、この順序づけは法線ベクトルを定義することを思い起こされたい。さらに、Ｃの各三角形は、整数の多重度をもつ。Ｃにある任意の三角形にも属さない、３次元空間内の点Ｘが与えられると、Ｃに関するＸの巻き数は、以下のように定義される整数Ｗである。
【００６０】
説明のために、多面体  −環（たとえば、単体２環）は、ゼロ境界条件と呼ばれる条件を遵守することを思い出されたい。多面体  −環がゼロ境界条件を満たすと、密閉特性が多面体  −環に授けられる。
実際、多面体  −環は、符号つき整数をもち、多重度と呼ばれ、各単体に割り当てられ、配向された単体の集合である。たとえば、エッジの多重度は、同じ端頂点(end vertices)を共有する複数のエッジの数である。
【００６１】
図１０に表すように、Ｘで始まり、
【００６２】
【数１】
0005848030.tif 000002
【００６３】
にあるどのエッジとも交わらない、配向された半直線Δを検討する。このような半直線Δは常に存在する。δを、Ｘから無限大の方を指すΔの向きを定義する単位ベクトルと呼ぶ。Δが、Ｃにある三角形Ｔと交わると、Δは、Ｔの法線ｎTとのδのドット積が正である場合はＴと前方交差し、負である場合は後方交差すると言う。ドット積は、ΔがＣにある少なくとも１つのエッジと交わることを意味しており、ゼロになることはない。
【００６４】
整数Ｗを、値Ｗ＝０で初期化する。Δが、Ｃにある三角形Ｔと多重度μTで交差する度に、ΔがＴと前方交差する場合はμTのＷを増分し、ΔがＴと後方交差する場合はμTのＷを減分する。このことは、Ｗ：＝Ｗ＋ｓｉｇｎ（ｎT・δ）μTと記すことができる。
【００６５】
結果として得られる数Ｗ（Ｘ，Ｃ）は、所与の点、すなわちＣに対する３次元空間内の点Ｘの巻き数（３Ｄ巻き数という場合もある）と呼ばれる。この数は、半直線Δに依存せず、どの３Ｄセル内でも一定であり、このことは、Ｗ（Ｘ，Ｃ）が同じ３Ｄセル内のすべての点Ｘに対して同じ値をもつことを意味する。具体的には、外部セル内のすべての点Ｘに対してＷ（Ｘ，Ｃ）＝０である。
【００６６】
本発明は、巻き数概念を利用する。巻き数の概念の２次元バージョンは、従来技術において十分に解説されている。３次元巻き数も、数学的「位相次数(topological degree)」の適用として、従来技術において解説されており、たとえば、非特許文献７を参照されたい。本説明の残りの部分では、巻き数および３次元巻き数という用語は、区別なく使われる。
【００６７】
図１０は、自己と二度交わる平面輪郭を用いた巻き数計算を示す。線分の配向が、法線ベクトルを定義する。平面輪郭は、右から左に配向される。半直線Δ上で点Ｘが与えられると、その巻き数Ｗの計算は、初期化Ｗ：＝０を行い、半直線Δに沿ってＸから無限大に向かって（図の右側に向かって）動くことである。この動きの間、輪郭と交差するとき、（図に示すように）増分Ｗ：＝Ｗ＋１を行い、または減分Ｗ：＝Ｗ−１を行う。
【００６８】
巻き数計算の結果、単体２環Ｃが、立体を次のように定義する。すなわち、立体は、図１１に示すように、正の巻き数をもつ点集合の閉包(closure)である。このような単体２環の集合は、頂点が浮動小数点座標をもつ通常の多面体の配向された境界の集合を含む。ただし、従来の多面体境界とは異なり、単体２環は、一般に自己と交わることが認められる。
【００６９】
さらに進む前に、「内側」、「外側」およびブール演算というよく知られている概念を一般化するためのいくつかの定義が必要である。
【００７０】
単体２環Ａを図１２に、２単体２環(two simplicial 2-cycle)Ｂを図１３に示す。３次元オブジェクトを、図１２〜１７、１９〜２３で論じるが、簡略化のために、２次元オブジェクトのみを示してある。ついでながら、図２８〜３０はそれぞれ、図１２、図１３、および図１４、１９に示すオブジェクトの３次元表現を示す。Ａは矩形であり、Ｂは二重の三角形(double triangle)である。Ａ、Ｂは、それぞれの配向および巻き数とともに別々に表される。Ａは正(regular、正多角形の正)であり、正多面体の境界を表す。Ｂは、自己積集合をもち、したがって、先に論じたように、立体の従来技術の有効性の基準に従って正(regular、正多角形の正)である。
【００７１】
それぞれの巻き数関数を、ｗA：Ｒ3−｜Ａ｜→ＺおよびｗB：Ｒ3−｜Ｂ｜→Ｚと記す。φ：Ｚ×Ｚ→Ｚを、２つの整数を与えられると１つの整数を計算する関数とする。関数φおよび巻き数、すなわちψ（ｘ）＝φ（ｗA（ｘ），ｗB（ｘ））を構成することによって、関数ψ：Ｄ→Ｚを定義することとするが、ここでＤ＝Ｒ3−（｜Ａ｜∪｜Ｂ｜）は、ｗAおよびｗBの両方が明確に定義される３Ｄ定義域(domain)である。明らかに、関数ψは、Ｄ＝Ｒ3−（｜Ａ｜∪｜Ｂ｜）の各結合要素に渡って一定である。関数ψは、すべての０＜ε≦ε0に対して、Ｏ（ｘ，ε）と記される、ｘを中心とする半径εの開球体(ε-radius open ball)へのψの制約が一価関数である実数ε0＞０が存在する場合、点ｘ∈｜Ａ｜∪｜Ｂ｜の近傍において局地的に一定であると言われる。言い換えると、関数ψは、ｘ∈｜Ａ｜∪｜Ｂ｜の「各辺」において同じ定数値をもつ。
【００７２】
次いで、定義により、関数ψの境界δψは、点ｘの集合∈｜Ａ｜∪｜Ｂ｜であり、ここでψは局地的に一価ではない。これは、結果として得られる単体２環の幾何学的軌跡を定義する。ｘ∈δψを、ψが局地的に二価である点とする。ψ+、ψ-を、初期被演算子の結果として得られる配向に従って、ψ+（またはψ-）がδψの正辺（またはδψの反対辺）における値である、こうした２つの値とする。次いで、差ψ-−ψ+は、点ｘでの符号つき多重度を定義する。したがって、δψのすべての三角形に対する多重度がセットされる。
【００７３】
したがって、２つの単体２環ＡとＢとの間の一般化されたブール演算を定義することは、関数φを定義することである。結果として得られる単体２環はしたがって、三角形の多重度に関連づけられたδψである。
【００７４】
ここで図１４を参照すると、２つの単体２環Ａ、Ｂが、演算、たとえば、ＡとＢの和集合の計算のための位置に、Ｄ＝Ｒ3−（｜Ａ｜∪｜Ｂ｜）の各結合要素に対する値対（ｗA，ｗB）とともに表されている。値対の第１の数は、単体２環Ａから計算され、各巻き数対の第２の巻き数は、単体２環Ｂから計算される。図１５において、値対（ｗA，ｗB）は、関数φを通した結果で置き換えられているが、この結果は、この例では、積φ（ｗA，ｗB）＝ｗAｗBと定義される。
【００７５】
図１６において、点線は、関数ψ（ｘ）＝ｗA（ｘ）ｗB（ｘ）が局地的に一価である、｜Ａ｜∪｜Ｂ｜の部分を表し、｜Ａ｜∪｜Ｂ｜が、ψが同じ値をもつ２つの領域を、局地的に分離させることを意味する。
【００７６】
図１７において、図面は、２つの単体２環Ａ、Ｂに対して実行される演算の結果を表す。すなわち、関数ψが局地的に一価でない｜Ａ｜∪｜Ｂ｜の部分を保持することによって、新たな環が取得される。初期配向および関数ψの値により、上方の三角形エッジの多重度は、被演算子Ｂから継承されるエッジに対しては０−（−１）＝１、被演算子Ａから継承されるエッジに対しては−１−０＝−１である。下方の三角形エッジの多重度は、１−０＝１である。
【００７７】
したがって、２つの単体２環Ａ、Ｂが与えられ、関数φが与えられると、本発明によるプロセスは、δψによって定義される、単体２環結果を計算する。以下の関数φは、正多面体に対する通常のブール演算を再定義することが理解されよう。すなわち、２つの立体の和集合は関数φ（ｐ，ｑ）＝ｍｉｎ（１，ｐ＋ｑ）によって、積集合は関数φ（ｐ，ｑ）＝ｐｑによって、差集合は関数φ（ｐ，ｑ）＝ｍａｘ（０，ｐ−ｑ）によって定義される。
【００７８】
さらに、ブール演算子は、何らかの弦誤差基準(chordal error criterion)によって駆動されるエッジ消去手順を適用することによって取得される結果を簡略化し得る。たとえば、座標の丸めによって誘発される摂動と長さが同程度の規模であるエッジは、幾何情報を大幅に損失することなく消去され得る。有利には、本発明のプロセスの結果として得られる単体２環は、自己積集合を特徴とし得る三角形分割多面体閉面であるため、２つの単体２環Ａ、Ｂに対する演算が、境界の自己積集合を誘発しそうな場合であっても、結果は、無効にされない。
【００７９】
ここで図１８を参照して、本発明によるプロセスの実施形態を説明する。
【００８０】
ステップＳ１０、Ｓ１２で、第１の三角形分割多面体閉面によってモデル化された第１のモデル化オブジェクト、および第２の三角形分割多面体閉面によってモデル化された第２のモデル化オブジェクトを入力する。通常、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトは、単体２環である。必要であれば、符号つき整数を、第１および第２の三角形分割多面体閉面の三角形に関連づけ、配向反転および／または多重度を取り込むことができる。
【００８１】
ステップＳ２０で、関数φ：Ｚ×Ｚ→Ｚを選択する。関数φの選択により、第１のモデル化オブジェクトと第２のモデル化オブジェクトとの間で実行するための演算を選択することができる。一般に、関数φは、２つの立体の和集合、積集合、および差集合など、通常のブール演算を再定義する。本発明を用いるアプリケーションの目的に依存して、どの関数φを定義してもよい。たとえば、（空間掃引の結果として得られる）自己と交わるオブジェクトを扱うとき、関数φの定義により、対象となっている空間領域は、巻き数が正である場所であると決めることができ、関数φの別の定義により、対象となっている空間領域は、巻き数がゼロでない場所であると決めることができる。通常のブール演算を再定義すると、関数φの制約のない定義は、本発明によって与えられる設計上の柔軟性となる。
【００８２】
実際に、関数φは、設計セッション中にユーザによって選択される。関数φは、ＣＡＧＤシステムによってデフォルトで選択することもできる。
【００８３】
次いで、ステップＳ３０で、第１のモデル化オブジェクトの三角形と第２のモデル化オブジェクトの三角形との間の積集合を計算する。積集合とは、２つの三角形が出会う点、エッジまたは多角形である。したがってステップＳ３０は、第１のモデル化オブジェクトまたは第２のモデル化オブジェクトの三角形の共通エッジまたは頂点にはない、三角形の積集合をすべて見つけることである。
【００８４】
積集合を計算するのに、いくつかの方法を用いることができ、たとえば、標準浮動小数点算術をイプシロンプログラミングとともに使う。実際に、積集合の計算は、精密な算術を用いて実行される。精密な算術は、数値計算を実行するときに丸めおよび切捨てを利用しない。精密な算術手法を用い、数値的に堅牢な幾何学的アルゴリズムを実行する。有利には、精密な算術は、オブジェクトの正しい位相構造を取得することを可能にするので、こうした構造には矛盾がない。
【００８５】
さらに、先に見たように、単体２環とは、自己積集合を特徴とし得る三角形分割多面体閉面である。実際に、第１のモデル化オブジェクトおよび／または第２のモデル化オブジェクトは、自己積集合を含み得るので、三角形の間の積集合の計算は、第１のモデル化オブジェクトの三角形の間、および／または第２のモデル化オブジェクトの三角形の間の積集合を計算することをさらに含む。
【００８６】
ここで図１９を参照すると、２つの単体２環Ａ、Ｂが入力済みである。第１のオブジェクトＡは、図１２に示した矩形であり、第２のオブジェクトＢは、図１３に示した自己積集合を含む二重三角形である。オブジェクトＡ、Ｂは、図２８〜３０に示すように、３次元オブジェクトであるが、簡略化のために、図面１９〜２３では２次元オブジェクトが使われることを思い出されたい。実際に、ユーザは、当該分野において公知であるように２つのオブジェクトを入力する。さらに、オブジェクトＡ、Ｂは、オブジェクトＢがオブジェクトＡの上になるように、互いに位置決めされている。通常、この位置決めもユーザによって実行される。
【００８７】
図２０に、オブジェクトＡとオブジェクトＢとの間の積集合２００、２０２、２０４、および２０６を表してある。さらに、オブジェクトＢの自己積集合２０８も表してある。簡略化のために、オブジェクトＡ、Ｂの表現は、図１９〜２３では２Ｄ表現であり、３ＤオブジェクトＡ、Ｂの三角形の間で計算される積集合は、エッジまたは頂点であることを思い出されたい。積集合の計算は、当該分野において公知であるように、たとえば、精密な算術を使って実行される。
【００８８】
図１８に参照を戻すと、ステップＳ４０で、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトの三角形が、その計算された積集合に隣接する多角形ファセットに分割される。つまり、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトＡ、Ｂは、ステップＳ３０で計算された積集合に従って細分化される(subdivided)と言う。
【００８９】
たとえば、図２１において、オブジェクトＡとオブジェクトＢとの間の計算された積集合は、オブジェクトＡを、隣接する４つの部分（２、１０、４、５）に細分化し、オブジェクトＢを、隣接する６つの部分（１、７、９、３、８、６）に分割する。
【００９０】
次に、ステップＳ５０で、少なくとも１つの領域を計算する。領域は、互いと隣接するとともに計算された積集合の１つで区切られる三角形および／または多角形ファセットの集合を含む。言い換えると、領域とは、計算された積集合に沿った、第１のモデル化オブジェクトＡおよび第２のモデル化オブジェクトＢの境界の一部である。つまり、第１のモデル化オブジェクトＡおよび第２のモデル化オブジェクトＢがその上で出会い、または自己と交わる頂点もしくはエッジに隣接する三角形および／または多角形ファセットの集合が、領域を形成すると言う。
【００９１】
実際に、各三角形を多角形ファセットに分割する、計算された積集合の配置のオーバーレイが築かれる。オーバーレイの確立は、当該分野において公知であるように、計算された積集合を組み合わせることになる。この段階で、初期オブジェクトＡ、Ｂの各三角形を、オブジェクトＡ、Ｂの同じ多面体環を数学的に定義する新規表現が取得されるように、多角形ファセットに細分化される。有利には、多面体環の支持複体(supporting complex)は、周囲の３次元空間に組み込まれる。言い換えると、新たな環の多角形ファセットまたはエッジのどの交わるペアも、共通エッジもしくは頂点に沿って交わる。この構築は、「精密に」行われ、有利には、エッジおよび三角形の積集合、または３つの三角形の積集合の結果として得られる頂点が有理座標(rational coordinates)をもつことを含意する。新規表現の構築は記号を使って管理されるが、このことは、ほとんどの場合、こうした有理座標が明示的には計算されないことを含意する。有利には、こうした有理座標は計算される必要がないので、ＣＡＧＤシステムのリソースは維持される（たとえばＣＰＵ、メモリなど）。  一般的でない状況が起こる場合があり、こうした状況は、当該分野において公知であるように解決される。たとえば、三角形が重なる場合があり、いくつかのエッジが同じ点で三角形と交わり、または３つより多い三角形が一地点で出会う場合がある。こうした一般的でない状況の中で、重複三角形が新規多角形ファセットを生じる特定の状況がある。このようなケースでは、計算された新規係数ｋ（ステップＳ７０で論じる）は、２つの重複三角形のそれぞれの係数ｋの和である。
【００９２】
次に、ステップＳ６０で、２つの巻き数対（つまり、３Ｄ巻き数）ｐ、ｑを、各三角形および各多角形ファセット用に計算する。３次元オブジェクトの巻き数（または３Ｄ巻き数）により、多角形  −環の内部空間および外部空間の概念が一般化される。各巻き数対ごとに、第１の巻き数が第１の三角形分割多面体閉面から計算され、第２の巻き数が第２の三角形分割多面体閉面から計算される。少なくとも一回のレイトレーシングが、このステップで三角形に対して実行される。有利には、完全な堅牢性のために、このステップは、精密な算術および「単純さのシミュレーション」の両方を必要とする。「単純さのシミュレーション」は、たとえば、非特許文献８において教示されるように、幾何学的アルゴリズムにおいて縮退ケース(degenerate cases)に取り組むための技法である。
【００９３】
実際に、第１の巻き数対および第２の巻き数対は、それぞれ三角形および多角形ファセットの各辺用に計算される。多角形ファセットの第１の辺（同じことが三角形に当てはまる）は下と呼ばれ、第２の辺は上と呼ばれる。多角形ファセットの下および上という概念は、各多角形ファセットの法線ベクトルに基づく任意の取り決め(arbitrary convention)に依拠する。
実際、多面体環（たとえば、単体２環）の各三角形は、その３つの頂点の順序づけによって配向され、３つの頂点の順序づけは任意選択であることを思い起こされたい。また、この順序づけが法線ベクトルを定義する。
【００９４】
たとえば、図２６に、共通エッジＥをもつ三角形の集合が表示されている。各三角形は、図に示すように、それ自体の法線ベクトルをもつ。三角形２６０は配向され、この配向に基づいて、法線ベクトルが定義され、三角形の「上」を指示する。
【００９５】
したがって、Ｃbelowと記す第１の巻き数対は、その三角形および多角形ファセットの法線ベクトルにより、その三角形および多角形ファセットの下である。反対に、Ｃaboveと記す第２の巻き数対は、その三角形および多角形ファセットの法線ベクトルにより上記三角形および多角形ファセットの上である。
【００９６】
図２２を参照すると、第１のモデル化オブジェクトＡおよび第２のモデル化オブジェクトＢの巻き数の値対（ｗA，ｗB）が示されている。オブジェクトＢの部分１は、２つの巻き数対をもつ。部分１の第１の対は、Ｃbelow＝（０，０）と記され、第２の対はＣabove＝（０，−１）と記される。この例では、部分１の法線ベクトル（図２１に表す）は、対（０，−１）を部分１の上であると任意に見なすことを引き起こす。オブジェクトＡ、Ｂの他の部分については、下の表で論じる。
【００９７】
実際に、ステップ（Ｓ５０）で計算された各領域に、２つの（３Ｄ）巻き数対を関連づける。第１の巻き数対は、計算された領域（の法線ベクトル）のすぐ下のＣbelow＝（ｗA，ｗB）であり、第２の巻き数対は、領域（の法線ベクトル）のすぐ上のＣabove＝（ｗA，ｗB）である。計算された各領域に関連づけられる２つの対Ｃbelow＝（ｗA，ｗB）およびＣabove＝（ｗA，ｗB）は、その領域に属す多角形ファセット（または三角形）用に計算される２つの巻き数対である。次いで、（３Ｄ）巻き数ＣbelowおよびＣaboveの対は、隣接する領域および三角形に伝播される。伝播という用語は、第１の対Ｃbelowおよび第２の対Ｃaboveが、計算された新規多角形ファセットおよび／または三角形に広がることを意味する。言い換えると、専用のアルゴリズムを用い、領域の他の多角形ファセットの（３Ｄ）巻き数の対を計算する。このアルゴリズムはしたがって、計算された領域に依拠し、領域に属す多角形ファセットの巻き数対の計算を実行する。このアルゴリズムを、ここで詳述する。
【００９８】
このアルゴリズムは、第１の計算領域に属す多角形ファセット（または三角形）のＣbelowおよびＣaboveの計算で始まる。多角形ファセットの選択は任意であり、このアルゴリズムの出力に影響を与えない。次いで、こうした２つの巻き数対ＣbelowおよびＣaboveの値が、隣接する多角形ファセットに対して計算される（伝播されると言うこともできよう）。この段階で、隣接する多角形ファセットは、別の計算領域でも三角形でもよい。定義により、２つの多角形は、少なくとも１つのエッジを共有する場合は隣接することを思い起こされたい。さらに、やはり定義により、正確に２つの多角形によって共有されるエッジは、図２４に表すように多様体エッジである。やはり定義により、３つ以上の多角形によって共有されるエッジは非多様体エッジである。図２５で、非多様体エッジが、４つの付随多角形を有して描画されている。
【００９９】
ここで、図２６、２７を参照して、隣接するファセットの巻き数対ＣbelowおよびＣaboveの計算（または伝播）について詳述する。
【０１００】
図２６において、Ｅを、４つの多角形によって共有される非多様体エッジとする。このエッジは、第１のモデル化オブジェクトＡおよび第２のモデル化オブジェクトＢとの間の計算された積集合であり、すなわち、２つの水平多角形２６０、２６２は第１のモデル化オブジェクトＡに属し、２つの垂直多角形２６４、２６６は第２のモデル化オブジェクトＢに属す。ついでながら、各多角形は、先に論じたように、そのジオメトリおよび配向により法線ベクトルを含むことに気付かれよう。
【０１０１】
ここで図２７を参照し、１つの隣接多角形に対する２つの巻き数対ＣbelowおよびＣabove、たとえば、多角形２６０の巻き数対Ｃbelow＝（ｗA，ｗB）およびＣabove＝（ｗA，ｗB）が分かっていると仮定する。多角形は、エッジＥの周りを動径方向にソートされる。動径方向は、エッジＥの周りの回転に従って選ぶことができる。たとえば、多角形２６０から反時計回転２６８を始めると、エッジＥに隣接する多角形の動径方向は、２６０、２６６、２６２、２６４となる。
【０１０２】
次いで、所与の三角形または所与の多角形ファセットから開始すると、回転が、計算された積集合の周りを動径方向に従って実行される。これは、多角形２６０から開始して、多角形２６６、２６２、２６４が連続して交差されることになる。
【０１０３】
次に、計算された積集合に隣接する他の三角形および／または多角形ファセットの交差が検出される。各交差検出の後、２つの巻き数対が更新される。更新は、交差される三角形および／または多角形ファセットの法線ベクトルの配向に従って実行される。
【０１０４】
更新を、以下の３つの規則に基づいて実行することができる。
【０１０５】
（ｉ）第１のモデル化オブジェクトＡの多角形の法線ベクトルが動径方向（または反動径方向）に配向される場合、その多角形との交差は、巻き数ｗAをｗA＋１（またはｗA−１）に変える。
【０１０６】
（ｉｉ）第２のモデル化オブジェクトＢの多角形の法線ベクトルが動径方向（または反動径方向）に配向される場合、その多角形との交差は、巻き数ｗBをｗB＋１（またはｗB−１）に変える。
【０１０７】
（ｉｉｉ）第１のモデル化オブジェクトＡ（またはＢ）にある多角形との交差は、巻き数ｗB（またはｗA）を変えない。
【０１０８】
図２７は、上述した規則の適用を示す。簡略化のために、巻き数対Ｃabove＝（ｗA，ｗB）の計算（または伝播）に例を限定する。巻き数対Ｃabove＝（ｗA，ｗB）をもつ多角形２６０から開始すると、最初に交差される多角形は、多角形２６６である。多角形２６６の交差が検出されると、巻き数対が更新され、その結果更新により巻き数ｗBがｗB−１に変わる。多角形２６６の計算された巻き数対はしたがって、Ｃabove＝（ｗA，ｗB−１）となる。同様に、多角形２６２が交差され、多角形２６２の計算された巻き数対はそれに従ってＣabove＝（ｗA＋１，ｗB−１）となる。次に、多角形２６４と交差した後、多角形２６４の計算された巻き数対はＣabove＝（ｗA＋１，ｗB）となる。
【０１０９】
したがって、巻き数の変動が分かっているので、多様体または非多様体の計算された積集合に隣接する、計算されたすべての領域の巻き数対ＣbelowおよびＣaboveを更新するのは容易である。このアルゴリズムの利点は、巻き数の計算回数が減少することであることが理解されよう。これは、システムのリソースが維持され、計算時間が大きく削減されるので、特に有利である。
【０１１０】
巻き数対の計算は、拡張領域(extended regions)に対して実施することもできる。拡張領域は、領域に隣接する三角形および／または多角形ファセットの集合を含まない。拡張領域とは、第２のモデル化オブジェクトの多角形とも接せず、自己積集合とも接しない第１のモデル化オブジェクトの隣接三角形の集合からなる。したがって、拡張領域内の三角形のＣbelowおよびＣaboveの初期値は、同じ拡張領域内ですべての三角形に対して同じであることが理解されよう。つまり、拡張領域は、同じＣbelowおよびＣaboveをもつモデル化オブジェクトの結合三角形の最大数を含むと言うことができる。したがって、拡張領域内では、計算された初期巻き数対ＣbelowおよびＣaboveは、モデル化オブジェクトの結合三角形全体に容易に計算されることができる（伝播すると言うこともできよう）。したがって、拡張領域内での計算手順は、モデル化オブジェクトの各結合三角形に対して繰り返される。繰り返しになるが、有利には本発明によるプロセスの性能を向上させ、かつＣＡＧＤシステムのリソースを維持することができることが理解されよう。
【０１１１】
次いで、図１８のステップＳ７０で、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトの各三角形および各多角形ファセット用に係数ｋを計算する。定義により、関数ψの境界δψは、点ｘ∈｜Ａ｜∪｜Ｂ｜の集合であり、ここでψは局地的に一価ではないので、結果として得られる単体２環δψの幾何学的軌跡を定義すること、ならびにψ+およびψ-は、初期被演算子の結果として得られる配向に従って、ψ+（またはψ-）がδψの正辺(positive side)（またはδψの反対辺(opposite side)）における値である２つの値であることを思い出されたい。次いで、差ψ-−ψ+が、点ｘでの符号つき多重度を定義し、したがって、δψのすべての三角形に対する多重度が設定される。結果として得られる単体２環はしたがって、三角形の多重度に関連づけられたδψである。多重度により有利には、整数値をもつ関数ψの場合において単体２環が取得され得ることが理解されよう。そうでなければ、関数ψは、０または１のみを値としてもつことになる。
【０１１２】
係数ｋは、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトの各三角形および各多角形ファセット用に計算される２つの巻き数対ｐ、ｑを入力としてもつ関数φで計算される。実際に、係数ｋは、ｋ＝φ（Ｃbelow）−φ（Ｃabove）のように計算され、これはつまり、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトの各三角形および各多角形ファセットに対する符号つき多重度を計算することである。
【０１１３】
次に、ステップＳ８０で、第１のモデル化オブジェクトおよび第２のモデル化オブジェクトの三角形および多角形ファセットが、計算された係数に従って選択される。ここでの選択は、選択された三角形および多角形ファセットが、単体２環結果を取得するために保たれることを意味する。実際に、三角形および多角形ファセットは、計算された係数ｋがゼロとは異なるときに選択される。
【０１１４】
次に、ステップＳ９０で、三角形ではない多角形ファセットを、三角形分割する。三角形分割は、当該分野において公知であるように実行される。
【０１１５】
次いで、ステップ１００で、結果として三角形分割多面体閉面を、選択された三角形および三角形分割された選択多角形ファセットを有して取得する。ステップＳ６０からＳ１００は、図２０〜２３で示される。
【０１１６】
図２０で、オブジェクトＡとＢとの間の積集合２００、２０２、２０４、２０６、２１０およびオブジェクトＢの自己積集合２０８が表され、第１のモデル化オブジェクトＡおよび第２のモデル化オブジェクトＢが、計算された積集合に従って細分化される。
【０１１７】
次いで、図２１に、拡張領域を示してある。拡張領域は、図において、数値１から１０で識別される。この例では、オブジェクトＡの隣接する４つの部分（２、１０、４、５）および部分Ｂの隣接する６つの部分（１、７、９、３、８、６）が拡張領域である。ここで、次の表に集められるように、結果として得られる単体２環、すなわちＣbelow、Ｃaboveおよびｋ＝φ（Ｃbelow）−φ（Ｃabove）を選択するのに使われる係数すべてを各拡張領域に関連づけることが可能である。
次の表の例では、φ（ｗA，ｗB）＝ｗAｗBをとる。結果として得られる単体２環に属す拡張領域は、一番右の列に見られる。
【０１１８】
【表１】
0005848030.tif 000003
【０１１９】
図２３には、拡張領域５、６、７、８、９、１０によって定義される、結果として得られる単体２環を示してある。拡張領域５は、上の表中のφ（Ｃbelow）−φ（Ｃabove）の符号によって取り込まれる反対配向（新規配向を示してある）に従って、作用しなければならないことに気付かれよう。こうすることにより、結果として得られる単体２環の面の配向は大域的に矛盾がないことが保証できるようになる。
【０１２０】
上記方法は、どのＣＡＧＤシステムにも適用され得ることを理解されたい。本発明は、システム、方法、またはコンピュータプログラムとして実施することができる。本発明は、デジタル電子回路機構において、もしくはコンピュータハードウェア、ファームウェア、常駐ソフトウェア、マイクロコード、ソフトウェアにおいて、またはその組合せにおいて実施することができる。本発明の装置は、プログラム制御可能なプロセッサによる実行のためにマシン可読記憶装置内で有形に実施されるコンピュータプログラム製品で実施することができる。また、本発明の方法ステップは、入力データに対して作用し出力を生成することによって、本発明の機能を実施するための命令からなるプログラムを実行するプログラム可能プロセッサによって実行することができる。
【０１２１】
本発明は有利には、データ記憶システム、少なくとも１つの入力装置、および少なくとも１つの出力装置からデータおよび命令を受信するとともに、データおよび命令を送信するように結合された少なくとも１つのプログラム可能プロセッサを含むプログラム可能システム上で実行可能な１つまたは複数のコンピュータプログラムで実施することができる。アプリケーションプログラムは、高度手続き型プログラミング言語もしくはオブジェクト指向プログラミング言語で、または所望される場合はアセンブリ言語もしくはマシン言語で実施することができる。いずれのケースでも、言語は、コンパイラ型言語またはインタープリタ型言語でよい。
【０１２２】
一般に、プロセッサが、リードオンリメモリおよび／またはランダムアクセスメモリから命令およびデータを受信することになる。１つまたは複数のコンピュータ可読媒体のどの組合せも、命令を記憶するのに使用することができる。コンピュータ可読媒体は、コンピュータ可読記憶媒体でよい。コンピュータ可読記憶媒体は、たとえば、電子、磁気、光学、電磁気、赤外線、または半導体システム、機器、もしくは装置、あるいは上記の適切な任意の組合せだが、それに限定されない。コンピュータプログラム命令およびデータを有形に実施するのに適した記憶装置は、例としてＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリ素子などの半導体メモリ素子と、内部ハードディスクおよび取外し可能ディスクなどの磁気ディスクと、光磁気ディスクと、ＣＤ−ＲＯＭディスクとを含むすべての形の不揮発性メモリを含む。上記のいずれも、特殊設計ＡＳＩＣ（特定用途向け集積回路）によって補われ、またはそこに組み込まれ得る。
【０１２３】
コンピュータ可読媒体は、コンピュータ可読信号媒体でよい。コンピュータ可読信号媒体は、媒体中で実施されるコンピュータ可読プログラムコードをもつ伝播データ信号を、たとえば、ベースバンド中に、または搬送波の一部として含み得る。このような伝播信号は、電磁気、光学、またはこれらの適切な任意の組合せを含むが、それに限定されない様々な形のいずれもとり得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、機器、または装置による、またはこれらと関連して使用するためのプログラムを伝達し、伝播し、または移送し得るどのコンピュータ可読媒体でもよい。本発明の好ましい実施形態について記載してきた。本発明の精神および範囲から逸脱することなく、様々な修正が行われ得ることが理解されよう。したがって、他の実施形態も、添付の請求項の範囲内である。たとえば、本発明によるプロセス全体の性能を、最適化により向上させることが可能である。第１の最適化は、たとえば、非特許文献９、非特許文献１０および非特許文献１１に記載されている、フィルタリングされた述語(predicate)の概念を用いることにあり得る。
【０１２４】
さらに、構築された頂点の重心座標は、区間算術で計算される。述語が呼び出される度に、通常は行列式の符号を戻すが、こうした区間座標を使って符号を判定しようとし、この判定が可能でない場合は、述語の有理数演算バージョンを呼び出し、この呼出しが以前行われたことがない場合は、影響を受ける構築された頂点の求められる重心座標を最初に計算する。
【０１２５】
図１８に示すプロセスのステップＳ３０で、第１のモデル化オブジェクトの三角形と第２のモデル化オブジェクトの三角形との間の積集合の計算は、以下のように定義され、パッチと呼ばれる、三角形の集合にある被演算子の区画を使って加速され得る。
【０１２６】
（ｉ）パッチの配向された三角形の法線ベクトルすべてをもつ、正のドット積を特徴とするベクトルｄが存在する。
【０１２７】
（ｉｉ）パッチの境界のｄと直交する面の上の向きｄに沿った投影(projection)、自己積集合をもたない。
【０１２８】
実際、この場合、パッチが自己積集合をもたず、別個のパッチの三角形の間の可能な積集合を検査するのに十分であることが示され得る。こうしたパッチが、ボクセルや八文木などの空間区画構造においてローカライズされる場合、たとえば非特許文献１２および非特許文献１３に記載されているように、ステップＳ３０は大幅に高速化され得る。
【０１２９】
たとえば、ボクセルがただ１つのパッチを含む場合、積集合はあり得ない。
【０１３０】
さらに、別の最適化は、弦誤差によって駆動される一連のエッジ消去によって、結果として得られる三角形分割多面体閉面を簡略化する（Ｓ１００）ことにあり得る。実際、上記ステップＳ３０〜Ｓ９０で実行される演算は精密であるため、極めて小さい、おそらく入力被演算子の頂点の座標を定義する浮動小数点数の最終桁の重みよりはるかに小さい三角形が起こり得る。本発明のプロセスでは、この簡略化手順は、浮動小数点における数の丸めに相当する組み合わせ物である。
【図１】
0005848030.tif 000004
【図２】
0005848030.tif 000005
【図３】
0005848030.tif 000006
【図４】
0005848030.tif 000007
【図５】
0005848030.tif 000008
【図６】
0005848030.tif 000009
【図７】
0005848030.tif 000010
【図８】
0005848030.tif 000011
【図９】
0005848030.tif 000012
【図１０】
0005848030.tif 000013
【図１１】
0005848030.tif 000014
【図１２】
0005848030.tif 000015
【図１３】
0005848030.tif 000016
【図１４】
0005848030.tif 000017
【図１５】
0005848030.tif 000018
【図１６】
0005848030.tif 000019
【図１７】
0005848030.tif 000020
【図１８】
0005848030.tif 000021
【図１９】
0005848030.tif 000022
【図２０】
0005848030.tif 000023
【図２１】
0005848030.tif 000024
【図２２】
0005848030.tif 000025
【図２３】
0005848030.tif 000026
【図２４】
0005848030.tif 000027
【図２５】
0005848030.tif 000028
【図２６】
0005848030.tif 000029
【図２７】
0005848030.tif 000030
【図２８】
0005848030.tif 000031
【図２９】
0005848030.tif 000032
【図３０】
0005848030.tif 000033