(57)【要約】【課題】  設計システムのユーザに高いレベルの技術を求めることなく、ユーザが曲線を線描および修正することを可能にすること。【解決手段】  コンピュータ支援設計システムで、ユーザが入力した１組の点に基づいて曲線が作成される。ポリラインが計算され、前記ポリラインに層曲率包絡線が計算され、曲率の極値である、ポリライン上の特定の点（Ａ０、Ａ１、Ａ２、Ａ３、Ａ４、Ａ５）が求められる。特定の点の対の間で分割点（Ｍ０，１、Ｍ１，２、Ｍ２，３、Ｍ３，４、Ｍ４，５）が選択される。特定の分割点を通る曲線が計算され、ポリラインにフィッティングされる。この方法は、１組の点に良くフィットする曲線を提供し、ユーザに高い技術を要求しない。【選択図】  図４
2005222554.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実行される曲線を作成する方法であって、
１組の点を受け取り（１０２）、前記受け取った１組の点に基づいてポリラインを計算する（１０４）ステップと、
前記ポリラインに沿って曲率を計算するステップと、
前記ポリライン上の特定の点（Ａ０、Ａ１、Ａ２、Ａ３、Ａ４、Ａ５）を求めるステップ（１０８）であって、前記特定の点は曲率の極値を含むステップと、
前記特定の点から離れている前記ポリライン上の少なくとも１つの分割点（Ｍ０，１、Ｍ１，２、Ｍ２，３、Ｍ３，４、Ｍ４，５）を求めるステップ（１１０、１１２）と、
前記分割点を通る曲線を計算するステップ（１１４）と、
前記曲線を前記ポリラインにフィッティングするステップ（１１６）とを含むことを特徴とする方法。
【請求項２】
前記特定の点は、前記曲率の値が０である点を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記特定の点は、前記曲率の値が一定である前記ポリラインの部分を限定する点をさらに含むことを特徴とする請求項１または２に記載の方法。
【請求項４】
求める前記ステップは、２つの隣接する特定の点の間の１つの分割点を選択するステップを含むことを特徴とする請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記分割点が、
前記２つの隣接する特定の点の一方から前記分割点までの前記ポリラインに沿った前記曲率の積分および、
前記分割点から、前記２つの隣接する特定の点の他方までの前記ポリラインに前記曲率の積分の相対値に従って選択されることを特徴とする請求項４に記載の方法。
【請求項６】
前記２つの隣接する特定の点の一方は、曲率の値が０である点であり、前記分割点が、
第１の所定の定数と、前記２つの隣接する特定の点の他方から前記分割点までの前記曲線に沿った前記曲率の積分との積が、
前記分割点から、曲率の値が０である点までの前記曲線に沿った前記曲率の積分と等しくなるように選択されることを特徴とする請求項５に記載の方法。
【請求項７】
前記第１所定の定数の値は０．５から０．９の間であることを特徴とする請求項６に記載の方法。
【請求項８】
前記２つの隣接する特定の点は、曲率の極小値および極大値であり、前記分割点が、
第２の所定の定数と、曲率の極小から前記分割点までの前記曲線に沿った前記曲率の積分との積が、
前記分割点から曲率の極大までの前記曲線に沿った前記曲率の積分と等しくなるように選択されることを特徴とする請求項５に記載の方法。
【請求項９】
前記第２所定の定数の値は０．１から０．５の間であることを特徴とする請求項８に記載の方法。
【請求項１０】
フィッティングする前記ステップ（１１６）は、前記曲線のエネルギーを最小にするステップを含むことを特徴とする請求項１から９のいずれか１項に記載の方法。
【請求項１１】
コンピュータで実行される曲線を修正する方法であって、
曲線を与えるステップ（１４０）と、
１組の点を受け取り（１４２）、ポリラインを計算するステップと、
前記曲線および前記計算したポリラインに基づいて新しいポリラインを計算するステップ（１４４）と、
請求項１から１０のいずれか１項に記載の方法に従って、前記新しいポリラインに基づいて曲線を作成するステップ（１４６）とを含むことを特徴とする方法。
【請求項１２】
新しいポリラインを計算する前記ステップは、
前記曲線に関連するポリラインを取り出すステップと、
前記取り出したポリラインと前記計算したポリラインを結合するステップとを含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記曲線に関連するポリラインを取り出す前記ステップは、格納されたポリラインを取り出すステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記曲線に関連するポリラインを取り出す前記ステップは、前記曲線に基づいてポリラインを計算するステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１５】
１組の点を受け取る前記ステップ（１４２）は、テンプレート（１５２）を受け取るステップを含むことを特徴とする請求項１１から１４のいずれか１項に記載の方法。
【請求項１６】
コンピュータで実行される曲線を作成する方法であって、
ユーザがハプティックデバイスに対して入力した第１ストロークを検出するステップと、
請求項１から１０のいずれか１項に記載の方法に従って、前記第１ストロークに対応する第１組の点に基づいて曲線を作成するステップと、
前記ユーザが前記ハプティックデバイスに対して入力した第２ストロークを検出するステップと、
前記作成した曲線と、前記第２ストロークに対応する第２組の点とに基づいてポリラインを計算するステップ（１４４）と、
請求項１から１０のいずれか１項に記載の方法に従って、前記ポリラインに基づいて曲線を作成するステップ（１４６）とを含むことを特徴とする方法。
【請求項１７】
検出、計算、および作成する前記ステップが、前記ユーザが前記ハプティックデバイスに対して入力した新しいストロークごとに反復されることを特徴とする請求項１６に記載の方法。
【請求項１８】
曲線を作成するコンピュータプログラムであって、
１組の点を受け取り（１０２）、前記受け取った１組の点に基づいてポリラインを計算する（１０４）ルーチンと、
前記ポリラインに沿って曲率を計算するルーチンと、
前記ポリライン上の特定の点（Ａ０、Ａ１、Ａ２、Ａ３、Ａ４、Ａ５）を求める（１０８）ルーチンであって、前記特定の点は曲率の極値を含むルーチンと、
前記特定の点から離れている前記ポリライン上の少なくとも１つの分割点（Ｍ０，１、Ｍ１，２、Ｍ２，３、Ｍ３，４、Ｍ４，５）を求める（１１０、１１２）ルーチンと、
前記分割点を通る曲線を計算する（１１４）ルーチンと、
前記曲線を前記ポリラインにフィッティングする（１１６）ルーチンとを含むことを特徴とするコンピュータプログラム。
【請求項１９】
曲線を修正するコンピュータプログラムであって、
曲線を与える（１４０）ルーチンと、
１組の点を受け取り（１４２）、ポリラインを計算するルーチンと、
前記曲線および前記計算したポリラインに基づいて新しいポリラインを計算する（１４４）ルーチンと、
請求項１８に記載のプログラムを使用して、前記新しいポリラインに基づいて曲線を作成する（１４６）ルーチンとを含むことを特徴とするコンピュータプログラム。
【請求項２０】
曲線を作成するコンピュータプログラムであって、
ユーザがハプティックデバイスに対して入力した第１ストロークを検出するルーチンと、
請求項１８に記載のプログラムを使用して、前記第１ストロークに対応する第１組の点に基づいて曲線を作成するルーチンと、
前記ユーザが前記ハプティックデバイスに対して入力した第２ストロークを検出するルーチンと、
前記作成した曲線と、前記第２ストロークに対応する第２組の点とに基づいてポリラインを計算する（１４４）ルーチンと、
請求項１８に記載のプログラムに従って、前記ポリラインに基づいて曲線を作成する（１４６）ルーチンとを含むことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムおよびシステムの分野に関し、より詳細には、部品設計プログラムおよびシステムに関する。
【背景技術】
【０００２】
部品または部品のアセンブリの設計のために、出願人がＣＡＴＩＡという商標の下で提供しているものなど、いくつかのシステムおよびプログラムが市場で提供されている。こうしたいわゆるコンピュータ支援設計（ＣＡＤ）システムは、部品または部品のアセンブリの複雑な３次元（３Ｄ）モデルをユーザが構築および操作することを可能にする。アセンブリのモデルを作成するのにいくつかの異なるモデリング技法を使用することができる。こうした技法には、ソリッドモデリング、ワイヤフレームモデリング、およびサーフェスモデリングが含まれる。ソリッドモデリング技法はトポロジカル３Ｄモデルを提供する。トポロジカル３Ｄモデルでは、３Ｄモデルは、たとえば相互接続された縁および面である。幾何学的には、３Ｄソリッドモデルは、閉じたスキンを画定する、トリミングまたは再トリミングされた面の集合である。トリミングされた表面は、縁によって境界を画されたトポロジカル面に対応する。閉じたスキンは、部品の材料で満たされた３Ｄ空間の有界領域を画定する。一方ワイヤフレームモデリング技法は、モデルを単純な３Ｄ線の集合として表すのに使用することができ、サーフェスモデリングは、外面の集合としてモデルを表すのに使用することができる。ＣＡＤシステムは、こうしたモデリング技法、またはパラメトリックモデリング技法などのその他のモデリング技法を組み合わせることができる。したがってＣＡＤシステムは、縁または線を、ある場合には面と共に使用して、モデリングされるオブジェクトの表現を提供することができる。モデリングされるオブジェクトは、いくつかの線または縁を含む。これらを、様々な方式、たとえば非一様有理Ｂスプライン（ｎｕｒｂｓ）、ベジエ曲線、または曲線を記述するその他のアルゴリズムで表すことができる。この説明の以下の部分では、「曲線」という語を、パラメータによって定義され、場合によっては限られた数の制御点によって定義される曲線である数学的曲線を述べるのに使用する。「ポリライン」という語を、設計システムでの空間的に順序付けられた１組の点を述べるのに使用する。ポリラインは、線または縁中のすべての点を含む。たとえば、点Ａから点Ｂに延びる線分の例を考慮する。この曲線は、点ＡおよびＢと、曲線が、これらの点によって限定される点ＡおよびＢを通る直線の一部であることとによって定義される。一方、線分に対応するポリラインは、点ＡおよびＢと、ＡからＢへの線分のすべての点とからなる。ポリラインは、各点がＡからＢに、またはＢからＡに順序付けられるという意味で順序付けられる。
【０００３】
設計システムの一機能は、ユーザがマウス、トラックパッド、グラフィックスタブレットなどのハプティックデバイス（ｈａｐｔｉｃ  ｄｅｖｉｃｅ）を使用して曲線を作成または修正できることである。別の機能は、ユーザが隣接する曲線を接続できることである。特に、設計システムにおける曲線、特に曲線間の接続点では、曲線の位置、導関数すなわち正接、２次導関数すなわち曲率、または高次導関数に関する制約が存在する可能性がある。
【０００４】
既存のシステムは、曲線を線描または修正することについて高いレベルの経験をユーザに要求する。たとえば、Ａｌｉａｓ（登録商標）のＡｌｉａｓＳｔｕｄｉｏＴｏｏｌｓ（登録商標）、ＩＣＥＭのＩＣＥＭ  Ｓｕｒｆ、Ｄａｓｓａｕｌｔ  ＳｙｓｔｅｍｓのＣＡＴＩＡ（登録商標）などの従来技術のシステムでは、曲線が、ユーザによって選択されるいくつかの制御点に基づいて定義される。ユーザはまた、制御点での位置、正接、曲率の値など、制御点に制約を関連付けることができる。曲線を作成することは、ユーザが様々な制御点を選択することを必要とし、必要なら、関連する制約を選択することを必要とする。制御点を選択することは、高いレベルの経験をユーザに要求する。得られる曲線は点の選択に密接に依存するからである。得られる曲線の制御点に対する依存性は、設計システムによっても変化する。さらに、制御点を曲線自体の上に配置することができず、局所的な修正を所望の精度で調整することが極めて難しくなる。
【０００５】
加えて、分割点（ｓｅｇｍｅｎｔｉｎｇ  ｐｏｉｎｔ）で接続される様々な曲線で形成される曲線を、分割することができる。大域的曲線（ｇｌｏｂａｌ  ｃｕｒｖｅ）の分割もまた、高いレベルの技術をユーザに要求する。得られる大域的曲線が後で修正される場合は特に、分割点の適切な選択が、この大域的曲線に影響を及ぼすからである。以下の説明では、理解しやすいように、曲線の部分に対して「弧」という語を使用する。言い換えれば、分割された曲線はいくつかの弧で形成される。しかし、このような「弧」はやはり曲線であり、「弧」という語は単に、分割された曲線と、分割された曲線を形成する様々な曲線すなわち弧との混乱を避けるために使用するものである。曲線の分割により、たとえば局所的細部（ｌｏｃａｌ  ｄｅｔａｉｌ）の記述が可能となる。既存の設計システムでは、ユーザは曲線中の分割点の存在に気付かないことがある。たとえばｎｕｒｂの場合、曲線は、分割点の間に延びる、それぞれがベジエ曲線で表される様々な弧で形成することができる。ユーザは、曲線の終点だけを認識し、中間の分割点は認識しない。
【０００６】
既存の曲線を修正する場合、ユーザは、制御点またはそれに関連する制約に対して作用を及ぼす。しかし、既存の曲線を変更する場合、ユーザは、必要な結果を達成するためには、制御点のうちのいくつか、またはすべての制御点を修正しなければならない。ユーザが制御点またはそれに関連する制約を変更するときはいつでも、設計システムは曲線を再度計算する。
【０００７】
こうした問題が、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｗｏｒｄで作成されたイメージのケースで図１に例示されている。この単純な実施例では、制御点はどんな値とも関連付けられていない。この図には楕円体２が示されており、楕円体２は９個の制御点で定義される。この楕円体は曲線の一例であり、この場合はたまたま閉曲線である。制御点４、６、８、および１０は、楕円体を含み、各辺が楕円体の長軸および短軸にそれぞれ平行な長方形のそれぞれの隅に位置する。制御点４、６、８、および１０は、反対側の制御点を中心とする比例変換として楕円体を拡大および縮小するのに使用することができる。制御点１２、１４、１６、および１８は長方形の各辺の中点に位置し、長方形の各辺に平行な方向に楕円体を延長または短縮するのに使用される。最後の制御点２０は、楕円体のほぼ中央に位置する回転中心の周りに楕円体を回転するのに使用される。図１にはさらに、修正後の楕円体２２が示されている。図が見やすいように、修正後の楕円体の制御点は省略してある。楕円体２を楕円体２２に変更するには、楕円体２を延長し、延長した楕円体のサイズを拡大し、次いで拡大した楕円体を回転するために少なくとも３つの制御点に作用を及ぼすことが必要である。所与の結果を達成するために制御点を選択することは、この単純な実施例でさえ、制御点の操作を完全に理解していることが必要である。
【０００８】
ＡＬＩＡＳ（登録商標）社は、たとえば商標ＭＡＹＡ  ５の下で、ユーザがグラフィックスタブレットを使用して曲線を線描することができる設計システムを提供している。タブレットのペンシルの各ストロークについて、曲線が、関連する制御点と共に生成される。既存の曲線を修正する場合、ユーザは曲線の制御点に作用を及ぼす。
【０００９】
曲線接続品質のリアルタイム分析および表示のための方法およびシステムが開示されている（たとえば、特許文献１参照。）。この出願で対処される問題は、曲線の品質である。この出願は、曲率包絡線（ｃｕｒｖａｔｕｒｅ  ｅｎｖｅｌｏｐｅ）とも呼ばれる、曲線横座標（ｃｕｒｖｉｌｉｎｅａｒ  ａｂｓｃｉｓｓａ）に対する曲線の２次導関数の「コーム（ｃｏｍｂ）」表現の使用について論じている。曲率包絡線は、曲線の形状の表現である。１組の直交座標（ｘ，ｙ）では、２次導関数はベクトルであり、その座標は、
【００１０】
【数１】
2005222554.tif 000003
【００１１】
ただしｓは曲線横座標である。曲率Ｃは、このベクトルのノルムを指定する。もちろん、当業者には周知のように、この定義は、一般に他のタイプの座標にも当てはまる。
【００１２】
図２に、曲線３０の２次導関数、言い換えれば曲線３０の曲率に関するそのようなコームの一例を示す。２次導関数の値（加速度に等しい）は曲線に沿って計算される。曲線に沿って、正接ベクトルおよび法線ベクトルも計算される。法線ベクトルは、正接ベクトルと加速度ベクトルのベクトル積である。
【００１３】
【数２】
2005222554.tif 000004
【００１４】
次いで、法線ベクトルと正接ベクトルのベクトル積を計算し、長さ１を有し、曲線３０と直交するベクトル３２を得る。
【００１５】
【数３】
2005222554.tif 000005
【００１６】
図２では、「コーム」３６が、曲線に沿った各点から生じるいくつかのベクトルとして表されている。図２では、点Ａについて、ベクトル
【００１７】
【数４】
2005222554.tif 000006
３２と、その長さが点Ａでの曲率を表す計算後ベクトル３４とが示されている。最も単純なケースでは（スケール１）、ベクトル３４は曲率Ｃとベクトル
【００１８】
【数５】
2005222554.tif 000007
【００１９】
との積である。
【００２０】
曲線３０のすべての点についての計算後ベクトル３４の端を結ぶ曲線３６（包絡線とも呼ばれる）は２次導関数を表し、２次導関数のグラフ表現をユーザに与える。たとえば、包絡線３６は、２次導関数の値が０となる点で曲線３０と交差し、そのような交点は、曲線３０の曲率（２次導関数の符号）の変化を表す。図２の実施例は２次導関数を示しているが、「コーム」表現は、高次導関数に対しても使用することができる。「コーム」表現は曲線接続品質を評価するのに使用されている（たとえば、特許文献１参照。）。
【００２１】
【特許文献１】欧州特許出願公開第２７４，０４５号明細書
【発明の開示】
【発明が解決しようとする課題】
【００２２】
設計システムのユーザに高いレベルの技術を求めることなく、ユーザが曲線を線描および修正することを可能にする解決策が求められている。この解決策がユーザフレンドリであり、ユーザが容易に理解および実施できることが理想的である。
【課題を解決するための手段】
【００２３】
本発明によれば、曲線を作成するための、コンピュータで実施される方法であって、
１組の点を受け取り、受け取った１組の点に基づいてポリラインを計算するステップと、
ポリラインに沿って曲率を計算するステップと、
ポリライン上の特定の点を求めるステップであって、その特定の点は曲率の極値を含むステップと、
その特定の点から離れているポリライン上の少なくとも１つの分割点を求めるステップと、
分割点を通る曲線を計算するステップと、
曲線をポリラインにフィッティングするステップとを含む方法が提供される。
【００２４】
一実施形態によれば、特定の点は、曲率の値が０である点を含み、曲率の値が一定であるポリラインの部分を限定する点をさらに含む。
【００２５】
一実施形態によれば、求めるステップは、２つの隣接する特定の点の間の１つの分割点を選択するステップを含む。
【００２６】
特定の実施形態によれば、分割点が、
前記２つの隣接する特定の点の一方から分割点までのポリラインに沿った曲率の積分と、
分割点から、２つの隣接する特定の点の他方までのポリラインに曲率の積分の相対値に従って選択される。
【００２７】
一実施形態によれば、２つの隣接する特定の点の一方は、曲率の値が０である点であり、分割点が、
第１の所定の定数と、前記２つの隣接する特定の点の他方から分割点までの曲線に沿った曲率の積分との積が、
分割点から、曲率の値が０である点までの曲線に沿った曲率の積分とが等しくなるように選択される。
【００２８】
たとえば、前記第１の所定の定数の値は０．５から０．９の間である。
【００２９】
別の実施形態によれば、２つの隣接する特定の点は、曲率の極小値および極大値であり、分割点が、
第２の所定の定数と、曲率の極小から分割点までの曲線に沿った曲率の積分との積が、
分割点から曲率の極大までの曲線に沿った曲率の積分と等しくなるように選択される。たとえば、前記第２所定の定数の値は０．１から０．５の間である。
【００３０】
一実施形態によれば、フィッティングするステップは、曲線のエネルギーを最小にするステップを含む。
【００３１】
本発明はまた、曲線を修正するための、コンピュータで実施される方法であって、
曲線を与えるステップと、
１組の点を受け取り、ポリラインを計算するステップと、
曲線および計算したポリラインに基づいて新しいポリラインを計算するステップと、
本発明の作成方法に従って、新しいポリラインに基づいて曲線を作成するステップとを含む。
【００３２】
一実施形態によれば、新しいポリラインを計算するステップは、
曲線に関連するポリラインを取り出すステップと、
取り出したポリラインと計算したポリラインを結合するステップとを含む。
【００３３】
一実施形態によれば、曲線に関連するポリラインを取り出すステップは、格納されたポリラインを取り出すステップを含む。
【００３４】
別の実施形態によれば、曲線に関連するポリラインを取り出すステップは、曲線に基づいてポリラインを計算するステップを含む。
【００３５】
特定の実施形態によれば、１組の点を受け取るステップは、テンプレートを受け取るステップを含む。
【００３６】
本発明はさらに、曲線を作成するための、コンピュータで実施される方法であって、
ユーザがハプティックデバイスに対して入力した第１ストロークを検出するステップと、
本発明の方法に従って、前記第１ストロークに対応する第１組の点に基づいて曲線を作成するステップと、
ユーザがハプティックデバイスに対して入力した第２ストロークを検出するステップと、
作成した曲線と、前記第２ストロークに対応する第２組の点とに基づいてポリラインを計算するステップと、
本発明の作成方法に従って、ポリラインに基づいて曲線を作成するステップとを含む方法を提案する。
【００３７】
必要なら、検出、計算、および作成するステップが、ユーザがハプティックデバイスに対して入力した新しいストロークごとに反復される。
【００３８】
本発明はまた、曲線を作成するコンピュータプログラムであって、
１組の点を受け取り、受け取った１組の点に基づいてポリラインを計算するルーチンと、
ポリラインに沿って曲率を計算するルーチンと、
ポリライン上の特定の点を求めるルーチンであって、その特定の点は曲率の極値を含むルーチンと、
特定の点から離れているポリライン上の少なくとも１つの分割点を求めるルーチンと、
分割点を通る曲線を計算するルーチンと、
曲線をポリラインにフィッティングするルーチンとを含むコンピュータプログラムを提案する。
【００３９】
本発明はさらに、曲線を修正するコンピュータプログラムであって、
曲線を与えるルーチンと、
１組の点を受け取り、ポリラインを計算するルーチンと、
曲線および計算したポリラインに基づいて新しいポリラインを計算するルーチンと、
本発明による曲線を作成するプログラムを使用して、新しいポリラインに基づいて曲線を作成するルーチンとを含むコンピュータプログラムを提供する。
【００４０】
本発明はまた、曲線を作成するコンピュータプログラムであって、
ユーザがハプティックデバイスに対して入力した第１ストロークを検出するルーチンと、
本発明のプログラム方法を使用して、第１ストロークに対応する第１組の点に基づいて曲線を作成するルーチンと、
ユーザがハプティックデバイスに対して入力した第２ストロークを検出するルーチンと、
作成した曲線と、前記第２ストロークに対応する第２組の点とに基づいてポリラインを計算するルーチンと、
本発明による作成プログラムに従って、ポリラインに基づいて曲線を作成するルーチンとを含むコンピュータプログラムを提案する。
【００４１】
次に、添付の図面を参照しながら、非限定的な実施例により、本発明を実施するコンピュータ支援設計システムを説明する。
【発明を実施するための最良の形態】
【００４２】
本発明は、設計システムのユーザが作成した１組の点から開始して、曲線を作成することを可能にする。この１組の点は、ユーザが任意のタイプのハプティックデバイス、たとえばマウス、トラックパッド、グラフィックスタブレットなどを用いて入力することができる。この１組の点に基づいて、図３〜６を参照しながら説明するように、曲線が作成される。図７〜８を参照しながら説明するように、既存の曲線を修正することもできる。
【００４３】
これから、図３〜６を参照しながら曲線の作成を説明する。図３に、ユーザが入力した１組の点を示す。図３の実施例では、ユーザは、ハプティックデバイスを用いて３つのストローク４０、４２、および４４、たとえばグラフィックスタブレットのペンシルの３つのストロークを線描している。これらのストロークを図３に示し、これらのストロークの結果として１組の点が得られる。ユーザの観点からは、３つのストロークの線描は、様々なストロークを実質上通る曲線を作成するという意図を表す。設計システムの観点からは、図５のステップ１０２で、１組の点が作成される。この１組の点を作成するのに起動されるユーザインターフェースは、ユーザが１組の点を入力するというユーザの意図を指示することを可能にする任意の通常または特定のユーザインターフェースでよい。各点がストロークに沿って自然に順序付けられるので、システムは、各ストロークをポリラインとして処理することができる。
【００４４】
ステップ１０２で受領または作成された１組の点に基づいて、図４のステップ１０４で、システムは、得られる単一のポリラインを計算する。このステップを実施すること自体についての解決策は、コンピュータ線描の技術者にとって周知であり、これ以上は説明しない。このステップは、図３の実施例を参照して説明するように、単に重なりおよび不連続を処理するものでよい。図３の実施例では、ストロークは部分的に重なり合っている。したがって、第１ストローク４０の右端は、第２ストローク４２の左端とほぼ平行である。このことは、たとえばストローク４０と４２の間の距離が所与の限界未満であることを評価することによって識別することができる。この時点で、重複する点を除去することが可能である。たとえば、図３を参照すると、第１ストローク４０の区間４６と第２ストローク４２の区間４８内の各点を、点線５０の各点で置き換えることができる。点線５０は、重なり合う区間４６および４８を何らかの周知の方法（平均化など）で結合することによって得られる。ストローク４２と４４は重なり合っておらず、ブレンディング（ｂｌｅｎｄｉｎｇ）などの何らかの周知の好都合な方法によってその端で結合され、点線５２が得られる。このことは、図３の実施例では、図５のステップ１０４の後に得られる単一ポリラインが５つの区間、すなわち
区間４６を除くストローク４０と、
点線５０と、
区間４８を除くストローク４２と、
点線５２と、
ストローク４４からなることを意味する。
ユーザの入力した点によれば、ストロークの重複区間を取り消すことが不要であることがある。より一般的には、１組の点の中の重複する点を削除すること、または類似の処理は、必要なら単一ポリラインを計算するステップ１０４で実施することができ、またはステップ１０４に含めることができる。ステップ１０４では、平滑化処理または当業者にそれ自体周知の他の解決策を使用することもできる。
【００４５】
図３の実施例では、重なり合う不連続な３つのストロークを処理するので、ステップ１０２と１０４を別々のステップとして議論していることに留意されたい。実際には、ステップ１０２と１０４は、ユーザが単一のストロークを入力し、それがシステムで単一ポリラインとして処理される実施例では単一のステップでよい。
【００４６】
単一のポリラインを計算した後、プロセスは図５のステップ１０６に進む。ステップ１０６では、ポリラインに沿う曲率を計算する。ステップ１０８〜１１２で開示するように、曲率を使用して、ポリライン上でどのように分割点を見つけるかを判定する。したがって、ポリラインは各部分に切断または分割され、各部分は２つの分割点の間に延びる。以下の規則を適用することが好ましい。
【００４７】
曲率の任意の極値（極大値または極小値）を１つの単一部分に含めるべきである。
【００４８】
任意選択で、曲率の符号の変化を１つの単一部分に含めるべきである。
言い換えれば、大域的極値（ｇｌｏｂａｌ  ｅｘｔｅｍａ）または局所的極値（ｌｏｃａｌ  ｅｘｔｅｍａ）、ゼロ曲率点、ポリラインの一定曲率部分を制限する点などの特定の点は、隣接する各部分の間の接続点（分割点とも呼ばれる）とすべきではなく、部分内にあるべきである。こうした規則の根幹は、プロセスの次のステップで使用するフィッティング曲線が、曲率の変化がそれほど重要でないときにより良好なフィットを与えることに由来する。図４を参照しながら、ポリライン上の分割点を選択または決定するのに使用するプロセスの各ステップを説明する。図４は、ポリラインの曲線横座標ｓの関数としての曲率Ｃのグラフを示す。図４のグラフは図３の実施例に対応しないが、説明の都合上、様々な極値Ａ０からＡ５を示す。具体的には、図４のグラフでは、横座標ｓ＝０、ｓ２、およびｓ５が曲率の極大値に対応し、横座標ｓ２の点が大域的極大値である。このグラフでは、横座標ｓ１およびｓ４の各点が曲率の極小値（または低下（ｄｉｐ））に対応し、横座標ｓ４の点が大域的極小である。横座標ｓ３の点は、曲率が０であるという点で注目に値する。
【００４９】
ポリラインを各部分に分割する好ましい一解決策は、曲率のグラフ中のそれぞれの特定の点について１つの部分を作成することである。この解決策は、図５のステップ１０８で表すように、単にまず曲率のグラフ中の特定の点を計算することで実施することができる。このことは何らかのグラフ表現を必要とするわけではなく、図４は単に説明の都合上与えたに過ぎないことを理解されたい。
【００５０】
特定の点を計算した後、図５のステップ１１０および１１２に表すように、２つの隣接する特定の点の間の分割点を選択する。ステップ１１０では、１対の隣接する特定の点について分割点を選択する。ステップ１１２では、プロセスが、さらに分割点が必要か否かをチェックし、特定の点の対が存在する場合、プロセスは再びステップ１１０に進み、そうでない場合、プロセスはステップ１１４に進む。２つの隣接する特定の点の間の分割点を選択する第１の解決策は、その２つの特定の点の中点の曲線横座標を有する曲線の点を選択することである。図４のグラフ中の点Ａ１およびＡ２の実施例では、横座標ｓが（ｓ１＋ｓ２）／２を有する曲線の点Ｍ１，２を選択することができる。この解決策は実施が容易であり、分割点が特定の点から可能な限り遠くなるように保証される。これにより、次のステップで計算するフィッティング弧の品質が向上する。２以外の比を使用することもできる。第２の解決策は、隣接する特定の点と分割点の間の曲率の積分に従って分割点を選択することからなる。この解決策は、分割点のより良好な位置が保証され、次のステップで弧のより良好なフィットが実現されるという利点を有する。その間で１つの分割点を選択しなければならない特定の点をＡｉおよびＡｉ＋１とし、これらの特定の点のそれぞれの横座標をｓｉおよびｓｉ＋１とする。説明の都合上、ｓｉｌ＜ｓｉ＋１を仮定し、ＡｉおよびＡｉ＋１が、
２つの極値（一方が極小値、他方が極大値）、または
極値（極小値または極大値）、および曲率の値が０となる点である可能性があると仮定する。
【００５１】
最初のケースでは、曲率がＡｉからＡｉ＋１まで増加し、その結果Ａｉが極小であり、Ａｉ＋１が極大であると仮定する。ｋＭをたとえば０．１および０．５の間から選ばれる定数として、点Ｍｉ，ｉ＋１を、
【００５２】
【数６】
2005222554.tif 000008
【００５３】
となるように選択する。ｋＭの値が小さいほど、分割点が極大に近づく。ｋＭの値が大きいほど、分割点が極小に近づく。式（１）は、曲率が極小である点を境界として有する積分に定数ｋＭを掛けることを条件として、Ａｉが極大であり、Ａｉ＋１が極小である場合にも成り立つ。
【００５４】
２番目のケースでは、曲率がＡｉからＡｉ＋１まで減少し、Ａｉが極大であり、Ａｉ＋１が曲率の値が０となる点であると仮定する。ｋｌをたとえば０．５および０．９の間から選ばれる定数として、Ｍｉ，ｉ＋１を、
【００５５】
【数７】
2005222554.tif 000009
【００５６】
となるように選択する。ｋｌの値が小さいほど、分割点が、曲率が０となる点に近づく。ｋｌの値が大きいほど、分割点が極値に近づく。式（２）は、曲率がＡｉからＡｉ＋１まで増加する場合、またはＡｉが曲率の値が０となる点である場合にも成り立つ。その差は、極値である点を境界として有する積分に定数ｋｌを掛けることだけである。
【００５７】
式（１）および（２）は、第１の特定の点Ａｉから分割点Ｍｉ，ｉ＋１までの曲線に沿った曲率の積分と、分割点Ｍｉ，ｉ＋１から第２の特定の点Ａｉ＋１までの曲線に沿った曲率の積分とを比較する。
【００５８】
前の実施例では、分割点が、隣接する特定の点の各組の間に加えられることを考慮した。これは決して必須ではない。たとえば、特定の点が互いに近過ぎる場合、隣接する特定の点の間に分割点を加えないと判断することができる。このことは、隣接する点の間の曲率の変化が非常に小さい場合も当てはまる。図５の実施例では、分割点が隣接する特定の点の各対の間に加えられると仮定した。したがって、図４に、５つの分割点Ｍ０，１、Ｍ１，２、Ｍ２，３、Ｍ３，４、およびＭ４，５を示す。
【００５９】
ステップ１１２の後、プロセスがステップ１１４に進んだとき、１組の点の外に形成されるポリラインを、分割点で定義されるいくつかの部分に分割する。曲線の終点を分割点に加えることができる。ステップ１１４では、各分割点を通る曲線を計算する。このことは、たとえばｎｕｒｂ、または分割点を通るベジエ曲線を計算することによって行うことができる。当業者にそれ自体周知のどんなタイプのアルゴリズムもこのステップで使用することができる。
【００６０】
次のステップ１１６では、曲線が各分割点を通るという制約下で、計算した曲線をステップ１０４で求めたポリラインにフィッティングする。フィッティングは、当技術分野でそれ自体周知のどんなアルゴリズムでも実施することができる。たとえば、計算した曲線とポリラインの間の距離を最小にすることができ、すなわち以下の和を最小にすることができる。
【００６１】
【数８】
2005222554.tif 000010
【００６２】
上式で、Ｎｊはポリラインの様々な点であり、ｄ（Ｎｊ）は点Ｎｊと計算した曲線の間の距離である。この解決策は、計算速度が向上するという利点を有する。別の解決策は、「エネルギー」を最小にすること、すなわち以下の和を最小にすることである。
【００６３】
【数９】
2005222554.tif 000011
【００６４】
このような「エネルギー」フィットは、フィッティングが正確となるという利点を有する。ステップ１１４および１１６を図５に別々に示す。しかし、使用するアルゴリズムのタイプに応じて、両方のステップを単一のステップとして組み合わせることができる。
【００６５】
ステップ１１６でのフィッティングにより曲線が得られる。この曲線は、受け取った１組の点および得られるポリラインに基づく。曲線は、分割点を使用して計算され（ステップ１１４）、フィッティングされる（ステップ１１６）。分割点はポリライン中の特定の点から「遠い」ので、曲線は、特定の点の近傍で高い自由度でフィッティングされる。これにより、図５のプロセスで得られる曲線が特定の点の周りで１組の点の良い表現となるように保証される。本発明者が実施したテストは、特定の点がエンドユーザにとって曲線の最も重要な点であることを実際に示すことを実証している。したがって、このプロセスは、１組の点に特に良好にフィッティングされ、従来技術のシステムで熟練したユーザによって得ることのできる曲線に対応する曲線を与える。
【００６６】
図６は、１組の点を、図５のプロセスで作成された曲線と共に示す図である。図６の実施例では、１組の点は、ハプティックデバイスの（点線の）３つのストローク１２０、１２２、１２４によって定義される。曲線には１２６と符号を付けてある。分割点は曲線上で交差する。前述のように、分割点Ｍｉ，ｉ＋１は、曲線中の特定の点（Ｍｉｎ，Ｍａｘ）から遠くにある。図６の実施例では、このプロセスは次のアルゴリズムを使用する。
【００６７】
１つまたは複数の組の点からの単一のポリラインの計算
ｋＭ＝０．３およびｋｌ＝０．６を用いた、図５のステップ１１０で開示される分割点の選択
ＮＵＲＢＳを計算するアルゴリズムを用いた、分割点を通る曲線の計算
エネルギー最小化を使用する、１組の点に対する曲線のフィッティング
曲線およびポリラインは、それらが図６に重ねられるようにフィッティングされる。このプロセスは、Ｃ＋＋言語で書かれたコンピュータプログラムで実施される。このプログラムは、Ｄａｓｓａｕｌｔ  Ｓｙｓｔｅｍｅｓが提供するライブラリを使用する。約１０００個の点を含むハプティックデバイスのストロークでは、プログラムは、次の機構を有するコンピュータ上で０．１秒未満で実行される。インテル  Ｐｅｎｔｉｕｍ（登録商標）  ４  ２ＧＨｚ。得られる曲線が、曲線用のメモリ約１Ｋｂｙｔｅを使用して格納される。１組の点は格納する必要がない。
【００６８】
図３〜６のプロセスにより、ユーザに高いレベルの技術を求めることなく、ユーザが入力する１組の点に基づいて曲線を作成することが可能となる。図７〜８を参照すると、既存の曲線を修正または変更するプロセスが記載されている。この場合も、このプロセスにより、ユーザに高いレベルの技術を求めることなく曲線を修正することが可能となる。
【００６９】
図７は曲線１３０の図である。このときコンピュータ支援設計システムのユーザが、現在実施中の設計に関連する何らかの理由で曲線１３０を修正したいと仮定する。従来技術の解決策では、ユーザは単に曲線を選択し、制御点のうち１つまたは複数を選択し、制御点のうち１つまたは複数を変更することになる。前述のように、このことは、下にある設計システムの操作についてある程度の技術および理解を必要とする。
【００７０】
提案の解決策では、ユーザに求められるのは、単にハプティックデバイスを使用して別の点を入力することだけである。したがって図７は、ユーザがそれによって曲線１３０を修正することを意図するハプティックデバイスの追加のストローク１３２を表す。この実施例では、曲線の頂点に角度が付き過ぎており、曲線がストローク１３２に近づくように曲線を修正することをユーザが意図していることがわかる。図７はさらに、図８のプロセスで得られる曲線１３４を示す。
【００７１】
図８は、曲線を修正するプロセスの流れ図である。図８のプロセスは、図３〜６を参照しながら開示した作成プロセスを使用することが好ましい。しかし、１組の点に基づいて曲線を作成することが可能であることを条件として、曲線を作成する他のタイプの解決策を使用することもできる。
【００７２】
図８のステップ１４０では、曲線、すなわち図７の実施例で修正すべき曲線１３０が与えられる。
【００７３】
ステップ１４２では、ユーザは、曲線に対して実施したい修正を表す１組の点を作成する。図５のステップ１０２を参照しながら説明したように、このステップでは、ユーザが１組の点を入力することを可能にする様々な装置を使用することができる。同じステップでは、ステップ１０４を参照しながら上記で説明したように、ポリラインを計算する。
【００７４】
ステップ１４４では、このプロセスは、ステップ１４０の曲線１３０と、ステップ１４２で計算したポリラインとに基づいて新しいポリラインを計算する。実際的見地から言えば、このことは、曲線１３０に関連するポリラインを見つけることによって行われる。以下で説明するように、このポリラインは、曲線の作成時にシステムのメモリに格納されている可能性がある。ポリラインが格納されていない場合、曲線１３０に基づいて新たにポリラインを計算することもできる。
【００７５】
このプロセスでは、曲線に与えられる重みは、ユーザが入力する点に与えられる重みと同様でよい。もちろん、初期曲線１３０またはユーザの入力した点に対して高い重要度または低い重要度を与えることにより、他の仮定を実施することもできる。曲線および点の相対的重要度は、ユーザ自身が設定することもできる。設計プロセスのステージに従って、曲線に対する修正をより迅速またはゆっくりにすることをユーザが望む可能性があることを理解されたい。
【００７６】
ステップ１４４で新しい１組の点を与えるために、図３を参照しながら上記で論じた解決策を使用することができる。たとえば、ポリラインの平均化、ブレンディングなどの、２つのポリラインの結合を可能にするどんなアルゴリズムも使用することができる。
【００７７】
ステップ１４６では、ステップ１４４で得られたポリラインを使用して新しい曲線を作成する。このステップでは、図５のプロセスを使用することができる。
【００７８】
ステップ１４６の結果は、新しいポリラインに基づいて計算した曲線である。ステップ１４６で得られる曲線は、曲線が要求した修正を表す。曲線は、線描アルゴリズムに特有の知識をユーザに求めることなく、かつ制御点を求めることなく修正される。
【００７９】
図８のプロセスは、ユーザが新しい１組の点を入力するときにいつでもｏｎ−ｔｈｅ−ｌｉｎｅで実施することができる。たとえば、点を入力するのに使用するハプティックデバイスがグラフィックスタブレットであると仮定する。１組の点は、グラフィックスタブレット上にペンシルの所与のストロークとして入力された様々な点からなる。言い換えれば、１組の点は、ユーザがタブレットに対してペンシルを押しつけてから、ユーザがタブレットからペンシルを離すまでの間のグラフィックスタブレット上の点からなる。第１の組の点が入力されると、たとえば図５を参照しながら説明したのと同様に、ポリラインが生成され、曲線が作成される。新しい１組の点が入力されるたび、すなわちペンシルのストロークごとに、図８を参照しながら説明するように、曲線の動的再分割により、以前の曲線が修正される。言い換えれば、図８のステップ１４６の後、プロセスは、ステップ１４８で新しい１組の点を待つ。ユーザが新しい１組の点を入力したとき、プロセスは再びステップ１４４に進み、新しい曲線を計算する。ステップ１４４、１４６、および１４８をループすることにより、ユーザは、１枚の紙に対して用いる実際の描画プロセスと同様以上のルックアンドフィールであるプロセスを使用して曲線を修正することが可能となる。以前のストロークが画面上に現れず、得られる曲線だけが表示されるからである。このプロセスにより、ユーザは、特定の技術なしに曲線を作成および修正することが可能となる。得られる結果は、従来技術のシステムで非常に熟練したユーザによって得られる結果と同様である。
【００８０】
図７および８を参照しながら与えた実施例では、新しいポリラインが、既存の曲線に関連するポリラインと、ユーザが入力する１組の点とに基づいて計算される。理解できるであろうが、前記新しいポリラインは、曲線と共に格納することができる。この場合、このプロセスを次に使用するとき、曲線に基づいてポリラインを再計算しなくても曲線に関連するポリラインを取り出すことができる。この解決策は、既存の曲線に基づいてポリラインを再計算する必要を回避できるという利点を有する。この解決策は、ユーザの１連のペンシルストロークに基づいて曲線を計算するのにこのプロセスを使用するときに特に有用である。各ペンシルストロークの後に、曲線および対応するポリラインを格納することができる。次いで、格納したポリラインは、ユーザが新しいストロークを入力したときに使用される。
【００８１】
ユーザがハプティックデバイスを使用して入力する１組の点の実施例を参照しながら上記で図７および８のプロセスを説明した。１組の点は、他の手段によって入力することもできる。たとえば、図９を参照しながら説明するように、テンプレートを使用して点を入力することができる。この図は、修正すべき曲線１５０を示す。この図はさらに、テンプレート、この実施例では円１５２を示す。この円１５２は、ユーザが中心１５４および半径を選択することによって定義することができる。テンプレート１５２は、曲線１５０を修正するための１組の点として使用される。テンプレートによって形成される１組の点を単に考慮することができる。あるいは、この１組の点を、円の各点の一部だけで形成することもできる。図９の実施例において、曲線の頂点で曲線が円１５２と合致するように曲線を修正することが目的である場合、１組の点に関して、図９で破線で表される扇形１５６の内部にある円の各点を単に考慮することができる。扇形１５６はユーザが選択することができる。別の解決策は、修正すべき曲線から所定の距離以内にあるテンプレート中の点である１組の点を定義することである。この解決策を使用する場合、所定の距離は固定することができ、またはユーザが選択することができる。すべての場合において、テンプレートの使用により、ユーザは、曲線が所与の形状または以前に格納した形状に合致するように曲線を修正することが可能となる。テンプレートは、所与の形状、すなわち円、直線、またはユーザが指定するその他の任意のタイプのパラメトリック形状でよい。テンプレートはまた、ユーザが格納し、または設計システムによって提供される以前にデザインした曲線などの以前に格納した形状でもよい。
【００８２】
本発明は、詳細な説明で与えた実施例に限定されない。ユーザがプロセスと対話することを可能にすることができる。たとえば、ユーザ自身が、１組の点に対する入力の開始および終了を定義することができる。このコンピュータ支援設計システムは、ユーザが、図５やステップ１４４〜１４８のループを有する図８などの様々なタイプの設計方法の中から選択することを可能にする。上記で開示した解決策を従来技術の解決策と組み合わせることができる。たとえば、ユーザは、１つまたは複数の制御点を使用することが可能である。したがって、曲線の満足な区間を得たとき、ユーザは、曲線の残りを修正する前に、その曲線を分割することができ、または曲線中の一部の点を固定することができる。点を入力するのにテンプレートを使用することは、図７〜９を参照しながら論じてある。この解決策はまた、図３〜６のプロセスにも当てはまる。
【図面の簡単な説明】
【００８３】
【図１】従来技術での曲線とその制御点の例示的な図である。
【図２】従来技術で提供される曲率包絡線を伴う曲線の図である。
【図３】様々な点の組と、点の組に基づくポリラインの図である。
【図４】ポリラインについての、曲線横座標の関数としての曲率のグラフである。
【図５】本発明による、曲線を作成するのに使用するプロセスの流れ図である。
【図６】点の組と、図５のプロセスで作成される曲線の図である。
【図７】ユーザが修正すべき曲線の図である。
【図８】図７の曲線を修正するのに使用されるプロセスの流れ図である。
【図９】曲線と、曲線を修正するのに使用されるテンプレートの図である。
【図１】
2005222554.tif 000012
【図２】
2005222554.tif 000013
【図３】
2005222554.tif 000014
【図４】
2005222554.tif 000015
【図５】
2005222554.tif 000016
【図６】
2005222554.tif 000017
【図７】
2005222554.tif 000018
【図８】
2005222554.tif 000019
【図９】
2005222554.tif 000020