(58)【調査した分野】(Int.Cl.,DB名)
前記物体検出手段で特定された物体が備えるベクトルのなかから前記入力操作中における画面座標軸との交差角度が規定角度以内である特定ベクトルを検出する斜角判定手段と、
前記図形データを含む編集空間を、前記画面法線を軸として、前記入力操作の終了時において、前記物体検出手段で特定された物体のローカル座標軸又は実座標軸が前記画面座標軸と平行となる様に回転させる回転手段を具備することを特徴とする前記請求項1に記載の三次元作図システム。
前記物体検出手段で特定された物体が備えるベクトルのなかから前記入力操作中における画面座標軸との交差角度が規定角度以内である特定ベクトルを検出する斜角判定手段と、
前記図形データを含む編集空間を、前記画面法線を軸として、前記入力操作の終了時において、前記物体検出手段で特定された物体のローカル座標軸又は実座標軸が前記画面座標軸と平行となる様に回転させる回転手段を具備する三次元作図システムとして機能させることを特徴とする前記請求項3に記載の三次元作図プログラム。
【発明を実施するための形態】
【0017】
以下、本発明による三次元作図システム(以下、作図システムと記す。)及びそのプログラムの一実施の形態を、図面を示しつつ詳細に説明する。
図14に示す例は、コンピュータシステムにより、コンピュータ処理が可能な図形データを組み合わせて作図を行う作図システムであって、入力装置1、制御装置2、出力装置3、及び記録装置4を具備して構成される。
【0018】
前記入力装置1は、キーボードやポインティングデバイスなど、制御装置が読み取り可能なデータをユーザーの操作によって入力する装置である。
前記制御装置2は、CPU、メモリー、及び入出力インターフェースを含むハードウエアに、コンピュータシステムを作図システムとして機能させる三次元作図プログラム(以下、作図プログラムと記す。)をインストールしたものである。
前記出力装置3は、編集した図形を視認可能に表示するディスプレイ装置や、紙面に印画するプリンタなどである。
記録装置4は、ハードディスクやUSBメモリーなどの各種記録媒体である。
【0019】
このコンピュータシステムの例は、上記構成によって、前記ハードディスクに格納されたアプリケーションプログラム(作図プログラム)が立ち上がり、作図システムとしての機能を果たす。
編集される図形データは、各種記録媒体からなる記録装置4に対する読み書きや前記入力装置1を経た操作により、作図システムに対する入力又は保存を行う。
前記図形データの編集処理は、前記作図システムに整備されたツール(関数)と、入力装置1で与えられた位置データ又は素材データ等を用いて行う。
【0020】
前記作図システムは、上記の如く編集処理を行うために、単数又は関連する複数の操作項目を備える複数のツールボックスを階層的に組み合わせてなるデータ(ツールデータ)と、前記操作項目に割り当てられた特定関数のデータ(関数データ)と、操作項目に対する入力操作(以下、「クリック」又は「加圧」と記す。)を以って当該操作項目に割り当てられた下位階層のツールボックスを表示し又は当該操作項目に割り当てられた特定関数を起動する選択手段と、起動された関数で必要な演算を実行する演算手段と、前記操作項目の新規選択により、選択から漏れた同階層の操作項目の選択を解除すると共に、解除された操作項目の下位階層として存在するツールボックスの選択及び表示を解除するツール管理手段を備える。
【0021】
前記ツール関数は、その処理内容に応じて、前記入力装置からユーザーの編集操作によって生じる位置データや素材データなど、編集に必要な各種データを前記ツール関数のパラメータ等として取り込み、前記演算手段で当該ツール関数所定の演算処理を施して得た画像データをメモリーや記録装置4に保存する。
【0022】
更に、この例は、作図空間の座標軸方向、又は当該物体が有する各面の法線方向、材軸方向、若しくは配筋方向などから見た正視画像を、ドラッグなどの特定操作のみで実現することができるように、座標検出手段、操作検出手段、物体検出手段、斜角判定手段、及び回転手段を具備する正視ツールを備える。
【0023】
前記正視ツールを機能させるについて、当該例においては、実座標系、マウス座標(入力操作の座標)系、画面座標系及びローカル座標系に各々属する四種類の座標を取り扱う。
前記実座標系の座標(実座標)とは、この作図システムが有する作図空間全体の三次元直交座標(X、Y、Z)である。
【0024】
その他の座標系は、前記実座標系とは、原点の位置や大きさが一致するものではなく、前記実座標系以外の各々との関係でも相互に一致するものではない。
前記マウス座標系の座標とは、マウス等の入力デバイスの入力操作によって形成される一定の解像度を持った平面の座標(V,H)である。
【0025】
前記画面座標系の座標とは、前記実座標空間に存在する視点と視線方向とアップベクトルとで決定され、ディスプレイ装置の編集画面の外縁で仕切られた視錘台の前面をx−y基準面とし、且つ前記視線方向に奥行を有する空間の三次元直交座標系の座標(x,y,z)であって、前記実座標空間に存在する視点を原点とし視線を前記基準面(x−y平面)の法線(z軸)とするものである。
即ち、実座標系と画面座標系とは、実座標系空間(この例では編集空間)を見る視線を決める「視線移動回転行列」の正逆行列で相互に変換することができる。
尚、上記行列及び以下の説明で用いる行列は、アフィン変換行列である。
前記ローカル座標系の座標とは、各オブジェクトが隔する空間固有の材軸や配筋方向等を軸とする三次元直交座標系の座標である。
【0026】
<座標検出手段>
前記座標検出手段は、マウス等の入力装置を用いた入力操作で変化する編集画面に表示されたカーソル(例えば、
図5(A)参照。)の画面座標を前記位置データから検出する。
【0027】
<操作検出手段>
前記操作検出手段は、当該画面座標の変化から、入力操作の内容、量、又は方向を検出する。
例えば、入力操作(入力装置1での、クリックダウン若しくは加圧又はキー入力など)及び入力操作の解除(入力装置1での、クリックアップ若しくは加圧解除又はキー入力など)、並びに当該入力操作及びその解除が行われた位置座標、若しくは位置座標の変化、又はそれによって導き出せる操作方向などがその検出対象である。
【0028】
<マウスオブジェクト>
マウスオブジェクトは、この例における前記関数データを構成するオブジェクトの一つであって、前記視点(カーソル等)の位置座標を前記マウス座標系から前記画面座標系へ変換する変換行列を備え、前記座標検出手段及び前記操作検出手段で検出したマウス(入力装置1)による入力操作の具体的操作情報(位置座標を含む)を受けて、以下の通りドラッグフラグを変化させる。
当該例のマウスオブジェクトは、当該オブジェクトの内部データの処理を前記マウス座標系で行い、当該マウスオブジェクトによる処理結果を他のオブジェクトへ渡す際には、前記処理結果を実座標系に変換する。
【0029】
当該例における前記マウスオブジェクトは、マウスによる入力操作を前記変換行列でマウス座標系から画面座標系へ変換し、前記入力操作の開始がなされたカーソル位置の画面座標を前記座標検出手段で検出し、当該画面座標を始点座標P0として保存し(
図2及び
図5(A)参照)、マウスによる前記入力操作が継続されたままその位置が変化するに伴い、前記座標検出手段から得た変化中の位置座標に基づき前記始点座標に至る距離Lを逐次前記演算手段で算出して保存し、その距離が規定距離以上離隔したことを検出したらドラッグフラグをONとし(
図2(B)参照)、前記操作検出手段から得たマウスによる入力操作の解除の検出を以って、その位置の画面座標を前記座標検出手段で検出して保存し、ドラッグフラグをOFFとする(
図2(C)参照)。
【0030】
<物体検出手段>
前記物体検出手段は、前記編集操作により図形データとして登録されている物体(以下、「登録物」と記す。)のなかから、画面法線と交差する物体(交差物)を検出し(
図11又は
図13参照)、前記交差物を検出できない場合には、編集空間(当該例では実座標系空間であるが、必要に応じて実座標系空間に対して所望の傾斜や移動を与えた他の三次元空間であってもよい。)の基準面を物体と見立てて当該基準面との交差点の実座標を検出する(
図8及び
図12参照)。
前記物体検出手段は、編集が進行した前記編集画面において、前記画面法線を、先ず、前記画面座標で定義し、当該画面法線の軌跡を変換行列で実座標に変換し、前記登録物の位置座標(実座標)と比較することによって、当該画面法線の軌跡と交差する物体を検出する(
図8参照)。
尚、前記画面法線の軌跡と交差する物体が検出されなかった場合については、前記編集基準面を物体と見立てる処理を行う前に、当該画面法線から一定距離離れた近辺も仮想の画面法線で円形走査し、当該仮想の画面法線と交わる物体及びその際の交点を検出する処理を行っても良い。
前記基準面とは、実座標系の原点を通り法線がX軸、Y軸、Z軸の三つの面を指す面である。前記画面法線が複数の基準面と交差する場合は、前記編集画面に最も近い点とX軸、Y軸、Z軸方向をベクトルとして検出する。
【0031】
この例における画面法線は、前記中央法線であって、前記編集画面における中央の位置から当該編集画面の奥行方法へ向かうベクトルである。当該ベクトルは、その始点座標(x0,y0,z0)と終点座標(x0,y0,−zn)からなる前記画面座標系で表し、それを前記変換行列(視線移動回転行列の逆行列)で実座標に変換した実座標系ベクトルとして用いる(
図12:表示オブジェクト参照)。
前記視線移動回転行列は、前記物体交点を視点(回転の中心)とする視線の回転移動(又は、前記編集空間の逆回転移動)を表示方向として反映させるための行列であって、実座標空間にある物体を編集画面に投影する投影行列と掛け合わせることによって射影行列Msを生成する。
【0032】
当該例における前記物体検出手段は、前記選択手段によって正視ツールが選択され、前記ドラッグフラグがONであり、且つ前記入力操作がなされた際における前記編集画面の中央を内包する物体(交差物)の面(交差面)を特定する(
図8及び
図13参照)。
また、画面法線(視線)が複数の物体を貫通(交差)する場合は、前記編集画面にもっと近い物体(交差物)を対象として処理を行い、当該交差物の交点を前記回転の中心とする。
【0033】
前記画面法線が、既に編集された既存の物体と交差するか否かを確認する際は、後に説明する表示オブジェクトの処理(
図8(A)参照)を以って、当該画面法線が、前記物体の表面を構成する単数の三角形又は相互に接触する複数の三角形群のいずれかと交差するか否かを判定する処理(判定処理)を行う(
図15(A)参照)。
【0034】
前記交点は、前記三角形の頂点上、線上、面上の三態様で存在するが(
図13参照)、前記交点が、頂点上又は線上に存在する場合には、当該交点は、複数の三角形に内包されていることから、各三角形の法線の平均ベクトルを前記面法線(物体法線)として採用し、前記交点が、前記面上に存在する場合には、当該交点を内包する単一の三角形の法線を前記面法線として採用する。
厚みを有し、入射点(画面法線の始点に近い側)と出射点(画面法線の始点から遠い側)が異なる物体については、入射点を前記交点として採用する。
【0035】
以上の如く前記交差物を特定し、前記演算手段で前記画面法線と交差する三角形を特定した場合には、前記演算手段でその三角形(交差面)上の交点(物体交点)及び当該交点における法線(物体法線:前記物体交点を含む面の当該物体交点を通る法線)を導くと共に、交差物が物体の構造として持つ三次元ローカル座標系(U,V,W)の各軸(
図9及び10参照)、配筋方向、又は材軸方向を物体オブジェクトから検出し、メモリー等に保存する。
尚、当該例では、前記中央法線を画面法線とするが、前記指示垂線を画面法線とすることもできる。
【0036】
<物体オブジェクト>
物体オブジェクトは、前記図形データを構成するオブジェクトの一つであって、基本的には、物体の座標等を保有し、各種関数データを構成するオブジェクトの要求に対して必要な情報を提供し、各種関数データの処理結果に基づいて情報の内容を更新するオブジェクトである。
その際、当該物体が保有する材軸や、その物体が保有する配筋情報から取得した主筋、配力筋方向から、前記物体交点に最も近いベクトルを前記演算手段で算出すると共に、他のオブジェクトの要求に応じて上記交点、ベクトルを返信し、若しくはその内容を更新する。
【0037】
当該例における前記物体オブジェクトは、物体の位置座標(ローカル座標)と、物体の材軸(方向等を示すローカル座標)と、物体の配筋情報(方向等を示すローカル座標)と、前記物体の位置座標をローカル座標から実座標へ変換する変換行列、又は前記物体の位置座標を実座標からローカル座標へ変換する変換行列を保持する。
当該例では、物体を単数又は複数の三角形からなる表面を持つ物体として定義しており(
図15(A)参照)、相互に接する三角形(辺を共有する三角形)群を一個の物体として物体オブジェクトに登録することによって、当該物体の外縁(全表面)を明らかにする。
【0038】
前記物体の位置座標は、前記三角形群で構成される表面の頂点座標である。
前記物体の材軸とは、梁、柱など断面形と線形で入力される物体の線形であり、独立基礎、床、壁など建築物の面を形作る物体(面部材)では、材軸を観念できない場合もある。
前記物体の配筋情報は、独立基礎、床、壁などの面部材が入力される時点で、各部材の仕様に応じて設定される鉄筋の配筋方向である(
図15参照)。
【0039】
<斜角判定手段>
前記斜角判定手段は、目的とする一対のベクトルの交差角度θを検出し、それが規定角度以内であるかを判定する。
当該斜角判定手段によって、例えば、ドラッグ操作中において、前記図形データの前記物体検出手段で特定された物体(交差物)から生じる固有ベクトル(前記物体法線など)と前記画面法線との交差角度θを検出し、当該交差角度θが規定角度以内である(以下、「近似」と記す。)特定ベクトルを検出することができる。
前記特定ベクトルを検出する処理(特定ベクトル検出処理)は、前記演算手段で前記画面法線と特定ベクトル候補の内積を算出し、その値が規定の正視近似範囲内にあるか否かを評価するなどすればよい。
【0040】
<回転手段>
前記正視ツールは、前記入力操作によって、前記物体検出手段で検出した交差物の一面が前記編集画面と平行となる様に、前記交差物を立体回転させ(立体正視処理)、更に、前記交差物を、前記画面法線を軸として、前記交差物が保有するベクトルが、画面座標系の縦軸又は横軸と平行となる様に水平回転させ得る(水平正視処理)回転手段を具備する。
【0041】
当該例における回転手段は、回転オブジェクトと、正視オブジェクトと、表示オブジェクトを備える。
前記回転オブジェクトと表示オブジェクトは、実座標系で各オブジェクトの内部データの処理を行う。前記回転オブジェクトでの処理における前記画面座標系から前記実座標系への座標変換は、当該回転オブジェクトが、前記表示オブジェクトから前記視線移動回転行列の逆行列を取得して行う。
前記正視オブジェクトは、前記画面座標系で当該オブジェクトの内部データの処理を行う。前記正視オブジェクトでの処理における前記実座標系から前記画面座標系への座標変換は、当該正視オブジェクトが、前記表示オブジェクトから、そのための変換行列(視線移動回転行列)を取得して行う。
前記正視ツールを構成する各オブジェクトの処理においては、図形データを含むデータの授受は複製という形で行い、例えば、各オブジェクトにおける物体ベクトル群(物体の材軸方向、ローカル座標軸、表面方向及び固有ベクトル)の変形や移動等は、編集された既存の図形データや、他のオブジェクトが内部処理の際に保有するそれらのデータに影響を与えることはない。
【0042】
当該例における正視ツールでは、各オブジェクトは、他のオブジェクトと前記内部データの授受を行う際には、必ず、実座標系のデータで授受を行う。即ち、実座標系のデータ以外で処理を行うオブジェクトは、他のオブジェクトへの出力に際して、必ず、当該オブジェクトにおいて、他の座標系のデータから実座標系のデータに変換する処理を行い、他のオブジェクトから入力した際には、必ず、当該オブジェクトにおいて、実座標系のデータから当該オブジェクトでの処理に適合した座標系のデータに変換する(
図17参照)。
尚、前記マウス座標系から画面座標系への変換は、前記マウスオブジェクトにおけるマウス座標系から画面座標系へ変換する変換行列と前記表示オブジェクトから取得した前記実座標系から前記画面座標系へ変換する変換行列(視線移動回転行列)を乗じた行列を以って行う。
【0043】
<回転オブジェクト>
前記回転オブジェクトは、前記関数データを構成するオブジェクトの一つであって、前記マウスオブジェクトによる前記ドラッグフラグの変化を検出し、ドラッグフラグがOFFからONに変化した時を「ドラッグ開始」、ドラッグフラグがONのままで変化が無い時を「ドラッグ中」、ドラッグフラグがONからOFFに変化した時を「ドラッグ終了」と判定し、その判定に応じて、表示オブジェクト又は正視オブジェクトへ、以下の通り操作情報を通知する(
図4(A)参照)。
【0044】
[ドラッグ開始]
即ち、前記回転オブジェクトは、前記マウスオブジェクトからドラッグフラグがOFFからONへ変化したとの通知を受けて(「ドラッグ開始」)、前記表示オブジェクトから、前記交差物上の前記交差点(物体交点)の位置座標、前記交差面の法線(物体法線)、当該交差物が内包する固有ベクトル、当該交差物が有するローカル座標の座標軸(以下、「ドラッグ開始情報」と記す。)を取得し(
図4(A)参照)、それらを前記正視オブジェクトへ通知する(「ドラッグ開始」の通知)。
【0045】
尚、当該例における前記回転中心マークを表示する処理は、当該正視オブジェクトにおいて、前記物体交点を中心に球を作成し、当該球のデータを実座標に変換して前記表示オブジェクトに通知する。前記回転中心マークを消去する処理は、前記表示オブジェクトに、前記球を消去する旨を通知する。
【0046】
[ドラッグ中]
また、前記回転オブジェクトは、前記マウスオブジェクトからドラッグフラグがONの状態を維持継続していることを示す通知を受けて(「ドラッグ中」)、前記ドラッグ操作に伴う始点座標からの移動量(
図5参照)から前記回転処理の中心を通る回転軸(後に記す立体回転軸)と回転量(立体操作角a)を前記操作検出手段で導き、当該回転軸及び回転量に副った操作行列M0(実座標系における回転関数)を生成し前記表示オブジェクト及び正視オブジェクトへ通知する(
図4(B)参照)。
【0047】
例えば、前記回転オブジェクトは、立体回転(編集された物体の一面を編集画面と平行に導く回転)時の前記ドラッグ操作に伴う始点座標からの移動量より画像を回転すべき角度(以下、立体操作角a)を求め、前記画面座標系(x,y,z)におけるカーソルの移動ベクトル(ドラッグ操作に伴う始点座標からの二次元的移動方向)と直角で、且つ前記回転の中心を通る軸(立体回転軸)を回転軸とする操作行列(関数)M0を生成し、当該操作行列M0を、前記表示オブジェクト及び前記正視オブジェクトに通知する(
図5(B)参照)。
【0048】
前記立体操作角aは、カーソル移動量L/編集画面の縦の長さ×Nで求める。
Nは画面の下から上までドラッグした時に、前記交差物を、それが置かれた前記編集空間(当該例では実座標系空間)と共に、視線に対して回転する角度であり、一回のドラッグ操作で一回転することが要請される場合には、その角度は、360度となる(
図5(C)参照)。
【0049】
[ドラッグ終了]
更に、前記回転オブジェクトは、前記マウスオブジェクトからドラッグフラグがONからOFFへ変化したとの通知を受けて(「ドラッグ終了」)、前記ドラッグ中の処理と同様に、前記ドラッグ操作に伴う始点座標からの移動量(
図5参照)から前記操作行列M0を生成し、正視オブジェクトへ通知すると共に(
図4(B)参照)、当該ドラッグ操作の終了によって確定し前記正視オブジェクトから通知された調整行列M1・調整行列M2に前記操作行列M0を乗じてその入力操作に伴って生じた回転行列Mを生成し、表示オブジェクトへ通知する(
図4(C)参照)。
一方、このドラッグ操作に伴うカーソルの移動量Lが‘0’の場合には、恒等行列を前記回転行列Mとして表示オブジェクトへ通知する。
尚、前記調整行列M1、調整行列M2及び前記回転行列Mは、実座標系空間に対する回転関数である。
【0050】
<正視オブジェクト>
前記正視オブジェクトは、前記関数データを構成するオブジェクトの一つであって、主に、前記立体回転における調整量(差分角を解消する量)を導くと共に、導いた調整量に基づいて前記調整行列を導く。
【0051】
[ドラッグ開始]
当該例における前記正視オブジェクトは、前記回転オブジェクトからの「ドラッグ開始」の通知を受けて、前記回転オブジェクトから前記ドラッグ開始情報を取得すると共に、既存の図形データのなかから、交差物との交点や、交点直近の材軸方向、交差物のローカル座標軸、表面方向、又は固有ベクトル(配筋方向など)を含む保有ベクトル群を取得する(
図6(A)参照)。
受け取ったデータは、当該正視オブジェクトにおける内部処理に備えて当該処理に適した座標系(画面座標系)に変換する。
以下、前記材軸方向、ローカル座標軸、表面方向及び固有ベクトルを「物体ベクトル群」と記す。
【0052】
[ドラッグ中]
当該例における前記正視オブジェクトは、前記回転オブジェクトからの「ドラッグ中(前記操作行列M0を含む)」通知を受けて、前記交差物に回転処理の中心となる点のマークを表示すると共に、以下の通り、正視スナップマーク(正視状態に近いことを示すスナップマーク)の表示処理等を行う。
前記の通り、実座標系の操作行列M0は、当該正視オブジェクトの処理対象座標系である画面座標系の操作行列m0に変換する。
当該例における前記正視オブジェクトは、前記操作行列m0に副って前記交差物が有する前記物体ベクトル群を回転させるべく、当該物体ベクトル群を前記操作行列m0で変換し、前記斜角判定手段により、変換された当該物体ベクトル群のなかに、変換後において、前記画面法線と近似する前記特定ベクトルが存在するか否かを判定する。
【0053】
当該例における正視オブジェクトの処理では、先ず、前記画面法線に近似するベクトルが前記交差物の前記物体ベクトル群に存在するか否かを判定する処理(
図17における「画面法線テスト」)を行い、存在する場合にのみ、続いて、前記画面座標系のx軸又はy軸と近似するベクトルが有るか否かを判定する処理を行う。
【0054】
前記判定の結果、前記画面法線に対する前記特定ベクトルを検出できなかった場合には、正視スナップマークの表示を消去する指令・情報を表示グラフィックモジュールに送ると共に、「ドラッグ中」通知が継続する間、上記処理を繰り返す(
図6(B)参照)。
一方、前記判定の結果、前記画面法線に対する前記特定ベクトルを検出した場合には、前記表示オブジェクトにより正視スナップマークを表示する指令・情報を前記表示グラフィックモジュールに送る。
【0055】
[ドラッグ終了]
前記正視オブジェクトは、前記回転オブジェクトからの「ドラッグ終了」通知を受けて、調整行列M1及び調整行列M2をクリアし、以下の立体正視処理を行う。
前記正視オブジェクトは、前記ドラッグ中における当該正視オブジェクトの処理と同様に、前記操作行列m0に副って前記交差物が有する前記物体ベクトル群を回転させるべく、当該物体ベクトル群を前記操作行列m0で変換し、前記斜角判定手段により、変換された当該物体ベクトル群のなかに、変換後において、前記画面法線と近似する特定ベクトルが存在するか否かを判定する。
【0056】
前記判定の結果、前記画面法線に対する前記特定ベクトルを検出できなかった場合には、前記正視オブジェクトは、前記立体差分角を‘0’とする恒等行列を、調整行列m1とする(
図7参照)。
一方、前記判定の結果、前記画面法線に対する前記特定ベクトルを検出した場合には、前記正視オブジェクトは、前記画面法線と最も近似する前記特定ベクトルを前記斜角判定手段で前記交差物の前記物体ベクトル群から選出し、前記演算手段で前記画面法線と前記特定ベクトルとの立体差分角を導く(
図7参照)。
【0057】
更に、前記正視オブジェクトは、前記演算手段で、前記特定ベクトルと画面法線の外積ベクトルを求め、当該外積方向を回転軸とし、前記立体差分角を回転量(調整量)とする行列m1を導き、前記特定ベクトルと前記画面法線とを平行にする様に前記交差物が有する前記物体ベクトル群を回転させるべく(
図7参照)、当該物体ベクトル群を前記調整行列m1で変換する(
図9参照)。
【0058】
続いて、前記正視オブジェクトは、水平正視処理(
図17における「x−y軸テスト」)を行う。
その際、前記正視オブジェクトは、前記演算手段により、前記交差物の前記物体ベクトル群のz軸成分の量を‘0’とした画面座標面(x,y,0)上のベクトル群(以下、「画面ベクトル群」と記す。)を導くと共に(
図10参照)、前記斜角判定手段により、前記画面ベクトル群のなかに前記画面座標系のx軸又はy軸と近似する特定ベクトルが有るか否かを判定する。
【0059】
前記判定の結果、前記画面座標系のx軸又はy軸に対する前記特定ベクトルを検出できなかった場合には、前記正視オブジェクトは、前記水平差分角を‘0’とする恒等行列を、当該画面座標系の調整行列m2とする(
図7参照)。
【0060】
一方、前記判定の結果、前記画面座標系のx軸又はy軸に対する前記特定ベクトルを検出した場合には、前記正視オブジェクトは、前記画面座標面(x,y,0)のx軸又はy軸と最も近似する特定ベクトルを前記斜角判定手段で前記画面ベクトル群から選出し、当該特定ベクトルと前記画面座標系のx軸又はy軸とがなす水平差分角を前記演算手段で導き(
図7参照)、前記画面座標系(x,y,z)のz軸を回転軸として前記水平差分角回転する調整行列m2を導く。
【0061】
尚、前記立体正視処理及び水平正視処理においては、前記交差物の前記物体ベクトル群の前記編集空間における位置関係を、それらの処理の前後について相違させない様に、前記調整行列m1による変換前の前記物体ベクトル群を一旦退避させてそれらの処理の終了後に元の状態に復元し、若しくは前記調整行列m1による変換前の前記物体ベクトル群を複写して当該複写先においてそれらの処理を実行するなどの措置を採る。
【0062】
最後に、前記正視オブジェクトは、当該正視オブジェクトの処理で得た立体差分角と水平差分角に応じた前記調整行列m1と前記調整行列m2を、実座標系での処理に適合する調整行列M1と調整行列M2にそれぞれ変換し回転オブジェクトに通知する(
図7参照)と共に、前記回転の中心となる点のマーク及び正視スナップマークの表示を消去する指令・情報を表示グラフィックモジュールに送る。
【0063】
<表示オブジェクト>
前記表示オブジェクトは、前記関数データを構成するオブジェクトの一つであって、前記物体の位置座標を実座標系から画面座標系へ変換する変換行列(視線移動回転行列)、及び前記物体の位置座標を画面座標系から実座標系へ変換する変換行列(視線移動回転行列の逆行列)並びに、前記視線移動回転行列と、実座標空間にある物体を編集画面に投影する投影行列とを掛け合わせてなる射影行列Msを備える。
【0064】
当該例における前記表示オブジェクトは、編集画面上に入力操作に応じた描画が適切に行われる様に、前記図形データの操作を適宜行う他、保有する射影行列Msについて、前記視線移動回転行列と投影行列を分けて管理し、前記視線移動回転行列成分を、他のオブジェクトから受け取った視点の移動量L(=|p0−p1|)又は回転量(立体操作角)aを受けて逐次累積して更新し、最新の前記視線移動回転行列を採用した各種保有行列を、他のオブジェクトからの要求に応じて適宜通知する。
【0065】
更に当該例における前記表示オブジェクトは、前記登録物に関する前記物体オブジェクト、又は各オブジェクトで生成されたマーク等の図形データに副って、既に編集された図形データを編集画面に表示する処理を行う。
【0066】
当該例における前記表示オブジェクトは、具体的には、前記回転オブジェクトから通知された前記操作行列M0並びに調整行列M1及び前記調整行列M2を、前記回転行列M(=M0・M1・M2)という形で受け、前記編集画面に表示する際の新たな視線(view)情報を与える関数を前記回転行列Mに乗じ、前記物体交点を中心とした回転(編集空間に対する視線の変化)を編集画面の表示として反映する回転行列Mv(=移動行列(−物体交点)・M0・M1・M2・移動行列(物体交点))を生成する。
【0067】
尚、前記回転行列Mvは、前記物体交点を前記移動行列(−物体交点)で実座標の原点へ移動させ、当該原点を中心として回転行列Mによる回転を行い、その後、前記物体交点を前記移動行列(物体交点)で当該物体交点が当初存在した実座標系の位置へ戻す行列であって、当該回転行列Mvを用いた変換を経ることによって前記編集空間に対する視線を変化させることができる。
【0068】
更に、当該例における表示オブジェクトは、前記視線の変化に基づく回転行列Mvを既存の射影行列Msに乗じて射影行列Msを更新し(Ms=Mv・Ms)、更新した当該射影行列Msを前記図形データに含まれるすべての表示物体の前記位置座標等とともに前記表示グラフィックモジュールに送ることによって表示関数による演算が施され、前記編集画面に、前記入力操作を反映した所望の面の正視画像を表示する(
図8(B)参照)。
【0069】
尚、ドラッグ中においては、前記調整行列M1及び前記調整行列M2を恒等行列として前記回転行列Mを導き、ドラッグ終了時においては、前記正視オブジェクトから通知された前記調整行列M1及び前記調整行列M2を用いて前記回転行列Mを導き同様の処理を行う(
図17参照)。
【0070】
上記の通り、前記正視ツールで前記編集画面に正視画像等を表示するにあたり、前記物体検出手段の処理においては、前記画面法線と物体表面との交点を、前記物体検出手段で算出し、前記画面法線と交差する物体が無い場合には、前記実座標系の基準面との交点を前記演算手段で算出し、この様に算出した交点を、前記回転オブジェクトにおける物体の回転操作の中心とし(
図8(A)参照)、特定ベクトルの検出範囲に、前記実座標系の座標軸を含める。