(57)【特許請求の範囲】
【請求項１】
図形処理装置における図形処理方法であって、
垂直な２直線に接した所定の楕円を回転移動させるための移動基準点Ｐを入力する移動基準点入力工程と、
前記移動基準点Ｐに一番近い前記楕円の円弧上の点Ｐ'の位置を計算する第１の計算工程と、
前記楕円の回転移動先を指示する移動先指示点Ｑを入力する移動先指示点入力工程と、
前記移動先指示点Ｑに一番近い楕円の円弧上の点Ｑ'の位置を計算する第２の計算工程と、
前記楕円を、前記２直線に接したまま、点Ｐ'から点Ｑ'の方向に、前記楕円の中心Ｏを頂点とする角度Ｐ'ＯＱ'分だけ回転した形状を持つように回転・移動させる回転・移動工程と
を備えることを特徴とする図形処理方法。
【請求項２】
前記点Ｐと前記点Ｐ'間の距離が所定の距離より小さければ、前記点Ｐの入力を無効とする工程をさらに備えることを特徴とする請求項１に記載の図形処理方法。
【請求項３】
前記点Ｑと前記点Ｑ'間の距離が所定の距離より小さければ、前記点Ｑの入力を無効とする工程をさらに備えることを特徴とする請求項１に記載の図形処理方法。
【請求項４】
前記回転・移動工程は、
前記楕円を、点Ｐ'から点Ｑ'の方向に、角度Ｐ'ＯＱ'分だけ回転で回転させる回転工程と、
前記回転工程により回転後の楕円を、前記２直線に接するように平行移動する移動工程とを備えることを特徴とする請求項１に記載の図形処理方法。
【請求項５】
垂直な２直線に接した所定の楕円を回転移動させるための移動基準点Ｐを入力する移動基準点入力手段と、
前記移動基準点Ｐに一番近い前記楕円の円弧上の点Ｐ'の位置を計算する第１の計算手段と、
前記楕円の回転移動先を指示する移動先指示点Ｑを入力する移動先指示点入力手段と、
前記移動先指示点Ｑに一番近い楕円の円弧上の点Ｑ'の位置を計算する第２の計算手段と、
前記２直線に前記楕円が接したまま、点Ｐ'から点Ｑ'の方向に、前記楕円を前記楕円の中心Ｏを頂点とする角度Ｐ'ＯＱ'分だけ回転した形状を持つように回転・移動させる回転・移動手段と
を備えることを特徴とする図形処理装置。
【請求項６】
前記点Ｐと前記点Ｐ'間の距離が所定の距離より小さければ、前記点Ｐの入力を無効とする手段をさらに備えることを特徴とする請求項５に記載の図形処理装置。
【請求項７】
前記点Ｑと前記点Ｑ'間の距離が所定の距離より小さければ、前記点Ｑの入力を無効とする手段をさらに備えることを特徴とする請求項５に記載の図形処理装置。
【請求項８】
前記回転・移動手段は、
前記楕円を、点Ｐ'から点Ｑ'の方向に、角度Ｐ'ＯＱ'分だけ回転で回転させる回転手段と、
前記回転手段により回転後の楕円を、前記２直線に接するように平行移動する移動手段とを備えることを特徴とする請求項５に記載の図形処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、図形入力処理方法とその装置、特に、楕円形状の入力処理方法とその装置に関するものである。
【０００２】
【従来の技術】
従来、垂直な２直線に接する楕円を画像処理システムに入力する時、一度、２直線に接する適当な楕円を生成した後、楕円の回転，移動をユーザのオペレーションにより修正するという方法があった。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来の方法は、垂直な２直線に接する楕円を入力する場合、特に、楕円を回転させて微妙な形状の修正を行なうときには、ユーザのオペレーションに負担がかかり、なおかつ正確に垂直な２直線に接する状態を保つのが難しいという問題があった。
【０００４】
本発明は、上記従来例に鑑みてなされたもので、直交する２直線に接したままの状態で楕円の回転・移動を容易に行うことができる図形処理方法とその装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、本発明の図形処理方法とその装置は以下の構成を備える。即ち、垂直な２直線に接した所定の楕円を回転移動させるための移動基準点Ｐを入力する移動基準点入力工程と、前記移動基準点Ｐに一番近い前記楕円の円弧上の点Ｐ'の位置を計算する第１の計算工程と、前記楕円の回転移動先を指示する移動先指示点Ｑを入力する移動先指示点入力工程と、前記移動先指示点Ｑに一番近い楕円の円弧上の点Ｑ'の位置を計算する第２の計算工程と、前記楕円を、前記２直線に接したまま、点Ｐ'から点Ｑ'の方向に、前記楕円の中心Ｏを頂点とする角度Ｐ'ＯＱ'分だけ回転した形状を持つように回転・移動させる回転・移動工程とを備える。
【０００６】
また、別の発明は垂直な２直線に接した所定の楕円を回転移動させるための移動基準点Ｐを入力する移動基準点入力手段と、前記移動基準点Ｐに一番近い前記楕円の円弧上の点Ｐ'の位置を計算する第１の計算手段と、前記楕円の回転移動先を指示する移動先指示点Ｑを入力する移動先指示点入力手段と、前記移動先指示点Ｑに一番近い楕円の円弧上の点Ｑ'の位置を計算する第２の計算手段と、前記２直線に前記楕円が接したまま、点Ｐ'から点Ｑ'の方向に、前記楕円を前記楕円の中心Ｏを頂点とする角度Ｐ'ＯＱ'分だけ回転した形状を持つように回転・移動させる回転・移動手段とを備える。
【０００７】
【作用】
以上の構成において、垂直な２直線に接した所定の楕円を回転移動させるための移動基準点Ｐを入力し、前記移動基準点Ｐに一番近い前記楕円の円弧上の点Ｐ'の位置を計算し、前記楕円の回転移動先を指示する移動先指示点Ｑを入力し、前記移動先指示点Ｑに一番近い楕円の円弧上の点Ｑ'の位置を計算し、前記楕円を、前記２直線に接したまま、点Ｐ'から点Ｑ'の方向に、前記楕円の中心Ｏを頂点とする角度Ｐ'ＯＱ'分だけ回転した形状を持つように回転・移動させる。
【０００８】
また、別の発明は、移動基準点入力手段が、垂直な２直線に接した所定の楕円を回転移動させるための移動基準点Ｐを入力し、第１の計算手段が、前記移動基準点Ｐに一番近い前記楕円の円弧上の点Ｐ'の位置を計算し、移動先指示点入力手段が、前記楕円の回転移動先を指示する移動先指示点Ｑを入力し、第２の計算手段が、前記移動先指示点Ｑに一番近い楕円の円弧上の点Ｑ'の位置を計算し、回転・移動手段が、前記２直線に前記楕円が接したまま、点Ｐ'から点Ｑ'の方向に、前記楕円を前記楕円の中心Ｏを頂点とする角度Ｐ'ＯＱ'分だけ回転した形状を持つように回転・移動させる。
【０００９】
【実施例】
以下、図面を参照して、本実施例の図形入力処理装置の詳細な説明を行う。
図２は、本実施例の図形入力処理装置のブロック図である。
図２を参照して、バス１(制御線，データ線およびアドレス線を含む)には、中央処理装置(ＣＰＵ)２，リード・オンリー・メモリ(ＲＯＭ)３，ランダム・アクセス・メモリ(ＲＡＭ)４，入力インターフェース５を介して入力装置６，ＣＲＴインターフェース７を介してＣＲＴ８，外部記憶装置インターフェース９を介して、磁気ディスク，磁気テープ等のの外部記憶装置１０が接続されている。
【００１０】
ＣＰＵ２は、ＲＯＭ３に記憶されたプログラムに応じ、ＲＡＭ４を一時記憶領域として使用し、各種の処理、例えば、図形入力制御，図形表示表示，ピック処理，隠面処理，内外判定等を行なう。
入力装置６は、キーボード，タブレット，マウス等であり、図形データの入力を行なう。尚、この図形データはホスト・コンピュータから受けてもよい。ＣＲＴ８は必要に応じて複数のビット・マップ・プレーン等を含んでおり図形を表示するものである。
【００１１】
次に、本実施例で取り扱う楕円の基本構成要素について、図３を参照して説明を行う。
以下の構成要素で楕円を定義することができる。即ち、
・楕円の中心位置
・楕円の長軸ベクトル：  楕円の長軸方向と同一方向を持ち、長軸と同一の長さを持つベクトル。
【００１２】
・楕円の短軸ベクトル：  楕円の短軸方向と同一方向を持ち、短軸と同                                一の長さを持つベクトル。
次に、図１は、本発明に係る１実施例の図形処理の流れを説明するフローチャートであり、各ステップ毎に処理内容を説明する。このフローチャートの処理に対応するプログラムは、予めＲＯＭ３に格納されており、ＣＰＵ２がこのプログラムを読み出して解釈して実行する。
【００１３】
はじめに、フローチャートの説明に入る前に、既に処理されている幾つかの前提について説明する。
まず、対象となる垂直な２直線及び楕円のデータは外部記憶装置またはランダムアクセスメモリに既に格納されているとする。これらのデータの入力は、例えば、入力装置６等から与えられる。
【００１４】
それらデータの示す垂直な２直線及び楕円の一例を図４の４ａに示す。
以下、ステップ１から順に、本実施例の図形処理装置での楕円形状入力処理の説明を行なう。尚、以下の説明では、各種の変数名が登場するが、それら各変数名はランダムアクセスメモリ４の別々の領域に割り当てられているとする。
ステップＳ１では、楕円に接する垂直な２直線がＸ軸，Ｙ軸に平行になるように回転した２直線および楕円の新しい位置を算出する。
【００１５】
図４の４ａに示すこれら垂直な２直線（１１、１２）、及び楕円（Ｃ0）のデータに基づいて、楕円に接する垂直な２直線１１，１２がＸ軸，Ｙ軸に平行になるように、２直線（１１、１２）の交点を中心として、２直線及び楕円を回転したデータを算出する。回転された２直線（１１０、１２０）及び楕円（Ｃ1）を図４の４ｂに示す。
【００１６】
そして、回転された２直線（１１０、１２０）及び楕円（Ｃ1）のデータを、ランダムアクセスメモリ４に格納する。
ここで、回転データの具体的算出方法は、Ｘ軸と直線１１のなす角度Φ（図４の４ａ）を求めて、楕円の中心、および楕円の短軸，長軸ベクトルを−Φだけ回転する。例えば、よく知られているように、回転角度Φをパラメータとする回転マトリクスを用いて、回転前の座標とのマトリクス積を計算することで、回転後の座標を容易に求めることができる。
【００１７】
ここで、回転後の楕円に対する新たな座標軸を回転変換された２直線（１１０、１２０）とすると、その新たな座標軸によって作られる第１，２，３，４像限のいずれに楕円があるかによってそれぞれ、ケース１，２，３，４とする。即ち、例えば、楕円がその第１像限にあるときはケース１とし、第４像限にあるときはケース４とする。
【００１８】
ステップＳ２では、Ｘ軸，Ｙ軸に対する回転変換後の２直線（１１０、１２０）のｙ座標値，ｘ座標値をｙ0，ｘ0にセットする。
具体的には、直線１１０は、そのＹ座標値をｙｙとすると、
ｙ＝ｙｙ
であり、
また、直線１２０はそのＸ座標値をｘｘとすると、
ｘ＝ｘｘ
となる。そこで、Ｙ座標値を示す変数名ｙ０にｙｙをセットし、また、Ｘ座標値を示す変数名ｘ０にｘｘをセットする。
【００１９】
ステップＳ３では、ユーザの指示する（入力装置６により）移動基準点の座標値（図５のＰ）を入力する。そして、この座標値を変数名Ｐにセットする。
ステップＳ４では、移動基準点Ｐに一番近い楕円上の点Ｐ’を算出する（図５参照）。具体的には、ランダムアクセスメモリ４より、Ｐおよび元の楕円Ｃ０のデータを取り出して、Ｐに一番近いＣ０の点Ｐ’を算出し、ランダムアクセスメモリ４に格納する。
【００２０】
ステップＳ５では、ＰＰ’間の長さを算出して、変数名Ｔ１に設定する。具体的には、ランダムアクセスメモリ４より、Ｐ，Ｐ’の座標データを取り出して、ＰＰ’の長さを算出して変数名Ｔ１に格納する。
ステップＳ６では、[Ｔ１≦所定の基準値（ｅｐｓ）]が成立するかどうかを判定する。具体的には、ランダムアクセスメモリ４よりＴ１のデータ（ＰＰ’間の長さ）を、また、外部記憶装置９あるいはランダムアクセスメモリ４から所定の基準値（ｅｐｓ）を取り出して、[Ｔ１≦ｅｐｓ]が成立するかどうかを判定する。そして、成立すればステップＳ７へ進み、成立しなければステップＳ３へ戻る。
【００２１】
ステップＳ７では、ユーザの指示した移動先指定点座標Ｑを入力する（図５参照）。具体的には、ユーザが入力装置６のペン，デジタイザ，マウス等のポインティングデバイス、またはキーボードを用いて移動指定点の座標を入力し、変数名Ｑにセットする。
ステップＳ８では、移動先指定点Ｑに一番近い楕円上の点Ｑ’を算出する。具体的には、ランダムアクセスメモリ４よりＱおよび元の楕円Ｃ０のデータを取り出して、Ｑに一番近いＣ０上の点Ｑ’を算出して、ランダムアクセスメモリ４に格納する。
【００２２】
ステップＳ９では、ＱＱ’間の長さを算出して、変数名Ｔ２にセットする。具体的には、ランダムアクセスメモリ４より、Ｑ,Ｑ'の各座標データを取り出して、ＱＱ’間の長さを算出して、ランダムアクセスメモリ４に割り当てられた変数名Ｔ２にセットする。
ステップＳ１０では、[Ｔ２≦所定の基準値（ｅｐｓ）]が成立するかどうかを判定する。具体的には、ランダムアクセスメモリ４よりＴ２、即ち、ＱＱ’間の長さデータを、また、外部記憶装置あるいはランダムアクセスメモリ４から所定の基準値（ｅｐｓ）を取り出して、[Ｔ２≦ｅｐｓ]か成立するかどうかを判定する。そして、成立するならステップＳ１１へ進み、成立しなければステップＳ７へ戻る。
【００２３】
ステップＳ１１では、楕円中心Ｏに対するθ（∠Ｐ'ＯＱ'）を算出する。具体的には、ランダムアクセスメモリ４から、Ｐ’,Ｑ'、元の楕円Ｃ０の座標データを取り出して、楕円中心０に関するθ（∠Ｐ'０Ｑ'）を算出して、ランダムアクセスメモリ４に格納する。
ステップＳ１２では、ステップＳ１で求めた回転変換後の楕円Ｃ１を、θだけＰＱと同方向に回転した楕円Ｃ２を算出する（図６参照）。
【００２４】
具体的には、ランダムアクセスメモリ４から元の楕円Ｃ０及び、ステップＳ１で求めた変換後の楕円Ｃ１のデータを取り出し、楕円Ｃ０，Ｃ１をθだけＰ'Ｑ'と同方向に回転した楕円Ｃ２のデータを求めてランダムアクセスメモリ４に格納する。
具体的には、図５を参照しながら説明する。第５図で平面ＸＹに直交する手前に向かう軸をＺ軸とする。点Ｐ'から点Ｏへ向かうベクトルをＰ'Ｏと表現して、点Ｐから点Ｑ'へ向かうベクトルをＰＱ'と表現するとき、ベクトルＰ'ＯとベクトルＰＱ'との外積をベクトルＨとしたとき（即ち、Ｈ＝Ｐ'Ｏ×ＰＱ'：ｘは外積を意味する）、ベクトルＨの向きがＺ軸方向と同一ならば反時計回りを回転の向きとし、逆に、ベクトルＨの向きがＺ軸方向と逆ならば時計回りを回転の向きとする。そして、楕円中心を回転中心として楕円をθ回転させる。
ステップＳ１３では、楕円Ｃ２のｘ,ｙ座標それぞれの最小値または最大値を以下に説明する方法で計算して、変数名ｘ１と変数名ｙ１に格納する（図７参照）。  具体的には、
１.  ステップＳ１の処理でケース１と判定された場合：
楕円Ｃ２のｘ座標の最小値をｘ１に，ｙ座標の最大値をｙ１に設定する。
【００２５】
２.  ステップＳ１の処理でケース２と判定された場合：
楕円Ｃ２のｘ座標の最大値をｘ１に，ｙ座標の最小値をｙ１に設定する。
３.  ステップＳ１の処理でケース３と判定された場合：
楕円Ｃ２のｘ座標の最大値をｘ１に，ｙ座標の最大値をｙ１に設定する。
【００２６】
４.  ステップＳ１の処理でケース４と判定された場合：
楕円Ｃ２のｘ座標の最小値をｘ１に，ｙ座標の最大値をｙ１に設定する。
上述の最大値や最小値を求める方法を以下に説明する。いま、楕円を、
Ｐ(ｔ)＝Ｃ＋ａ・ｃｏｓ(ｔ)＋ｂ・ｓｉｎ(ｔ)  （０≦ｔ＜２π）
ここで、
Ｃ：楕円中心ベクトル
ａ：楕円長軸ベクトル
ｂ：楕円短軸ベクトル
ｔ：パラメータ
また、
ａ＝(ａｘ，ａｙ)
ｂ＝(ｂｘ，ｂｙ)
Ｐ(ｔ)ｘ＝（Ｐ(ｔ)のｘ座標）
Ｐ(ｔ)ｙ＝（Ｐ(ｔ)のｙ座標）
と表現する。このとき、ｘ１、ｙ１は、ａｘの値と上述のケースの種類によって次式を計算することで求める。
１. ａｘ≠０の場合：
(1-1)ケース１またはケース４の場合：
ｘ1=min(Ｐ(arctan(ｂｘ/ａｘ))ｘ，Ｐ(arctan(ｂｘ/ａｘ)＋π)ｘ)
(1-2)ケース２またはケース３の場合：
ｘ1=max(Ｐ(arctan(ｂｘ/ａｘ))ｘ，Ｐ(arctan(ｂｘ/ａｘ)＋π)ｘ)
(1-3)ケース１またはケース２の場合：
ｙ1=min(Ｐ(arctan(ｂｙ/ａｙ))ｘ，Ｐ(arctan(ｂｙ/ａｙ)＋π)ｙ)
(1-4)ケース３またはケース４の場合：
ｙ1=max(Ｐ(arctan(ｂｙ/ａｙ))ｘ，Ｐ(arctan(ｂｙ/ａｙ)＋π)ｙ)
２. ａｘ＝０の場合：
(2-1)ケース１またはケース４の場合：
ｘ1=min(ｂｘ，−ｂｘ)
(2-2)ケース２またはケース３の場合：
ｘ1=max(ｂｘ，−ｂｘ)
(2-3)ケース１またはケース２の場合：
ｙ1=min(ａｙ，−ａｙ)
(2-4)ケース３またはケース４の場合：
ｙ1=max(ａｙ，−ａｙ)
ステップＳ１４では、ベクトル(ｘ０−ｘ１，ｙ０−ｙ１)を計算し、これをベクトルＶと呼び、変数名Ｖに２つの成分値をセットする。具体的には、ｘ０,ｘ１,ｙ０,ｙ１のデータをランダムアクセスメモリ４から取り出し、
(ｘ０−ｘ１，ｙ０−ｙ１)を算出して、変数名Ｖが割り当てられたランダムアクセスメモリ４に格納する。
【００２７】
ステップＳ１５では、楕円Ｃ２に対してベクトルＶの方向にその大きさの分で平行移動を行った楕円Ｃ３を求める（図８参照）。具体的には、ランダムアクセスメモリ４より、ベクトルＶ，楕円Ｃ２のデータを取り出し、楕円Ｃ２に対してベクトルＶの方向にその大きさの分で平行移動を行った楕円Ｃ３のデータを算出してランダムアクセスメモリ４に格納する。楕円Ｃ３の中心ベクトルＯ３は、楕円Ｃ２の中心ベクトルＯ２とベクトルＶとから、
Ｏ３＝Ｏ２＋Ｖ
を計算することで簡単に求めることができる。
【００２８】
ステップＳ１６では、楕円Ｃ３にステップＳ１での回転と逆の回転をかけた楕円を計算する（図９参照）。具体的には、楕円Ｃ３のデータ、Φの値をランダムアクセスメモリ４から取り出し、楕円Ｃ３にΦの回転変換をかけた楕円のデータを算出する。そして、その楕円のデータを移動後の楕円としてランダムアクセスメモリ４に格納する。
【００２９】
ステップＳ１７では、ステップＳ１６で求められた移動後の楕円のデータをランダムアクセスメモリ４より取り出して、そのデータに基づいて対応する図形を画面に表示する。
ステップＳ１８では、入力装置６から、新たに所定の移動指示コマンドを入力したかどうかを判定する。これは、例えば、ユーザが入力装置６のうちのマウスを押したままなどの状態等の認識によって、移動指示を行っているかどうかの判定を行ない、移動指示があればステップＳ４へ戻り、上述した処理を繰り返す。また、なければ、移動後の楕円データを外部記憶装置９に格納して本処理を終了する。
【００３０】
尚、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器から成る装置に適用しても良い。また、本発明はシステム或は装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。以上説明したように、垂直な２直線に接する楕円を垂直な２直線に接したまま回転処理することにより、２直線によって張られる部分空間に２直線に外接する楕円弧を入力し、微妙な楕円形状の修正をユーザーの簡単な指示に対応して正確に処理することができる。
【００３１】
また、ユーザーの指示した移動基準点と移動先基準点をもとに、直接回転変換するのではなく、移動基準点と移動先基準点に対する楕円上の最短距離の点を求めて、それらの点に基づいて回転処理することにより、ユーザーの感覚により近い楕円形状の入力・修正ができる。
さらに、ユーザーの指示した点が楕円からある基準値以上離れているときは、移動基準点，移動先基準点として認識せずに、新しい点の入力を求めることにより、ユーザーの誤動作により意図しない楕円形状の入力・修正が行なわれることを防ぐことができる。
【００３２】
【発明の効果】
以上説明したように本発明によれば、直交する２直線に接したままの状態で楕円の回転・移動を容易に行うことができる。
【図面の簡単な説明】
【図１】本発明の好適な一実施例を示すフローチャートである。
【図２】本実施例の図形入力処理装置の一例を示すブロック図である。
【図３】楕円の構成要素を説明する図である。
【図４】２直線及び楕円を、２直線がｘ,ｙ軸に平行になるように座標変換する処理を説明する図である。
【図５】ユーザーの指示した移動基準点，移動先指示点，楕円上の移動基準点，移動先指示点，移動回転角度に基づく図形処理を説明する図である。
【図６】座標回転変換した楕円に、さらにユーザの指示した角度だけ回転処理を行うことを説明する図である。
【図７】楕円のＸ座標，Ｙ座標の最大値，最小値を求める処理を説明する図である。
【図８】回転した楕円をｘ,ｙ軸に平行な直線に接するように楕円に平行移動を行う処理を説明する図である。
【図９】２直線がｘ,ｙ軸に平行になる座標系での移動後の楕円を元の座標系に戻す処理を説明する図である。
【図１】
0003727975.tif 000002
【図２】
0003727975.tif 000003
【図３】
0003727975.tif 000004
【図４】
0003727975.tif 000005
【図５】
0003727975.tif 000006
【図６】
0003727975.tif 000007
【図７】
0003727975.tif 000008
【図８】
0003727975.tif 000009
【図９】
0003727975.tif 000010