(57)【特許請求の範囲】
【請求項１】
ディスプレイ装置に表示されている曲線を修正する方法において、
表示制御手段が、グラフィカルユーザインターフェースを具備しているコンピュータシステムのディスプレイ装置上に、端部同士を接続させた複数のセグメントから構成されており各セグメントが２個のセグメント端点を含む複数の制御点を具備しており該セグメントの該制御点が制御点である格納手段内に格納されている複合曲線を、表示させるステップ
該複合曲線が表示されている間に、識別手段が、該グラフィカルユーザインターフェースを介して受取られた入力手段からの該複合曲線の各制御点に対する入力に応じて各制御点を固定制御点か、選択制御点か、自由制御点かのいずれであるかを識別すると共に複数の選択制御点を一つのグループとして識別するステップ、
該入力を受取った後に、移動手段が、該入力手段から該グラフィカルユーザインターフェースを介して入力された変位入力に基づいて、該複数の選択制御点を一つのグループとして相対的な位置を変化させること無しに該ディスプレイ装置上で移動させ、次いで、計算手段が、前記複数の選択制御点の変位に基づいて移動させるべき各自由制御点の変位を計算し、次いで、該移動手段が計算された該変位に基づいて該ディスプレイ装置上において各自由制御点を移動させるステップ、
からなり、前記計算手段が各自由制御点の変位を計算する場合に、
前記計算手段が、セグメント端点である全ての自由制御点をラインｔ上の対応する点に対してマッピングし、
前記計算手段が、ラインｔ上に補間曲線ＩＣ（ｔ）を定義し、
前記計算手段が、ラインｔ上の前記点を補間曲線ＩＣ（ｔ）の対応する値へ垂直に投影させて対応する拡縮率を見つけ出し、
前記計算手段が、前記拡縮率を前記選択制御点の変位と乗算させてセグメント端点である前記自由制御点の対応する変位を決定する、
ことを特徴とする方法。
【請求項２】
請求項１において、前記制御点がセグメント端点と関連している勾配点を包含しており、更に、
前記計算手段が、ラインｔ上の点Ｔｐに対してマッピングされたセグメント端点と関連している自由勾配点をラインｔ上の点Ｔｐ＋に対してマッピングするステップ、
前記計算手段が、ｔ＝Ｔｐにおいて補間曲線ＩＣ（ｔ）に対して接線方向のラインＹｐ（ｔ）を画定するステップ、
前記計算手段が、点Ｔｐ＋をラインｔから垂直にｔ＝Ｔｐ＋においてラインＹｐ（ｔ）の値へ投影させて前記自由勾配点に対する拡縮率を見つけ出すステップ、
前記計算手段が、前記自由セグメント端点及び自由勾配点の拡縮率を前記選択制御点の変位と乗算させて前記自由セグメント端点及び自由勾配点の変位を決定するステップ、
からなることを特徴とする方法。
【請求項３】
請求項１において、前記対応する拡縮率が補間曲線ＩＣ（ｔ）の値に等しいことを特徴とする方法。
【請求項４】
請求項３において、更に、
前記計算手段が、ＩＣ（ｔ）の値を０から１の範囲内となるように画定し、その際に前記自由制御点を前記選択制御点の変位より小さな変位だけ移動させることを特徴とする方法。
【請求項５】
請求項１において、更に、
前記識別手段が、ユーザ入力に応答して、選択制御点と自由制御点とを有する第一グループの制御点及び固定制御点によって該第一グループの制御点から離隔されており選択制御点と自由制御点とを有する第二グループの制御点を識別するステップ、
前記計算手段が、前記第一グループの選択制御点及び前記第二グループの選択制御点の両方に対しての単一の変位係数を受取るステップ、
前記計算手段が、前記第一グループの自由制御点を第一ラインｔ１上の点Ｔｐ１に対してマッピングし且つ前記第二グループの自由制御点を第二ラインｔ２上の点Ｔｐ２に対してマッピングするステップ、
前記計算手段が、第一ラインｔ１上の第一補間曲線ＩＣ（ｔ１）を画定し且つ第二ラインｔ２上に第二補間曲線ＩＣ（ｔ２）を画定するステップ、
前記計算手段が、ｔ１＝Ｔｐ１における第一補間曲線ＩＣ（ｔ１）に対して点Ｔｐ１を投影させて第一拡縮率を見つけ出し且つｔ２＝Ｔｐ２における第二補間曲線ＩＣ（ｔ２）に対して点Ｔｐ２を投影させて第二拡縮率を見つけ出すステップ、
前記計算手段が、前記第一拡縮率を前記単一の変位係数と乗算させて前記第一グループ自由制御点の変位を決定し且つ前記第二拡縮率を前記単一の変位係数と乗算させて前記第二グループ自由制御点の変位を決定させるステップ、
からなることを特徴とする方法。
【請求項６】
請求項１において、前記複数のセグメントがベジェセグメントを有していることを特徴とする方法。
【請求項７】
請求項１において、前記曲線が第一制御点を有しており、更に、
前記計算手段が、前記複合曲線のセグメント端点を通過するポリラインを画定するステップ、
前記計算手段が、前記ポリラインの全長を計算するステップ、
を有しており、その場合にラインｔ上の対応する点の位置は、（ｉ）第一制御点と対応するセグメント端点との間のポリライン長の（ｉｉ）該ポリラインの全長に対する比によって画定されることを特徴とする方法。
【請求項８】
請求項１において、更に、
前記計算手段が、ラインｔを前記変位の方向に対して垂直であるように画定するステップ、
を有しており、前記自由制御点をマッピングさせるステップが前記曲線の自由制御点をラインｔ上に垂直に投影させる、ことを特徴とする方法。
【請求項９】
請求項１において、前記補間曲線が三次曲線として画定されることを特徴とする方法。
【請求項１０】
ディスプレイ装置に表示されている曲線を修正するためにコンピュータを、
グラフィカルユーザインターフェースを具備しているコンピュータシステムのディスプレイ装置上に、端部同士を接続させた複数のセグメントから構成されており各セグメントが２個のセグメント端点を含む複数の制御点を具備しており該セグメントの該制御点が制御点である格納手段内に格納されている複合曲線を、表示させる手段、
該複合曲線が表示されている間に、該グラフィカルユーザインターフェースを介して受取られた入力手段からの該複合曲線の各制御点に対する入力に応じて各制御点を固定制御点か、選択制御点か、自由制御点かのいずれであるかを識別すると共に複数の選択制御点を一つのグループとして識別する手段、
該入力を受取った後に、該入力手段から該グラフィカルユーザインターフェースを介して入力された変位入力に基づいて、該複数の選択制御点を一つのグループとして相対的な位置を変化させること無しに該ディスプレイ装置上で移動させ、次いで、前記複数の選択制御点の変位に基づいて移動させるべき各自由制御点の変位を計算する場合に、（１）セグメント端点である全ての自由制御点をラインｔ上の対応する点に対してマッピングし、（２）ラインｔ上に補間曲線ＩＣ（ｔ）を定義し、（３）ラインｔ上の前記点を補間曲線ＩＣ（ｔ）の対応する値へ垂直に投影させて対応する拡縮率を見つけ出し、（４）前記拡縮率を前記選択制御点の変位と乗算させてセグメント端点である前記自由制御点の対応する変位を決定することにより各自由制御点の変位を計算し、次いで、該移動手段が計算された該変位に基づいて該ディスプレイ装置上において各自由制御点を移動させる手段、
として機能させるためのディスプレイ装置に表示されている曲線を修正するプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１１】
請求項１０において、前記制御点がセグメント端点と関連している勾配点を包含しており、前記プログラムが、更に、コンピュータを、
ラインｔ上の点Ｔｐに対してマッピングされたセグメント端点と関連している自由勾配点をラインｔ上の点Ｔｐ＋に対してマッピングする手段、
ｔ＝Ｔｐにおいて補間曲線ＩＣ（ｔ）に対して接線方向のラインＹｐ（ｔ）を画定する手段、
点Ｔｐ＋をラインｔから垂直にｔ＝Ｔｐ＋においてラインＹｐ（ｔ）の値へ投影させて前記自由勾配点に対する拡縮率を見つけ出す手段、
前記自由セグメント端点及び自由勾配点の拡縮率を前記選択制御点の変位と乗算させて前記自由セグメント端点及び自由勾配点の変位を決定する手段、
として機能させるコンピュータ読み取り可能な記録媒体。
【請求項１２】
請求項１０において、前記プログラムが、更に、コンピュータを、
ＩＣ（ｔ）の値を０から１の範囲内となるように画定する手段、
として機能させ、その際に前記自由制御点を前記選択制御点の変位より小さな変位だけ移動させるコンピュータ読み取り可能な記録媒体。
【請求項１３】
請求項１０において、前記プログラムが、更に、コンピュータを、
ユーザ入力に応答して、選択制御点と自由制御点とを有する第一グループの制御点及び固定制御点によって該第一グループの制御点から離隔されており選択制御点と自由制御点とを有する第二グループの制御点を識別する手段、
前記第一グループの選択制御点及び前記第二グループの選択制御点の両方に対しての単一の変位係数を受取る手段、
前記第一グループの自由制御点を第一ラインｔ１上の点Ｔｐ１に対してマッピングし且つ前記第二グループの自由制御点を第二ラインｔ２上の点Ｔｐ２に対してマッピングする手段、
第一ラインｔ１上の第一補間曲線ＩＣ（ｔ１）を画定し且つ第二ラインｔ２上に第二補間曲線ＩＣ（ｔ２）を画定する手段、
ｔ１＝Ｔｐ１における第一補間曲線ＩＣ（ｔ１）に対して点Ｔｐ１を投影させて第一拡縮率を見つけ出し且つｔ２＝Ｔｐ２における第二補間曲線ＩＣ（ｔ２）に対して点Ｔｐ２を投影させて第二拡縮率を見つけ出す手段、
前記第一拡縮率を前記単一の変位係数と乗算させて前記第一グループ自由制御点の変位を決定し且つ前記第二拡縮率を前記単一の変位係数と乗算させて前記第二グループ自由制御点の変位を決定させる手段、
として機能させるコンピュータ読み取り可能な記録媒体。
【請求項１４】
請求項１０において、前記複数のセグメントがベジェセグメントを有しているコンピュータ読み取り可能な記録媒体。
【請求項１５】
ディスプレイ装置に表示されている曲線を修正する方法において、
表示制御手段が、ディスプレイ装置上に、端部同士を接続させた複数のセグメントから構成されており各セグメントが複数の制御点を具備しており格納手段内に格納されている複合曲線を表示させるステップ、
入力受け取り手段が、該複合曲線の勾配を修正すべき該複合曲線の端点を選択し且つ勾配変位を画定する入力を受取るステップ、
マッピング手段が、該複合曲線のセグメント端点である各制御点をラインｔ上の対応する点Ｔｐへマッピングするステップ、
画定手段が、ラインｔ上にＩＣ（０）＝０、ＩＣ（１）＝１、ｄＩＣ（０）／ｄｔ＞０、ｄＩＣ（１）／ｄｔ＝０の条件を満足させる補間曲線ＩＣ（ｔ）を画定するステップ、
投影手段が、対応する拡縮率を見つけ出すためにｔ＝Ｔｐにおける補間曲線ＩＣ（ｔ）の値に対して各点Ｔｐを投影させるステップ、
乗算手段が、該対応する拡縮率と該勾配変位とを乗算させて該対応する制御点の変位を決定するステップ、
からなることを特徴とする方法。
【請求項１６】
請求項１５において、該補間曲線ＩＣ（ｔ）がバーンスタイン多項式であることを特徴とする方法。
【請求項１７】
ディスプレイ装置に表示されている曲線を修正するためにコンピュータを、
ディスプレイ装置上に、端部同士を接続させた複数のセグメントから構成されており各セグメントが複数の制御点を具備しており格納手段内に格納されている複合曲線を表示させる手段、
該複合曲線の勾配を修正すべき該複合曲線の端点を選択し且つ勾配変位を画定する入力を受取る手段、
該複合曲線のセグメント端点である各制御点をラインｔ上の対応する点Ｔｐへマッピングする手段、
ラインｔ上にＩＣ（０）＝０、ＩＣ（１）＝１、ｄＩＣ（０）／ｄｔ＞０、ｄＩＣ（１）／ｄｔ＝０の条件を満足させる補間曲線ＩＣ（ｔ）を画定する手段、
対応する拡縮率を見つけ出すためにｔ＝Ｔｐにおける補間曲線ＩＣ（ｔ）の値に対して各点Ｔｐを投影させる手段、
該対応する拡縮率と該勾配変位とを乗算させて該対応する制御点の変位を決定する手段、
として機能させるためのディスプレイ装置に表示されている曲線を修正するプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１８】
請求項１７において、該補間曲線ＩＣ（ｔ）がバーンスタイン多項式であるコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータディスプレイ上に曲線を形成し且つ修正する技術に関するものである。
【０００２】
【従来の技術】
例えばカリフォルニア州サンノゼにあるアドビシステムズインコーポレイテッドから市販されているイラストレーター（Ｉｌｌｕｓｔｒａｔｏｒ）プログラムのようなグラフィックスプログラムにおける曲線は、ユーザがマウスのフリーハンド運動を使用することによってコンピュータディスプレイ上に形成させることが可能である。一般的に、このような曲線はコントロールポイント（ｃｏｎｔｒｏｌ  ｐｏｉｎｔ）即ち制御点の構造物として表現される。例えば、三次ベジェ曲線セグメント（図１２に示してあるようなもの）の場合には、４つの制御点を使用し、そのうちの、２つの制御点Ｐ０及びＰ３はセグメント端点（それを介して曲線セグメントが通過する）であり、且つ他の２つの制御点Ｐ１及びＰ２は、セグメント端点Ｐ０及びＰ３における曲線セグメントの勾配を画定するスロープポイント（ｓｌｏｐｅ  ｐｏｉｎｔ）即ち勾配点である。
【０００３】
複合曲線は、複数個のベジェ曲線セグメントを連結させることによって形成することが可能である。例えばアドビイラストレーターシステムにおけるような幾つかの従来のシステムにおいては、ユーザは制御点を選択し且つドラッグすることによって複合曲線を修正することが可能である。次いで、捕まえた点はカーソルによって特定された距離だけ移動する。例えば米国特許第５，４１２，７７０号に記載されているようなその他のシステムにおいては、曲線上の点は固定させることが可能であり且つ該曲線の１つのセグメントをコンピュータディスプレイ上のカーソルを移動させることによって作り直すことが可能である。別の従来のシステムにおいては、固定した点（即ち、固定点）を複合曲線上において特定した後に、制御点をドラッグすることによって複合曲線を修正することが可能である。
【０００４】
【発明が解決しようとする課題】
本発明は、以上の点に鑑みなされたものであって、コンピュータディスプレイ上で曲線を形成したり修正したりする改良した技術を提供することを目的とする。
【０００５】
【課題を解決するための手段】
一般的に、１側面においては、本発明は、コンピュータシステムにおけるグラフィカルユーザインターフェース（ＧＵＩ）を介してユーザのアクション即ち行為に応答して曲線を修正するコンピュータによって実行される方法を提供している。該曲線は、複数個の制御点によって画定されている。制御点の各々は、ユーザの入力に応答して、固定されている制御点（即ち、固定制御点）、選択された制御点（即ち、選択制御点）、又は自由制御点として識別される。複数個の選択された点のディスプレイスメント（ｄｉｓｐｌａｃｅｍｅｎｔ）即ち変位が受取られる。該曲線の自由制御点をラインｔ上のポイント即ち点Ｔｐに対してマッピングさせる。補間曲線ＩＣ（ｔ）をラインｔ上に画定する。点Ｔｐをｔ＝Ｔｐにおいて補間曲線ＩＣ（ｔ）の値に対して投影させて、スケールファクタ（ｓｃａｌｅ  ｆａｃｔｏｒ）即ち拡縮率を見つけ出す。該拡縮率を該選択点の変位と乗算させて、自由制御点の変位を決定する。
【０００６】
一般的に、別の側面においては、本発明は、コンピュータシステムにおけるグラフィカルユーザインターフェースを介して、ユーザの行為に応答して、各々が複数個の制御点によって画定されている複数個の曲線を修正するコンピュータによって実行される方法を提供している。該制御点の各々は、ユーザの入力に応答して、固定制御点、選択制御点、又は自由制御点として識別される。各曲線の選択した点の変位を受取る。各曲線の自由制御点を複数個のラインのうちの対応する１つの１つの点に対してマッピングさせる。各ライン上において補間曲線を画定する。各ライン上の該点を、対応する補間曲線に対して投影させて各自由制御点に対するスケールファクタ即ち拡縮率を見つけ出す。該拡縮率を選択制御点の変位と乗算させて自由制御点の変位を決定する。
【０００７】
一般的に、別の側面においては、本発明は、コンピュータシステムにおいてディスプレイ上にベジェ曲線セグメントを形成するコンピュータによって実行されるグラフィカルユーザインターフェース方法を提供している。第一セグメント端点の選択がコンピュータシステムにおけるグラフィカルユーザインターフェースを介して受取られる。コンピュータディスプレイ上のカーソルの位置が第二セグメント端点として受取られる。第一及び第二セグメント端点及び第一及び第二勾配点によって画定されるベジェ曲線が円弧を近似するように第一及び第二勾配点を演算する。演算されたベジェ曲線セグメントをコンピュータディスプレイ上に表示する。
【０００８】
一般的に、別の側面においては、本発明は、コンピュータシステムにおけるグラフィカルユーザインターフェースを介してユーザの行為に応答して曲線を修正するコンピュータによって読取可能な媒体上に存在しているコンピュータプログラムを提供している。該曲線は複数個の制御点によって画定される。該コンピュータプログラムは、コンピュータシステムをして、ユーザの入力に応答して、制御点の各々を固定制御点、選択制御点、又は自由制御点として識別させる命令を包含している。該命令は、更に、コンピュータシステムをして、複数個の選択した点の変位を受取らせ、該曲線の自由制御点をラインｔ上の点Ｔｐに対してマッピングさせ、且つラインｔ上に補間曲線ＩＣ（ｔ）を画定させる。該命令は、更に、コンピュータシステムをして、点Ｔｐをｔ＝Ｔｐにおいて補間曲線ＩＣ（ｔ）の値に対して投影させて拡縮率を見つけ出し、且つ該拡縮率を選択した点の変位と乗算させて自由制御点の変位を決定させる。
【０００９】
一般的に、別の側面においては、本発明は、コンピュータシステムにおけるグラフィカルユーザインターフェースを介してユーザの行為に応答して複数個の曲線を修正するためのコンピュータによって読取可能な媒体上に存在するコンピュータプログラムを提供している。各曲線は複数個の制御点によって画定される。該コンピュータシステムは、コンピュータシステムをして、ユーザの入力に応答して、前記制御点の各々を、固定制御点、選択制御点、又は自由制御点として識別させる命令を包含している。該命令は、更に、コンピュータシステムをして、各曲線の選択した点の変位を受取らせ、各曲線の自由制御点を複数個のラインのうちの対応する１つの１つの点に対してマッピングさせ、且つ各ライン上に補間曲線を画定させる。該命令は、更に、コンピュータシステムをして、各ライン上の該点を対応する補間曲線に対して投影させて各自由制御点に対する拡縮率を見つけ出し、且つ該拡縮率を選択制御点の変位と乗算させて自由制御点の変位を決定させる。
【００１０】
一般的に、別の側面においては、本発明は、ベジェ曲線セグメントを形成するためのコンピュータによって読取可能な媒体上に存在するコンピュータプログラムを提供している。該コンピュータプログラムは、コンピュータシステムをして、コンピュータシステムにおけるグラフィカルユーザインターフェースを介して第一セグメント点の選択を受取らせ、且つ第二セグメント端点としてコンピュータディスプレイ上のカーソルの位置を受取らせる。該命令は、更に、コンピュータシステムをして、第一及び第二端点及び第一及び第二勾配点によって画定されるベジェセグメントが円弧を近似するように第一及び第二勾配点を演算させ、且つ演算されたベジェ曲線セグメントをコンピュータディスプレイ上に表示させる。
【００１１】
一般的に、別の側面においては、本発明は、コンピュータシステムにおけるグラフィカルユーザインターフェースを介して、ユーザの行為に応答して、複数個の制御点によって画定されており且つ２つの曲線端点を有している曲線を修正するコンピュータによって実行される方法を提供している。勾配調節点を画定し、且つ勾配調節点のグラフィカルユーザインターフェースを介して変位が受取られる。該曲線の制御点をラインｔ上の点Ｔｐに対してマッピングさせ、補間曲線ＩＣ（ｔ）をラインｔ上に画定させる。点Ｔｐをｔ＝Ｔｐにおいて補間曲線ＩＣ（ｔ）の値に対して投影させてスケールファクタ即ち拡縮率を見い出し、且つ該拡縮率を選択した点の変位と乗算させて、自由制御点の変位を決定する。
【００１２】
一般的に、別の側面においては、本発明は、コンピュータシステムにおけるグラフィカルユーザインターフェースを介してユーザの行為に応答して複数個の制御点によって画定されている曲線を修正するためのコンピュータによって読取可能な媒体上に存在するコンピュータプログラムを提供している。該コンピュータプログラムは、コンピュータシステムをして、勾配調節点を画定させ且つ勾配調節点のグラフィカルユーザインターフェースを介して変位を受取らさせる命令を包含している。該命令は、更に、コンピュータシステムをして、該曲線の制御点をラインｔ上の点Ｔｐに対してマッピングさせ、ラインｔ上に補間曲線ＩＣ（ｔ）を画定させ、点Ｔｐをｔ＝Ｔｐにおいて補間曲線ＩＣ（ｔ）の値に対して投影させて拡縮率を見つけ出し、且つ該拡縮率を選択した点の変位と乗算させて自由制御点の変位を決定させる。
【００１３】
本発明の利点としては以下に示すような１つ又はそれ以上のものがある。複数個の固定した点を特定することが可能であり且つ複数個の選択した点を１つのグループとして選択し且つ硬直的に移動させることが可能である。複数個の曲線上の点を選択し且つ移動させることが可能である。曲線上の点は元の曲線の一般的な形状及び詳細を維持し且つ曲線のセグメント間の遷移の滑らかさを維持するように移動される。ユーザは曲線の任意の部分を修正するために選択することが可能であり且つその曲線の残部の滑らかさが維持される。端点における複合曲線の勾配を調節することが可能である。
【００１４】
【発明の実施の形態】
本発明を実施したグラフィックスプログラムにおいては、複合曲線の一部がユーザによって特定された態様で修正又は変形されるべき場合には、該曲線のその他の部分は、該曲線の一般的な形状及び詳細を維持し且つ曲線全体のセグメント間の滑らかな遷移を維持すべく修正される。例えば、複合曲線が該曲線内に多数の詳細部を画定する何百もの曲線セグメントを包含している場合には、該プログラムは修正操作の後に元の複合曲線の該詳細を維持する。このプログラムの場合には、ユーザは曲線の詳細及び滑らかさを維持するために複合曲線のセグメントを手作業によって調節することは必要ではない。
【００１５】
更に、本プログラムは、更に、ユーザが複合曲線の勾配をその曲線端点において調節することを可能としている。勾配調整点が設けられており、それは勾配を任意の所望の量だけ修正するためにユーザによって選択することが可能である。図１を参照すると、複合曲線は端部同志が接続された多数のセグメントから構成されている。曲線の部分を同定即ち識別する場合に使用される用語を説明するために、複合ベジェ曲線３０は３つのベジェセグメント２２，２３，２４を有している。セグメントの端点は文字Ｅとそれに続く数字によって識別され、この例においては、セグメント端点はＥ１乃至Ｅ４である。曲線端点はＥ１及びＥ４である。曲線端点ではないセグメント端点は２つのセグメントによって共用されており、この例においては、これらはＥ２及びＥ３である。端点に加えて、ベジェセグメントは別の種類の制御点である勾配点を有している。１つのセグメントにおける各端点は１つの勾配点と関連している。図１２に示したベジェセグメントにおいては、端点Ｐ０及びＰ３は、夫々、勾配点Ｐ１及びＰ２と関連している。図１の曲線３０において、端点Ｅｎと関連する勾配点はＥｎ＋及びＥｎ−として識別される。例えば、Ｅ２と関連するセグメント２２の勾配点はＥ２−であり、一方Ｅ２と関連するセグメント２３の勾配点はＥ２＋である。１つの曲線又は１つの曲線の一部が移動されると、制御点が移動される。それらの新たな移動後の位置における制御点はダッシュによって識別される。２つの移動が示される場合には、２番目の位置は２つのダッシュで識別され、以下同様である。図１においては、新たな制御点Ｅ３′，Ｅ３＋′，Ｅ４′が示されている。セグメント端点は、又、一般的にＰとして識別することが可能であり、それと関連する勾配制御点はＰ＋及びＰ−として識別することが可能である。更に、その曲線端点においての複合曲線の勾配も、図２Ｄ，２Ｅ，８に関連して以下に説明する「擬似」勾配点と呼ばれるものを選択することによってユーザによって調節することが可能である。
【００１６】
ユーザが曲線を移動させる場合には、ユーザは各制御点を、３つのタイプ、即ち選択、自由及び固定のうちの１つのものとしてマーク付けを行なう。通常、全ての制御点はデフォルトでは自由であり、且つユーザの行為が特定の制御点を選択又は固定として明示的にマーク付けを行なう（プログラムのグラフィカルユーザインターフェースを介して）。曲線セグメントの勾配点はプログラムのグラフィカルユーザインターフェース上ではユーザにとって見ることができないものであり、従って選択又は固定としてマーク付けを行なうことは不可能である。一方、セグメント端点は固定点としてデフォルト設定することが可能であり（一方、勾配点は自由点へデフォルト設定される）、ユーザはどのセグメント端点が自由であるか又は選択であるかのマーク付けを行なわねばならない。
【００１７】
選択点はユーザによって特定されたディスプレイスメント（ｄｉｓｐｌａｃｅｍｅｎｔ）即ち変位だけ硬直的なグループとして移動する点である。固定点は、移動しない点である。自由点は以下に説明するように変位が計算即ち演算されるその他の全ての点である。然しながら、固定点によってのみ取囲まれる自由点（勾配点Ｅ１＋及びＥ２−を含む）はその場所に留まる。更に、選択点によってのみ取囲まれる自由点は、通常、曲線の修正の性質に依存して、選択点と共に移動する。自由セグメント端点は、曲線の一般的な形状を維持するように移動される。自由勾配点は、曲線セグメント間の滑らかな遷移を維持するように移動される。
【００１８】
図２Ａ−２Ｃを参照すると、プログラムが２ステップマッピング機能（関数）を実行するアルゴリズムを使用して関連する勾配点Ｐ−及びＰ＋に沿っての各自由端点Ｐの変位を決定する。図２Ｂを参照すると、該プログラムは、ステップ４００において、選択した端点又は複合曲線上の選択した端点の変位Ｖを受取る。次いで、該プログラムは、ステップ４０１において、２つ又はそれ以上のディスジョイント（ｄｉｓｊｏｉｎｔ）即ち解体したグループの点が存在するか否かを決定する。移動されるべき複数個のディスジョイント（解体）グループの点が関与する移動操作においては、複数個の別個のマッピングが実行される。２つのグループの選択点は、それらが固定点によって分離されている場合には、ディスジョイント即ち解体状態にあると考えられる。更に、複数個の複合曲線が同時に移動される場合には、ディスジョイントグループの制御点が発生する場合もある。複数個の曲線の場合には、各複合曲線は、少なくとも１つのディスジョイントグループの制御点を有しているものと考えられる。
【００１９】
複数個のディスジョイントグループの制御点が存在しない場合には、複合曲線上の制御点は、ステップ４０２において、図２Ａに示したように、距離マッピング方法（図２Ｃ）又は投影マッピング方法（図３Ａ及び３Ｂ）のいずれかを使用して、１つの単位ラインセグメントｔ［０，１］上の点に対してマッピングされる。該複合曲線上の各セグメント端点Ｅｐ（又は、単にＰ）をｔ上のＴｐと呼ばれる点に対してマッピングさせ、各勾配点Ｅｐ＋又はＥｐ−（又は、単に、Ｐ＋又はＰ−）をパラメータＴｐ＋又はＴｐ−に対してマッピングさせる。
【００２０】
次いで、ステップ４０３において、ｔ上に１つの補間曲線ＩＣを画定する。点Ｔｐを、ステップ４０４において、ｔから補間曲線ＩＣ上に垂直方向に投影させてパラメータＣｐの値を得る。各値Ｃｐは、ｔ＝Ｔｐにおいて評価した補間曲線ＩＣの縦座標である。
【００２１】
勾配点Ｐ−及びＰ＋と関連する点Ｔｐ−及びＴｐ＋（制御点に対するプレフィックスＥは簡単化のために省略してある）を、ステップ４０４において、ｔから垂直方向に投影させて、ｔ＝ＴｐにおけるＩＣに対して接線方向に交差させてパラメータＣｐ−及びＣｐ＋を得る。Ｃｐ−及びＣｐ＋は、該接線のｔ＝Ｔｐ−及びＴｐ＋の夫々における縦座標である。
【００２２】
補間曲線ＩＣ（ｔ）の形状は、パラメータＣｐ，Ｃｐ−，Ｃｐ＋の値を決定し、従って、自由点の各々の変位の量を決定する。一般的には、三次補間曲線ＩＣ（ｔ）が三次ベジェセグメントが関与する殆どの適用場面に対して最適なものである。例えば五次多項式又は正弦波のような異なる形状の補間曲線は自由点を異なる態様で移動させる。補間曲線ＩＣ（ｔ）の形状の選択は応用特定的であり且つ、通常、特定の応用例に対して自由点の最適な挙動を発生させるべくグラフィクスプログラムの製造業者によって行なわれる。補間曲線ＩＣ（ｔ）が設定されると、ラインセグメントｔ上で画定される同一の補間曲線は全ての曲線変形操作に対して使用される。
【００２３】
図２Ａは複合曲線の１つの部分３００と関連している補間曲線ＩＣを示しており、その場合に、点Ｅｅは選択された点であり且つ点Ｅａは固定されている点である。選択点Ｅｅから別の固定点へ延在する付加的な自由点に対して、補間曲線ＩＣがＣｅから点Ｅｅの反対側においてラインｔに対して引き伸ばされており、一般的に、ベル形状の曲線を形成している。
【００２４】
複数個（Ｎ）のディスジョイントグループが存在する場合には、各グループの制御点をステップ４０５において単位ラインセグメントｔ１−ｔＮのうちの対応する１つの上の点Ｔｐ，Ｔｐ−，Ｔｐ＋に対してマッピングさせる。次いで、ステップ４０６において、ラインｔ１−ｔＮの上に、夫々、補間曲線ＩＣ（ｔ１）−ＩＣ（ｔＮ）を画定し、且つ次いで、ラインセグメントｔ１−ｔＮ上の点を、ステップ４０７において、補間曲線ＩＣ（ｔ１）−ＩＣ（ｔＮ）上のパラメータＣｐ，Ｃｐ−，Ｃｐ＋に対してマッピングさせる。この場合にも、同一の補間曲線ＩＣがラインセグメントｔ［０，１］上で画定されるように、各場合において使用される。
【００２５】
ステップ４０４又は４０７から、本プログラムはパラメータＣｐ，Ｃｐ−，Ｃｐ＋を使用して、各自由制御点Ｐ，Ｐ−，Ｐ＋に対する変位を計算する。次いで、本プログラムは、ステップ４１２において、計算した変位だけ自由点を移動させる。
【００２６】
ステップ４１０において、該変位はベクトル変位Ｖをスケーリングするために、スケールファクタ即ち拡縮率として、パラメータＣｐ−，Ｃｐ，Ｃｐ＋を使用して新たな位置Ｐ−′，Ｐ′，Ｐ＋′で表現される。各スケーリングされた変位は対応する元の点へ付加されて、図１−３に示したように、新たな点Ｐ−′，Ｐ′，Ｐ＋′を派生させる。
【００２７】
Ｐ−′  ＝  Ｐ−  ＋  Ｖ  ×  Ｃｐ−          （１）
Ｐ′    ＝  Ｐ  ＋  Ｖ  ×  Ｃｐ              （２）
Ｐ＋′  ＝  Ｐ＋  ＋  Ｖ  ×  Ｃｐ＋          （３）
複合曲線を画定する制御点のシーケンスをラインセグメントｔに対してマッピングする場合の１つの拘束条件は、該マッピングは単調的なもので且つ軸独立性のものでなければならないということである。従って、任意の与えられたセグメント端点Ｐに対して、次式（４）が満足されねばならない。
【００２８】
0004153065.tif 000002
式４は、ベクトル（Ｐ＋  −  Ｐ）及び（Ｐ  −  Ｐ−）が元の複合曲線において同一直線上にある場合には（滑らかなベジェ曲線に対して必要とされるように）、該ベクトルは変形された曲線において同一直線状態を維持することを確保する。
【００２９】
図２Ａを参照すると、図２Ｂのプロセスは以下のように複合曲線の「屈曲可能な」セクション３００、即ち固定点Ｅａと選択点Ｅｅとの間のセクションに対して適用される。その他のセグメント端点Ｅｂ，Ｅｃ，Ｅｄ及び勾配点Ｅａ＋，Ｅｂ−，Ｅｂ＋，Ｅｃ−，Ｅｃ＋，Ｅｄ−，Ｅｄ＋，Ｅｅ−は、それらの変位が計算される自由点である。最初のマッピングステップにおいて（ステップ４０２）、固定セグメント端点Ｅａ及び選択セグメント端点ＥｅをパラメータＴａ及びＴｅに対してマッピングさせ、且つ自由点Ｅａ＋，Ｅｂ−，Ｅｂ，Ｅｂ＋，Ｅｃ−，Ｅｃ，Ｅｃ＋，Ｅｄ−，Ｅｄ，Ｅｄ＋，Ｅｅ−をラインｔに沿って、それぞれ、パラメータＴａ＋，Ｔｂ−，Ｔｂ，Ｔｂ＋，Ｔｃ−，Ｔｃ，Ｔｃ＋，Ｔｄ−，Ｔｄ，Ｔｄ＋，Ｔｅ−に対してマッピングさせる。
【００３０】
図２Ａにおいて、距離マッピングを使用して、曲線３００の制御点をラインｔに対してマッピングさせる。更に図２Ｃを参照すると、ステップ４２０において、最初に、制御点Ｅａ，Ｅａ＋，Ｅｂ−，Ｅｂ，Ｅｂ＋，Ｅｃ−，Ｅｃ，Ｅｃ＋，Ｅｄ−，Ｅｄ，Ｅｄ＋，Ｅｅ−，Ｅｅを介して通過するラインセグメントを包含するポリライン（ｐｏｌｙｌｉｎｅ）３０２を画定する。
【００３１】
次に、ポリライン３０２の全長Ｌをステップ４２２において計算する。次いで、各点Ｐ，Ｐ−又はＰ＋に対して、ステップ４２４において、長さＤｐ，Ｄｐ−又はＤｐ＋（点Ｅａから点Ｅｐ，Ｅｐ−又はＥｐ＋へのポリライン３０２の長さ）を計算する。パラメータＴｘ（ｘ＝ａ，ａ＋，ｂ−，ｂ，ｂ＋，ｃ−，ｃ，ｃ＋，ｄ−，ｄ，ｄ＋，ｅ−，ｅ）を、ステップ４２６において、距離Ｄｘ（点Ｅａから点Ｅｘへのポリライン３０２の長さ）をポリライン３０２の全長Ｌで割算することによって計算する。従って、例えば、パラメータＴａは値０を有している。なぜならば、点Ｅａからそれ自身への距離はゼロだからである。パラメータＴａ＋は点Ｅａから点Ｅａ＋へのポリライン３０２の長さＤａ＋をポリライン３０２の全長Ｌで割算したものである。パラメータＴｄ−は、点Ｅａから点Ｅａ＋及びＥａ＋からＥｂ−へのポリライン３０２の長さＤｂ−をポリライン３０２の全長Ｌで割算したものである。他のパラメータＴｂ乃至Ｔｅは同様の態様で計算される。ラインセグメントｔは０と１との間で画定されるので、パラメータＴｅの値は１である。
【００３２】
実効的に、距離マッピングは、各点間のユークリッド距離に従って、点Ｅａ乃至Ｅｅを直線ｔ上にマッピングさせる。
【００３３】
図２Ａは値０と１との間でのラインセグメントｔへのマッピングを示している。一方、該マッピングは、ポリライン上の制御点間の距離関係が維持される限り、任意の二つの値の間でのラインセグメントｔに対するものとすることが可能である。
【００３４】
距離マッピングの一つの利点は簡単であることであるが、それは制限も有している。距離マッピングの一つの制限は、複合曲線の変形が可逆的ではないという点である。従って、例えば、選択制御点が曲線を変形させるためにベクトルＶを介して移動され、且つ該点が反対のベクトル−Ｖを介して移動されると、曲線制御点は、距離マッピングが使用される場合には、常にそれらの元の位置へ復帰するとは限らない。
【００３５】
点をラインｔ上にマッピングさせる別のマッピング技術である投影マッピングは、ある場合においてこの制限を回避している。図３及び４を参照すると、該プログラムは、最初に、ステップ４５０において、選択した一つ又は複数個の点の運動方向を画定するベクトルＵを受取る。従って、セグメント端点Ｅｆ，Ｅｇ，Ｅｈ，Ｅｉ，Ｅｊ（及び関連する勾配点Ｅｆ＋，Ｅｇ−，Ｅｇ＋，Ｅｈ−，Ｅｈ＋，Ｅｉ−，Ｅｉ＋，Ｅｊ−）によって画定される複合曲線３０４の場合に、セグメント端点Ｅｈは選択された点であり且つ点Ｅｆ及びＥｊは最初の隣の固定した点であり、ベクトルＵはセグメント端点Ｅｈの移動方向に指向している。
【００３６】
パラメータＴｆ，Ｔｇ，Ｔｈ，Ｔｉ，Ｔｊを決定するために投影マッピングを使用すると、ラインｔはステップ４５２においてベクトルＵに対して垂直に画定される。次いで、制御点Ｅｆ，Ｅｆ＋，Ｅｇ−，Ｅｇ，Ｅｇ＋，Ｅｈ−，Ｅｈ，Ｅｈ＋，Ｅｉ−，Ｅｉ，Ｅｉ＋，Ｅｊ−，Ｅｊの各々は、ステップ４５４において、ベクトルＵに対して平行な経路に沿ってラインｔ上に投影され、対応するパラメータＴｆ，Ｔｆ＋，Ｔｇ−，Ｔｇ，Ｔｇ＋，Ｔｈ−，Ｔｈ，Ｔｈ＋，Ｔｉ−，Ｔｉ，Ｔｉ＋，Ｔｊ−，Ｔｊを得る。
【００３７】
従って、距離マッピングは複合曲線上の制御点の相対的な距離に従ってパラメータＴｐ，Ｔｐ−，Ｔｐ＋を画定せんとするものであるが、投影マッピングは対応する平行なベクトルに沿っての制御点を直交するラインｔに対してマッピングさせる。
【００３８】
ラインｔ上にマッピングさせるために別のマッピング技術を使用することが可能である。この３番目の技術においては、Ｎ＋１個の制御点があるものと仮定すると、これらの制御点は、各制御点間の距離が等しい点即ち、各制御点間の距離が１／Ｎであるように直線上にマッピングされる。この３番目のマッピング技術は、それが完全に可逆的であるという利点を有している。しかしながら、変形操作から得られる複合曲線の形状は高度に制御点の位置に依存するものである。制御点が複合曲線全体に亘ってほぼ等しく分散されている場合には、該曲線の変形はその全長に亘って滑らかである。しかしながら、幾つかの制御点がクラスタ上に固まっており、一方その他の制御点がかなり離れている場合には、変形操作を行った後の曲線の形状にはより急激的な変化が存在する場合がある。
【００３９】
複合曲線３０４の制御点に対するパラメータＴｙ（ｙ＝ｆ，ｆ＋，ｇ−，ｇ，ｇ＋，ｈ−，ｈ，ｈ＋，ｉ−，ｉ，ｉ＋，ｊ−，ｊ）が派生されると、該プログラムは、ステップ４５６において、ラインｔに沿ってのパラメータが単調的であるか否か、即ち、ＴｆがＴｆ＋より小さく、Ｔｆ＋がＴｇ−より小さく、Ｔｇ−がＴｇより小さく、以下同様であるか否かを決定する。パラメータＴｙが単調的である場合には、それ以上何も行われない。そうでない場合には、非単調的な点Ｔｐ，Ｔｐ−又はＴｐ＋が、ステップ４５８において、投影マッピングが非単調的なものとなった点Ｔｐに関してフリップ即ち引繰り返される。従って、図３Ａにおいて、パラメータＴｆ及びＴｆ＋は点Ｅｇに対するパラメータＴｇよりもより大きな値である。マッピングを単調的なものとさせるために、パラメータＴｆ及びＴｆ＋は、マッピングが方向を逆転する点（この場合は、パラメータＴｇ−）に関して新たなパラメータＴｆ′及びＴｆ＋′へそれぞれ「アンフォルド（ｕｎｆｏｌｄ）」即ち展開される。展開されると、Ｔｇ−とＴｆ′との間の距離は、Ｔｇ−とＴｆとの間の距離と同一であり、且つＴｇ−とＴｆ＋′との間の距離はＴｇ−とＴｆ＋との間の距離と同一である。
【００４０】
投影マッピングは可逆的である。なぜならば、反対方向における変位の場合、点が投影されるラインｔは同一であり（即ち、選択された点がドラッグされるベクトルに対して垂直）、且つ従って、ｔの値は同一であるからである。従って、該曲線の変形は、曲線を最初にベクトルＵを介してドラッグし、次いで中間に何らの操作を行うことなしにベクトル−Ｕを介してドラッグした場合には、完全に逆転される。
【００４１】
投影マッピングは距離マッピングよりも一層計算（演算）集約的である。典型的なユーザのインタラクション即ち相互作用において、選択された点をドラッグして複合曲線を変形させるための経路は直線に従う可能性はなく、むしろ、単一のドラッグ操作におけるカーソルの経路は共通点からの相次ぐ複数個のベクトル変位Ｖ１，Ｖ２，．．．，Ｖｎとして近似される。複合曲線の中間位置が曲線変形操作期間中に表示されるべき場合には、パラメータＣｐ−，Ｃｐ＋，Ｃｐは各ベクトル変位Ｖ１，Ｖ２，．．．，Ｖｎに対して再度適用されねばならない。投影マッピングの場合には、パラメータＴｐ及びＣｐは各ベクトル変位Ｖ１，Ｖ２，．．．，Ｖｎに対して再度計算されねばならない。なぜならば、直交ラインセグメントｔが各新たなベクトルに対して変化するからである。これと対照的に、距離マッピングが使用される場合には、ファクタＣｐ−，Ｃｐ，Ｃｐ＋はドラッグの開始時（即ち、ユーザがマウスボタンを押圧する時）において一度計算することが必要であるに過ぎず、マウスボタンを押下げたまま、移動操作の経路が方向を変化させる場合に、ベクトル変位Ｖ１，Ｖ２，．．．，Ｖｎの各新たな値に対して適用される。その結果、各単一の移動操作に対する計算の量は距離マッピングの場合に最小とされる。
【００４２】
再度図２Ａの例を参照すると、複合曲線の制御点を直線ｔに対してマッピングさせた後に、該マッピング技術の第二ステップ（図２Ｂのステップ４０４）はパラメータＴｐ，Ｔｐ−，Ｔｐ＋をＥａとＥｅとの間の制御点に対する補間曲線ＩＣから派生したスケールファクタ即ち拡縮率Ｃｐ，Ｃｐ−，Ｃｐ＋に対してマッピングさせる。各自由セグメント端点と関連しているパラメータＴｂ，Ｔｃ，Ｔｄは補間曲線ＩＣ上の点に対してマッピングされる。パラメータＣｅの値は１である。なぜならば、点Ｅｅはカーソルで変位Ｖを介してドラッグされた選択点であるからである。又、パラメータＣａの値は０である。なぜならば、それは固定点Ｅａと関連しているからである。
【００４３】
勾配点と関連しているパラメータＴａ＋，Ｔｂ−，Ｔｂ＋，Ｔｃ−，Ｔｃ＋，Ｔｄ−，Ｔｄ＋，Ｔｅ−の場合には、これらの値はｔ＝Ｔａ，Ｔｂ，Ｔｃ，Ｔｄ，Ｔｅのそれぞれにおいて補間曲線ＩＣに対して接線方向のラインＹａ，Ｙｂ，Ｙｃ，Ｙｄ，Ｙｅにおいて評価される。その結果、値Ｃａ＋，Ｃｂ−，Ｃｂ＋，Ｃｃ−，Ｃｃ＋，Ｃｄ−，Ｃｄ＋，Ｃｅ−は補間曲線ＩＣ上にはない。
【００４４】
図２Ａの補間曲線ＩＣは以下の拘束条件を満足する。
【００４５】
ＩＣ（０）＝０
ＩＣ（１）＝１
ｄＩＣ（０）／ｄｔ＝０
ｄＩＣ（１）／ｄｔ＝０
最初の二つの拘束条件は、点Ｅａが固定されており（従って、移動しない）且つ点Ｅｅが選択されたもの（従って、ユーザによって特定された量だけ移動する）であるという事実から得られる。最後の二つの拘束条件は、ｔ＝０及びｔ＝１における補間曲線の勾配が０であることを特定し、そのことは、実効的に、その曲線端点における複合曲線の勾配が変化しないことを特定する。補間曲線ＩＣの三次多項式解を図５に与えてある。点Ｃｐ＋及びＣｐ−を接線Ｙｐに沿って配置させることにより、ライン（Ｐ−  −  Ｐ）及び（Ｐ  −  Ｐ＋）の共直線性が維持される。
【００４６】
ＩＣ（ｔ）＝ｔ×ｔ×（３．０−２．０×ｔ）                （５）
パラメータＣａ＋乃至Ｃｅ−の値は、各々、Ｃａ及びＣｅの値の間、即ち０と１との間である。注意すべきことであるが、勾配点Ｅａ＋及びＥｅ−は技術的には自由点であるが、Ｃａ＋及びＣｅ−の値は、ｔ＝０，１における補間曲線ＩＣ（ｔ）の勾配がゼロであるという条件によって拘束される。従って、Ｃａ＋の値は０であり且つＣｅ−の値は１である。
【００４７】
一つの選択したセグメント端点又は複数個の端点をドラッグすることによって曲線を移動させることの能力に加えて、その曲線端点における複合曲線の勾配を調節することも可能である。図２Ｄ及び２Ｅを参照すると、複合曲線３１０が単一のベジェ曲線を近似するセグメント３１２と関連しており、それは複合曲線３１０からサンプルした点に対する最小二乗当て嵌めを使用して複合曲線３１０を近似する。近似用ベジェセグメント３１２は、セグメント端点Ｐ０及びＰ３及び勾配点Ｐ１及びＰ２（以後、複合曲線３１０の「擬似」勾配点Ｐ１及びＰ２と呼称する）によって画定される。近似用セグメント３１２は、厳格には、複合曲線３１０の曲線端点Ｅａか又は曲線端点Ｅｅの何れかにおける勾配をユーザが調節することを可能とするユーザインターフェース機能である。曲線端点における勾配を変更するためにその他の方法を使用することも可能である。例えば、より簡単なユーザインターフェース方法は、端点Ｐ０とＰ３との間に画定されるラインに沿って擬似勾配点Ｐ１及びＰ２を画定することであり、点Ｐ１は該ラインに沿っての１／３の位置であり且つ点Ｐ２は２／３の位置である。別の例としては、該プログラムは、勾配調節モードへ入るためにユーザによって選択可能なユーザインターフェースにおけるボタンを提供することである。従って、ユーザはどの曲線端点が修正されるべきかをマーク付けすることが可能であり且つ任意の勾配調節点をドラッグして、その曲線端点のうちの一つにおいて複合曲線の勾配を調節するために勾配調節点の変位ベクトルを与えることが可能である。
【００４８】
複合曲線端点（Ｅａ又はＥｅ）における勾配を修正するために、ユーザはベジェセグメント３１２の擬似勾配点Ｐ１又はＰ２を選択し且つドラッグする。Ｐ１の選択は、Ｅａにおける勾配を修正し且つＰ２の選択はＥｅにおける勾配を修正する。対照的に、前述したように、特定のセグメント端点又は複合曲線３１０の端点が移動されるべき場合には、ユーザはセグメント端点Ｅａ，Ｅｂ，Ｅｃ，Ｅｄ又はＥｅを選択し且つそれらを所望の変位だけドラッグする。擬似勾配点Ｐ１又はＰ２は変位ベクトルによってドラッグされ（図８において例示した如く）、端点Ｅａ又はＥｅにおいて該曲線の勾配を修正する。擬似勾配点Ｐ１又はＰ２の変位に応答して、該プログラムは、セグメント端点の移動について上述したのと同様の２ステップマッピング技術を使用して、該複合曲線の制御点に対する変位を計算する。その違いは勾配修正マッピングステップにおいて使用される補間曲線に存在している。補間曲線は点Ｐ１近くの制御点の変位は他の制御点のものより大きいように画定されねばならない。一つの曲線端点における勾配のみが調節され、反対側の曲線端点における勾配は不変のままである。
【００４９】
図２Ｅにおいて、擬似勾配点Ｐ１の変位ベクトルＢがステップ４４０において受取られる。次いで、該プログラムは制御点Ｅａ，Ｅａ＋，Ｅｂ−，Ｅｂ，Ｅｂ＋，Ｅｃ−，Ｅｃ，Ｅｃ＋，Ｅｄ−，Ｅｄ，Ｅｄ＋，Ｅｅ−，Ｅｅを、距離マッピングか又は投影マッピング（距離マッピングを図２Ｄに示してある）を使用して、ラインセグメントｔ上へマッピングさせる。次いで、ステップ４４４において、ラインセグメントｔ上に補間曲線ＩＣ（ｔ）（それはセグメント端点を移動させるための補間曲線とは異なる）が画定され、該補間曲線ＩＣ（ｔ）は以下の条件を満足せねばならない。
【００５０】
ＩＣ（０）＝０
ＩＣ（１）＝０
ｄＩＣ（０）／ｄｔ＞０
ｄＩＣ（１）／ｄｔ＝０
該条件は、ｔ＝０，１における補間曲線ＩＣ（ｔ）の値は０であり、ｔ＝１におけるＩＣ（ｔ）の勾配は０であり、且つｔ＝０におけるＩＣ（ｔ）の勾配は０より大きいことを特定する。
【００５１】
特定された条件を満足する一つのタイプの多項式はバーンスタイン（Ｂｅｒｎｓｔｅｉｎ）多項式であり、それは次式（６）のように表わされる。
【００５２】
ＩＣ（ｔ）＝３×ｔ×（１．０−ｔ）2                    （６）
次いで、ステップ４４６において、点Ｔａ＋，Ｔｂ−，Ｔｂ，Ｔｂ＋，Ｔｃ−，Ｔｃ，Ｔｃ＋，Ｔｄ−，Ｔｄ，Ｔｄ＋，Ｔｅ−が補間曲線ＩＣ（ｔ）上にマッピングされる。該マッピングは図２Ａのマッピング技術に関連して説明したものと同一であり、その場合には、セグメント端点と関連するパラメータＴｐが補間曲線ＩＣ（ｔ）上にマッピングされ、且つ勾配点に関連するパラメータＴｐ−及びＴｐ＋がｔ＝Ｔｐにおいて接線Ｙｐに対してマッピングされる。次いで、該プログラムは、ステップ４４８において、スケールファクタ即ち拡縮率Ｃｐ，Ｃｐ−，Ｃｐ＋の値を計算して、制御点Ｅａ乃至Ｅｅの変位を決定する。次いで、ステップ４４９において、該制御点は、計算された変位だけ該プログラムによって移動される。
【００５３】
式６のバーンシタイン多項式を使用して、最大移動はラインセグメントｔに沿って１／３の点においてであり、即ちｔ＝１／３においてである。この様な点は必ずしも複合曲線制御点と関連する点Ｔｐ，Ｔｐ＋又はＴｐ−に対応するものではない。
【００５４】
図２Ｄの例は、複合曲線３１０の曲線端点Ｅａにおける勾配の修正を示している。曲線端点Ｅｅにおける勾配が修正されるべき場合には、擬似勾配点Ｐ２が選択され且つ移動される。その場合には、補間曲線に対する条件は異なり、ｔ＝０におけるＩＣ（ｔ）の勾配は０に等しく且つｔ＝１におけるＩＣ（ｔ）の勾配は０より小さい。その結果、式６の補間曲線はラインセグメントｔ上に鏡像関係に構成される。
【００５５】
別の実施例においては、複合曲線における任意のセグメント端点の勾配を修正することが可能である。このことを可能とするために、該プログラムは、ユーザが選択を希望する複合曲線の部分の他方の端部におけるセグメント端点とそのセグメント端点との間の近似する曲線を表示する。例えば、図２Ｄにおいて、影響されるべき複合曲線の部分が点ＥｂとＥｄとの間であり、且つＥｂにおける勾配が修正されるべき場合には、近似用曲線は点ＥｂとＥｄとの間に画定される。
【００５６】
次いで、この短縮された近似用曲線の擬似勾配点Ｐ１をドラッグしてセグメント端点Ｅｂにおける勾配を修正する。注意すべきことであるが、セグメント端点Ｅｂにおける勾配の修正は（それが曲線端点ではないので）影響を受ける曲線セグメント（ＥｂとＥｃとの間）とその隣接する曲線セグメント（ＥａとＥｂとの間）の間における滑らかな遷移を破壊する。
【００５７】
例示的な曲線の変形を図５乃至８に示してあり、その場合に、元の曲線は太線で表わしてあり且つ修正された即ち変形された曲線は点線で表わしてあり、それらは元の曲線とは異なっている。
【００５８】
図５を参照すると、マルチセグメント複合曲線２００を、複合曲線２００′を発生させるための本発明の技術によって修正することが可能である。固定点はセグメント端点Ｅ２０６であり、選択点はセグメント端点Ｅ２００，Ｅ２０１，Ｅ２０２，Ｅ２０３，Ｅ２０４，Ｅ２０５であり、それらはグループとして新たなセグメント端点Ｅ２００′−Ｅ２０５′へそれぞれドラッグされる。固定セグメント端点Ｅ２０６と選択セグメント端点Ｅ２０５との間の自由点の変位は、元の曲線２００の一般的な形状と詳細及び曲線セグメント間の遷移の滑らかさを維持するために該プログラムによって決定される。
【００５９】
図６を参照すると、該経路修正技術は、更に、セグメント端点Ｅ１２０，Ｅ１２１，Ｅ１２２，Ｅ１２３及びＥ１２４間における四つのベジェセグメント１２２，１２３，１２４，１２５によって画定される長円形１２０のような循環的な又は閉じた曲線に対しても適用することが可能である。唯一の新たな考慮事項は、点を繰返し取扱うことが必要となり、即ち最初の点と最後の点が隣接しているものと考える。長円形１２０は元の経路１２０から新たな経路１２０′へ修正されており、セグメント端点Ｅ１２０は固定点であり且つセグメント端点Ｅ１２３は選択点である。残りの点は自由点であって、それらの変位は複合曲線１２０′の円形形状を維持すべく該プログラムによって計算される。
【００６０】
図７Ａ及び７Ｂは該プログラムによって移動される制御点のディスジョイント（解体）グループを例示している。図７Ａにおいて、６個のセグメントからなる複合曲線３２０が曲線３２０′へ変形されており、セグメント端点Ｅ３２０，Ｅ３２３，Ｅ３２６は固定点であり且つセグメント端点Ｅ３２１及びＥ３２４は選択点である。固定点Ｅ３２０とＥ３２３との間の制御点は第一グループの制御点を形成しており、且つ固定点Ｅ３２３とＥ３２６との間の制御点は第二グループの制御点を形成している。これら二つのグループに対して別個のマッピングを実行して、自由制御点の変位を決定する。
【００６１】
図７Ｂは四つのディスジョイントグループの制御点を例示しており、即ち複合曲線２２０における二つのグループと複合曲線２３０における二つのグループとを示している。固定点はセグメント端点Ｅ２２０，Ｅ２２３，Ｅ２２５，Ｅ２３１，Ｅ２３５であり、且つ選択点はセグメント端点Ｅ２２１，Ｅ２２４，Ｅ２３０，Ｅ２３４である。単一移動操作において、これら四つのディスジョイントグループにおける自由点の変位は、四つの別々のマッピングを使用して計算される（この場合に画定されるマッピングは二つの固定点の間の制御点に対して必要とされるマッピングである）。この場合も、勾配点は二つの複合曲線２２０′及び２３０′における曲線セグメントの滑らかな遷移を維持するために調節される。図８は曲線端点Ｐ０における複合曲線３２０の勾配の修正を例示している。複合曲線３２０は複数個のベジェ曲線セグメント（簡単化のために示していない）を包含している。共通の端点Ｐ０及びＰ３を共用しており且つ擬似勾配点Ｐ１及びＰ２を有する単一のベジェセグメントである近似用曲線３２２も複合曲線３２０と共に表示されている。擬似勾配点Ｐ１は、変位ベクトルＶによって点Ｐ１′へ移動され、且つ複合曲線３２０の勾配は複合曲線３２０′を形成するように調節される。近似用曲線３２２は曲線３２２′へ移動される。複合曲線端点の何れかにおいての勾配のさらなる修正のためには、擬似勾配点Ｐ１′及びＰ２を更に移動させることが可能である。
【００６２】
図９Ａ及び９Ｂを参照すると、曲線セグメントは移動されるのみならず描画されることを必要とする。上述したように、ベジェセグメントは四つの制御点Ｐ０，Ｐ１，Ｐ２，Ｐ３によって画定され、その場合に、点Ｐ０及びＰ３はセグメント端点であり且つ点Ｐ１及びＰ２は勾配点である。描画操作期間中にユーザに対してフィードバックを与えるために、該プログラムは、マウスボタンが押された時に、セグメント端点Ｐ０とカーソルとの間に曲線を形成し且つ表示し、且つ現在のカーソル位置をセグメント端点Ｐ３の瞬間的な位置として且つ以下に説明するように勾配点Ｐ１及びＰ２に対する計算した位置を使用して、「輪ゴム」ベジェセグメントでカーソルを追跡する。
【００６３】
図９Ａを参照すると、該プログラムは、ステップ５００において、マウスボタンが押されたか否かを決定する。押された場合には、該プログラムは、ステップ５０１において、カーソルが既存のベジェ曲線セグメントの制御点の所定の半径内に位置されているか否かをチェックする。位置されている場合には、該プログラムは、ステップ５０２において、制御点をカーソルによって示されている位置へ移動させる。
【００６４】
マウスボタンが押された時にカーソルが制御点の所定の範囲内にない場合には、該プログラムは、曲線セグメントの形成が所望されていることを認識し、次いで、該プログラムは、ステップ５０３において、修正キー（例えば、Ｃｔｒｌキー）が押されたか否か、又はコンピュータスクリーン上にその他の曲線が表示されていないかどうかを決定する。
【００６５】
ユーザが修正キー（例えば、Ｃｔｒｌキー）又は何らかのその他の活性化手段を押した場合、一方別の曲線セグメントが既に形成されている場合にはマウスボタンを押しつつ、それは、既存のセグメントとは別に曲線セグメントを形成することのユーザの希望を表わしている。そうでない場合には、該プログラムは新たなセグメントを既存のセグメントへ連結させて一連の曲線セグメントを形成する。
【００６６】
別の曲線セグメントが所望される場合には（即ち、修正キーが押されるか又はその他の曲線セグメントが形成されていない場合）、第一セグメント端点Ｐ０がステップ５０４において、ユーザがマウスボタンを押した場合のカーソルの点として画定される。次いで、該プログラムは、ステップ５０６において、何時マウスボタンが解放されるかを検知する。マウスボタンが解放されると、解放時におけるカーソルの位置が、ステップ５０８において、図１０Ａに示したように、中間勾配点Ｓ１として画定される。この点Ｓ１は、点Ｐ０から点Ｓ１へのベクトルＳの方向を表わすためにユーザによって選択される。勾配点Ｐ１は、ベクトルＳの方向におけるラインに沿って位置される。更に、該曲線セグメントはセグメント端点Ｐ０においてベクトルＳに対して接線方向である。
【００６７】
点Ｓ１をステップ５０８において画定した後に、該プログラムは、ステップ５１０において、マウスボタンが再度押されたか否かを決定する。押された場合には、カーソルの現在の位置が、ステップ５１２において、セグメント端点Ｐ３の位置として画定される。勾配点Ｐ１及びＰ２は、又、ステップ５１２において、セグメント端点Ｐ３の現在の位置に対して計算され、且つ該曲線セグメントは該曲線セグメントの形状のユーザのフィードバックを与えるために表示される。
【００６８】
点Ｐ１及びＰ２の位置は、ステップ５１２において、その曲線が、図９Ｂに示したように、Ｐ０とカーソルとを通過する円の円弧の近似であるように該プログラムによって計算される。カーソルがユーザによってドラッグされると、セグメント端点Ｐ３の瞬間的な位置は該カーソルに追従し（点Ｐ３，Ｐ３′，Ｐ３″によって示されているように）、且つ勾配点Ｐ１及びＰ２は再計算されて（点Ｐ１，Ｐ２；Ｐ１′，Ｐ２′；Ｐ１″，Ｐ２″によって示されているように）円弧の近似を維持する。
【００６９】
次いで、該プログラムは、ステップ５１４において、マウスボタンが解放されたか否かを決定する。解放された場合には、カーソルの現在の位置はセグメント端点Ｐ３の位置を継続して表わす。マウスボタンが解放されると、セグメント端点Ｐ３の最終的な位置が、ステップ５１６において、マウスボタンが解放された時のカーソルの位置として特定される。勾配点Ｐ１及びＰ２の最終的な位置も計算され且つ該曲線セグメントが表示される。
【００７０】
ステップ５０２において、修正キーが押し下げられず且つ曲線セグメントが既に形成されている場合には、該プログラムは、ユーザが複合曲線の次のセグメントを形成することを所望しているものと仮定する。図１０Ｂに示したように、第一曲線セグメント６００の点Ｐ２は点Ｐ３を介して反映されて、次の曲線セグメント６０２に対する中間勾配点Ｓ１′の位置を画定する。ライン（Ｐ２−Ｐ３）はライン（Ｐ３−Ｓ１′）と共直線性であり、曲線セグメント６００と６０２との間に滑らかな遷移を形成する。マウスボタンが押されると、カーソルの現在の位置が新たな曲線セグメント６０２のセグメント端点Ｐ３′の瞬間的な位置として使用され、且つ曲線セグメント６０２の勾配点Ｐ１′及びＰ２′の位置が、セグメント端点Ｐ３′が位置を変える毎に計算される。次いで、該プログラムは、ステップ５１４において、マウスボタンが解放されたか否かを検知し、その時に、セグメント端点Ｐ３′の最終的な位置が決定される。上述したプロセスは、該複合曲線に対して付加すべき付加的な曲線セグメントを形成するために適用することが可能である。
【００７１】
再度図１０Ａを参照すると、勾配点Ｐ１及びＰ２の位置を計算するための数式を式７−１３として示してある。これらの式において、点Ｐ０，Ｐ１，Ｐ２，Ｐ３，Ｓ１は任意の座標系におけるベクトルとして表現されている。
【００７２】
Ｗ＝Ｐ３−Ｐ０                                          （７）
Ｓ＝Ｓ１−Ｐ０                                          （８）
ＣＯＳＡ＝Ｗ・Ｓ／｜Ｗ｜×｜Ｓ｜                        （９）
ｍ＝２×｜Ｗ｜／｛３×（１＋ｃｏｓＡ）｝                （１０）
ｖ＝１−（２×ｍ×ｃｏｓＡ／｜Ｗ｜）                    （１１）
Ｐ１＝Ｐ０＋ｍ×Ｓ／｜Ｓ｜                              （１２）
Ｐ２＝Ｐ１＋ｖ×Ｗ                                      （１３）
ＷはベクトルＰ３とＰ０との間の差として定義されるベクトルであり、且つＳはベクトルＳ１とＳ０との間の差として定義されるベクトルである。角度ＡはベクトルＷとベクトルＳとの間の角度として定義される。式９及び１０はスカラ値ｍ及びｖを計算し、値ｍは式１１におけるベクトルＰ１を派生するためのＳベクトルの方向に指向する単位ベクトルのスケールファクタ（拡縮率）として使用され、且つ値ｖは式１２におけるベクトルＰ２を派生するためにベクトルＷのスケールファクタ（拡縮率）として使用される。
【００７３】
図１１を参照すると、本明細書に基づいて曲線を形成し且つ修正するためのプログラムをデジタル電子回路において又はコンピュータファームウエア、ソフトウエア又は例えばコンピュータシステム５００におけるようにそれらの組合わせにおいて実現することが可能である。コンピュータシステム５００は、内部システムバス５０４へ接続している中央処理装置（ＣＰＵ）５０２を包含している。コンピュータシステム５００における格納媒体は、メインメモリ５０６（ダイナミックランダムアクセスメモリ装置で実現することが可能である）、大量格納用のハードディスクドライブ５０８、電気的に消去可能でプログラム可能なリードオンリーメモリ（ＥＥＰＲＯＭ）５１０を包含している。メインメモリ５０６及びＥＥＰＲＯＭ５１０はバス５０４へ接続しており、且つハードディスクドライブ５０８はハードディスクドライブコントローラ５１２を介してバス５０４へ結合している。
【００７４】
本発明の装置は、ＣＰＵ５０２によって実行するために機械読取り可能な格納装置（例えば、ハードディスクドライブ５０８、メインメモリ５０６、又はＥＥＰＲＯＭ５１０）において明確に具体化されたコンピュータプログラムプロダクトの形態で実現することが可能である。適宜のプロセサは、例示として、汎用及び特定目的マイクロプロセサの両者を包含している。一般的に、プロセサは、命令及びデータをリードオンリーメモリ５１０及び／又はメインメモリ５０６から受取る。コンピュータプログラム命令を明確に具現化するのに適した格納装置は、例示として、例えばＥＰＲＯＭ，ＥＥＰＲＯＭ及びフラッシュメモリ装置などの半導体メモリ装置、例えば内部ハードディスクドライブ５０８などの磁気ディスク及び着脱自在なディスク、磁気・光学ディスク、ＣＤ−ＲＯＭディスクを包含する全ての形態の非揮発性メモリを包含している。前述したものの何れかが特別に設計されたＡＳＩＣ（応用特定集積回路）によって補充されるか又はその中に組込むことが可能である。
【００７５】
コンピュータシステム５００は、更に、バス５０４へ接続している入力／出力（Ｉ／Ｏ）コントローラ５１４を包含しており、それは、キーボードインターフェース５１６（外部キーボードへ接続するため）、マウスインターフェース５１８（外部マウス又はその他のポインタデバイスへ接続するため）、及びパラレルポートインターフェース５２０（プリンタへ接続するため）を提供している。更に、バス５０４はビデオコントローラ５２２へ接続しており、それは外部コンピュータモニタ又はディスプレイ５２４へ結合している。コンピュータモニタ５２４上で表示するための画像（例えば、曲線）と関連するデータはアプリケーションプログラムによってシステムバス５０４を介してビデオコントローラ５２２へ供給される。
【００７６】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ限定されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。例えば、本発明のステップは当業者によって適宜変更させることが可能であり尚且つ所望の結果を得ることが可能である。種々の受取られるコマンドは、多数の異なる態様でコンピュータへ供給することが可能であり、例えば、マウスジェスチャ、キーボードストローク、及びグラフィカルユーザインターフェースを使用してコマンドをコンピュータシステムと通信することが可能である。
【図面の簡単な説明】
【図１】  コンピュータディスプレイ上の複合曲線の移動を示した概略図。
【図２Ａ】  選択したセグメント端点の移動に応答して複合曲線を定義する制御点の変位を計算するために使用される２ステップマッピング技術を示した概略図。
【図２Ｂ】  ２ステップマッピング技術を示したフローチャート。
【図２Ｃ】  ２ステップマッピング技術において使用される距離マッピング方法を示したフローチャート。
【図２Ｄ】  曲線端点における複合曲線の勾配の修正の２ステップマッピング技術を示した概略図。
【図２Ｅ】  曲線端点における複合曲線の勾配の修正の２ステップマッピング技術を示したフローチャート。
【図３】  複合曲線上の点を直交するラインに対してマッピングする投影マッピング方法を示した概略図。
【図４】  投影マッピング方法のフローチャート。
【図５】  複数個の制御点が選択され且つ一つのグループとして硬直的に移動される場合の複合曲線の移動を示した概略図。
【図６】  閉じた経路の曲線の移動を示した概略図。
【図７Ａ】  ディスジョイントグループの移動される点を有する複合曲線の移動を示した概略図。
【図７Ｂ】  二つの複合曲線の移動を示した概略図。
【図８】  曲線端点における複合曲線の勾配の修正を示した概略図。
【図９Ａ】  ベジェ曲線セグメントを形成する方法のフローチャート。
【図９Ｂ】  ユーザによって形成中のベジェ曲線セグメントを示した概略図。
【図１０Ａ】  関連する制御点及びベクトルと共にベジェ曲線セグメントを示した概略図。
【図１０Ｂ】  複数個のベジェ曲線セグメントを有する複合曲線を示した概略図。
【図１１】  コンピュータシステムを示した概略ブロック図。
【図１２】  ベジェ曲線セグメントを示した概略図。
【符号の説明】
２２，２３，２４  ベジェセグメント
３０  複合ベジェ曲線
Ｅ１−Ｅ４  セグメント端点
Ｐ０，Ｐ３  端点
Ｐ１，Ｐ２  勾配点
ｔ  ラインセグメント
Ｅｐ  セグメント端点
Ｅｐ＋，Ｅｐ−  勾配点
Ｔｐ＋，Ｔｐ−  パラメータ
ＩＣ  補間曲線
【図１】
0004153065.tif 000003
【図２Ａ】
0004153065.tif 000004
【図２Ｂ】
0004153065.tif 000005
【図２Ｃ】
0004153065.tif 000006
【図２Ｄ】
0004153065.tif 000007
【図２Ｅ】
0004153065.tif 000008
【図３】
0004153065.tif 000009
【図４】
0004153065.tif 000010
【図５】
0004153065.tif 000011
【図６】
0004153065.tif 000012
【図７Ａ】
0004153065.tif 000013
【図７Ｂ】
0004153065.tif 000014
【図８】
0004153065.tif 000015
【図９Ａ】
0004153065.tif 000016
【図９Ｂ】
0004153065.tif 000017
【図１０Ａ】
0004153065.tif 000018
【図１０Ｂ】
0004153065.tif 000019
【図１１】
0004153065.tif 000020
【図１２】
0004153065.tif 000021