JP4451327B6 - コンピュータ支援設計システムで曲線を線描する方法 - Google Patents
コンピュータ支援設計システムで曲線を線描する方法 Download PDFInfo
- Publication number
- JP4451327B6 JP4451327B6 JP2005030930A JP2005030930A JP4451327B6 JP 4451327 B6 JP4451327 B6 JP 4451327B6 JP 2005030930 A JP2005030930 A JP 2005030930A JP 2005030930 A JP2005030930 A JP 2005030930A JP 4451327 B6 JP4451327 B6 JP 4451327B6
- Authority
- JP
- Japan
- Prior art keywords
- curve
- polyline
- points
- point
- curvature
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Description
本発明は、コンピュータプログラムおよびシステムの分野に関し、より詳細には、部品設計プログラムおよびシステムに関する。
部品または部品のアセンブリの設計のために、出願人がCATIAという商標の下で提供しているものなど、いくつかのシステムおよびプログラムが市場で提供されている。こうしたいわゆるコンピュータ支援設計(CAD)システムは、部品または部品のアセンブリの複雑な3次元(3D)モデルをユーザが構築および操作することを可能にする。アセンブリのモデルを作成するのにいくつかの異なるモデリング技法を使用することができる。こうした技法には、ソリッドモデリング、ワイヤフレームモデリング、およびサーフェスモデリングが含まれる。ソリッドモデリング技法はトポロジカル3Dモデルを提供する。トポロジカル3Dモデルでは、3Dモデルは、たとえば相互接続された縁および面である。幾何学的には、3Dソリッドモデルは、閉じたスキンを画定する、トリミングまたは再トリミングされた面の集合である。トリミングされた表面は、縁によって境界を画されたトポロジカル面に対応する。閉じたスキンは、部品の材料で満たされた3D空間の有界領域を画定する。一方ワイヤフレームモデリング技法は、モデルを単純な3D線の集合として表すのに使用することができ、サーフェスモデリングは、外面の集合としてモデルを表すのに使用することができる。CADシステムは、こうしたモデリング技法、またはパラメトリックモデリング技法などのその他のモデリング技法を組み合わせることができる。したがってCADシステムは、縁または線を、ある場合には面と共に使用して、モデリングされるオブジェクトの表現を提供することができる。モデリングされるオブジェクトは、いくつかの線または縁を含む。これらを、様々な方式、たとえば非一様有理Bスプライン(nurbs)、ベジエ曲線、または曲線を記述するその他のアルゴリズムで表すことができる。この説明の以下の部分では、「曲線」という語を、パラメータによって定義され、場合によっては限られた数の制御点によって定義される曲線である数学的曲線を述べるのに使用する。「ポリライン」という語を、設計システムでの空間的に順序付けられた1組の点を述べるのに使用する。ポリラインは、線または縁中のすべての点を含む。たとえば、点Aから点Bに延びる線分の例を考慮する。この曲線は、点AおよびBと、曲線が、これらの点によって限定される点AおよびBを通る直線の一部であることとによって定義される。一方、線分に対応するポリラインは、点AおよびBと、AからBへの線分のすべての点とからなる。ポリラインは、各点がAからBに、またはBからAに順序付けられるという意味で順序付けられる。
設計システムの一機能は、ユーザがマウス、トラックパッド、グラフィックスタブレットなどのハプティックデバイス(haptic device)を使用して曲線を作成または修正できることである。別の機能は、ユーザが隣接する曲線を接続できることである。特に、設計システムにおける曲線、特に曲線間の接続点では、曲線の位置、導関数すなわち正接、2次導関数すなわち曲率、または高次導関数に関する制約が存在する可能性がある。
既存のシステムは、曲線を線描または修正することについて高いレベルの経験をユーザに要求する。たとえば、Alias(登録商標)のAliasStudioTools(登録商標)、ICEMのICEM Surf、Dassault SystemsのCATIA(登録商標)などの従来技術のシステムでは、曲線が、ユーザによって選択されるいくつかの制御点に基づいて定義される。ユーザはまた、制御点での位置、正接、曲率の値など、制御点に制約を関連付けることができる。曲線を作成することは、ユーザが様々な制御点を選択することを必要とし、必要なら、関連する制約を選択することを必要とする。制御点を選択することは、高いレベルの経験をユーザに要求する。得られる曲線は点の選択に密接に依存するからである。得られる曲線の制御点に対する依存性は、設計システムによっても変化する。さらに、制御点を曲線自体の上に配置することができず、局所的な修正を所望の精度で調整することが極めて難しくなる。
加えて、分割点(segmenting point)で接続される様々な曲線で形成される曲線を、分割することができる。大域的曲線(global curve)の分割もまた、高いレベルの技術をユーザに要求する。得られる大域的曲線が後で修正される場合は特に、分割点の適切な選択が、この大域的曲線に影響を及ぼすからである。以下の説明では、理解しやすいように、曲線の部分に対して「弧」という語を使用する。言い換えれば、分割された曲線はいくつかの弧で形成される。しかし、このような「弧」はやはり曲線であり、「弧」という語は単に、分割された曲線と、分割された曲線を形成する様々な曲線すなわち弧との混乱を避けるために使用するものである。曲線の分割により、たとえば局所的細部(local detail)の記述が可能となる。既存の設計システムでは、ユーザは曲線中の分割点の存在に気付かないことがある。たとえばnurbの場合、曲線は、分割点の間に延びる、それぞれがベジエ曲線で表される様々な弧で形成することができる。ユーザは、曲線の終点だけを認識し、中間の分割点は認識しない。
既存の曲線を修正する場合、ユーザは、制御点またはそれに関連する制約に対して作用を及ぼす。しかし、既存の曲線を変更する場合、ユーザは、必要な結果を達成するためには、制御点のうちのいくつか、またはすべての制御点を修正しなければならない。ユーザが制御点またはそれに関連する制約を変更するときはいつでも、設計システムは曲線を再度計算する。
こうした問題が、Microsoft(登録商標) Wordで作成されたイメージのケースで図1に例示されている。この単純な実施例では、制御点はどんな値とも関連付けられていない。この図には楕円体2が示されており、楕円体2は9個の制御点で定義される。この楕円体は曲線の一例であり、この場合はたまたま閉曲線である。制御点4、6、8、および10は、楕円体を含み、各辺が楕円体の長軸および短軸にそれぞれ平行な長方形のそれぞれの隅に位置する。制御点4、6、8、および10は、反対側の制御点を中心とする比例変換として楕円体を拡大および縮小するのに使用することができる。制御点12、14、16、および18は長方形の各辺の中点に位置し、長方形の各辺に平行な方向に楕円体を延長または短縮するのに使用される。最後の制御点20は、楕円体のほぼ中央に位置する回転中心の周りに楕円体を回転するのに使用される。図1にはさらに、修正後の楕円体22が示されている。図が見やすいように、修正後の楕円体の制御点は省略してある。楕円体2を楕円体22に変更するには、楕円体2を延長し、延長した楕円体のサイズを拡大し、次いで拡大した楕円体を回転するために少なくとも3つの制御点に作用を及ぼすことが必要である。所与の結果を達成するために制御点を選択することは、この単純な実施例でさえ、制御点の操作を完全に理解していることが必要である。
ALIAS(登録商標)社は、たとえば商標MAYA 5の下で、ユーザがグラフィックスタブレットを使用して曲線を線描することができる設計システムを提供している。タブレットのペンシルの各ストロークについて、曲線が、関連する制御点と共に生成される。既存の曲線を修正する場合、ユーザは曲線の制御点に作用を及ぼす。
曲線接続品質のリアルタイム分析および表示のための方法およびシステムが開示されている(たとえば、特許文献1参照。)。この出願で対処される問題は、曲線の品質である。この出願は、曲率包絡線(curvature envelope)とも呼ばれる、曲線横座標(curvilinear abscissa)に対する曲線の2次導関数の「コーム(comb)」表現の使用について論じている。曲率包絡線は、曲線の形状の表現である。1組の直交座標(x,y)では、2次導関数はベクトルであり、その座標は、
ただしsは曲線横座標である。曲率Cは、このベクトルのノルムを指定する。もちろん、当業者には周知のように、この定義は、一般に他のタイプの座標にも当てはまる。
図2に、曲線30の2次導関数、言い換えれば曲線30の曲率に関するそのようなコームの一例を示す。2次導関数の値(加速度に等しい)は曲線に沿って計算される。曲線に沿って、正接ベクトルおよび法線ベクトルも計算される。法線ベクトルは、正接ベクトルと加速度ベクトルのベクトル積である。
次いで、法線ベクトルと正接ベクトルのベクトル積を計算し、長さ1を有し、曲線30と直交するベクトル32を得る。
図2では、「コーム」36が、曲線に沿った各点から生じるいくつかのベクトルとして表されている。図2では、点Aについて、ベクトル
との積である。
曲線30のすべての点についての計算後ベクトル34の端を結ぶ曲線36(包絡線とも呼ばれる)は2次導関数を表し、2次導関数のグラフ表現をユーザに与える。たとえば、包絡線36は、2次導関数の値が0となる点で曲線30と交差し、そのような交点は、曲線30の曲率(2次導関数の符号)の変化を表す。図2の実施例は2次導関数を示しているが、「コーム」表現は、高次導関数に対しても使用することができる。「コーム」表現は曲線接続品質を評価するのに使用されている(たとえば、特許文献1参照。)。
設計システムのユーザに高いレベルの技術を求めることなく、ユーザが曲線を線描および修正することを可能にする解決策が求められている。この解決策がユーザフレンドリであり、ユーザが容易に理解および実施できることが理想的である。
本発明によれば、曲線を作成するための、コンピュータで実施される方法であって、
1組の点を受け取り、受け取った1組の点に基づいてポリラインを計算するステップと、
ポリラインに沿って曲率を計算するステップと、
ポリライン上の特定の点を求めるステップであって、その特定の点は曲率の極値を含むステップと、
その特定の点から離れているポリライン上の少なくとも1つの分割点を求めるステップと、
分割点を通る曲線を計算するステップと、
曲線をポリラインにフィッティングするステップとを含む方法が提供される。
1組の点を受け取り、受け取った1組の点に基づいてポリラインを計算するステップと、
ポリラインに沿って曲率を計算するステップと、
ポリライン上の特定の点を求めるステップであって、その特定の点は曲率の極値を含むステップと、
その特定の点から離れているポリライン上の少なくとも1つの分割点を求めるステップと、
分割点を通る曲線を計算するステップと、
曲線をポリラインにフィッティングするステップとを含む方法が提供される。
一実施形態によれば、特定の点は、曲率の値が0である点を含み、曲率の値が一定であるポリラインの部分を限定する点をさらに含む。
一実施形態によれば、求めるステップは、2つの隣接する特定の点の間の1つの分割点を選択するステップを含む。
特定の実施形態によれば、分割点が、
前記2つの隣接する特定の点の一方から分割点までのポリラインに沿った曲率の積分と、
分割点から、2つの隣接する特定の点の他方までのポリラインに曲率の積分の相対値に従って選択される。
前記2つの隣接する特定の点の一方から分割点までのポリラインに沿った曲率の積分と、
分割点から、2つの隣接する特定の点の他方までのポリラインに曲率の積分の相対値に従って選択される。
一実施形態によれば、2つの隣接する特定の点の一方は、曲率の値が0である点であり、分割点が、
第1の所定の定数と、前記2つの隣接する特定の点の他方から分割点までの曲線に沿った曲率の積分との積が、
分割点から、曲率の値が0である点までの曲線に沿った曲率の積分とが等しくなるように選択される。
第1の所定の定数と、前記2つの隣接する特定の点の他方から分割点までの曲線に沿った曲率の積分との積が、
分割点から、曲率の値が0である点までの曲線に沿った曲率の積分とが等しくなるように選択される。
たとえば、前記第1の所定の定数の値は0.5から0.9の間である。
別の実施形態によれば、2つの隣接する特定の点は、曲率の極小値および極大値であり、分割点が、
第2の所定の定数と、曲率の極小から分割点までの曲線に沿った曲率の積分との積が、
分割点から曲率の極大までの曲線に沿った曲率の積分と等しくなるように選択される。たとえば、前記第2所定の定数の値は0.1から0.5の間である。
第2の所定の定数と、曲率の極小から分割点までの曲線に沿った曲率の積分との積が、
分割点から曲率の極大までの曲線に沿った曲率の積分と等しくなるように選択される。たとえば、前記第2所定の定数の値は0.1から0.5の間である。
一実施形態によれば、フィッティングするステップは、曲線のエネルギーを最小にするステップを含む。
本発明はまた、曲線を修正するための、コンピュータで実施される方法であって、
曲線を与えるステップと、
1組の点を受け取り、ポリラインを計算するステップと、
曲線および計算したポリラインに基づいて新しいポリラインを計算するステップと、
本発明の作成方法に従って、新しいポリラインに基づいて曲線を作成するステップとを含む。
曲線を与えるステップと、
1組の点を受け取り、ポリラインを計算するステップと、
曲線および計算したポリラインに基づいて新しいポリラインを計算するステップと、
本発明の作成方法に従って、新しいポリラインに基づいて曲線を作成するステップとを含む。
一実施形態によれば、新しいポリラインを計算するステップは、
曲線に関連するポリラインを取り出すステップと、
取り出したポリラインと計算したポリラインを結合するステップとを含む。
曲線に関連するポリラインを取り出すステップと、
取り出したポリラインと計算したポリラインを結合するステップとを含む。
一実施形態によれば、曲線に関連するポリラインを取り出すステップは、格納されたポリラインを取り出すステップを含む。
別の実施形態によれば、曲線に関連するポリラインを取り出すステップは、曲線に基づいてポリラインを計算するステップを含む。
特定の実施形態によれば、1組の点を受け取るステップは、テンプレートを受け取るステップを含む。
本発明はさらに、曲線を作成するための、コンピュータで実施される方法であって、
ユーザがハプティックデバイスに対して入力した第1ストロークを検出するステップと、
本発明の方法に従って、前記第1ストロークに対応する第1組の点に基づいて曲線を作成するステップと、
ユーザがハプティックデバイスに対して入力した第2ストロークを検出するステップと、
作成した曲線と、前記第2ストロークに対応する第2組の点とに基づいてポリラインを計算するステップと、
本発明の作成方法に従って、ポリラインに基づいて曲線を作成するステップとを含む方法を提案する。
ユーザがハプティックデバイスに対して入力した第1ストロークを検出するステップと、
本発明の方法に従って、前記第1ストロークに対応する第1組の点に基づいて曲線を作成するステップと、
ユーザがハプティックデバイスに対して入力した第2ストロークを検出するステップと、
作成した曲線と、前記第2ストロークに対応する第2組の点とに基づいてポリラインを計算するステップと、
本発明の作成方法に従って、ポリラインに基づいて曲線を作成するステップとを含む方法を提案する。
必要なら、検出、計算、および作成するステップが、ユーザがハプティックデバイスに対して入力した新しいストロークごとに反復される。
本発明はまた、曲線を作成するコンピュータプログラムであって、
1組の点を受け取り、受け取った1組の点に基づいてポリラインを計算するルーチンと、
ポリラインに沿って曲率を計算するルーチンと、
ポリライン上の特定の点を求めるルーチンであって、その特定の点は曲率の極値を含むルーチンと、
特定の点から離れているポリライン上の少なくとも1つの分割点を求めるルーチンと、
分割点を通る曲線を計算するルーチンと、
曲線をポリラインにフィッティングするルーチンとを含むコンピュータプログラムを提案する。
1組の点を受け取り、受け取った1組の点に基づいてポリラインを計算するルーチンと、
ポリラインに沿って曲率を計算するルーチンと、
ポリライン上の特定の点を求めるルーチンであって、その特定の点は曲率の極値を含むルーチンと、
特定の点から離れているポリライン上の少なくとも1つの分割点を求めるルーチンと、
分割点を通る曲線を計算するルーチンと、
曲線をポリラインにフィッティングするルーチンとを含むコンピュータプログラムを提案する。
本発明はさらに、曲線を修正するコンピュータプログラムであって、
曲線を与えるルーチンと、
1組の点を受け取り、ポリラインを計算するルーチンと、
曲線および計算したポリラインに基づいて新しいポリラインを計算するルーチンと、
本発明による曲線を作成するプログラムを使用して、新しいポリラインに基づいて曲線を作成するルーチンとを含むコンピュータプログラムを提供する。
曲線を与えるルーチンと、
1組の点を受け取り、ポリラインを計算するルーチンと、
曲線および計算したポリラインに基づいて新しいポリラインを計算するルーチンと、
本発明による曲線を作成するプログラムを使用して、新しいポリラインに基づいて曲線を作成するルーチンとを含むコンピュータプログラムを提供する。
本発明はまた、曲線を作成するコンピュータプログラムであって、
ユーザがハプティックデバイスに対して入力した第1ストロークを検出するルーチンと、
本発明のプログラム方法を使用して、第1ストロークに対応する第1組の点に基づいて曲線を作成するルーチンと、
ユーザがハプティックデバイスに対して入力した第2ストロークを検出するルーチンと、
作成した曲線と、前記第2ストロークに対応する第2組の点とに基づいてポリラインを計算するルーチンと、
本発明による作成プログラムに従って、ポリラインに基づいて曲線を作成するルーチンとを含むコンピュータプログラムを提案する。
ユーザがハプティックデバイスに対して入力した第1ストロークを検出するルーチンと、
本発明のプログラム方法を使用して、第1ストロークに対応する第1組の点に基づいて曲線を作成するルーチンと、
ユーザがハプティックデバイスに対して入力した第2ストロークを検出するルーチンと、
作成した曲線と、前記第2ストロークに対応する第2組の点とに基づいてポリラインを計算するルーチンと、
本発明による作成プログラムに従って、ポリラインに基づいて曲線を作成するルーチンとを含むコンピュータプログラムを提案する。
次に、添付の図面を参照しながら、非限定的な実施例により、本発明を実施するコンピュータ支援設計システムを説明する。
本発明は、設計システムのユーザが作成した1組の点から開始して、曲線を作成することを可能にする。この1組の点は、ユーザが任意のタイプのハプティックデバイス、たとえばマウス、トラックパッド、グラフィックスタブレットなどを用いて入力することができる。この1組の点に基づいて、図3〜6を参照しながら説明するように、曲線が作成される。図7〜8を参照しながら説明するように、既存の曲線を修正することもできる。
これから、図3〜6を参照しながら曲線の作成を説明する。図3に、ユーザが入力した1組の点を示す。図3の実施例では、ユーザは、ハプティックデバイスを用いて3つのストローク40、42、および44、たとえばグラフィックスタブレットのペンシルの3つのストロークを線描している。これらのストロークを図3に示し、これらのストロークの結果として1組の点が得られる。ユーザの観点からは、3つのストロークの線描は、様々なストロークを実質上通る曲線を作成するという意図を表す。設計システムの観点からは、図5のステップ102で、1組の点が作成される。この1組の点を作成するのに起動されるユーザインターフェースは、ユーザが1組の点を入力するというユーザの意図を指示することを可能にする任意の通常または特定のユーザインターフェースでよい。各点がストロークに沿って自然に順序付けられるので、システムは、各ストロークをポリラインとして処理することができる。
ステップ102で受領または作成された1組の点に基づいて、図4のステップ104で、システムは、得られる単一のポリラインを計算する。このステップを実施すること自体についての解決策は、コンピュータ線描の技術者にとって周知であり、これ以上は説明しない。このステップは、図3の実施例を参照して説明するように、単に重なりおよび不連続を処理するものでよい。図3の実施例では、ストロークは部分的に重なり合っている。したがって、第1ストローク40の右端は、第2ストローク42の左端とほぼ平行である。このことは、たとえばストローク40と42の間の距離が所与の限界未満であることを評価することによって識別することができる。この時点で、重複する点を除去することが可能である。たとえば、図3を参照すると、第1ストローク40の区間46と第2ストローク42の区間48内の各点を、点線50の各点で置き換えることができる。点線50は、重なり合う区間46および48を何らかの周知の方法(平均化など)で結合することによって得られる。ストローク42と44は重なり合っておらず、ブレンディング(blending)などの何らかの周知の好都合な方法によってその端で結合され、点線52が得られる。このことは、図3の実施例では、図5のステップ104の後に得られる単一ポリラインが5つの区間、すなわち
区間46を除くストローク40と、
点線50と、
区間48を除くストローク42と、
点線52と、
ストローク44からなることを意味する。
ユーザの入力した点によれば、ストロークの重複区間を取り消すことが不要であることがある。より一般的には、1組の点の中の重複する点を削除すること、または類似の処理は、必要なら単一ポリラインを計算するステップ104で実施することができ、またはステップ104に含めることができる。ステップ104では、平滑化処理または当業者にそれ自体周知の他の解決策を使用することもできる。
区間46を除くストローク40と、
点線50と、
区間48を除くストローク42と、
点線52と、
ストローク44からなることを意味する。
ユーザの入力した点によれば、ストロークの重複区間を取り消すことが不要であることがある。より一般的には、1組の点の中の重複する点を削除すること、または類似の処理は、必要なら単一ポリラインを計算するステップ104で実施することができ、またはステップ104に含めることができる。ステップ104では、平滑化処理または当業者にそれ自体周知の他の解決策を使用することもできる。
図3の実施例では、重なり合う不連続な3つのストロークを処理するので、ステップ102と104を別々のステップとして議論していることに留意されたい。実際には、ステップ102と104は、ユーザが単一のストロークを入力し、それがシステムで単一ポリラインとして処理される実施例では単一のステップでよい。
単一のポリラインを計算した後、プロセスは図5のステップ106に進む。ステップ106では、ポリラインに沿う曲率を計算する。ステップ108〜112で開示するように、曲率を使用して、ポリライン上でどのように分割点を見つけるかを判定する。したがって、ポリラインは各部分に切断または分割され、各部分は2つの分割点の間に延びる。以下の規則を適用することが好ましい。
曲率の任意の極値(極大値または極小値)を1つの単一部分に含めるべきである。
任意選択で、曲率の符号の変化を1つの単一部分に含めるべきである。
言い換えれば、大域的極値(global extema)または局所的極値(local extema)、ゼロ曲率点、ポリラインの一定曲率部分を制限する点などの特定の点は、隣接する各部分の間の接続点(分割点とも呼ばれる)とすべきではなく、部分内にあるべきである。こうした規則の根幹は、プロセスの次のステップで使用するフィッティング曲線が、曲率の変化がそれほど重要でないときにより良好なフィットを与えることに由来する。図4を参照しながら、ポリライン上の分割点を選択または決定するのに使用するプロセスの各ステップを説明する。図4は、ポリラインの曲線横座標sの関数としての曲率Cのグラフを示す。図4のグラフは図3の実施例に対応しないが、説明の都合上、様々な極値A0からA5を示す。具体的には、図4のグラフでは、横座標s=0、s2、およびs5が曲率の極大値に対応し、横座標s2の点が大域的極大値である。このグラフでは、横座標s1およびs4の各点が曲率の極小値(または低下(dip))に対応し、横座標s4の点が大域的極小である。横座標s3の点は、曲率が0であるという点で注目に値する。
言い換えれば、大域的極値(global extema)または局所的極値(local extema)、ゼロ曲率点、ポリラインの一定曲率部分を制限する点などの特定の点は、隣接する各部分の間の接続点(分割点とも呼ばれる)とすべきではなく、部分内にあるべきである。こうした規則の根幹は、プロセスの次のステップで使用するフィッティング曲線が、曲率の変化がそれほど重要でないときにより良好なフィットを与えることに由来する。図4を参照しながら、ポリライン上の分割点を選択または決定するのに使用するプロセスの各ステップを説明する。図4は、ポリラインの曲線横座標sの関数としての曲率Cのグラフを示す。図4のグラフは図3の実施例に対応しないが、説明の都合上、様々な極値A0からA5を示す。具体的には、図4のグラフでは、横座標s=0、s2、およびs5が曲率の極大値に対応し、横座標s2の点が大域的極大値である。このグラフでは、横座標s1およびs4の各点が曲率の極小値(または低下(dip))に対応し、横座標s4の点が大域的極小である。横座標s3の点は、曲率が0であるという点で注目に値する。
ポリラインを各部分に分割する好ましい一解決策は、曲率のグラフ中のそれぞれの特定の点について1つの部分を作成することである。この解決策は、図5のステップ108で表すように、単にまず曲率のグラフ中の特定の点を計算することで実施することができる。このことは何らかのグラフ表現を必要とするわけではなく、図4は単に説明の都合上与えたに過ぎないことを理解されたい。
特定の点を計算した後、図5のステップ110および112に表すように、2つの隣接する特定の点の間の分割点を選択する。ステップ110では、1対の隣接する特定の点について分割点を選択する。ステップ112では、プロセスが、さらに分割点が必要か否かをチェックし、特定の点の対が存在する場合、プロセスは再びステップ110に進み、そうでない場合、プロセスはステップ114に進む。2つの隣接する特定の点の間の分割点を選択する第1の解決策は、その2つの特定の点の中点の曲線横座標を有する曲線の点を選択することである。図4のグラフ中の点A1およびA2の実施例では、横座標sが(s1+s2)/2を有する曲線の点M1,2を選択することができる。この解決策は実施が容易であり、分割点が特定の点から可能な限り遠くなるように保証される。これにより、次のステップで計算するフィッティング弧の品質が向上する。2以外の比を使用することもできる。第2の解決策は、隣接する特定の点と分割点の間の曲率の積分に従って分割点を選択することからなる。この解決策は、分割点のより良好な位置が保証され、次のステップで弧のより良好なフィットが実現されるという利点を有する。その間で1つの分割点を選択しなければならない特定の点をAiおよびAi+1とし、これらの特定の点のそれぞれの横座標をsiおよびsi+1とする。説明の都合上、sil<si+1を仮定し、AiおよびAi+1が、
2つの極値(一方が極小値、他方が極大値)、または
極値(極小値または極大値)、および曲率の値が0となる点である可能性があると仮定する。
2つの極値(一方が極小値、他方が極大値)、または
極値(極小値または極大値)、および曲率の値が0となる点である可能性があると仮定する。
最初のケースでは、曲率がAiからAi+1まで増加し、その結果Aiが極小であり、Ai+1が極大であると仮定する。kMをたとえば0.1および0.5の間から選ばれる定数として、点Mi,i+1を、
となるように選択する。kMの値が小さいほど、分割点が極大に近づく。kMの値が大きいほど、分割点が極小に近づく。式(1)は、曲率が極小である点を境界として有する積分に定数kMを掛けることを条件として、Aiが極大であり、Ai+1が極小である場合にも成り立つ。
2番目のケースでは、曲率がAiからAi+1まで減少し、Aiが極大であり、Ai+1が曲率の値が0となる点であると仮定する。klをたとえば0.5および0.9の間から選ばれる定数として、Mi,i+1を、
となるように選択する。klの値が小さいほど、分割点が、曲率が0となる点に近づく。klの値が大きいほど、分割点が極値に近づく。式(2)は、曲率がAiからAi+1まで増加する場合、またはAiが曲率の値が0となる点である場合にも成り立つ。その差は、極値である点を境界として有する積分に定数klを掛けることだけである。
式(1)および(2)は、第1の特定の点Aiから分割点Mi,i+1までの曲線に沿った曲率の積分と、分割点Mi,i+1から第2の特定の点Ai+1までの曲線に沿った曲率の積分とを比較する。
前の実施例では、分割点が、隣接する特定の点の各組の間に加えられることを考慮した。これは決して必須ではない。たとえば、特定の点が互いに近過ぎる場合、隣接する特定の点の間に分割点を加えないと判断することができる。このことは、隣接する点の間の曲率の変化が非常に小さい場合も当てはまる。図5の実施例では、分割点が隣接する特定の点の各対の間に加えられると仮定した。したがって、図4に、5つの分割点M0,1、M1,2、M2,3、M3,4、およびM4,5を示す。
ステップ112の後、プロセスがステップ114に進んだとき、1組の点の外に形成されるポリラインを、分割点で定義されるいくつかの部分に分割する。曲線の終点を分割点に加えることができる。ステップ114では、各分割点を通る曲線を計算する。このことは、たとえばnurb、または分割点を通るベジエ曲線を計算することによって行うことができる。当業者にそれ自体周知のどんなタイプのアルゴリズムもこのステップで使用することができる。
次のステップ116では、曲線が各分割点を通るという制約下で、計算した曲線をステップ104で求めたポリラインにフィッティングする。フィッティングは、当技術分野でそれ自体周知のどんなアルゴリズムでも実施することができる。たとえば、計算した曲線とポリラインの間の距離を最小にすることができ、すなわち以下の和を最小にすることができる。
上式で、Njはポリラインの様々な点であり、d(Nj)は点Njと計算した曲線の間の距離である。この解決策は、計算速度が向上するという利点を有する。別の解決策は、「エネルギー」を最小にすること、すなわち以下の和を最小にすることである。
このような「エネルギー」フィットは、フィッティングが正確となるという利点を有する。ステップ114および116を図5に別々に示す。しかし、使用するアルゴリズムのタイプに応じて、両方のステップを単一のステップとして組み合わせることができる。
ステップ116でのフィッティングにより曲線が得られる。この曲線は、受け取った1組の点および得られるポリラインに基づく。曲線は、分割点を使用して計算され(ステップ114)、フィッティングされる(ステップ116)。分割点はポリライン中の特定の点から「遠い」ので、曲線は、特定の点の近傍で高い自由度でフィッティングされる。これにより、図5のプロセスで得られる曲線が特定の点の周りで1組の点の良い表現となるように保証される。本発明者が実施したテストは、特定の点がエンドユーザにとって曲線の最も重要な点であることを実際に示すことを実証している。したがって、このプロセスは、1組の点に特に良好にフィッティングされ、従来技術のシステムで熟練したユーザによって得ることのできる曲線に対応する曲線を与える。
図6は、1組の点を、図5のプロセスで作成された曲線と共に示す図である。図6の実施例では、1組の点は、ハプティックデバイスの(点線の)3つのストローク120、122、124によって定義される。曲線には126と符号を付けてある。分割点は曲線上で交差する。前述のように、分割点Mi,i+1は、曲線中の特定の点(Min,Max)から遠くにある。図6の実施例では、このプロセスは次のアルゴリズムを使用する。
1つまたは複数の組の点からの単一のポリラインの計算
kM=0.3およびkl=0.6を用いた、図5のステップ110で開示される分割点の選択
NURBSを計算するアルゴリズムを用いた、分割点を通る曲線の計算
エネルギー最小化を使用する、1組の点に対する曲線のフィッティング
曲線およびポリラインは、それらが図6に重ねられるようにフィッティングされる。このプロセスは、C++言語で書かれたコンピュータプログラムで実施される。このプログラムは、Dassault Systemesが提供するライブラリを使用する。約1000個の点を含むハプティックデバイスのストロークでは、プログラムは、次の機構を有するコンピュータ上で0.1秒未満で実行される。インテル Pentium(登録商標) 4 2GHz。得られる曲線が、曲線用のメモリ約1Kbyteを使用して格納される。1組の点は格納する必要がない。
kM=0.3およびkl=0.6を用いた、図5のステップ110で開示される分割点の選択
NURBSを計算するアルゴリズムを用いた、分割点を通る曲線の計算
エネルギー最小化を使用する、1組の点に対する曲線のフィッティング
曲線およびポリラインは、それらが図6に重ねられるようにフィッティングされる。このプロセスは、C++言語で書かれたコンピュータプログラムで実施される。このプログラムは、Dassault Systemesが提供するライブラリを使用する。約1000個の点を含むハプティックデバイスのストロークでは、プログラムは、次の機構を有するコンピュータ上で0.1秒未満で実行される。インテル Pentium(登録商標) 4 2GHz。得られる曲線が、曲線用のメモリ約1Kbyteを使用して格納される。1組の点は格納する必要がない。
図3〜6のプロセスにより、ユーザに高いレベルの技術を求めることなく、ユーザが入力する1組の点に基づいて曲線を作成することが可能となる。図7〜8を参照すると、既存の曲線を修正または変更するプロセスが記載されている。この場合も、このプロセスにより、ユーザに高いレベルの技術を求めることなく曲線を修正することが可能となる。
図7は曲線130の図である。このときコンピュータ支援設計システムのユーザが、現在実施中の設計に関連する何らかの理由で曲線130を修正したいと仮定する。従来技術の解決策では、ユーザは単に曲線を選択し、制御点のうち1つまたは複数を選択し、制御点のうち1つまたは複数を変更することになる。前述のように、このことは、下にある設計システムの操作についてある程度の技術および理解を必要とする。
提案の解決策では、ユーザに求められるのは、単にハプティックデバイスを使用して別の点を入力することだけである。したがって図7は、ユーザがそれによって曲線130を修正することを意図するハプティックデバイスの追加のストローク132を表す。この実施例では、曲線の頂点に角度が付き過ぎており、曲線がストローク132に近づくように曲線を修正することをユーザが意図していることがわかる。図7はさらに、図8のプロセスで得られる曲線134を示す。
図8は、曲線を修正するプロセスの流れ図である。図8のプロセスは、図3〜6を参照しながら開示した作成プロセスを使用することが好ましい。しかし、1組の点に基づいて曲線を作成することが可能であることを条件として、曲線を作成する他のタイプの解決策を使用することもできる。
図8のステップ140では、曲線、すなわち図7の実施例で修正すべき曲線130が与えられる。
ステップ142では、ユーザは、曲線に対して実施したい修正を表す1組の点を作成する。図5のステップ102を参照しながら説明したように、このステップでは、ユーザが1組の点を入力することを可能にする様々な装置を使用することができる。同じステップでは、ステップ104を参照しながら上記で説明したように、ポリラインを計算する。
ステップ144では、このプロセスは、ステップ140の曲線130と、ステップ142で計算したポリラインとに基づいて新しいポリラインを計算する。実際的見地から言えば、このことは、曲線130に関連するポリラインを見つけることによって行われる。以下で説明するように、このポリラインは、曲線の作成時にシステムのメモリに格納されている可能性がある。ポリラインが格納されていない場合、曲線130に基づいて新たにポリラインを計算することもできる。
このプロセスでは、曲線に与えられる重みは、ユーザが入力する点に与えられる重みと同様でよい。もちろん、初期曲線130またはユーザの入力した点に対して高い重要度または低い重要度を与えることにより、他の仮定を実施することもできる。曲線および点の相対的重要度は、ユーザ自身が設定することもできる。設計プロセスのステージに従って、曲線に対する修正をより迅速またはゆっくりにすることをユーザが望む可能性があることを理解されたい。
ステップ144で新しい1組の点を与えるために、図3を参照しながら上記で論じた解決策を使用することができる。たとえば、ポリラインの平均化、ブレンディングなどの、2つのポリラインの結合を可能にするどんなアルゴリズムも使用することができる。
ステップ146では、ステップ144で得られたポリラインを使用して新しい曲線を作成する。このステップでは、図5のプロセスを使用することができる。
ステップ146の結果は、新しいポリラインに基づいて計算した曲線である。ステップ146で得られる曲線は、曲線が要求した修正を表す。曲線は、線描アルゴリズムに特有の知識をユーザに求めることなく、かつ制御点を求めることなく修正される。
図8のプロセスは、ユーザが新しい1組の点を入力するときにいつでもon−the−lineで実施することができる。たとえば、点を入力するのに使用するハプティックデバイスがグラフィックスタブレットであると仮定する。1組の点は、グラフィックスタブレット上にペンシルの所与のストロークとして入力された様々な点からなる。言い換えれば、1組の点は、ユーザがタブレットに対してペンシルを押しつけてから、ユーザがタブレットからペンシルを離すまでの間のグラフィックスタブレット上の点からなる。第1の組の点が入力されると、たとえば図5を参照しながら説明したのと同様に、ポリラインが生成され、曲線が作成される。新しい1組の点が入力されるたび、すなわちペンシルのストロークごとに、図8を参照しながら説明するように、曲線の動的再分割により、以前の曲線が修正される。言い換えれば、図8のステップ146の後、プロセスは、ステップ148で新しい1組の点を待つ。ユーザが新しい1組の点を入力したとき、プロセスは再びステップ144に進み、新しい曲線を計算する。ステップ144、146、および148をループすることにより、ユーザは、1枚の紙に対して用いる実際の描画プロセスと同様以上のルックアンドフィールであるプロセスを使用して曲線を修正することが可能となる。以前のストロークが画面上に現れず、得られる曲線だけが表示されるからである。このプロセスにより、ユーザは、特定の技術なしに曲線を作成および修正することが可能となる。得られる結果は、従来技術のシステムで非常に熟練したユーザによって得られる結果と同様である。
図7および8を参照しながら与えた実施例では、新しいポリラインが、既存の曲線に関連するポリラインと、ユーザが入力する1組の点とに基づいて計算される。理解できるであろうが、前記新しいポリラインは、曲線と共に格納することができる。この場合、このプロセスを次に使用するとき、曲線に基づいてポリラインを再計算しなくても曲線に関連するポリラインを取り出すことができる。この解決策は、既存の曲線に基づいてポリラインを再計算する必要を回避できるという利点を有する。この解決策は、ユーザの1連のペンシルストロークに基づいて曲線を計算するのにこのプロセスを使用するときに特に有用である。各ペンシルストロークの後に、曲線および対応するポリラインを格納することができる。次いで、格納したポリラインは、ユーザが新しいストロークを入力したときに使用される。
ユーザがハプティックデバイスを使用して入力する1組の点の実施例を参照しながら上記で図7および8のプロセスを説明した。1組の点は、他の手段によって入力することもできる。たとえば、図9を参照しながら説明するように、テンプレートを使用して点を入力することができる。この図は、修正すべき曲線150を示す。この図はさらに、テンプレート、この実施例では円152を示す。この円152は、ユーザが中心154および半径を選択することによって定義することができる。テンプレート152は、曲線150を修正するための1組の点として使用される。テンプレートによって形成される1組の点を単に考慮することができる。あるいは、この1組の点を、円の各点の一部だけで形成することもできる。図9の実施例において、曲線の頂点で曲線が円152と合致するように曲線を修正することが目的である場合、1組の点に関して、図9で破線で表される扇形156の内部にある円の各点を単に考慮することができる。扇形156はユーザが選択することができる。別の解決策は、修正すべき曲線から所定の距離以内にあるテンプレート中の点である1組の点を定義することである。この解決策を使用する場合、所定の距離は固定することができ、またはユーザが選択することができる。すべての場合において、テンプレートの使用により、ユーザは、曲線が所与の形状または以前に格納した形状に合致するように曲線を修正することが可能となる。テンプレートは、所与の形状、すなわち円、直線、またはユーザが指定するその他の任意のタイプのパラメトリック形状でよい。テンプレートはまた、ユーザが格納し、または設計システムによって提供される以前にデザインした曲線などの以前に格納した形状でもよい。
本発明は、詳細な説明で与えた実施例に限定されない。ユーザがプロセスと対話することを可能にすることができる。たとえば、ユーザ自身が、1組の点に対する入力の開始および終了を定義することができる。このコンピュータ支援設計システムは、ユーザが、図5やステップ144〜148のループを有する図8などの様々なタイプの設計方法の中から選択することを可能にする。上記で開示した解決策を従来技術の解決策と組み合わせることができる。たとえば、ユーザは、1つまたは複数の制御点を使用することが可能である。したがって、曲線の満足な区間を得たとき、ユーザは、曲線の残りを修正する前に、その曲線を分割することができ、または曲線中の一部の点を固定することができる。点を入力するのにテンプレートを使用することは、図7〜9を参照しながら論じてある。この解決策はまた、図3〜6のプロセスにも当てはまる。
Claims (18)
- コンピュータで実行される曲線を作成する方法であって、
ユーザインタフェースを介してユーザから1組の点を受け取り、前記受け取った1組の点に基づいてポリラインを計算するステップと、
前記ポリラインの曲率を計算するステップと、
前記ポリライン上の特定の点を求めるステップであって、前記特定の点は曲率の極値を含むステップと、
2つの隣接する前記特定の点の間の少なくとも1つの分割点を選択するステップと、
前記分割点を通る曲線を計算するステップと、
前記曲線を前記ポリラインにフィッティングするステップであって、前記ポリラインよりも滑らかな曲線を、前記ポリラインと前記分割点を通る前記曲線とに基づいて得ることからなる、ステップとを含み、
前記各ステップはコンピュータプロセッサにより実行され、
前記分割点は、前記2つの隣接する特定の点の一方から前記分割点までの前記ポリラインの曲率の積分および、前記分割点から前記2つの隣接する特定の点の他方までの前記ポリラインの曲率の積分の相対値に従って選択される、
ことを特徴とする方法。 - 前記特定の点は、前記曲率の値が0である点を含むことを特徴とする請求項1に記載の方法。
- 前記特定の点は、前記曲率の値が一定である前記ポリラインの部分を限定する点をさらに含むことを特徴とする請求項1または2に記載の方法。
- 前記2つの隣接する特定の点の一方は、曲率の値が0である点であり、
前記分割点が、第1の所定の定数と、前記2つの隣接する特定の点の他方から前記分割点までの前記ポリラインの曲率の積分との積が、前記分割点から曲率の値が0である点までの前記ポリラインの曲率の積分と等しくなるように選択される、
ことを特徴とする請求項1に記載の方法。 - 前記第1の所定の定数の値は0.5から0.9の間であることを特徴とする請求項4に記載の方法。
- 前記2つの隣接する特定の点は、曲率の極小値および極大値であり、
前記分割点が、第2の所定の定数と、曲率の極小値から前記分割点までの前記ポリラインの曲率の積分との積が、前記分割点から曲率の極大値までの前記ポリラインの曲率の積分と等しくなるように選択される、
ことを特徴とする請求項1に記載の方法。 - 前記第2の所定の定数の値は0.1から0.5の間であることを特徴とする請求項6に記載の方法。
- コンピュータで実行される曲線を修正する方法であって、
曲線を与えるステップと、
ユーザインタフェースを介してユーザから1組の点を受け取り、ポリラインを計算するステップと、
前記曲線および前記計算したポリラインに基づいて新しいポリラインを計算するステップと、
請求項1から8のいずれか1項に記載の方法に従って、前記新しいポリラインに基づいて曲線を作成するステップと、
を含むことを特徴とする方法。 - 新しいポリラインを計算する前記ステップは、
前記曲線に関連するポリラインを取り出すステップと、
前記取り出したポリラインと前記計算したポリラインを結合するステップと、
を含むことを特徴とする請求項9に記載の方法。 - 前記曲線に関連するポリラインを取り出す前記ステップは、格納されたポリラインを取り出すステップを含むことを特徴とする請求項10に記載の方法。
- 前記曲線に関連するポリラインを取り出す前記ステップは、前記曲線に基づいてポリラインを計算するステップを含むことを特徴とする請求項10に記載の方法。
- ユーザインタフェースを介してユーザから1組の点を受け取る前記ステップは、テンプレートを受け取るステップを含むことを特徴とする請求項9から12のいずれか1項に記載の方法。
- コンピュータで実行される曲線を作成する方法であって、
ユーザがハプティックデバイスに対して入力した第1ストロークを検出するステップと、
請求項1から8のいずれか1項に記載の方法に従って、前記第1ストロークに対応する第1組の点に基づいて曲線を作成するステップと、
前記ユーザが前記ハプティックデバイスに対して入力した第2ストロークを検出するステップと、
前記作成した曲線と、前記第2ストロークに対応する第2組の点とに基づいてポリラインを計算するステップと、
請求項1から8のいずれか1項に記載の方法に従って、前記ポリラインに基づいて曲線を作成するステップとを含むことを特徴とする方法。 - 検出、計算、および作成する前記ステップが、前記ユーザが前記ハプティックデバイスに対して入力した新しいストロークごとに反復されることを特徴とする請求項14に記載の方法。
- 曲線を作成するコンピュータプログラムであって、
ユーザインタフェースを介してユーザから1組の点を受け取り、前記受け取った1組の点に基づいてポリラインを計算するルーチンと、
前記ポリラインの曲率を計算するルーチンと、
前記ポリライン上の特定の点を求めるルーチンであって、前記特定の点は曲率の極値を含むルーチンと、
2つの隣接する前記特定の点の間の少なくとも1つの分割点を選択するルーチンと、
前記分割点を通る曲線を計算するルーチンと、
前記曲線を前記ポリラインにフィッティングするルーチンであって、前記ポリラインよりも滑らかな曲線を、前記ポリラインと前記分割点を通る前記曲線とに基づいて得ることからなる、ルーチンとを含み、
前記各ルーチンはコンピュータプロセッサにより実行され、
前記分割点は、前記2つの隣接する特定の点の一方から前記分割点までの前記ポリラインの曲率の積分および、前記分割点から前記2つの隣接する特定の点の他方までの前記ポリラインの曲率の積分の相対値に従って選択される、
ことを含むことを特徴とするコンピュータプログラム。 - 曲線を修正するコンピュータプログラムであって、
曲線を与えるルーチンと、
ユーザインタフェースを介してユーザから1組の点を受け取り、ポリラインを計算するルーチンと、
前記曲線および前記計算したポリラインに基づいて新しいポリラインを計算するルーチンと、
請求項16に記載のプログラムを使用して、前記新しいポリラインに基づいて曲線を作成するルーチンと、
を含むことを特徴とするコンピュータプログラム。 - 曲線を作成するコンピュータプログラムであって、
ユーザがハプティックデバイスに対して入力した第1ストロークを検出するルーチンと、
請求項16に記載のプログラムを使用して、前記第1ストロークに対応する第1組の点に基づいて曲線を作成するルーチンと、
前記ユーザが前記ハプティックデバイスに対して入力した第2ストロークを検出するルーチンと、
前記作成した曲線と、前記第2ストロークに対応する第2組の点とに基づいてポリラインを計算するルーチンと、
請求項16に記載のプログラムに従って、前記ポリラインに基づいて曲線を作成するルーチンと、
を含むことを特徴とするコンピュータプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04290321A EP1562138B1 (en) | 2004-02-06 | 2004-02-06 | A process for drafting a curve in a computer-aided design system |
EP04290321.1 | 2004-02-06 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2005222554A JP2005222554A (ja) | 2005-08-18 |
JP4451327B2 JP4451327B2 (ja) | 2010-04-14 |
JP4451327B6 true JP4451327B6 (ja) | 2010-07-21 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100823900B1 (ko) | 컴퓨터-지원 설계 시스템에서 곡선을 드래프팅하는 프로세스 | |
US5731820A (en) | Curve-length approximation apparatus and method | |
Tai et al. | Prototype modeling from sketched silhouettes based on convolution surfaces | |
Nealen et al. | A sketch-based interface for detail-preserving mesh editing | |
Wang et al. | Feature based 3D garment design through 2D sketches | |
US6639592B1 (en) | Curve network modeling | |
US8736605B2 (en) | Method and apparatus for constraint-based texture generation | |
US8345044B2 (en) | Indirect binding with segmented thin layers to provide shape-preserving deformations in computer animation | |
US20070152999A1 (en) | Computational Geometry Using Control Geometry Having At Least Two Dimensions | |
US20070229544A1 (en) | Nurbs surface deformation apparatus and the method using 3d target curve | |
KR101867991B1 (ko) | 다관절 오브젝트의 모션 에디팅 방법 및 장치 | |
JP2818388B2 (ja) | モデルの表面形成のためのデータ処理システム及び方法 | |
JPH11120348A (ja) | 曲線平滑化 | |
Angelidis et al. | Sweepers: Swept user-defined tools for modeling by deformation | |
Bobenrieth et al. | Descriptive: Interactive 3D shape modeling from a single descriptive sketch | |
Santos et al. | Integration of CAD Models into Game Engines. | |
JP4451327B6 (ja) | コンピュータ支援設計システムで曲線を線描する方法 | |
Bock et al. | Generation of high-order polynomial patches from scattered data | |
US20060170676A1 (en) | Representing a 3D object with a PDE surface patch | |
Araújo et al. | As-locally-uniform-as-possible reshaping of vector clip-art | |
EP1562130A1 (en) | A process for modifying a curve in a computer-aided design system | |
US20060170688A1 (en) | Time-dependent animation of a 3D object | |
JP2004054584A (ja) | 線属性の自動付加方法及び装置 | |
Fu et al. | Haptic 3D mesh painting based on dynamic subdivision | |
Choi et al. | Free hand stroke based virtual sketching, deformation and sculpting of NURBS surface |