JP2536948B2 - 3点指定円弧検出方法及び装置 - Google Patents

3点指定円弧検出方法及び装置

Info

Publication number
JP2536948B2
JP2536948B2 JP2048440A JP4844090A JP2536948B2 JP 2536948 B2 JP2536948 B2 JP 2536948B2 JP 2048440 A JP2048440 A JP 2048440A JP 4844090 A JP4844090 A JP 4844090A JP 2536948 B2 JP2536948 B2 JP 2536948B2
Authority
JP
Japan
Prior art keywords
point
arc
rectangle
designated
detection
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.)
Expired - Fee Related
Application number
JP2048440A
Other languages
English (en)
Other versions
JPH03250373A (ja
Inventor
勝彦 栗原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2048440A priority Critical patent/JP2536948B2/ja
Publication of JPH03250373A publication Critical patent/JPH03250373A/ja
Application granted granted Critical
Publication of JP2536948B2 publication Critical patent/JP2536948B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)

Description

【発明の詳細な説明】 〔目次〕 概要 産業上の利用分野(第3,4(a)図) 従来の技術(第4(b),19,20,21図) 発明が解決しようとする課題(第5,19図) 課題を解決するための手段(第1,2図) 作用(第1,2,6,7,8図) 実施例(第3,6,9〜19図) 発明の効果 〔概要〕 始点、中間点、終点の3点の座標データで定義される
3点指定円弧を図形データとして格納し、3点を通る円
弧を表示装置に表示し、矩形として定義される検出(ピ
ック)範囲と交差する場合に当該3点指定円弧の検出を
行う3点指定円弧検出方法及び装置に関し、 高速に検出処理を行うことができる3点指定円弧検出
方法及び装置を提供することを目的とし、 3点指定円弧を表示装置上に表示させる始点、中間
点、終点の3点の座標データから円弧を包含する矩形を
円弧の中心点を計算せずに算出し、当該矩形と検出範囲
とが交差するか否かを判定し、交差しない場合は当該3
点指定円弧を検出せず、交差する場合は、3点指定円弧
の中心点と半径とを算出し、その後当該円弧と前記検出
範囲との交差を判定する構成である。
〔産業上の利用分野〕
本発明は、3点指定円弧検出方法及び装置に係り、特
に、始点、中間点、終点の3点の座標データで定義され
る3点指定円弧を図形データとして格納し、3点を通る
円弧を表示装置に表示し、矩形として定義される検出
(ピック)範囲と交差する場合に当該3点指定円弧の検
出を行う円弧検出方法及び装置に関する。
コンピュータにより表示装置上に図形等を表示し、入
力装置を使用して、表示図形を処理する図形処理システ
ム例えば、CAD(Computer Aided Design)などにより、
図形を作成する操作過程において、対話的に画面上の図
形を検出し、移動・拡大・縮小などの図形編集する場合
の図形検出(ピック)方法に関するもので、とくに線
分、円、多角形、文字などの図形のなかの第4図(a)
のような、始点、中間点、始点の3点の座標データから
成る3点指定円弧の検出方法及び装置に関するものであ
る。
図形処理システムとしては、例えば第3図に示すよう
な構成により成り中央処理装置(CPU)が主記憶装置に
記憶されたプログラムに従って、入力装置等から入力さ
れた図形データを主記憶装置に記憶し、その図形データ
を表示装置(CRTなど)に表示する。オペレータは表示
装置画面上のこれらの図形から自分の編集(例えば、移
動拡大・縮小、表示色変更、削除など)したい図形を検
出する。この検出を行うには、入力装置、例えば、マウ
ス、タブレット、キーボード、ジョイスティック、ライ
ト・ペンなどによりカーソルを検出した図形の上に移動
し、この図形処理システムで予め決められた検出要求操
作を入力装置で行う、例えば、マウスのボタンを押す、
またはタブレットのスタイラペンを押すなどである。
すると、中央処理装置(CPU)は、この入力装置の検
出要求操作を判断し、図形の検出を開始する。検出に先
立って中央処理装置(CPU)は、図形の検出をするため
の範囲である検出(ピック)範囲を決定する。ピック範
囲は以下のような方法などによって決定する。予め、指
定されていたピック範囲の大きさに従って、入力装置で
指定された位置(入力装置で検出要求操作を行った時の
カーソル位置)を中心としてピック範囲の大きさからピ
ック範囲の存在する座標を決定する。
次に、主記憶装置に記憶されているすべての図形デー
タが、このピック範囲内に存在するかどうかを順に判定
する。この判定方法は、図形データが、線分であるか、
円であるか、または多角形であるかなどによって、各種
図形データにしたがった異なった方法をとる。各種図形
データごとにピック範囲内に存在するかどうか判定し、
ピック範囲内にある図形データを検出する。
以上のような、図形処理システムにおいて、各種図形
データ1個の判定処理時間はそれほどではなくても、検
出処理は、すべての図形データについて1ずつ行われる
ので、CADのような数千個以上の図形データを扱う図形
処理システムでは、図形の検出に長時間を要するという
欠点がある。
そのため、各種図形データの検出時間をより一層高速
化することが要求されている。
特に、3点指定円弧の検出処理時間は、円(中心と半
径により指定される円)の検出時間に比べて、3点から
中心点と半径を計算する必要があるために、かなり遅
く、そのわりには、円よりは使用頻度が高いために、高
速化することが要求されている。
〔従来の技術〕
従来、第21図に示すような、3点指定円弧の検出(ピ
ック)方法があった。
従来例に係る3点指定円弧の検出(ピック)方法はス
テップSA1で、指定された3点(始点、中間点、終点)
(X1,Y1),(X1,Y2),(X3,Y3)から、以下の計算式
に従って、円の中心と半径を計算する。
指定された3点から、中心点(Cx,Cy)と半径rを求
めるには、指定された3点を円の方程式 (X−Cx)2+(y−Cy)2=r2 に代入して得た次の連立方程式を解く必要がある。
(X1−Cx)2+(Y1−Cy)2=r2 (X2−Cx)2+(Y2−Cy)2=r2…式(1) (X3−Cx)2+(Y3−Cy)2=r2 また、別の方法として、始点と中間点、中間点と始点
をそれぞれ結ぶ線分の中間点を通る垂線の交点を計算す
る(第20図)。この交点が3点指定円弧の中心点であ
る。次に、中心点と3点の内のどれか1点との距離を計
算し半径を求める。
この処理の流れを第19図に示す。
以上のようにして、中心点と半径を求めた後、第21図
のステップSA2に進み円弧を包含する最小の正方形領域
を、その中心点(Cx,Cy)と半径rから求め、ステップS
A3でこの正方形(Cx−r,Cy−r),(Cx+r,Cy+r)の
2点をそれぞれ左下、右下の頂点とする)がピック範囲
と交わるかどうかを判定することにより、明らかにピッ
クされない円をピックの対象から、除外する。次に、除
外できなかった円弧に対しては、ステップSA4に進み円
弧を多角形近似して多角形の各辺についてピック範囲と
交わるかどうかを判定し、一本でもピック範囲とまじわ
る辺がある場合は、ステップSA5で円弧はピックされ、
一本も交わらない場合はステップSA6でピックされない
という方法によって中心と半径指定の円弧(第4図
(b))のピック判定を行っていた。
または、Horn“Circle Generators for Display Devi
ces"COMPUTER GRAPHICS AND IMAGE PROCESSING 5,pp280
−288に掲載されている円弧発生アルゴリズムによって
円弧上の点を発生し、発生した点についてピック範囲と
交わるかどうかを判定し、一点でもピック範囲とまじわ
る点がある場合は、円弧はピックされ、一点も交わらな
い場合はピックされないという方法によって円弧のピッ
ク判定を行っていた。
〔発明が解決しようとする課題〕
ところで、以上述べた従来例にあっては、3点指定円
弧をピックする場合、指定された3点から円の中心と半
径をもとめてからピックを行なうものであった。
しかし、図形処理システムでは、通常、ピック領域の
大きさは図形が定義されている座標系の大きさに比べて
非常に小さく(面積比率で1/10000以下が普通)、定義
されている図形の数は数千個を越えるのが普通である。
またオペレータはこれらの図形のうちの一つを編集する
ために選択するのであるから、ほとんどの図形はピック
されない。そのため、ほとんどの3点指定円弧の中心点
と半径を求める計算は無駄である。
第5図に示した例のように図中のほとんどの3点指定
円弧は明らかにピックされない部類に属する。そのた
め、従来の方法では、これら明らかにピックされない3
点指定円弧の無駄な中心点・半径計算を行っていたこと
になる。
また、3点指定円弧は中心点と半径を求めた後に、中
心点・半径指定円弧としてピックされるので、このまま
では、どのようにしても、3点指定円弧のピック時間は
中心点・半径指定円弧のピック時間に比べて、中心点と
半径を計算する分だけ遅くなる。特に、第5図に示した
ような、明らかにピックされない3点指定円弧と中心点
・半径指定円弧を比較した場合、中心点・半径指定円弧
はこの円弧を包含する正方形を使用して、まず、ピック
されるかどうかの判定を行うので、この場合、多くても
4回の判定で処理は終了する。これに対して、3点指定
円弧は、第19図に示した処理によって中心点と半径を計
算した後、この中心点と半径を使用して3点指定円弧を
包含する正方形を求め、この正方形でピックされるかど
うかを判定する。このため、3点指定円弧は中心点・半
径指定円弧に比べて10倍以上の処理時間を要する。
本発明はこのような従来の問題点に着目していなされ
たもので、明らかにピックされない3点指定円弧の中心
点・半径を計算することなしに判定しピック速度を高速
化する方法及び装置である。
〔課題を解決するための手段〕
以上の技術的課題を解決するため、第一の発明は第1
図に示すように、始点、中間点、終点の3点の座標デー
タで定義される3点指定円弧を図形データとして格納
し、3点を通る円弧を表示装置に表示し、矩形として定
義される検出(ピック)範囲と交差する場合に当該3点
指定円弧の検出を行う(S5)円弧検出方法において、3
点指定円弧を表示装置上に発生させる始点、中間点、終
点の3点の座標データから円弧を包含する矩形を円弧の
中心点を計算せずに算出し(S1)、当該矩形と検出範囲
とが交差するか否かを判定し(S2)、交差しない場合は
当該3点指定円弧を検出せず(S6)、交差する場合は、
3点指定円弧の中心点と半径とを算出し(S3)、その後
当該円弧と前記検出範囲との交差を判定する(S4)もの
である。
一方、第二の発明は第2図に示すように、始点、中間
点、終点の3点の座標データで定義される3点指定円弧
を図形データとして格納する図形データ格納部1と、3
点指定円弧の検出等の指示を行う指示部8と、指示によ
り図形の表示を行う表示部2と、図形データに基づいて
表示を行う3点を通る円弧の中心点及び半径を算出する
中心点・半径算出部5と、表示された円弧と矩形として
定義される検出(ピック)範囲とが交差するか否かの判
定を行う交差判定部6とを有する3点指定円弧検出装置
において、表示部2上に表示された3点指定円弧の始
点、中間点、終点の3点の座標データから円弧を包含す
る矩形を、円弧の中心点を計算せずに算出する包含矩形
算出部4と、算出された矩形と検出範囲とが交差するか
否かを判定する矩形間交差判定部3と、当該判定部3に
より交差すると判定された場合には、前記図形データに
基づいて当該円弧の中心点及び半径の算出を行う中心点
・半径算出部5と、前記矩形間交差判定部3により交差
しないと判定された場合には当該円弧を検出せず、交差
すると判定された場合には、前記交差判定部6により、
さらに交差すると判定された場合に当該円弧を検出する
が、交差しないと判定された場合には検出を行わない円
弧検出部7とを有するものである。
〔作用〕
第一及び第二の発明の動作について説明する。
前記指示部8による3点指定円弧の検出の指示がなさ
れると、ステップS1で前記包含矩形算出部4は前記表示
部2に表示される3点指定円弧に関し、前記図形データ
格納部1に格納されている図形データに基づいて、当該
円弧を包含する矩形を円弧の中心点を計算せずに算出す
る。
ここで、「円弧の中心点を計算せずに算出する」こと
ができる場合の一例を示す。
第6図(a),(b),(c),(d)に示すよう
に、3点指定円弧の始点(X1,Y1)、中間点(X2,Y2)、
終点(X3,Y3)の位置関係が以下の条件を満たす場合
は、3点指定円弧の中心点と半径を求めなくても、3点
指定円弧を包含する矩形を簡単に求めることができる。
この矩形を利用することにより、明らかにピックされな
い3点指定円弧を高速にピック対象から除外することが
でき検出処理が高速になる。
(条件1) 中間点(X2,Y2)が原点になるように3点を次のよう
に平行移動した時に、 始点(x1,y1)ただし、 x1=X1−X2,y2=Y1−Y2 中間点(0,0) 終点(x3,y3)ただし、 x3=X3−X2,y3=Y3−Y2 となり、座標系に対して、始点(x1,y1)、終点(x3,y
3)の位置が対角となる位置に位置する時、つまり、以
下の4つの条件のうちどれかを満たす場合。
始点が第1象限、終点が第3象限に位置する場合(第
6図(a)) 始点が第2象限、終点が第4象限に位置する場合(第
6図(b)) 始点が第3象限、終点が第1象限に位置する場合(第
6図(c)) 始点が第4象限、終点が第2象限に位置する場合(第
6図(d)) ここで、第7図に各象限を示す。尚、「条件を満たさな
い」3点指定円弧を第9図に示す。
次に、以下のようにして3点指定円弧を包含する矩形
を求めることができる。
(矩形の求め方) 簡単のため、中間点が原点にくるように3点を平行移
動して、中間点が原点に位置するものとして考える。実
際の矩形は以下で求めた矩形を逆に平行移動すれば求ま
る。
各条件の時、始点から中間点までの円弧部分(1)と
中間点から終点までの円弧部分(2)はそれぞれ、次の
矩形によって包含される。
円弧部分(1)を包含する矩形R1の最大X座標、最大
Y座標をR1xmax,R1ymax,最小X座標,最小Y座標をR1xm
in,R1yminとし、この矩形R1を、 (R1xmin,R1ymin)−(R1xmax,R1ymax) と表現し、同様にして、円弧部分(2)を包含する矩形
R3を、 (R3xmin,R3ymin)−(R3xmax,R3ymax) と表現すると、 条件を満たす場合の矩形R1は始点(x1,y1)の座標
成分x1,y1を使用して求めることができる。
x1とy1のうち大き方をM1とすると、 R1xmin=0 R1ymin=0 R1xmax=M1 R1ymax=M1 となる。また、R3は、 x3−y3のうち大きい方をM3とすると、 R3xmin=−M3 R3ymin=−M3 R3xmax=0 R3ymax=0 となる。
条件を満たす場合の矩形R1は、始点(x1,y1)の座
標成分x1,y1を使用して求めることができる。
x1とy1のうち大き方をM1とすると、 R1xmin=−M1 R1ymin=0 R1xmax=0 R1ymin=M1 となる。また、矩形R3は、 x3と−y3のうち大きい方をM3とすると、 R3xmin=0 R3ymin=−M3 R3xmax=M3 R3ymax=0 となる。
条件を満たす場合の矩形R1は、始点(x1,y1)の座
標成分x1,y1を使用して求めることができる。
−x1と−y1のうち大きい方をM1とすると、 R1xmin=−M1 R1ymin=−M1 R1xmax=0,R1ymax=0 となる。また、矩形R3は、 x3とy3のうち大きい方をM3とすると、 R3xmin=0 R3ymin=0 R3xmax=M3 R3ymax=M3 となる。
条件を満たす場合の矩形R1は、始点(x1,y1)の座
標成分x1,y1を使用して求めることができる。
x1と−y1のうち大きい方をM1とすると、 R1xmin=0 R1ymin=−M1 R1xmax=M1 R1ymax=0 となる。また、矩形R3は、 x3とy3のうち大きい方をM3とすると、 R3xmin=−M3 R3ymin=0 R3xmax=0 R3ymax=M3 となる。
ここで、上記条件を満たす場合に、どうして上記矩形
で円弧を包含することができるかを、の上記の円弧部
分(1)について証明してみることにする、他の場合も
同様にして簡単にできる。
中心(Cx,Cy)を通り、半径rの円の方程式は、 (X−Cx)2+(y−Cy)2=r2 と表現できる。
円弧の中間点が原点を通ることから、つまり、x=y
=0が上式を満たすから、 Cx2+Cy2=r2 という関係がある。
だから、円の方程式は、 (x−Cx)2+(y−Cy)2=Cx2+Cy2 式(2) となる。
の条件を満たすから、この円の方程式は、原点以外
の点で、x≦0,y≦0となる点を通る。
これを満たすためには、Cx≧0,Cy≦0または、Cx≦0,
Cy≧0でなければならない(ただし、Cx,Cyは同時に0
ではない)。
なぜならば、例えば、Cx≧0,Cy≧0とすると、x≧0,
y≧0の場合、 (x−Cx)2+(y−Cy)2<=Cx2+Cy2 であり、等号を満たすのは、x=y=0のときのみであ
り、原点以外にx≧0,y≦0なる点をとおらない。
式(2)をyについて解くと、 ただし、Cx≧0、Cy≦0 または、Cx≦0、Cy≧0 ここでは簡単のために、Cx≧0、Cy≦0の場合について
証明する。
Cx≧0、Cy≦0の場合、円弧部分(1)を表現する方程
式は、 ただし、x≧0、y≧0 式(3) である。
yの最大値はx=cXの時であり、 よって、x≧Cxの場合、円弧上の点(x,y)について、
y≦xが成り立つ また、0≦x<Cxの場合は、式(3)のyは単調増加な
ので、x,yの大きい方の値でおさえることができる。
以上によりの条件を満たす場合の円弧部分(1)は
円弧上の点(x,y)の座標成分x,yのうち大きい方をM1と
すると、 0≦x,y≦M1 となる。(証明終り) (条件2) また、第8図に示したように、3点指定円弧の始点と
終点が一致する場合は、始点と中間点を結ぶ線分が3点
指定円弧の直径となるので、次のような簡単な計算で中
心点を計算することができる。
Cx=x1÷2 Cy=y2÷2 この中心点と半径rから3点指定円弧を包含する矩形を
求める。
半径は、次のような計算でもとめることができるが、 平方根計算を伴うので計算処理が遅い。そのため、次の
式によって半径を近似し、中心と半径から矩形を求め
る。
r=|Cx|+|Cy| 矩形は(Cx−r,Cy−r)と(Cx+r,Cy+rの2点を対角
とする矩形となる。
以上説明したように、第1図の流れ図のステップS1で
前記包含矩形算出部4により矩形が算出されると、ステ
ップS2に進み、前記矩形間交差判定部3は当該矩形と検
出範囲とが交差するか否かを判定する。
交差しないと判定された場合には、ステップS6に進
み、円弧検出部7は当該3点円弧を検出せず、交差する
と判定した場合にはステップS3に進み、前記中心点・半
径算出部5により当該3点円弧の中心点と半径とを算出
する。
円弧の中心点及び半径が算出された後で、ステップS4
に進み、前記交差判定部6により当該円弧と前記検出範
囲との交差が判定され、ステップS5またはS6で、前記円
弧検出部7は当該判定結果に基づいて、当該円弧が検出
されるか否かの判定がなされることになる。
〔実施例〕
以下、本実施例の実施例について説明する。
第3図に本実施例に係る図形処理システムの3点指定
円弧検出方法及び装置を実現する図形処理システムを示
す。
本実施例に係る3点指定円弧検出装置は始点、中間
点、終点の3点の座標データで定義される3点指定円弧
を図形データとして格納する図形データ格納部1として
の主記憶装置32の一部領域と、指示により図形の表示を
行う表示部2としての表示装置35及び画面に対応したイ
メージデータを格納するフレーム・メモリ34と、図形デ
ータに基づいて表示を行う3点を通る円弧の中心点及び
半径を算出する中心点・半径算出部5としてのCPU31及
び主記憶装置32に記憶されたプログラムと、表示された
円弧と矩形として定義される検出(ピック)範囲とが交
差するか否かの判定を行う交差判定部6としてのCPU31
及び主記憶装置32に記憶されたプログラムと、表示装置
35上に表示される3点指定円弧の始点、中間点、終点の
3点の座標データから円弧を包含する矩形を、円弧の中
心点を計算せずに算出する包含矩形算出部3としてのCP
U31及び主記憶装置32に記憶されたプログラムと、3点
指定円弧の検出や当該システムに対するデータの入力等
の種々の指示を行う前記指示部8としての入力装置36
と、バス33とを有するものである。
本システムにより図形を表示するためには、当該図形処
理システムに対して、入力装置36を使用して図形データ
に関する情報を入力する。すると、図形処理システムの
CPU(中央処理装置)31は主記憶装置32に記憶されてい
る図形処理システムのプログラムに従って動作し、入力
された情報から図形データを作成する。CPU31は作成し
た図形データを主記憶装置32上の図形データリストに追
加して、表示装置35にこの図形データを表示する。例え
ば、3点指定円弧を表示する場合は、まず、CPU31に対
して3点指定円弧を入力することを指示してから、始
点、中間点、終点の3点を入力する。すると、CPU31は
第10図に示すような3点指定円弧を表現する図形データ
を作成し、図形データリストに追加してから、表示装置
35に表示する。
次にオペレータが図形を選択する操作を行った時の検
出処理について説明する。ここで、3点指定円弧を表現
する図形データ内の始点、中間点、終点の順番は図形処
理システムで一意に定まっていれば、どのような順でも
良い。
オペレータが表示装置35上の図形を選択するには、第
11図に示すように、入力装置、36を操作して、入力装置
36に追随して動作する表示装置35上のカーソルを選択し
たい図形上に移動する。次に入力装置36を操作して図形
処理システムに対して、図形を選択したいことを通知す
る。通常マウスのボタンを押し下げするなどによって行
う。
CPU31は入力装置36から図形検出要求操作を受け取る
と第12図に示すようなピック範囲の計算を行う。
第12図の流れ図に従って、ピック範囲の求め方につい
て説明する。
CPU31は入力装置36で検出要求操作(例えば、マウス
のボタン押し下げ)が行われた時のカーソルの座標値
(Px,Py)を取り込み、レジスタに記憶する。次に、主
記憶装置32に記憶してあるピック範囲の幅Wと高さHか
らピック範囲の存在する座標を次式に従って計算する。
Pxmin=Px−W Pymin=Py−H Pxmax=Px+W Pymax=Py+H このようにして、決定したピック範囲を使用して以下、
検出処理に入るが、ピック範囲の指定方法は何も上記の
ような方法に限ったことではなく、例えば、入力装置36
から2点を指定させて、その2点を対角とする矩形をピ
ック範囲とする方法もある。いずれの場合にしても、CP
U31はピック範囲の最大座標(Pxmax,Pymax)と最小座標
(Pxmin,Pymin)を求めてレジスタに記憶する。
次にCPU31はこのピック範囲内に存在する図形データ
を図形データリストの中から検索する。この処理を第13
図の流れ図をもとに説明する。
CPU31は図形データリストの先頭の図形データから順
に取り出して、取り出した図形データがピック範囲の座
標内に存在するかどうかを判定する。この判定処理は図
形データの種類(例えば、線分、多角形、文字列、円、
円弧、楕円、楕円弧など)によって異なる。例えば円
(中心点と半径のデータから成る)の場合は次のように
して、ピック範囲内に存在するかを判定する。
円弧を包含する最小の正方形領域をその中心点(Cx,C
y)と半径rから求め、この正方形((Cx−r,Cy−
r),(Cx+r,Cy+r)の2点をそれぞれ左下、右上の
頂点とする)がピック範囲と交わるかどうかを判定する
ことにより、明らかにピックされない円をピックの対象
から除外し、除外できなかった円に対しては円を多角形
近似して多角形の各辺についてピック範囲と交わるかど
うかを判定し一本でもピックされる場合は検出し、一本
もピックされない場合は検出しないという方法によって
円のピック判定を行う。本発明は、この図形データの種
類ごとの判定処理のうち、3点指定円弧がピック範囲内
に存在するかどうかを判定する検出処理に関するもので
ある。この3点指定円弧の検出処理は[3点指定円弧検
出処理]として詳細に後述する。
上記のようにして、1つ1つの図形データごとに検出
処理を順に行い、ピック範囲内に存在する図形データが
判明した時点で検出処理を終了する。存在しない場合
は、図形データリスト中の最後の図形データまで処理し
てから終了する。
[3点指定円弧検出処理] 以下、第14図の流れ図にそって、3点指定円弧がピッ
ク範囲と交差するかどうかを判定する処理について説明
する。
実際に円弧がピック範囲と交差するかどうかを判定す
るのには、円弧上の点がピック範囲内に存在するかどう
かを判定する必要がある。しかし、数千個の図形の中で
ピックされるのはたった1個の図形であり、ほとんどの
図形はピック範囲から遠く離れた位置に存在している。
そのため、ピック処理を高速化するために、図形を点ま
たは線分に展開して、1個1個ピック範囲と交差するか
どうか判定する前に図形を包含する矩形を求めて、この
矩形とピック範囲が交差するかどうかを判定することに
よって、図形がピック範囲と交差する可能性があるかど
うかを判定する。つまり、矩形がピック範囲と交差しな
ければ、図形もピック範囲と交差しない。矩形がピック
範囲と交差するかどうかの判定はたった4回の比較であ
り、図形を点または線分に展開してピック範囲と交差す
るかどうかを判定する方法に比べてはるかに高速であ
る。そのため3点指定円弧という図形の場合も、3点指
定円弧を包含する矩形を求めて、この矩形がピック範囲
と交差するかどうかを判定する。矩形がピック範囲と交
差しなければ、3点指定円弧もピック範囲と交差しな
い。矩形がピック範囲と交差する場合は、3点指定円弧
を円弧上の点または線分に展開してピック範囲と交差す
るかどうかを判定する。
従来、この3点指定円弧を包含する矩形を求めるに
は、3点指定円弧の中心点と半径を求めなければ方法が
なかった。つまり、3点指定円弧の中心点(Cx,Cy)と
半径rを計算した後、 xmin=Cx−r ymin=Cy−r xmax=Cx+r ymax=Cy+r という矩形を計算して、この矩形を利用していた。
しかし、3点指定円弧の3点から中心点と半径を計算
する処理はとても複雑であるために、矩形を使用してピ
ックされる可能性がない3点指定円弧を除外する処理速
度が高速にできない。そのために、3点から中心点と半
径を求めることなく、円弧を包含する矩形を求める方法
が必要である。その方法が以下の方法である。
[3点指定円弧を包含する矩形を求める](第15図、第
16図) まず、はじめに、以下の計算を簡単にするために、指
定された3点を中間点が原点になるように平行移動す
る。
指定された3点をそれぞれ、始点(X1,Y1)、中間点(X
2,Y2)、終点(X3,Y3)、そして、中間点を原点に平行
移動した後の3点をそれぞれ、始点(x1,y1)、中間点
(x2,y2)、終点(x3,y3)とすると、 x1=X1−X2 y2=Y1−Y2 x2=0 y2=0 x3=X3−X2 y3=Y3−Y2 となる。
次に、平行移動した後の3点を使用して3点指定円弧
を包含する矩形をもとめる。特にこの3点が次の条件を
満たす場合は、3点から第19図のような中心点を求める
処理をする必要がなく、少ない処理で矩形を求めること
ができるので高速である。
[条件] 始点が第1象限、終点が第3象限に位置する場合 つまり、x1>=0かつy1>=0かつx3<=0かつy3<
=0の場合 始点が第2象限、終点が第4象限に位置する場合、 つまり、x1<=0かつy1>=0かつx3>=0かつy3<
=0の場合 始点が第3象限、終点が第1象限に位置する場合 つまり、x1<=0かつy1<=0かつx3>=0かつy3>
=0の場合 始点が第4象限、終点が第2象限に位置する場合 つまり、x1>=0かつy1<=0かつx3<=0かつy3>
=0の場合 始点と終点の座標が同一である。この場合3点指定円
弧は完全な円となる つまり、x1=x3かつy1=y3の場合 (1)の条件の場合 この条件を満たす3点指定円弧は第6図(a)に示す
ような円弧である。
第1象限の部分の円弧を包含する矩形R1の最大X座
標、最大Y座標をR1xmax,R1ymax、最小座標、最小Y座
標をR1xmin,R1yminとし、この矩形R1を、 (R1xmin,R1ymin)−(R1xmax,R1ymax) と表現する。
すると、条件を満たす場合の矩形R1は、始点(x1,y
1)の座標成分x1,y1を使用して求めることができる。
x1とy1のうち大きい方をM1とすると、 R1xmin=0 R1ymin=0 R1xmax=M1 R1ymax=M1 となる。
同様にして、第3象限の部分の円弧を包含する矩形R3
を、 (R3xmin,R3ymin)−(R3xmax,R3max) と表現する。
x3−y3のうち大きい方をM3とすると、 R3xmin=−M3 R3ymin=−M3 R3xmax=0 R3ymax=0 となる。
ここで求めた2つの矩形R1、R3を使用して、3点指定
円弧がピック範囲と交差する可能性であるかどうかを判
定する。この実施例ではR1,R3矩形を一つの矩形Rとし
て判定するが、R1とR3の矩形を別々にピック範囲と比較
して判定しても良い。
R1,R3矩形から次のようにして矩形Rを求める。
Rxmin=R3xmin Rymin=R3ymin Rxmax=R1xmax Rymax=R1ymax 同様にして条件を満たす3点指定円弧を包含する
矩形Rをそれぞれ次のように求める。
(2)条件の場合 この条件を満たす3点指定円弧は第6図(b)に示す
ような円弧である。
第2象限の部分の円弧を包含する矩形R1の最大座標、
最大Y座標をR1xmax,R1ymax、最小X座標、最小Y座標
をR1xmin,R1yminとし、この矩形R1を、 (R1xmin,R1ymin)−(R1xmax,R1ymax) と表現する。
すると、条件を満たす場合の矩形R1は、始点(x1,y
1)の座標成分x1,y1を使用して求めることができる。
x1とy1のうち大きい方をM1とすると、 R1xmin=−M1 R1ymin=0 R1xmax=0 R1ymax=M1 となる。
同様にして、第4象限の部分の円弧を包含する矩形R3
を、 (R3xmin,R3ymin)−(R3xmax,R3ymax) と表現する。
x3と−y3のうち大きい方をM3とすると、 R3xmin=0 R3ymin=−M3 R3xmax=M3 R3ymax=0 となる。
ここで求めた、2つの矩形R1,R3を使用して、3点指
定円弧がピック範囲と交差する可能性であるかどうかを
判定する。この実施例R1,R3を矩形を一つの矩形Rとし
て判定するが、R1とR3の矩形を別々にピック範囲と比較
して判定しても良い。
R1,R3の矩形から次のようにして矩形Rを求める。
Rxmin=R1xmin Rymin=R3ymin Rxmax=R3xmax Rymax=R1ymax (3)条件の場合 この条件を満たす3点指定円弧は第6図(c)に示す
ような円弧である。
第3象限の部分の円弧を包含する矩形R1の最大X座
標、最大Y座標をR1xmax,R1ymax、最小X座標、最小Y
座標をR1xmin,R1yminとし、この矩形R1を、 (R1xmin,R1ymin)−(R1xmax,R1ymax) と表現する。
すると、条件を満たす場合の矩形R1は、始点(x1,y
1)の座標成分x1,y1を使用して求めることができる。
−x1と−y1のうち大きい方をM1とすると、 R1xmin=−M1 R1ymin=−M1 R1xmax=0 R1ymax=0 となる。
同様にして、第3象限の部分の円弧を包含する矩形R3
を、 (R3xmin,R3ymin)−(R3xmax,R3ymax) と表現する。
x3とy3のうち大きい方をM3とすると、 R3xmin=0 R3ymin=0 R3xmax=M3 R3ymax=M3 となる。
ここで求めた、2つの矩形R1,R3を使用して、3点指
定円弧がピック範囲と交差する可能性であるかどうかを
判定する。この実施例ではR1,R3の矩形を一つの矩形R
として判定するがR1とR3の矩形を別々にピック範囲と比
較して判定しても良い。
Rxmin=R1xmin Rymin=R1ymin Rxmax=R3xmax Rymax=R3ymax (4)条件の場合 この条件を満たす3点指定円弧は第6図(d)に示す
ような円弧である。
第4象限の部分の円弧を包含する矩形R1の最大X座
標、最大Y座標をR1xmax,R1ymax、最小X座標、最小Y
座標をR1xmin,R1yminとし、この矩形R1を、 (R1xmin,R1ymin)−(R1xmax,R1ymax) と表現する。
すると、条件を満たす場合の矩形R1は、始点(x1,y
1)の座標成分x1,y1を使用して求めることができる。
x1と−y1のうち大きい方をM1とすると、 R1xmin=0 R1ymin=−M1 R1xmax=M1 R1ymax=0 となる。
同様にして、第2象限の部分の円弧を包含する矩形R3
を、 (R3xmin,R3ymin)−(R3xmax,R3ymax) と表現する。
x3とy3のうち大きい方をM3とすると、 R3xmin=−M3 R3ymin=0 R3xmax=0 R3ymax=M3 となる。
ここで求めた、2つの矩形R1,R3を使用して、3点指
定円弧がピック範囲と交差する可能性であるかどうかを
判定する。この実施例ではR1,R3の矩形を一つの矩形R
として判定するが、R1とR3の矩形を別々にピック範囲と
比較して判定しても良い。
R1,R3の矩形から次のようにして矩形Rを求める。
Rxmin=R3xmin Rymin=R1ymin Rxmax=R1xmax Rymax=R3ymax (5)次に条件を満たす場合、この場合3点指定円弧
は完全な円となる。この条件を満たす3点指定円弧は第
8図に示すような円弧である。始点と終点が一致するの
で、中間点と始点を結ぶ線分は3点指定円弧の直径とな
る。よって、中間点と始点を結ぶ線分の中間点が円の中
心ということになる。
中心点(Cx,Cy)は、 Cx=x1÷2 Cy=y1÷2 と、完全円になる場合に限って、円の中心点は簡単な計
算で求めることができる。
あとは、半径rを求めれば、円を包含する矩形をもと
めることができる。
半径は、次のような計算でもとめることができるが、 平方根計算を伴なうので遅い。そのため、本実施例で
は、次の式によって半径を近似して、中心点と半径から
矩形Rを求める。
r=|Cx|+|Cy| Rxmin=Cx−r Rymin=Cy−r Rxmax=Cx+r Rymax=Cy+r (6)以上、〜の条件を満たさない場合(第9図)
は、従来のように、第17図及び第19図の流れ図に従っ
て、中心点と半径を求め、上と同じように、中心と半径
から矩形Rを求める。
[矩形とピック範囲の交差判定](第18図) ここで求めた矩形Rは、中間点を原点とした矩形であ
るので、中間点が元の位置になるように、今度は逆に平
行移動する。
Xmin=Rxmin+X2 Ymin=Rymin+Y2 Xmax=Rxmax+X2 Ymax=Rymax+Y2 この矩形(Xmin,Ymin)−(Xmax,Ymax)がピック範囲
(Pxmin,Pymin)−(Pxmax,pymax)と交差するかどうか
を判定する。
Xmax<Pxmin または、 Xmin>Pxmax または、 Ymax<Pymin または、 Ymin>Pymax を満たす場合は、この矩形はピック範囲と交差しない。
上記条件をすべて満たさない場合、この矩形はピック範
囲と交差する。
矩形Rがピック範囲と交差しない場合は、この3点指
定円弧はピック範囲と交差しないのでピックされない。
矩形Rがピック範囲と交差する場合は、この3点指定円
弧はピック範囲と交差する可能性があるので、3点指定
円弧の中心点と半径を求めて((5),(6)の場合の
ように、すでに中心点が求められている場合は、半径の
み計算する)、従来の方法と同様に円弧を点または、線
分に展開してピック範囲と交差するかどうかを判定す
る。一つでも交差すれば、この3点指定円弧はピックさ
れる。一つも交差しない場合はピックされない。
〔発明の効果〕
本発明により、3点指定円弧は中心点を計算すること
なしに、3点指定円弧を包含する矩形を求めることがで
きるようにしている。
したがって、明らかに検出されない3点指定円弧を検
出対象から、高速に除外することが可能になり、結果と
して検出処理が高速化される。
【図面の簡単な説明】
第1図は第一の発明の原理流れ図、第2図は第二の発明
に係る原理ブロック図、第3図は実施例に係る図形処理
システムを示すブロック図、第4図は始点、中間点及び
終点等を示す図、第5図は3点指定円弧検出テスト画面
を示す図、第6図は実施例に係る「条件を満たす」3点
指定円弧を示す図、第7図は各象限を示す図、第8図は
実施例に係る始点と終点とが一致する場合を示す図、第
9図は実施例に係る「条件を満たさない」3点指定円弧
を示す図、第10図は実施例に係る図形データリストを示
す図、第11図は実施例に係る表示装置の画面を示す図、
第12図は実施例に係るピック範囲を求める処理流れ図、
第13図は実施例に係る図形データの検索処理流れ図、第
14図は実施例に係る3点指定円弧検出処理流れ図、第1
5,16図は実施例に係る3点指定円弧を包含する矩形を求
める処理流れ図、第17図は円弧の中心点及び半径を求め
る処理流れ図(従来も同様)、第18図は実施例に係る矩
形とピック範囲との交差判定処理流れ図、第19図は円弧
の中心点及び半径を求める処理流れ図(従来も同様)、
第20図は円弧の半径及び中心点を求める説明図、及び第
21図は従来例に係る流れ図である。

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】始点、中間点、終点の3点の座標データで
    定義される3点指定円弧を図形データとして格納し、3
    点を通る円弧を表示装置に表示し、矩形として定義され
    る検出(ピック)範囲と交差する場合に当該3点指定円
    弧の検出を行う(S5)円弧検出方法において、 3点指定円弧を表示装置上に表示させる始点、中間点、
    終点の3点の座標データから円弧を包含する矩形を円弧
    の中心点を計算せずに算出し(S1)、 当該矩形と検出範囲とが交差するか否かを判定し(S
    2)、 交差しない場合は当該3点指定円弧を検出せず(S6)、 交差する場合は、3点指定円弧の中心点と半径とを算出
    し(S3)、 その後当該円弧と前記検出範囲との交差を判定する(S
    4)ことを特徴とする3点指定円弧検出方法。
  2. 【請求項2】始点、中間点、終点の3点の座標データで
    定義される3点指定円弧を図形データとして格納する図
    形データ格納部(1)と、3点指定円弧の検出等の種々
    の指示を行う指示部(8)と、指示により図形の表示を
    行う表示部(2)と、図形データに基づいて表示を行う
    3点を通る円弧の中心点及び半径を算出する中心点・半
    径算出部(5)と、表示された円弧と矩形として定義さ
    れる検出(ピック)範囲とが交差するか否かの判定を行
    う交差判定部(6)とを有する3点指定円弧検出装置に
    おいて、 表示部(2)上に表示させる3点指定円弧の始点、中間
    点、終点の3点の座標データから円弧を包含する矩形
    を、円弧の中心点を計算せずに算出する包含矩形算出部
    (4)と、 算出された矩形と検出範囲とが交差するか否かを判定す
    る矩形間交差判定部(3)と、 当該判定部(3)により交差すると判定された場合に
    は、前記図形データに基づいて当該円弧の中心点及び半
    径の算出を行う中心点・半径算出部(5)と、 前記矩形間交差判定部(3)により交差しないと判定さ
    れた場合には当該円弧を検出せず、交差すると判定され
    た場合には、前記交差判定部(6)により、さらに交差
    すると判定された場合に当該円弧を検出するが、交差し
    ないと判定された場合には検出を行わない円弧検出部
    (7)とを有することを特徴とする3点指定円弧検出装
    置。
JP2048440A 1990-02-28 1990-02-28 3点指定円弧検出方法及び装置 Expired - Fee Related JP2536948B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2048440A JP2536948B2 (ja) 1990-02-28 1990-02-28 3点指定円弧検出方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2048440A JP2536948B2 (ja) 1990-02-28 1990-02-28 3点指定円弧検出方法及び装置

Publications (2)

Publication Number Publication Date
JPH03250373A JPH03250373A (ja) 1991-11-08
JP2536948B2 true JP2536948B2 (ja) 1996-09-25

Family

ID=12803414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2048440A Expired - Fee Related JP2536948B2 (ja) 1990-02-28 1990-02-28 3点指定円弧検出方法及び装置

Country Status (1)

Country Link
JP (1) JP2536948B2 (ja)

Also Published As

Publication number Publication date
JPH03250373A (ja) 1991-11-08

Similar Documents

Publication Publication Date Title
JP3857328B2 (ja) ディスプレイ編集システム
JP2804224B2 (ja) ネットワーク図描画方法およびシステム
EP0550812A1 (en) Precision automatic scrolling for an image display system
JP3357760B2 (ja) 文字図形入力編集装置
JP2536948B2 (ja) 3点指定円弧検出方法及び装置
JPH07220109A (ja) 情報処理装置及び方法
JPS62202286A (ja) 画像処理装置の例示装置
JPH08106542A (ja) 図形の拡大表示方法
JP2683114B2 (ja) 曲線制御装置
JPH0785132A (ja) 図形処理装置
JPH0816805A (ja) 図形作成装置
JP2786098B2 (ja) 図形拡大編集方法
JP2746981B2 (ja) 図形生成方法
JPH02157905A (ja) 画面デジタイジング方法
JPH061483B2 (ja) 正規化図形入力装置
JP3634426B2 (ja) 図面イメージの待避・復元方式
JP2721344B2 (ja) 画像処理方法
JP3000749B2 (ja) 文字編集装置
JP2746980B2 (ja) 図形生成方法
JP3142191B2 (ja) 図形処理装置
JPH11306370A (ja) 画像処理装置
JP3703814B2 (ja) 円の創成方法
JPH08171646A (ja) 図形作成装置
JPH1031760A (ja) 図形処理装置
JPH0281179A (ja) ピッキング回路

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees