(57)【特許請求の範囲】
【請求項１】
電子ペンと、作成すべき物体の形状を入力するための予め定めた３次元空間の座標系における当該物体の投影面に対応するタブレツトとから成り、当該タブレツト上の電子ペンの軌跡を点列データに変換して入力する入力手段と、
入力された点列データに基づいて前記軌跡が幾何学におけるどの図形を表しているかを判断する判断手段と、
前記判断手段で判断された図形の頂点、端点または当該図形に関連する予め定めた点の何れかの特定点を用いて、予め定めた条件に従って前記３次元空間の座標系に前記特定点を含むモデル生成用平面を生成する面生成手段と、
前記面生成手段で生成されたモデル生成用平面と、前記物体の前記３次元空間の座標系における視点及び前記投影面上の前記特定点を結ぶ投影線との交点を求めることによって前記３次元空間の座標系における前記特定点のモデル座標を演算する座標演算手段と、
前記座標演算手段で演算されたモデル座標と前記判断手段で判断された図形とから前記３次元空間の座標系における当該図形の位置を決定すると共に立体モデルデータを生成するモデルデータ生成手段と、
前記モデルデータ生成手段で生成された立体モデルデータの各モデル座標を表示座標系に変換して表示装置に表示させる表示手段と、
を含む図形入出力装置。
【請求項２】
前記表示手段に表示された図形が修正された場合には、前記立体モデルデータを更新することを特徴とする請求項１に記載の図形入出力装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、図形入出力装置にかかり、特に、手で描かれたスケツチをコンピユータに入力して立体形状等を示す立体モデルを作成して表示する図形入出力装置に関する。
【０００２】
【従来の技術】
従来より、物体の立体形状等を示す立体モデル作成のための３次元ＣＡＤシステムが知られている。この３次元ＣＡＤシステムにより立体モデルを作成する際には、立体モデルの各頂点の３次元座標値をモデル形状に沿って逐次入力するのが一般的である。この場合、設計者は一旦イメージしたモデル形状を３次元ＣＡＤシステムで扱うことが可能な３次元座標系上に配置させたことを想定し、モデル形状の各頂点座標値を３次元座標系上における絶対値または相対値として予め算出しておく必要がある。この算出された座標値を用いて、モデル形状の種類毎に対応する専用のコマンドによってモデル形状の各頂点座標を数値入力する。一般的には、その入力過程および結果をアイソメ図等の投影図で確認している。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来の３次元ＣＡＤシステムでは、設計者がイメージしたモデル形状について３次元座標系上に配置させたことを想定しながら座標値を求めることは、設計者に過大な負担を要求し、更に算出された座標値を入力するため、モデル形状に対応するコマンドを逐次選択しなければならないので、入力操作に要する手間は膨大であり、非効率な作業であった。
【０００４】
本発明は、上記事実を考慮して、設計者が画面上にスケッチ感覚でアイソメ図や透視図を描くことで容易に立体モデルを作成できる図形入出力装置を得ることが目的である。
【０００５】
【課題を解決するための手段】
上記目的を達成するために本発明は、電子ペンと、作成すべき物体の形状を入力するための予め定めた３次元空間の座標系における当該物体の投影面に対応するタブレツトとから成り、当該タブレツト上の電子ペンの軌跡を点列データに変換して入力する入力手段と、入力された点列データに基づいて前記軌跡が幾何学におけるどの図形を表しているかを判断する判断手段と、前記判断手段で判断された図形の頂点、端点または当該図形に関連する予め定めた点の何れかの特定点を用いて、予め定めた条件に従って前記３次元空間の座標系に前記特定点を含むモデル生成用平面を生成する面生成手段と、前記面生成手段で生成されたモデル生成用平面と、前記物体の前記３次元空間の座標系における視点及び前記投影面上の前記特定点を結ぶ投影線との交点を求めることによって前記３次元空間の座標系における前記特定点のモデル座標を演算する座標演算手段と、前記座標演算手段で演算されたモデル座標と前記判断手段で判断された図形とから前記３次元空間の座標系における当該図形の位置を決定すると共に立体モデルデータを生成するモデルデータ生成手段と、前記モデルデータ生成手段で生成された立体モデルデータの各モデル座標を表示座標系に変換して表示装置に表示させる表示手段と、を含んでいる。
【０００６】
また、前記表示手段に表示された図形が修正された場合には、前記立体モデルデータを更新することができる。
【０００７】
【作用】
本発明の入力手段は、電子ペンとタブレツトとから構成されており、タブレットは、作成すべき物体の形状を入力するための予め定めた３次元空間の座標系における当該物体の投影面に対応する。入力手段は、このタブレツト上の電子ペンの軌跡を点列データに変換して入力する。従って、電子ペンを用いてタブレツト上で作図することで手描きされた図形のデータが点列データに変換されて入力される。判断手段は、入力された点列データに基づいてタブレツト上の電子ペンの軌跡が２次元幾何学におけるどの図形を表わしているかを判断する。面生成手段は、この判断手段で判断された図形の頂点、端点または当該図形に関連する予め定めた点の何れかの特定点を用いて、予め定めた条件に従って前記３次元空間の座標系にモデル生成用平面を生成する。従って、設計者は、図形を入力する毎にモデル生成用平面を想定し入力することがない。座標演算手段では、面生成手段で生成されたモデル生成用平面と、物体の３次元空間の座標系における視点及び投影面上の特定点を結ぶ投影線との交点を求めることによって、３次元空間の座標系における特定点のモデル座標を演算する。モデルデータ生成手段は、座標演算手段で演算されたモデル座標と判断手段で判断された図形とから３次元空間の座標系における当該図形の位置を決定すると共に立体モデルデータを生成する。表示手段は、モデルデータ生成手段で生成された立体モデルデータの各モデル座標を表示座標系に変換して表示装置に表示させる。従って、図形を入力する毎に３次元空間を想定した座標入力及びコマンド入力することなく、設計者がイメージした図形を入力するのみで、立体モデルが生成できる。
【０００８】
この表示手段に表示された図形が修正された場合には、立体モデルデータを更新することができる。
【０００９】
なお、本発明でいう図形は、点、線、面等の集合から成るものをいい、文字、記号等も含まれる。
【００１０】
【実施例】
以下、図面を参照して本発明の実施例を詳細に説明する。図２は本実施例の概略図を示すもので、図形処理用のコンピユータ１０はＣＰＵ、ＲＯＭ、ＲＡＭ及びメモリ（ＭＥＭ）を備えている。本実施例のメモリ（ＭＥＭ）には、詳細を後述するモデル生成面を自動的に生成するための条件が記憶されると共に、詳細を後述するオイラ演算子が予め記憶されている。コンピユータ１０には、タブレツト１６（ディジタイザ）が接続されている。このタブレツト１６には電子ペン１８が接続されており、電子ペン１８の先端をタブレツト１６の表面に接触させて移動させることにより移動軌跡が点列データに変換されてコンピユータ１０内に入力される。この入力は、キーボード１４や図示を省略したマウスでも可能である。本実施例のタブレット１６は、液晶表示装置と組み合わされており、このタブレットを使用して液晶表示装置にメニュー画面等を表示することにより、電子ペンでのメニュー選択や電子ペンでのデータ入力等が容易になる。また、オプションとして当該液晶表示装置と同一の画像を表示するための表示用ディスプレイ（以下、ＣＲＴ）１２を接続することも可能である。このコンピユータ１０のＲＯＭには以下で説明する図形処理用の制御ルーチンのプログラム等が予め記憶されている。
【００１１】
本実施例では、設計者がイメージした物体をモデルとしてタブレット１６の液晶表示装置に描画するために、電子ペン１８でタブレツト１６の表面を摺動させ、その軌跡が表示される。従って、このタブレット１６上の平面は、物体を投影した投影面と考えられる。以下に、この２次元平面であるモデル投影面上の座標を自動的に３次元空間の座標に変換する方法を説明する。
【００１２】
図３に示すように、通常、コンピュータで３次元モデルの投影図を扱うときには、次の３種類の座標系を用いる。
【００１３】
１）絶対座標系Ｗ（Ｗｏｒｌｄ  Ｃｏｏｄｉｎａｔｅｓ）
全ての座標系の基準となる座標系
本実施例では物体を表現するためのモデルの座標値も絶対座標系で扱う
２）視点座標系Ｃ（Ｃａｍｅｒａ  Ｃｏｏｄｉｎａｔｅ）
人間の視点座標を原点とする座標系
３）画面座標系Ｓ（Ｓｃｒｅｅｎ  Ｃｏｏｄｉｎａｔｅ）
タブレット１６の液晶表示画面上の２次元の座標系
【００１４】
絶対座標系Ｗに置かれたモデルの座標値はまず視点座標系Ｃの座標値に変換され、次にモデルの投影面である画面座標系Ｓの座標値に投影変換されてタブレット１６の液晶表示画面上に表示される。
【００１５】
従って、画面に投影されたモデルの２次元の座標が与えられた時、実際の３次元空間におけるモデルの３次元の座標（以下、モデル座標という。）は、図４に示すように、絶対座標系Ｗ上において視点座標Ｐ１ｗと画面座標Ｐ２ｗの２点を結ぶ直線Ｌｗ（この線を仮に投影線Ｌｗと呼ぶ）上の何れかに存在することなる。
【００１６】
ここで、投影線Ｌｗ上のモデル座標Ｐｗの位置を同定するためにモデル生成面ＭＰという概念を導入する。「モデル生成面」とは入力されたモデルの２次元の座標がその面上に存在する絶対座標系Ｗ上における平面のことである。画面上に入力された２次元の座標がモデル生成面ＭＰ上の何れにあるか予め分かれば、実際のモデル座標は投影線Ｌｗと、モデル生成面ＭＰの交点を計算することで求めることができる。
【００１７】
既存のＣＡＤシステムで、モデル投影画面上で直接座標指示する場合は、座標指示を行なう前に逐次モデル生成面ＭＰを設定する必要があるため、操作が繁雑になる。そこで、本実施例ではモデルの稜線入力の際に次の４条件を設定することでモデル生成面ＭＰの設定作業を不要にし、操作性を高めている。但し、以下の仮定は直線の稜線が入力された場合である。
【００１８】
［条件］
（１）一番最初の点は高さ０（Ｙ軸方向の座標値）の平面に存在する
（２）線分端点の少なくとも片方は必ず既存の線分上に描かれる
（３）Ｙ軸（高さ方向）に描かれた線分はまず垂直の稜線と考える
（４）Ｙ軸に平行でない線分は水平の稜線とする
（５）既存の面上に描かれた線はその面上にあるとする
【００１９】
上記の条件を考慮して次のようにモデル生成図ＭＰを自動的に設定する。まず、条件（１）で一番最初の点のモデル生成面ＭＰは、Ｙ＝０とする。条件（２）で線分の端点のどちらかは必ず既存の線分上に存在するのでその点の座標は既存の線分を按分することで求めることができる。もう一方に端点の既存の線分上に無い場合は、条件（３）、（４）、（５）に従ってモデル生成面ＭＰを設定する。すなわち条件（３）では入力された線分を含みかつ投影線のＸＺ成分ベクトルと垂直な面をモデル生成面ＭＰとする。条件（４）では既存の線分上の端点のＹ座標を含む水平面をモデル生成面ＭＰとする。条件（５）では既存の面をモデル生成面ＭＰとする。
【００２０】
次に、モデル稜線の加筆・修正に応じて立体モデルデータを自動的に構築する方法を説明する。
【００２１】
本実施例の立体モデルデータはスプリット・エッジ境界表現形式のソリッドモデルデータ構造を有している。このスプリット・エッジ境界表現形式では、立体は、その境界面で表現することができ、主要な位相要素として、この立体は面により構成され、面はそれを構成する稜線からなり、稜線は両端の頂点を有する構造となる。
【００２２】
図５に示すように、情報Ｐｒｏｄｕｃｔ  は全データの検索ノードである。情報Ｂｏｄｙはモデルの情報である面（Ｆａｃｅ）、稜線（Ｅｄｇｅ）、頂点（Ｖｅｒｔｅｘ）の検索ノードを有している。このようなスプリッド・エッジ境界表現形式の特徴は、モデルの各稜線がハーフエッジ情報（ＨａｌｆＥｄｇｅ）と呼ばれる２つの反対向きで一対のベクトル情報を有し、ハーフエッジ情報のつながり情報（Ｌｏｏｐ）によってモデル形状の位相を保つことにある。これらの情報は、モデルが有する境界面のつながり具合のみを表す情報であり、位相情報（位相要素、ｔｏｐｏｌｏｇｙ）ともいう。
【００２３】
なお、この位相情報に対して、モデルの実際の形状を表す情報として、面（Ｆａｃｅ）に付属する曲面（ｓｕｒｆａｃｅ  、面の形状）、稜線（Ｅｄｇｅ）に付属する曲線（ｃｕｒｖｅ  、線の形状）、頂点（Ｖｅｒｔｅｘ）の有する点（ｐｏｉｎｔ  、３次元の座標値）等の幾何情報（幾何要素、ｇｅｏｍｅｔｒｙ）がある。
【００２４】
本実施例では、モデルの稜線の加筆・修正に応じて、上記のデータ構造を構築・維持するために周知のオイラー演算子に加え、次の［オイラー演算子］に示す新規な７つのオイラー演算子を用いている。なお、このオイラー演算子とは、モデル形状の位相を保つためのプログラム・ルーチンに相当し、モデル形状の位相を維持しながら上記の情報間の隣接関係を導出する操作をいう。
【００２５】
［オイラー演算子］
演算子１：Ｍａｋｅ＿Ｂｏｄｙ
演算子２：Ｍａｋｅ＿Ｓｔｒｕｔ＿Ｅｄｇｅ
演算子３：Ｍａｋｅ＿Ｆａｃｅ
演算子４：Ｍａｋｅ＿Ｉｎｎｅｒ＿Ｌｏｏｐ
演算子５：Ｄｅｌｅｔｅ＿Ｅｄｇｅ
演算子６：Ｂｒｅａｋｅ＿Ｅｄｇｅ
演算子７：Ｅｘｔｅｎｄ＿Ｅｄｇｅ
【００２６】
図６に示すように、演算子１（Ｍａｋｅ＿Ｂｏｄｙ）は、１番最初の線分が入力された場合に適用される。すなわち、第１の点Ｐ１  を始点とし第２の点Ｐ２  を終点とする新規な線Ｌ１  が入力されたときには（図６（１）参照）、この新規な線Ｌ１  が新規な稜線（Ｎｅｗ  Ｅｄｇｅ）に対応され、この稜線（Ｎｅｗ  Ｅｄｇｅ）の第１の頂点Ｖｅｒｔｅｘ［０］  及び第２の頂点Ｖｅｒｔｅｘ［１］  が定まると共に、反対向きの方向のハーフエッジ情報ＨａｌｆＥｄｇｅ［０］，ＨａｌｆＥｄｇｅ［１］  が定まる（図６（２）参照）。
【００２７】
図７に示すように、演算子２（Ｍａｋｅ＿Ｓｔｒｕｔ＿Ｅｄｇｅ）は、片方の端点のみが既存の線分上にある場合に適用される。すなわち、ハーフエッジ情報を伴う３つの稜線Ｅｄｇｅ［０］，［１］，［２］  に（図７（１）参照）、新規な線Ｌ２  が入力されたときには（図７（２）参照）、この新規な線Ｌ２  が新規な稜線Ｅｄｇｅ［３］  に対応され、反対向きの方向のハーフエッジ情報ＨａｌｆＥｄｇｅ［０］，ＨａｌｆＥｄｇｅ［１］  が定まる（図７（３）参照）。ここでは、稜線Ｅｄｇｅ［３］  にかかる既存の稜線Ｅｄｇｅ［２］  は、稜線Ｅｄｇｅ［０］，［１］  から形成された枝のような既存の線分の稜線（Ｓｔｒｕｔ＿Ｅｄｇｅ）であり、この稜線Ｅｄｇｅ［２］  の一方のハーフエッジ情報がつながり候補（ｐＮｅｘｔＨｅｄｇｅ）に設定される。なお、この演算子２（Ｍａｋｅ＿Ｓｔｒｕｔ＿Ｅｄｇｅ）の詳細は後述する。
【００２８】
図８に示すように、演算子３（Ｍａｋｅ＿Ｆａｃｅ）は線分の追加により面が形成される場合に適用される。すなわち、ハーフエッジ情報を伴う３つの稜線Ｅｄｇｅ［０］，［１］，［２］  の２つの稜線に対し（図８（１）参照）、新規な線Ｌ３  が入力されたときには（図８（２）参照）、この新規な線Ｌ３  が新規な稜線Ｅｄｇｅ［４］  に対応され、反対向きの方向のハーフエッジ情報ＨａｌｆＥｄｇｅ［０］，ＨａｌｆＥｄｇｅ［１］  が定まる（図８（３）参照）。また、この稜線Ｅｄｇｅ［４］  にかかる既存の稜線Ｅｄｇｅ［１］，［２］  について、同一方向のハーフエッジ情報が一対のつながり候補（ｐＮｅｘｔＨｄｇｅ）に設定され、これら稜線Ｅｄｇｅ［０］，［１］，［２］，［４］  内部に含まれるハーフエッジ情報が閉じたループ（Ｃｌｏｓｅ  Ｌｏｏｐ）に定まる。なお、この演算子３（Ｍａｋｅ＿Ｆａｃｅ）の詳細は後述する。
【００２９】
図９に示すように、演算子４（Ｍａｋｅ＿Ｉｎｎｅｒ＿Ｌｏｏｐ）は既存の面内に孤立した線分が描かれた場合に適用される。すなわち、稜線Ｅｄｇｅ［０］，［１］，［２］，［３］  で形成される面Ｆａｃｅ内にハーフエッジ情報を伴う稜線Ｅｄｇｅ［５］  が定まるのは（図９（１）参照）、順次稜線が形成され閉じたループが形成され（図９（２）参照）、この稜線から新規な稜線等が増殖される（図９（３）参照）前段階であると考えられるためである。
【００３０】
図１０に示すように、演算子５（Ｄｅｌｅｔｅ＿Ｅｄｇｅ）は既存の線分を消去する場合に適用される。なお、演算子５では、以下の４つの場合を考慮する必要がある。第１の場合は独立した線分の稜線の消去であり（図１０（１）参照）、この場合には全てを消去する。第２の場合は演算子２（Ｍａｋｅ＿Ｓｔｒｕｔ＿Ｅｄｇｅ）で説明した既存の稜線から形成された枝のような既存の線分の稜線（Ｓｔｒｕｔ＿Ｅｄｇｅ）の消去であり（図１０（２）参照）、この場合には稜線（Ｓｔｒｕｔ＿Ｅｄｇｅ）及びハーフエッジ情報を消去すると共に、ＨａｌｆＥｄｇｅ［０］，［２］  によりループ情報を形成するように、すなわちハーフエッジ情報が関連するようにする（図１０（３）参照）。第３の場合は１つのループを形成し連続する稜線の内部の１つの線分（の稜線、ｓａｍｅ  ｌｏｏｐ  ｅｄｇｅ）の消去であり（図１０（４）参照）、この場合には該当する稜線及びハーフエッジ情報を消去すると共に、この消去により独立する線分の稜線を独立した新規な稜線としかつ独立するループを修正ループ情報（ｍｏｄｉｆｉｅｄ  ｌｏｏｐ  ）を形成するように、すなわちハーフエッジ情報が関連するようにする（図１０（５）参照）。第４の場合は異なる複数のループを形成する何れかのループ内で連続する稜線の１つの線分（の稜線、ｄｉｆｆｅｒｅｎｔ  ｌｏｏｐ  ｅｄｇｅ  ）の消去であり（図１０（６）参照）、この場合には該当する稜線及びハーフエッジ情報を消去すると共に、この消去により独立したループ（ｄｅｌｅｔｅｄ  ｌｏｏｐ）が解消されるので、独立したループを既存のループに帰属するように修正ループ情報（ｍｏｄｉｆｉｅｄ  ｌｏｏｐ  ）を形成、すなわちハーフエッジ情報が関連させる（図１０（７）参照）。
【００３１】
図１１に示すように、演算子６（Ｂｒａｋｅ＿Ｅｄｇｅ）は既存の線分を分割する場合に適用される。すなわち、既存の線分Ｌ６  を分割するときに（図１１（１）参照）、その線分上の分割位置に頂点を挿入すると共に挿入された頂点により分割される一方を既存線分Ｌ６  の稜線としかつ他方を新規線分の稜線（Ｎｅｗ  Ｅｄｇｅ）とする（図１１（２）参照）。なお、頂点を介して連続する稜線を合成する場合には、上記方法を逆に行えばよい。実際には線分中に頂点を挿入するルーチンと線分中に頂点を消去するルーチンを用意する。
【００３２】
図１２に示すように、演算子７（Ｅｘｔｅｎｄ＿Ｅｄｇｅ）は既存の線分を延長する場合に適用される。すなわち、既存の線分Ｌ７  の稜線Ｅｄｇｅ［７］  で（図１２（１）参照）、延長点Ｐ７  が指示されて稜線Ｅｄｇｅ［７］  の頂点Ｐ（ｓｔｒｕｔ  ｖｅｒｔｅｘ）から延長点Ｐ７  までの稜線Ｅｄｇｅ［８］  が形成されたときには（図１２（２）参照）、既存の稜線Ｅｄｇｅ［７］  を延長すると共に、形成された稜線Ｅｄｇｅ［８］  を消去する（図１２（３）参照）。
【００３３】
本実施例では、以上説明した７つのオイラー演算子を用いることで立体モデルの位相を操作する。
【００３４】
次に、上記演算子２（Ｍａｋｅ＿Ｓｔｒｕｔ＿Ｅｄｇｅ）と演算子３（Ｍａｋｅ＿Ｆａｃｅ）のオイラー演算子の詳細を更に説明する。
【００３５】
上記の演算子２（Ｍａｋｅ＿Ｓｔｒｕｔ＿Ｅｄｇｅ）では既存の何れのハーフエッジ情報につながり情報を有させるようにするのか不定になる場合がある。例えば、図１３（１）に示すように、稜線である新規線分ＬＡ  を稜線である既存の線分ＬＢ  、線分ＬＣ  の頂点部分に接続しようとする場合、新規線分ＬＡ  のハーフエッジ情報がつながるべき既存のハーフエッジ情報、すなわちつながり候補（ｐＮｅｘｔＨｅｄｇｅ）が内側のハーフエッジ情報（図１３（２）参照）、または外側のハーフエッジ情報（図１３（３）参照）の何れでもよいことになる。
【００３６】
そこで、本実施例ではハーフエッジ情報のつながり情報としてのループ情報（Ｌｏｏｐ）を以下のようにその性質によって範疇分け（分類）し、以下に述べる規則を予め設定することによって、略自動的に適切なつながり候補を選択することができるという知見を得た。
【００３７】
［ループ情報の分類］
（ａ）閉じたループ（Ｃｌｏｓｅｄ＿Ｌｏｏｐ）・・・閉じた平面の稜線で構成されるループ
（ｂ）開いたループ（Ｏｐｅｎｅｄ＿Ｌｏｏｐ）・・・ａ）以外のループ
［規則］
（１）新規線分が入力された際に、もしつなぎ候補のループが開いていたらその候補に高い優先度を与える。
（２）もし新規線分の端点が閉じたループの面上にあれば、その閉じたループのつながり候補に高い優先度を与える（図１３）。
【００３８】
例えば、規則（１）については、図１４（１）に示すように、閉じたループ（Ｃｌｏｓｅｄ＿Ｌｏｏｐ）と開いたループ（Ｏｐｅｎｅｄ＿Ｌｏｏｐ）とがあり、図１４（２）に示すように、点ＰＤ  から稜線Ｅｄｇｅ［Ｄ］  を形成する場合、図１４（３）に示すように、開いたループ（Ｏｐｅｎｅｄ＿Ｌｏｏｐ）のつなぎ候補に優先度を与える。
【００３９】
規則（２）については、図１５（２）に示すように、点ＰＤ  から閉じたループの面上の点Ｐｄ  までの稜線Ｅｄｇｅ［ｄ］  を形成する場合、図１５（３）に示すように、閉じたループ（Ｃｌｏｓｅｄ＿Ｌｏｏｐ）のつなぎ候補に優先度を与える。
【００４０】
このようにして、つながり候補に優先度を与えた後には、つながり候補のループ情報を次のように分類する。
【００４１】
［分類］
（ｃ）反時計回りループ（ＣＣＷ＿Ｌｏｏｐ）
新規線分のハーフエッジ情報がつながった場合にユーザの視点から見て反時計回りのループを形成するループ情報。
（本システムでは反時計回りのループを持つ面を表の面とする。）
（ｄ）時計回りループ（ＣＷ＿Ｌｏｏｐ）
ユーザの視点から見て時計回りになるループを形成するループ情報。
【００４２】
そして、次の規則から、つなぎ候補を決定する。
［規則］
（３）つなぎ候補が全て反時計回りループの時にはユーザに最も近いつなぎ候補を選択する（図１６（１）〜（３）参照）。
（４）つなぎ候補が全て時計回りループの時にはユーザから最も遠いつなぎ候補を選択する（図１６（４）〜（６）参照）。
（５）つなぎ候補が反時計回りと時計回りの両方のループが有れば、ユーザに最も最も近い反時計回りのつなぎ候補を選ぶ（図１６（７）〜（９）参照）。
【００４３】
このようにして、分類（ａ）〜（ｄ）と、規則（１）〜（５）を用い、優先度を与えれば、適切なつながり候補を自動的に選択できる。
【００４４】
また、上記の演算子３（Ｍａｋｅ＿Ｆａｃｅ）で面が形成される場合には、新規線分の両端点で上記の規則でつなぎ候補を選択し、選択されたペアのハーフエッジ情報が面形成の条件に適合すれば新規に面とループ情報を作成する。
【００４５】
なお、他のオイラー演算子については詳細な説明を省略する。
次に、本実施例の作用を、図１７乃至図２１を参照すると共に、２次元の入力図形を３次元の立体モデルに変換し表示する図１の図形処理用の制御ルーチンに合わせて説明する。
【００４６】
図１７には、タブレット１６上の液晶表示装置に表示される画面構成を示した。液晶表示装置に表示される装置画面２１は、所要な操作を指示するためのメニューバー２２、現在の状態が表示されるステイタスバー２４、図形入力をすると共に立体モデルが表示される入力・表示画面２６、及び視点移動等のときに指示するためのアイコンメニューバー２８から構成されている。なお、以下の説明では、入力・表示画面２６を用いて説明する。また、図ではアイソメ図法で立体モデルを作成する場合を説明する。
【００４７】
図形入出力装置のスイツチがオンされると図１に示されるルーチンが起動され、ステップ３０で初期化が行なわれると共にステップ３２において図形認識用パラメータの設定が行なわれる。このパラメータは、タブレツトから入力された点列データが幾何学における線分、円および円弧のいずれに近似しているか等を判定するために使用されるものである。また、このとき、設計者の立体モデルのスケッチを容易にするための３次元の参考軸Ｘ，Ｙ，Ｚが表示される（図１８（１）参照）。次のステップ３４では、タブレツト１６からデータが入力されたかキーボード１４からデータが入力されたかを判断し、キーボードからデータが入力されたと判断されたときにはステップ３６においてキーボード入力処理を実行する。このキーボード入力処理については、ＣＲＴやタブレット上に表示されたメニユーから終了の機能選択や、終了の機能以外の機能（例えば、図形処理用のパラメータの大きさの変更、図形データベースの保存、読込、消去、ハードコピー、オールクリアー、ヘルプ等）がある。
【００４８】
一方、ステップ３４においてタブレツトからデータが入力されたと判断されたときには、判断手段としてのステップ３８において図形認識処理を行なう。図１８（１）に示すように、立体モデルの底辺を作成する場合には、電子ペン１８で１本づつ線を入力するが、この入力されたときの点列データが線として認識される。次のステップ４０ではステップ３８で認識された図形が作図すべき図形か、指定した線分（稜線）の削除等のオペレータであるかを判断する。作図すべき図形であるときにはステップ４４で自動編集処理をした後にステップ４６において（ステップ３８で認識された）図形に対するモデル生成面ＭＰを上記で説明したようにして生成する。なお、この自動編集処理は、図１８（１）の例では、認識された線が３次元の参考軸Ｘ，Ｙ，Ｚの何れか（最も幾何学的に近い軸）に対して平行となるように自動的に調整される。次のステップ４８では上述のように３次元空間の座標系において視点及び投影面（タブレット）上の点を結ぶ投影線を生成すると共に生成されたモデル生成面と投影線との交点を求め、稜線等を導出する。次のステップ５０では、導出された稜線等による立体モデルデータを導出し、次のステップ５２でこのデータを記憶する。この立体モデルデータの導出は、図１８（１）の例では、４本目の線分が入力され、閉じた領域が形成された時点で、自動的に面として認識される。次のステップ５４では記憶されたデータ（３次元）を２次元座標に変換し、次のステップ５６でタブレット上に表示する。
【００４９】
一方、ステップ４０においてオペレータであると判断されたときにはステップ５０においてオペレータ処理を行なった後にステップ５２でオペレータ処理後のデータを記憶する。
【００５０】
上記のようにして立体モデルの底辺部分が形成されたので、この底辺を有する箱型の立体モデルを作成する場合には、図１８（２）に示すように、垂直線を入力する。この垂直線は立体モデルの表面線か裏面線かが不定であるので、設計者に問い合わせ、この問い合わせ結果に従う。この場合は、前面の平面の辺であるので表面線として確定される（図１８（３））。次に、箱型の辺の各々を順次入力する（図１９（１）、（２）参照）。なお、線分の入力時には、その合成部分に付不要な線分が生じた場合に自動的にトリミングされるようになっている。このようにして、１２本の辺（稜線）からなる６面体である立体モデルが自動的に認識される。このため、図１９（２）に示すように、隠れ線を点線で表示することもできる。
【００５１】
次に、この６面体である立体モデルを、角を切削したような形状に変形させる場合の修正では、各面を分割するための線分を入力した後に（図１９（３））、不要となる線分（稜線）を消去指示し（図２０（１））、順次不要な線分を選択し消去する（所謂ピッキング動作）。これにより、不要な線分が消去された立体モデルが表示されるので（図２０（２））、必要とする線分を加筆する（図２０（３））。この線分の加筆により、斜辺と壁面が自動的に生成される。この時点で、アイコンメニューバー２８の選択により、裏面表示をオフにすれば、図２１（１）に示すように、裏面が表示されない立体モデルを表示できる。また、アイコンメニューバー２８の選択により、図２１（２）に示すように、視点を変更することも可能である。
【００５２】
次に、６面体の角を更に修正しようとする場合には、各面を分割すると共に（図２１（２））、不要な線を消去した後に、不足の線分を追加し（図２１（３））、立体モデルを完成させる。
【００５３】
なお、本実施例の図形入出力装置では、各面にシェーディングを付加すること、寸法を記入すること、アイソメ図法のみでなく３点透視図法や２点透視図法もできる。
【００５４】
このように、２次元の投影図から３次元モデルが作成できるので、従来の３次元ＣＡＤシステムのように３次元座標系を想定し、複雑な操作を行うことなく、設計者は自分のイメージに近い図形を描画することによって立体モデルを作成することができる。
【００５５】
また、本実施例では、モデル形状入力用のコマンド選択を不要にでき、モデル投影図面（アイソメ図及び透視図）上の２次元座標を自動的に３次元座標に変換することができる。
【００５６】
さらに、本実施例では、モデル稜線の加筆・修正に応じて、立体モデルデータを自動的に構築することができる。
【００５７】
【発明の効果】
以上説明したように本発明によれば、自動的にモデル生成用平面が生成されるので、事前に立体イメージを数値座標に置き換えたり、入力の際にコマンドを選択したりすることがなく、設計者がイメージしたモデル形状をそのままタブレットに入力するのみのスケッチ感覚で自動的に立体モデルを生成することができる、という効果がある。
【図面の簡単な説明】
【図１】本実施例の制御ルーチンを示す流れ図である。
【図２】本実施例の概略図を示すブロツク図、
【図３】コンピュータで３次元モデルを扱うときの座標系を示す線図である。
【図４】立体モデルの座標を定める説明をするための説明図である。
【図５】本実施例の立体モデルデータのデータ構造を示すイメージ図である。
【図６】演算子１（Ｍａｋｅ  Ｂｏｄｙ  ）を説明するための説明図である。
【図７】演算子２（Ｍａｋｅ  Ｓｔｒｕｔ  Ｅｄｇｅ）を説明するための説明図である。
【図８】演算子３（Ｍａｋｅ  Ｆａｃｅ  ）を説明するための説明図である。
【図９】演算子４（Ｍａｋｅ  Ｉｎｎｅｒ  Ｌｏｏｐ  ）を説明するための説明図である。
【図１０】演算子５（Ｄｅｌｅｔｅ  Ｅｄｇｅ  ）を説明するための説明図である。
【図１１】演算子６（Ｂｒａｋｅ  Ｅｄｇｅ）を説明するための説明図である。
【図１２】演算子７（Ｅｘｔｅｎｄ  Ｅｄｇｅ  ）を説明するための説明図である。
【図１３】演算子２（Ｍａｋｅ  Ｓｔｒｕｔ  Ｅｄｇｅ）の詳細を説明するための説明図である。
【図１４】ループ情報（Ｌｏｏｐ）の規則（１）を説明するための説明図である。
【図１５】ループ情報（Ｌｏｏｐ）の規則（２）を説明するための説明図である。
【図１６】ループ情報（Ｌｏｏｐ）の規則（３）〜（５）を説明するための説明図である。
【図１７】タブレット上の液晶表示装置の画面構成を示す線図である。
【図１８】立体モデルの形成過程を示すイメージ図である。
【図１９】立体モデルの形成過程を示すイメージ図である。
【図２０】立体モデルの形成過程を示すイメージ図である。
【図２１】立体モデルの形成過程を示すイメージ図である。
【符号の説明】
１６    タブレット
１８    電子ペン
【図１】
0003574202.tif 000002
【図２】
0003574202.tif 000003
【図３】
0003574202.tif 000004
【図４】
0003574202.tif 000005
【図５】
0003574202.tif 000006
【図６】
0003574202.tif 000007
【図７】
0003574202.tif 000008
【図８】
0003574202.tif 000009
【図９】
0003574202.tif 000010
【図１０】
0003574202.tif 000011
【図１１】
0003574202.tif 000012
【図１２】
0003574202.tif 000013
【図１３】
0003574202.tif 000014
【図１４】
0003574202.tif 000015
【図１５】
0003574202.tif 000016
【図１６】
0003574202.tif 000017
【図１７】
0003574202.tif 000018
【図１８】
0003574202.tif 000019
【図１９】
0003574202.tif 000020
【図２０】
0003574202.tif 000021
【図２１】
0003574202.tif 000022