(57)【特許請求の範囲】
【請求項１】
２つの幾何要素の交線を表わす図形の方程式の係数データを格納するデータメモリと処理プログラムを実行するＣＰＵとを備えた図形処理装置における図形処理方法であって、
前記ＣＰＵにより、前記データメモリに格納された前記係数データに基づく所定の判別式を計算して、前記図形を楕円と判定する第１の判定工程と、
前記第１の判定工程で前記図形を楕円と判定したとき、前記ＣＰＵにより、前記データメモリに格納された前記係数データに基づいて前記図形の短軸と長軸の長さを計算し、当該長さの差が所定値以下であれば、前記図形を円と判定し、当該長さの差が前記所定値以下でなければ、前記図形を楕円と判定する第２の判定工程と、
前記ＣＰＵにより、前記図形の短軸または長軸のいずれか一方の長さが所定値以下であれば、前記図形を点と判定する第３の判定工程とを備えることを特徴とする図形処理方法。
【請求項２】
前記第２の判定工程で前記図形を円と判定したとき、前記長軸の長さと前記短軸の長さとのいずれか一方、もしくは両者の平均値を前記円の半径の長さとすることを特徴とする請求項１に記載の図形処理方法。
【請求項３】
前記図形の方程式は、ｘ，ｙを変数とするａｘ2＋２ｈｘｙ＋ｂｙ2＋２ｇｘ＋２ｆｙ＋ｃ＝０で表現され、ａ，ｈ，ｂ，ｇ，ｆ，ｃは前記係数データに対応する所定の係数であることを特徴とする請求項１に記載の図形処理方法。
【請求項４】
前記第１の判定工程は、
ａｂ−ｈ2＞０、かつ、ａ／ｃ≦０、かつ、ｔを変数とする２次方程式 ｔ2−(ａ＋ｂ)ｔ＋ａｂ＝０ の解t1,t2に関して、ａ２、ｂ２を
ｈ＝０ならば、ａ２＝ａ，ｂ２＝ｂ
ｈ＞０ならば、ａ２＝max(t1,t2)，ｂ２＝min(t1,t2)
ｈ＜０ならば、ａ２＝min(t1,t2)，ｂ２＝max(t1,t2)
と設定し、−ｃ／ａ２のルート演算の結果をｒ１、−ｃ／ｂ２のルート演算の結果をｒ２とするとき、ｒ１≒ｒ２ならば、前記図形を楕円と判定することを特徴とすることを特徴とする請求項３に記載の図形処理方法。
【請求項５】
前記２つの幾何要素は、所定の平面と所定の円筒面とであることを特徴とする請求項１に記載の図形処理方法。
【請求項６】
前記第１の判定工程に先立って、前記ＣＰＵにより、前記平面の法線ベクトルと前記円筒面の軸ベクトルとの内積に基づく相関値を計算する計算工程と、
前記ＣＰＵにより、前記相関値の絶対値が所定の範囲値内であれば、前記図形を円と判定する第４の判定工程と、
前記ＣＰＵにより、前記相関係数の絶対値が所定の閾値以下であれば、前記図形を直線と判定する第５の判定工程とを備え、
前記第４及び第５の判定工程で前記図形が円もしくは直線と判定されたならば、前記第１の判定工程以降の処理を不実施とすることを特徴とする請求項５に記載の図形処理方法。
【請求項７】
前記２つの幾何要素は、所定の平面と、所定の円錐面もしくは球面とであることを特徴とする請求項１に記載の図形処理方法。
【請求項８】
２つの幾何要素の交線を表わす図形の方程式の係数データを格納するデータメモリと、
前記データメモリに格納された前記係数データに基づく所定の判別式を計算して、前記図形を楕円と判定する第１の判定手段と、
前記第１の判定手段で前記図形を楕円と判定したとき、前記データメモリに格納された前記係数データに基づいて前記図形の短軸と長軸の長さを計算し、当該長さの差が所定値以下であれば、前記図形を円と判定し、当該長さの差が前記所定値以下でなければ、前記図形を楕円と判定する第２の判定手段と、
前記図形の短軸または長軸のいずれか一方の長さが所定値以下であれば、前記図形を点と判定する第３の判定手段とを備えることを特徴とする図形処理装置。
【請求項９】
前記第２の判定手段で前記図形を円と判定したとき、前記長軸の長さと前記短軸の長さとのいずれか一方、もしくは両者の平均値を前記円の半径の長さとすることを特徴とする請求項８に記載の図形処理装置。
【請求項１０】
前記図形の方程式は、ｘ，ｙを変数とするａｘ2＋２ｈｘｙ＋ｂｙ2＋２ｇｘ＋２ｆｙ＋ｃ＝０で表現され、ａ，ｈ，ｂ，ｇ，ｆ，ｃは前記係数データに対応する所定の係数であることを特徴とする請求項８に記載の図形処理装置。
【請求項１１】
前記第１の判定手段は、
ａｂ−ｈ2＞０、かつ、ａ／ｃ≦０、かつ、ｔを変数とする２次方程式 ｔ2−(ａ＋ｂ)ｔ＋ａｂ＝０ の解t1,t2に関して、ａ２、ｂ２を
ｈ＝０ならば、ａ２＝ａ，ｂ２＝ｂ
ｈ＞０ならば、ａ２＝max(t1,t2)，ｂ２＝min(t1,t2)
ｈ＜０ならば、ａ２＝min(t1,t2)，ｂ２＝max(t1,t2)
と設定し、−ｃ／ａ２のルート演算の結果をｒ１、−ｃ／ｂ２のルート演算の結果をｒ２とするとき、ｒ１≒ｒ２ならば、前記図形を楕円と判定することを特徴とすることを特徴とする請求項１０に記載の図形処理装置。
【請求項１２】
前記２つの幾何要素は、所定の平面と所定の円筒面とであることを特徴とする請求項８に記載の図形処理装置。
【請求項１３】
前記第１の判定手段の前に、前記平面の放線ベクトルと前記円筒面の軸ベクトルとの内積に基づく相関値を計算する計算手段と、
前記相関値の絶対値が所定の範囲値内であれば、前記図形を円と判定する第４の判定手段と、
前記相関値の絶対値が所定の閾値以下であれば、前記図形を直線と判定する第５の判定手段とを備え、
前記第４及び第５の判定手段で前記図形が円もしくは直線と判定されたならば、前記第１の判定手段の処理を不実施とすることを特徴とする請求項１２に記載の図形処理装置。
【請求項１４】
前記２つの幾何要素は、所定の平面と所定の円錐面もしくは球面とであることを特徴とする請求項８に記載の図形処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、図形処理方法とその装置、特に、２つの図形の交線の算出方法に関するものである。
【０００２】
【従来の技術】
従来、交線を求めるときに、単純に２幾何要素の式を連立させて交線の式を代数的・解析的に求めるという方法があった。
また、交線を求めるときに、２幾何要素の幾何的な特徴を利用して、判別式等を使ってあらかじめ交線の種類を決定して、交線の計算を行なうという方法があった。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来の方法では、２幾何要素の関係の判定等で、桁落ち等による数値的な誤差が少しでも入った場合、統一的かつ実用的な基準で正しく判定できず、正しい交線が求まらないことが多いという問題があった。
本発明は、上記従来例に鑑みてなされたもので、２幾何要素のデータにノイズを含む場合であっても、適正にそれらの２幾何要素間の交線の種類を求める図形処理方法とその装置を提供することを目的とする。
【０００４】
【課題を解決するための手段】
上記目的を達成するため、本発明の図形処理方法とその装置は以下の構成を備える。即ち、２つの幾何要素の交線を表わす図形の方程式の係数データを格納するデータメモリと処理プログラムを実行するＣＰＵとを備えた図形処理装置における図形処理方法であって、前記ＣＰＵにより、前記データメモリに格納された前記係数データに基づく所定の判別式を計算して、前記図形を楕円と判定する第１の判定工程と、前記第１の判定工程で前記図形を楕円と判定したとき、前記ＣＰＵにより、前記データメモリに格納された前記係数データに基づいて前記図形の短軸と長軸の長さを計算し、当該長さの差が所定値以下であれば、前記図形を円と判定し、当該長さの差が前記所定値以下でなければ、前記図形を楕円と判定する第２の判定工程と、前記ＣＰＵにより、前記図形の短軸または長軸のいずれか一方の長さが所定値以下であれば、前記図形を点と判定する第３の判定工程とを備える。
【０００５】
また、別の発明は、２つの幾何要素の交線を表わす図形の方程式の係数データを格納するデータメモリと、前記データメモリに格納された前記係数データに基づく所定の判別式を計算して、前記図形を楕円と判定する第１の判定手段と、前記第１の判定手段で前記図形を楕円と判定したとき、前記データメモリに格納された前記係数データに基づいて前記図形の短軸と長軸の長さを計算し、当該長さの差が所定値以下であれば、前記図形を円と判定し、当該長さの差が前記所定値以下でなければ、前記図形を楕円と判定する第２の判定手段と、前記図形の短軸または長軸のいずれか一方の長さが所定値以下であれば、前記図形を点と判定する第３の判定手段とを備える。
【０００６】
【作用】
以上の構成において、ＣＰＵにより、２つの幾何要素の交線を表わす図形の方程式の係数データを格納するデータメモリに格納された前記係数データに基づく所定の判別式を計算して、前記図形を楕円と判定し、前記図形を楕円と判定したとき、前記データメモリに格納された前記係数データに基づいて前記図形の短軸と長軸の長さを計算し、当該長さの差が所定値以下であれば、前記図形を円と判定し、当該長さの差が前記所定値以下でなければ、前記図形を楕円と判定し、前記図形の短軸または長軸のいずれか一方の長さが所定値以下であれば、前記図形を点と判定する第３の判定する。
【０００７】
また、別の発明は、第１の判定手段が、２つの幾何要素の交線を表わす図形の方程式の係数データを格納するデータメモリに格納された前記係数データに基づく所定の判別式を計算して、前記図形を楕円と判定し、第２の判定手段が、前記第１の判定手段で前記図形を楕円と判定したとき、前記データメモリに格納された前記係数データに基づいて前記図形の短軸と長軸の長さを計算し、当該長さの差が所定値以下であれば、前記図形を円と判定し、当該長さの差が前記所定値以下でなければ、前記図形を楕円と判定し、前記図形の短軸または長軸のいずれか一方の長さが所定値以下であれば、前記図形を点と判定する第３の判定する。
【０００８】
【実施例】
まず、本発明に係る実施例の図形処理方法のポイントの一つは、２つの図形の交線を求める際に、交線の一般方程式の係数に基づいて、各種判別行列式を計算することで、おおまかな交線の種類を判別するという、いわゆる代数的判別を行い、その後、おおまかに各図形種に分類された交線をその複数の幾何的特徴量に基づいて最終的な交線の分類を決定し、また調整するという、いわゆる幾何学的分類処理を行う構成を有することにより、ノイズに強く適正な交線を求めることができることにある。
（実施例１）
図１は、本発明に係る１実施例の図形処理装置のブロック図であり、バス１（制御線，データ線およびアドレス線を含む）には、中央処理装置(ＣＰＵ)２，リード・オンリー・メモリ(ＲＯＭ)３，ランダム・アクセス・メモリ(ＲＡＭ)４，入力インターフェース５を介して入力装置６，ＣＲＴインターフェース７を介してＣＲＴ８，外部記憶装置インターフェース９を介して、磁気ディスク，磁気テープ等のの外部記憶装置１０が接続されている。
【０００９】
ＲＯＭ３に記憶されたプログラムに応じ、ＲＡＭ４を一時記憶装置として種々の処理及び制御、例えば図形入力制御，図形表示表示，ピック処理，隠面処理，内外判定等を行なう。
入力装置６はキーボード，タブレット，マウス等を備え、図形データの入力を行なうが、この図形データはホスト・コンピュータから受けてもよい。
【００１０】
ＣＲＴ８は、必要に応じて複数のビット・マップ・プレーン等を含んでおり、図形を表示する。
次に、本実施例の理解を容易にするために、図２に示すような円筒と平面による交線を求める方法、即ち、交線が楕円または円である場合での交線計算方法を一例として以下説明する。
【００１１】
図３は、本発明の一実施例の図形処理の流れを説明するフローチャートである。ここで、以下に述べる処理に対応する処理プログラムはＲＯＭ３に格納されており、ＣＰＵ２がこのプログラムを読み出して、解釈し、実行する。
以下、フローチャートを説明する前に、説明に必要となる用語の定義を行う。＜平面、および、円筒面等の記号および用語の定義＞
平面および円筒面に関する記号を図８に示すように定義する。
【００１２】
Ｐ０：平面上の基準点
ｎ０：平面の法線ベクトル（単位ベクトルとする）
ｃ０：円筒面の軸上の基準点
ｒ：  円筒面の半径
ｎ１：円筒面の軸ベクトル（単位ベクトルとする）
次の２つは図４には示されていないが、詳細は後述する。
【００１３】
ＥＰＳ：幾何学的許容長さ
ＥＰＳＡ：幾何学的許容角度
《用語》
・円筒面の基準面：
ｃ０を通り円筒面の軸に垂直な平面を円筒面の基準面という。
【００１４】
・幾何学的特徴値：
図形の中心，半径，長径，短径等の幾何学的な特徴を表す値。
次に、図３を参照して、本発明の一実施例の図形処理の流れを説明する。
尚、上述した変数名が以下の記述に表れるが、それらの変数名は、ランダムアクセスメモリ４に割り当てられているものとする。
【００１５】
まず、ステップＳ６では、交線の式から交線の種類・特徴量を算出する。
ここで、対象となる平面，円筒面のデータはすでに外部記憶装置またはランダムアクセスメモリに予め格納されているものとし、そこから対象となる平面，円筒面のデータ取り出す。
また、対象となる平面は、所定のｘｙ平面と平行になるように座標変換が既にかけられており、交線の式として２次曲線の一般形
ａ・ｘ2＋２ｈ・ｘｙ＋ｂ・ｙ2＋２ｇ・ｘ＋２ｆ・ｙ＋ｃ＝０
ここで、ａ，ｂ，ｃ，ｆ，ｇは定数。
の形式で既に求められており、ランダムアクセスメモリ４にそのデータが格納されているものとする。
【００１６】
上述の座標変換は、例えば、前記対象となる平面の各座標と所定の変換マトリクスＭ（所定のｘｙ平面と元座標空間での対象となる平面の角度をパラメータとする）の積を取ることで実現できる。また、逆に、変換された平面の各座標と前記変換マトリクスＭの逆行列Ｍ’の積を取ることにより、元の対象となる平面を求めることができる。
【００１７】
以下、本ステップでの詳細な処理内容を説明する。
まず、上の２次曲線の種類を判別するための行列式
0003774489.tif 000002
を算出し、ランダムアクセスメモリ４に格納する。そして、Ｄ＝０であるならば上の２次曲線を直線として分類する。
【００１８】
次に、上の２次曲線の種類を判別するための別な行列式
0003774489.tif 000003
を計算し、ランダムアクセスメモリ４に格納する。そして、△＝０ならば上の２次曲線を放物線として分類する。
【００１９】
次に、
ｘ０＝（ｒｆｈ−ｂｇ）／△
ｙ０＝（ｒｈｇ−ａｆ）／△
を計算し、ランダムアクセスメモリ４に格納する。そして、
Ｘ０＝（ｘ０，ｙ０）
を計算し、ランダムアクセスメモリ４に格納する。
【００２０】
次に、ａとｂの関係によって、以下の式
θ＝π／４：                              （もし、ａ＝ｂならば）
θ＝（１／２）ａｔａｎ（２ｈ／(ａ−ｂ)）：（もし、ａ≠ｂならば）
を計算し、ランダムアクセスメモリ４に格納する。
【００２１】
次に、
ｔ2−(ａ＋ｂ)ｔ＋ａｂ＝０
ここで、ａ，ｂは定数
の解ｔ１，ｔ２を計算し、ランダムアクセスメモリ４に格納する。
【００２２】
次に、ｈ＝０ならば、ａ，ｂをそれぞれａ２、ｂ２に代入、即ち、
ａ２＝ａ，ｂ２＝ｂ
の代入を行って、ランダムアクセスメモリ４に格納する。
【００２３】
また、ｈ＞０ならば、
ａ２＝ｍａｘ(ｔ１，ｔ２)
ｂ２＝ｍｉｎ(ｔ１，ｔ２)
ここで、ｍａｘ（ｘ１，ｘ２）：  ｘ１とｘ２のうちの大きい方を選択                                        する関数。
【００２４】
ｍｉｎ（ｘ１，ｘ２）：  ｘ１とｘ２のうちの小さい方を選択する関数。
を計算し、ランダムアクセスメモリ４に格納する。
また、ｈ＜０ならば、
ａ２＝ｍｉｎ(ｔ１，ｔ２)
ｂ２＝ｍａｘ(ｔ１，ｔ２)
を計算し、ランダムアクセスメモリ４に格納する。
【００２５】
次に、△＞０とならば、円，楕円，点楕円，虚楕円のいずれかであるとしてその結果（それらの種類を識別する所定のコード）をランダムアクセスメモリ４に格納する。
次に、ａ／ｃを計算して、
ａ／ｃ＞０
ならば、点，虚楕円として、その結果（それらの種類を識別する所定のコード）をランダムアクセスメモリ４に格納する。
【００２６】
ａ／ｃ＞０が成立しなければ、円または楕円として、その結果（それらの種類を識別する所定のコード）をランダムアクセスメモリ４に格納する。
次に、
ｒ１＝√(−ｃ／ａ２)
ｒ２＝√(−ｃ／ｂ２）
ここで、√(ｘ)：ｘのルートを演算する関数。
を計算し、ランダムアクセスメモリ４に格納する。
【００２７】
ここで、ｒ１−ｒ２＝０ならば円と判定し、それ以外ならば楕円判定し、その結果（それらの種類を識別する所定のコード）をランダムアクセスメモリ４に格納する。
上述の処理で円と判定されたならば、半径ｒｍｉｎ＝ｒ１＝ｒ２となる。また、その中心はＸ０である。これらのデータを、ランダムアクセスメモリ４に格納する。
【００２８】
また、上述の処理で楕円と判定されたときで、ｒ１＞ｒ２ならば、
長軸ベクトル：(ｒ１,０,０)を半時計周りにθ回転したベクトル
短軸ベクトル：(０,ｒ２,０)を半時計周りにθ回転したベクトル
中心：Ｘ０
としてそれらのデータをランダムアクセスメモリ４に格納する。
【００２９】
以上説明した判定条件を満足しない、即ち、円か楕円以外に分類されたときは、処理を終了する。逆に、円か楕円に分類されたときは、ステップＳ７へ進む。ステップＳ７では、ステップＳ６で分類された交線が楕円であるかチェックして、楕円であればステップＳ８へ進む。逆に、円であればステップＳ１１へ進む。
【００３０】
ステップＳ８では、長軸または短軸の長さが、所定の幾何学的許容長さであるＥＰＳ以下であるかを判定する。ここでの処理は、ステップＳ６で求めた楕円の特徴値である長軸，短軸ベクトルからそれらの大きさ（長さ）を計算して、その長軸または短軸の長さがＥＰＳ以下かどうかを判定する。そして、長軸または短軸の長さがＥＰＳ以下であれば、ステップＳ１３からのステップを行なう。逆に、その長軸または短軸の長さがＥＰＳ以下でなければ、ステップＳ９からの処理を行なう。
【００３１】
ステップＳ９では、長軸と短軸の長さの差がＥＰＳ以下かどうかを判定する。ここでは、その差が幾何学的許容長さであるＥＰＳ以下ならば近似的に円と見なし、ステップＳ１２からの処理を行なう。逆に、その差が幾何学的許容長さＥＰＳ以下でなければ楕円と見なし、ステップＳ１０からの処理を行なう。
ステップＳ１０では、楕円として交線を出力する。具体的には、ステップＳ６で求めた中心座標，長軸ベクトル，短軸ベクトルを、元の座標空間に逆座標変換し、楕円の法線ベクトルを元の平面の法線ベクトルと同一にしたものを、楕円の特徴値として出力して、それらの変換された特徴値をランダムアクセスメモリ４または、外部記憶装置１０に格納する。
【００３２】
ステップＳ１１では半径がＥＰＳ以下かどうかを判定する。具体的には、交線が円と判定されたときであって、その半径が微小であったり、桁落ち等の数値的誤差等で、幾何学的許容誤差ＥＰＳ以下であると判定された時は、ステップＳ１３からの処理を行なう。逆に、ＥＰＳ以上であると判定された時は、ステップＳ１２からの処理を行なう。
【００３３】
ステップＳ１２では、交線を円として出力する。具体的には、交線が円であると判定し、ステップＳ９から本ステップにきた場合、言い換えれば、ステップＳ６の代数的判定で楕円と判定された場合は、長軸と短軸があるので、ここでは、長軸と短軸の大きさの平均を円の半径とする。
尚、ここでの半径の求め方は、今、長軸と短軸の大きさの平均としたが、長軸あるいは短軸のいづれかの長さを円の半径として設定してもよい。
【００３４】
そして、所定のｘｙ平面と平行である求められた円を元の対象平面上に座標変換するために、逆行列Ｍ’とこの求められた円の各座標との積をとることにより座標変換する。このようにして、元の対象の法線ベクトルと同一の法線ベクトルを持つ円の中心と半径等の特徴値をＣＲＴ８に出力する。
ステップＳ１３では、交線が点に縮退したと判定して、この判定状態をメッセージでＣＲＴ８に出力するが、交線に関するデータのＣＲＴ８への出力は行わず、処理を終了する。
【００３５】
以上説明したように、本実施例によれば、交線の一般式の係数に基づいて代数的形状判別を行い、その結果を用いて、短軸や長軸や半径などの幾何学的特徴量での第２次の形状判別を行い、形状を調整することにより、適正な交線形状を求めることができる。
（実施例２）
実施例２の図形処理装置のハードウエア構成は図１と同様であるが、交線算出方法が異なる。
【００３６】
以下、図４のフローチャートを参照して、実施例２での交線算出処理手順を説明する。
ただし、図４のステップＳ６〜ステップＳ１３は実施例１のステップＳ６からステップＳ１３の処理と同様であるので説明を省略する。
また説明で使用する用語等も実施例１と同様である。
【００３７】
まず、ステップＳ１では平面と円筒面との関係を判定する。具体的には、平面の法線ベクトルと円筒の軸との関係判定を行ない、交線の種類を推定する。具体的には、平面の法線ベクトルｎ０と円筒の軸ベクトルｎ１間の内積に基づく相関値を以下の式で計算する。
ａ＝ｎ０・ｎ１／(|ｎ０|・|ｎ１|)
そして、その結果ａをランダムアクセスメモリ４に格納する。次に、その結果ａの絶対値が次式を満足するか判定し、
１.０−ＥＰＳＡ≦|ａ|≦１.０＋ＥＰＳＡ
を満足するとき、平面と円筒軸は垂直と判定する。また、
|ａ|≦ＥＰＳＡ
を満足するとき、平面と円筒軸は平行であると判定する。そして、それらの結果をランダムアクセスメモリ４に格納する。
【００３８】
ステップＳ２では、ステップＳ１における判定結果をランダムアクセスメモリより取り出し、平面と円が垂直であればステップＳ１４へ進む。逆に、垂直でなければステップＳ３へ進む。
ステップＳ１４では、円筒軸と平面の交点を算出する。
ステップＳ１５では、円としての交線をＣＲＴ８に出力する。具体的には、ステップＳ１４で求めた交点をランダムアクセスメモリ４より取り出し、その交点を円の中心とし、半径は円筒面の半径ｒと同じ円を交線として、それらのデータをランダムアクセスメモリ４や外部記憶装置１０に格納するか、またはＣＲＴ８にその図形を出力する（図２参照）。そして、処理を終了する。
【００３９】
ステップＳ３では、平面と円筒軸が平行かどうかを判定する。具体的には、ステップＳ１における判定結果をランダムアクセスメモリ４より取り出し、平面と円筒軸が平行という結果になっているかどうかチェックし、平面と円筒軸が平行であればステップＳ１６へ進み、そうでなければステップＳ４へ進む。
ステップＳ１６では、交線は直線であるとして、その直線を求める計算を行なう。具体的には、交線は、０本から２本の直線（図２の（ｂ）、（ｃ）、（ｄ）参照）であり、その計算を行い、その直線のデータをランダムアクセスメモリ４または外部記憶装置１０またはＣＲＴ８に出力する（図２参照）。そして、処理を終了する。
【００４０】
ステップＳ４では、平面がｘｙ平面に平行になるように、平面，円筒面を座標変換する。具体的には、平面がｘｙ平面と平行になるように、平面，円筒面の各特徴値に対して座標変換を行う。
ステップＳ５では、変換後の平面のＺ座標値（ＸＹ平面に直交する軸をＺ軸として、そのＺ軸方向でのその平面の座標値）Ｚ０を円筒面の式に代入し、交線の式を算出する。具体的には、以下の処理を行う。即ち、
ステップＳ４の座標変換の結果、平面の式が、
Ｚ＝Ｚ０
になったとする。また平面，円筒面の各特徴値である、平面上の基準点Ｐ０、円筒面の軸上の基準点Ｃ０、円筒面の軸ベクトルｎ１がそれぞれ、
Ｐ０ --＞ Ｐ01
Ｃ０ --＞ Ｃ01
ｎ１ --＞ ｎ11
になったとする。この時、変換後の円筒面の式は、
(Ｘ−Ｃ01)・(Ｘ−Ｃ０)＝｛(Ｘ−Ｃ01)・ｎ01}2＋ｒ2
この式に、Ｘ＝(ｘ,ｙ,Ｚ０）を代入し、展開した式が、交線の式として求められる。そして、求められた交線の式のパラメータをランダムアクセスメモリ４に格納する。
【００４１】
次に、実施例１で説明したステップＳ６以下の処理に進も、交線を楕円か円と判定すればそれをＣＲＴ８等に出力し、点として判定されれば、その主旨をＣＲＴ等に表示して処理を終了する。
以上説明したように、本実施例によれば、はじめに、平面と円筒面の位置関係の代数的判定、より具体的には、平面と円筒が直交しているか平行になっているかを代数的に判定して、それらのいずれかであると判定すると、それぞれ交線が円、直線と見なし、それらに対して、ステップＳ６以下の幾何学的処理を行なう必要がなく、より高速に図形処理を実行できる。このように、上述の代数的処理と幾何学的処理を巧妙に結びつけることにより、高速にかつ、適正な交線形状を求めることができる。
（実施例３）
本実施例では、円筒面の軸と平面が平行と判定され、交線が直線である場合（図４(ｂ),(ｃ),(ｄ)参照）での平面と円筒面の交線計算処理方法を説明する。
【００４２】
尚、以下に示すフローチャートに対応するプログラムは、ＲＯＭ３に予め格納されており、ＣＰＵ２がこのプログラムを参照し、解釈して実行する。
図５は、本実施例の平面と円筒面の交線計算処理方法を説明するフローチャートであり、このフローチャートを参照して、各ステップ毎にその処理内容を説明する。ここで、説明に使用する用語等は実施例１と同様である。
【００４３】
ステップＳ１００では、円筒の軸と平面が平行な場合での円筒面の軸と平面の距離ｒ２を算出して、ランダムアクセスメモリ４に格納する。算出方法は、円筒の軸上の任意の１点と平面の距離を求めればよい。
ステップＳ１７では、円筒面と平面の最短距離ｄ(符号付き)、即ち、
ｄ＝ｒ２−ｒ
を求め、その結果をランダムアクセスメモリ４に格納する。
【００４４】
ステップＳ１８では、ステップＳ１７で求められた円筒面と平面の最短距離ｄが、次不等式
ｄ ≦ ＥＰＳ
を満足するかどうかを判定する。そして、満足すれば、ステップＳ２２へ進み、満足しなければステップＳ１９からの処理を行なう。
【００４５】
ステップＳ２２では、円筒面と平面が接していると判定して、ランダムアクセスメモリに４その判定結果を格納する（図２(ｃ)参照）。
ステップＳ２３では、接している稜線を交線として算出する。具体的には、Ｃ０から平面におろした垂線の足の点をＰ３とすると、Ｐ３を通り円筒面の軸方向ベクトルを方向ベクトルとする直線が接している稜線（交線）であるとして、算出する。そして、その結果をＣＲＴ８に表示して処理を終了する。
【００４６】
ステップＳ１９では、円筒面と平面の最短距離ｄが次の不等式
ｄ＞ＥＰＳ
を満足するかどうか判定する。そして、満足すれば、ステップＳ２４から処理を行ない、満足しなければステップＳ２０からの処理を行なう。
【００４７】
ステップＳ２４では、交線を持たないと判定（図４(ｂ)参照）、即ち、平面と円筒面は離れていると判定し、その結果をＣＲＴ８に表示して処理を終了する。ステップＳ２０では、２本の直線が交線であるとしてこれらの直線を求め、ランダムアクセスメモリ４に格納する（図４(ｄ)参照）。
具体的には、円筒面の基準点を中心とし、半径を円筒面の半径ｒとした円の法線が円筒面の軸方向ベクトルであるその円と、平面との交点、Ｐ１，Ｐ２を求める。そして、Ｐ１，Ｐ２を通り、円筒面の軸方向ベクトルを方向ベクトルとする直線を交線とする。
【００４８】
ステップＳ２１では、Ｐ１とＰ２の距離がＥＰＳ以内かどうか判定して、ＥＰＳ以内であれば、２本の交線距離がＥＰＳ以内と判定して、その結果をランダムアクセスメモリ４に格納し、ステップＳ２５へ進む。逆に、ＥＰＳ以内でなければ、その結果をＣＲＴ８に表示して処理を終了する。
ステップＳ２５では、２本の交線を一つにまとめる処理を行う。具体的には、２本の交線は近似的に同一であると判定し、ステップＳ２０で求めた直線上の点Ｐ１，Ｐ２のいずれかを通り、円筒面の軸方向ベクトルを方向ベクトルとする直線を求め、それを唯一の交線としてランダムアクセスメモリ４または外部記憶装置１０またはＣＲＴ８に出力する。
【００４９】
以上説明したように、本実施例では、円筒面の軸と平面が平行と判定され、交線が直線である場合に、円筒面の軸と平面間の距離と所定の閾値との大小関係によって、図２に示したように、円筒面と平面が離れているか、接しているか（１本の交線を持つ）、２本の交線を持つかを判定でき、特に、２本の交線を持つと判定された場合、それらの距離が所定の閾値以内であれば、１本の直線に修正することで、ノイズに強く適正な交線を求めることができる。
（実施例４）
本実施例では、図４の交線処理と、図５の交線が直線である場合の交線処理を組み合わせた処理（図６、図７参照）を説明する。本実施例での交線処理でのポイントは、図４のステップＳ１６で交線としての直線が求められた後、図５のステップＳ１００からの処理を行って、その交線を調整することで、ノイズに強い交線処理方法を提供する。
【００５０】
尚、図６、図７に示すフローチャートに対応するプログラムは、ＲＯＭ３に予め格納されており、ＣＰＵ２がこのプログラムを参照し、解釈して実行する。
図６、図７は、図４と図５を組み合わせた本実施例の平面と円筒面の交線計算処理方法を説明するフローチャートである。このフローチャートで、各ステップ番号は図４と図５のステップ番号と同じものを用いており、これは、図４と図５の対応するステップでの処理内容が同じであることを意味する。
【００５１】
即ち、図６、図７におけるステップＳ１〜ステップＳ１５は、図４のステップＳ１〜ステップＳ１５の処理，また、図６、図７におけるステップＳ１６〜ステップＳ２５は図５のステップＳ１６〜ステップＳ２５の処理と同様である。従って、全体のステップで説明を省略する。
以上説明したように、本実施例によれば、図４の交線処理と、図５の交線が直線である場合の交線処理を組み合わせて、交線を調整することで、ノイズに強い交線処理方法を提供する。
（他の実施例）
以上、平面と円筒の関係においてその交線計算方法を説明したが、平面と，円筒面，円錐面，球や，その他の面要素間の交線計算においても適用できることは言うまでもない。
【００５２】
尚、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器から成る装置に適用しても良い。また、本発明はシステム或は装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。以上説明したように、本発明に係る実施例では、２幾何要素の交線を求める時に、あらかじめ幾何的に意味のある誤差基準によって、２幾何要素が接している場合等の特殊ケースの処理を行ない、また代数的な一般的な手法で求めた交線の解を、幾何的に意味のある誤差基準を使って補正することによって、実用的な基準で正しく交線の解を安定的に求めることができ、かつノイズにも強いという効果がある。
【００５３】
【発明の効果】
以上説明したように本発明によれば、２幾何要素のデータにノイズを含む場合であっても、適正にそれらの２幾何要素間の交線の種類を求めることができる。
【図面の簡単な説明】
【図１】本発明に係る１実施例の図形処理装置のブロック図である。
【図２】平面と円筒面の位置関係に対応する交線の様子を説明する図である。
【図３】本発明の第１の実施例の交線処理を示す流れ図である。
【図４】本発明の第２の実施例の交線処理を示す流れ図である。
【図５】本発明の第３の実施例の交線処理を示す流れ図である。
【図６】本発明の第４の実施例の交線処理を示す流れ図である。
【図７】本発明の第４の実施例の交線処理を示す流れ図である。
【図８】各実施例での処理を説明するための、用語などの定義を示す図である。
【図１】
0003774489.tif 000004
【図２】
0003774489.tif 000005
【図３】
0003774489.tif 000006
【図４】
0003774489.tif 000007
【図５】
0003774489.tif 000008
【図６】
0003774489.tif 000009
【図７】
0003774489.tif 000010
【図８】
0003774489.tif 000011