(57)【特許請求の範囲】
【請求項１】
曲線を微小直線をもって近似して図形を描画する描画装置であって、
前記曲線を、その接線方向をなす他の線と接する接点の付近の領域については細かく、その他の領域については荒く分割する分割手段と、
分割した各曲線を直線によって近似する直線近似手段と、
近似した曲線を含む図形を描画する描画手段と、
を具備することを特徴とする描画装置。
【請求項２】
前記分割手段は、
前記曲線を所定数に等分割する等分割手段と、
等分割した曲線のうち前記接点を含む曲線を更に分割する再分割手段と、
を具備することを特徴とする請求項１記載の描画装置。
【請求項３】
前記曲線は円または楕円若しくはそれらの一部であり、前記等分割手段は、その円または楕円の中心角をもって等分割する手段であることを特徴とする請求項２記載の描画装置。
【請求項４】
前記直線近似手段は分割した直線のうち前記接点を含む曲線を近似するときに前記接線方向と同一方向の直線をもって近似する手段であることを特徴とする請求項１記載の描画装置。
【請求項５】
描画した図形を出力する出力手段を更に具備することを特徴とする請求項１乃至請求項４のいずれか１項に記載の描画装置。
【請求項６】
前記出力手段は、描画した図形を印刷する印刷手段であることを特徴とする請求項５記載の描画装置。
【請求項７】
前記出力手段は、描画した図形を表示する表示手段であることを特徴とする請求項５記載の描画装置。
【請求項８】
描画命令に従ってビットマップデータをメモリに展開する描画部と、前記描画部によってメモリに展開されたビットマップデータの印刷を行なう印刷部とを有する印刷装置における描画方法であって、
前記描画部は、
曲線を、その接線方向をなす他の線と接する接点の付近の領域については細かく、その他の領域については荒く分割する分割工程と、
分割した各曲線を直線によって近似する直線近似工程と、
近似した曲線を含む図形のビットマップデータをメモリに描画する描画工程と、
を実行することを特徴とする描画方法。
【請求項９】
前記分割工程は、
前記曲線を所定数に等分割する等分割工程と、
等分割した曲線のうち前記接点を含む曲線を更に分割する再分割工程と、
を具備することを特徴とする請求項８記載の描画方法。
【請求項１０】
前記曲線は円または楕円若しくはそれらの一部であり、前記等分割工程は、その円または楕円の中心角をもって等分割する工程であることを特徴とする請求項９記載の描画方法。
【請求項１１】
図形情報に従って画像をメモリに展開する制御部と、前記制御部によってメモリに展開された画像の表示を行なう表示部とを有する表示装置における描画方法であって、
前記制御部は、
曲線を、その接線方向をなす他の線と接する接点の付近の領域については細かく、その他の領域については荒く分割する分割工程と、
分割した各曲線を直線によって近似する直線近似工程と、
近似した曲線を含む図形の画像をメモリに描画する描画工程と、
を実行することを特徴とする描画方法。
【請求項１２】
前記分割工程は、
前記曲線を所定数に等分割する等分割工程と、
等分割した曲線のうち前記接点を含む曲線を更に分割する再分割工程と、
を具備することを特徴とする請求項１１記載の描画方法。
【請求項１３】
前記曲線は円または楕円若しくはそれらの一部であり、前記等分割工程は、その円または楕円の中心角をもって等分割する工程であることを特徴とする請求項１１記載の描画方法。
【請求項１４】
前記直線近似工程は分割した直線のうち前記接点を含む曲線を近似するときに前記接線方向と同一方向の直線をもって近似する工程であることを特徴とする請求項１１記載の描画方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は描画装置および描画方法に係り、特に曲線を微小直線をもって近似して描画する描画装置および描画方法に関する。
【０００２】
【従来の技術】
従来、ドットマトリクスよって近似的に曲線等を描画する描画装置においては、以下のような手法を用いていた。即ち、例えば円弧を描画する際に、演算処理量を軽減し処理を高速化するため、近似された円弧が視覚的に十分な滑らかさを有するにたる一定長の線分の集合をもって近似する手法を用いていた。以下、この一定長の線分をセグメントという。なお、実際の描画処理に際しては、各線分は当然に一定の太さを有するが故に、各セグメントの中心線を持って隣接するセグメントの接続点となした場合には、その接続点において亀裂状の隙間を生じる。
【０００３】
図９は、従来例における円弧の近似の一例を示す図である。９００は近似する対象となる円弧である。９２１乃至９２３は、それぞれ描画に際して円弧９００を近似するセグメントであり、その中心線９１１乃至９１３は、円弧９００上の点９４１および９４２において接続される。各セグメントは、実際には長方形であり、接続部において亀裂状の隙間（以下、単に隙間という）を生じるため、その隙間を補間する必要がある。９３１は、セグメント９２１および９２２の接続部における隙間を補間する補間部である。同様に、９３２は、セグメント９２２および９２３の接続部における隙間を補間する補間部である。
【０００４】
なお、円弧９００に関して実際に描画する図形は、セグメント９２１乃至９２３、補間部９３１、９３２のみであり、円弧９００等は説明のために記したに過ぎない。
【０００５】
【発明が解決しようとしている課題】
しかしながら、上記従来例においては、円弧９００の端点９４３において接続される接線（円弧９００を含む円の端点９４３における接線）９５０を個別に描画した場合、セグメント９２３と直線９５１の方向が一致しないために、当然に隙間９３３を生じてしまう。これは、円弧の端点においてその円弧の接線を接続した線図を描画する際に、接点において両者が滑らかに接続されないことを意味している。
【０００６】
本発明は上記問題点に鑑みてなされたものであって、処理速度の低下を招くことなく、近似した曲線とその接線方向をなす他の線とを滑らかに接続可能ならしめることを目的とする。
【０００７】
【課題を解決するための手段】
および
【作用】
上記問題点を解決するため、本発明に係る描画装置は、曲線を微小直線をもって近似して図形を描画する描画装置であって、前記曲線を、その接線方向をなす他の線と接する接点の付近の領域については細かく、その他の領域については荒く分割する分割手段と、分割した各曲線を直線によって近似する直線近似手段と、近似した曲線を含む図形を描画する描画手段とを具備することを特徴とし、処理速度の低下を招くことなく、近似した曲線とその接線方向をなす他の線とを滑らかに接続することができる。
【０００８】
また、本発明に係る描画方法は、曲線を微小直線をもって近似して図形を描画する描画方法であって、前記曲線を、その接線方向をなす他の線と接する接点の付近の領域については細かく、その他の領域については荒く分割する分割工程と、分割した各曲線を直線によって近似する直線近似工程と、近似した曲線を含む図形を描画する描画工程とを具備することを特徴とし、処理速度の低下を招くことなく、近似した曲線とその接線方向をなす他の線とを滑らかに接続することができる。
【０００９】
【実施例】
〔第１の実施例〕
以下、本発明に係る好適な第１の実施例について説明する。図１は本実施例に係る印刷装置の構成の一例を示すブロック図である。制御部１０２は、印刷装置１００全体の制御を司るブロックであり、後述するフローチャートに係るプログラム等の制御プログラムを格納したＲＯＭ、ワークメモリ、制御プログラムを実行するＣＰＵ等を備えている。インターフェース１０３は、ホストコンピュータ１０１等の外部装置とのデータ通信を行うインターフェースである。印刷コマンド解析部１０４は、インタフェース１０３を介してホストコンピュータ１０１より入力された印刷コマンドを記憶する受信バッファを含み、印刷データを解析するブロックである。描画部１０５は、ページメモリを含み、解析した印刷コマンドに従って描画処理を行い、印刷データをページメモリにビットマップ展開する。出力部１０６は、ページメモリに展開したビットマップデータを記録紙に永久可視画像化するインクジェット・プリンタ、レーザビーム・プリンタ等のプリンタである。
【００１０】
以下、印刷装置１００の動作をフローチャートを用いて説明する。図２は印刷装置１００の全体の処理の流れを説明するフローチャートである。ステップＳ２０１において、インターフェース１０３を介して外部装置から印刷コマンドを受信すると、次のステップＳ２０２でその印刷コマンドを解析する。ステップＳ２０３では、解析した印刷コマンドが排紙を促す排紙コマンドであるか否かを判定し、排紙コマンドでない場合は、ステップＳ２０４に進み、排紙コマンドである場合は、ステップＳ２０７に進み、不図示のページメモリ上に印刷データをビットマップ展開し、出力部１０６によって記録紙に永久可視画像化する。
【００１１】
ステップＳ２０４では、解析した印刷コマンドが円弧の描画を促す円弧描画命令であるか否かを判定する。その結果、円弧描画命令である場合には、ステップＳ２０５に進み、所定の処理を施して再びステップＳ２０１に戻り、排紙コマンドを受信するまで一連の処理を繰り返す。また、ステップＳ２０４において、解析した印刷コマンドが円弧描画命令以外であると判定した場合には、ステップＳ２０６に進み、対応する処理を経た後、ステップＳ２０１に戻り、排紙コマンドを受信するまで一連の処理を繰り返す。なお、以上の処理は制御部１０２によって制御される。
【００１２】
次に円弧線描画処理（Ｓ２０５）の処理の流れを説明する。この処理は描画部１０５においてなされる。図３は、描画処理部１０５において実行される円弧線描画処理の流れを示すフローチャートである。円弧線描画処理においては、描画部１０５には、描画する円弧の中心位置情報、半径、開始角度、終了角度、線幅が入力されるものとする。本実施例においては、開始、終了角度は３６０度未満の角度に正規化して与えらるものとし、（開始角度）＜（終了角度）となっているものとする。
【００１３】
ステップＳ３０１において、描画部１０５に描画すべき円弧の中心位置情報、半径、円弧の開始角度、円弧の終了角度、線幅が入力される。ステップＳ３０２では、入力された円弧の半径、開始角度、終了角度から、所望の円弧を前述のセグメントの集合によって近似する際の等分分割数Ｎ（所望の円弧をＮ個のセグメントを用いて近似する）を決定する。Ｎの値を大きく設定すると近似した円弧は当然に滑らかなものとなるが、一方で、処理時間が長大になる。従って、近似した円弧が滑らかに表現される範囲で最小の値とすることが望ましい。ステップＳ３０３では、終了角度と開始角度の差分を等分分割数Ｎで分割してセグメントの長さに対応する中心角度αを算出する。
【００１４】
ここまでの処理（Ｎの値を決定する処理）は前述の従来例と同様であるが、以下の処理を施すことによって、円弧の端点におけるその接線との接続を滑らかにする。ステップＳ３０４において、中心角度αを１／２に分割したβを算出する。
【００１５】
ステップＳ３０５以降は実際に円弧を描く（セグメントによって近似する）処理である。先ずステップＳ３０５において、描画したセグメントの数を示すパラメータｉを初期化する。そして、ステップＳ３０６およびＳ３１１において、パラメータｉの値に従って描画処理の場合別けを行う。即ち、ｉ＝０の場合は、ステップＳ３０７およびＳ３０８を実行しステップＳ３０９に進み、ｉ＝Ｎ−１の場合には、ステップ３１２およびＳ３１３を実行してステップＳ３０９に進み、それ以外の場合には、ステップＳ３１４を実行してステップＳ３０９に進む。ステップＳ３０９では、パラメータｉをインクリメントし、ステップＳ３１０においてパラメータｉの値が、等分分割数Ｎに等しくなったら、即ち、円弧の近似を終えたら一連の処理を終了し、一方、パラメータｉの値が等分分割数Ｎと等しくない場合にはステップＳ３０６に戻って一連の処理を繰り返す。
【００１６】
ｉ＝０の場合には、先ず、ステップＳ３０７において、円弧の開始角度をセグメントの始点を示す角度（以下、始点角度という）とし、始点角度に中心角度βを加算した角度をセグメントの終点を示す角度（以下、終点角度という）として、中心角度βに対応するセグメントを前述のページメモリに描画する。次にステップＳ３０８において、直前の描画における終点角度を始点角度とし、更新した始点角度に中心角度βを加算した角度を終点角度として、中心角度βに対応するセグメントを不図示のページメモリに描画する。
【００１７】
０＜ｉ＜Ｎ−１の場合には、ステップＳ３１４において直前の描画における終点角度を始点角度とし、更新した始点角度に中心角度αを加算した角度を終点角度として、中心角度αに対応するセグメントを前述のページメモリに描画する。
【００１８】
ｉ＝Ｎ−１の場合には、先ず、ステップＳ３１２において、直前の描画における終点角度を始点角度とし、更新した始点角度に中心角度βを加算した角度を終点角度として、中心角度βに対応するセグメントを前述のページメモリに描画する。また、ステップＳ３１３においても同様にして、中心角度βに対応するセグメントを前述のページメモリに描画する。なお、ｉの値がいずれの場合にも、隙間を補間する処理を行うものとする。
【００１９】
以上の説明から明らかなように、近似する円弧の端点の付近においては、中心角度β（α／２）に対応するセグメントをもって円弧を近似し、他の部分は中心角度αに対応するセグメントをもって近似することによって、従来例における近似処理と同等の処理速度を維持しつつ、端点における近似の精度が向上（端点におけるセグメントの方向を接線の方向に近づける）し、接線との接続を滑らかに行えるようになる。
【００２０】
図４は、上記の近似処理を適用した結果を説明する図である。４００は近似する対象となる円弧であり、４０１はこれを包含する円の中心点、４０２は端点である。４５０は端点４０２における円弧４００の接線である。４１１および４１２は中心角度αに対応するセグメント（０＜ｉ＜Ｎ−１）、４１３および４１４は中心角度βに対応するセグメント（ｉ＝０）である。４５１は描画する接線である。
【００２１】
セグメント４１４に係る中心角度を小さくすることによって端点付近の近似の精度が向上するため、接線をなす直線４５１と滑らかに接続されていることがわかる。
【００２２】
なお、上記の近似処理においては、端点付近のセグメントに係る中心角度を、他の部分のセグメントの１／２としているが、本発明はこれに限定されるものではなく、端点付近の円弧を精度良く近似するものであればよい。
【００２３】
また、上記実施例においては、円弧の近似処理について説明しているが、本発明はこれに限定されるものではなく、例えば楕円等の曲線についても広く適用可能なことは論じるまでもない。
【００２４】
また、上記実施例においては、円弧の端点におけるその円弧の接線（その接点においてその接線と同一方向となる曲線を含む）との接続を滑らかにする一例を示しているが、本発明は、円弧等の任意の点における接線を描画する際にも適用可能である。これは例えば、その任意の点において円弧を分割して（その任意の点を分割した円弧の端点とする）、分割した各円弧について、上記の円弧描画処理を適用することによって実現することができる。
［第２の実施例］
以下、本発明に係る好適な第２の実施例について説明する。図５は本実施例に係る情報処理装置の構成を示すブロック図である。制御部５０２は、情報処理装置５００全体の制御や情報処理を司るブロックであり、制御プログラム等を格納したＲＯＭ、ワークメモリ、制御プログラムを実行するＣＰＵ等を備えている。ＶＲＡＭ５０３は、描画すべき画像を格納するビデオメモリである。５０４は、画像を表示するディスプレイであり、ディスプレイ・インターフェース５０５を介してバス５０６に接続される。キーボード５０８は、各種入力を行うためのキーボードであり、キーボード・インターフェース５０７を介してバス５０６に接続される。
【００２５】
次に、制御部５０２によって所望の円弧をディスプレイ５０４に表示する動作をフローチャートを参照しながら説明する。なお、本実施例においては、説明の便宜のため、円弧の描画は中心座標、半径、開始角度、終了角度、線幅をキーボード５０８から数値にて指定するものとするが、それらのデータは不図示のインターフェースを介して受信してもよいし、前述のＲＯＭに格納された各種プログラムに基づいて演算した結果であってもよい。
【００２６】
図６は、キーボード５０８を介して円弧の情報を与えディスプレイ６０４に表示する処理の流れを説明するフローチャートである。先ず、ステップＳ６０１において、キーボード５０８を介して、描画すべき円弧の中心座標、半径、開始角度、終了角度、線幅が入力される。ステップＳ６０２では、制御部５０２は入力された円弧の情報を解析して、その円弧のビットマップイメージをＶＲＡＭ５０３上に生成する。続いて、ステップ６０３において、一定の間隔でＶＲＡＭ５０３をスキャンしているディスプレイ・インタフェース５０５によってディスプレイ５０４に表示する。
【００２７】
図７は円弧線描画処理の流れを示すフローチャートである。なお、制御部５０２には、描画する円弧の中心位置情報、半径、開始角度、終了角度、線幅が入力されるものとする。本実施例においては、開始角度、終了角度は３６０度未満の角度に正規化して与えらるものとし、（開始角度）＜（終了角度）となっているものとする。円弧を描画する色は黒、背景色は白と予め設定されているものとする。また、ディスプレイ５０４上に黒または白で描画する処理は、ＶＲＡＭ５０３上の該当する位置のビットをセットまたはリセットする行為と等価である。以下、これらの処理を単に「黒または白で描画する」と表現する。
【００２８】
ステップＳ７０１において、制御部５０２に描画すべき円弧を含む円の中心位置情報、半径、開始角度、終了角度、線幅が入力される。ステップＳ７０２では、入力された円弧の半径、開始角度、終了角度から、所望の円弧を前述のセグメントの集合によって近似する際の等分分割数Ｎ（所望の円弧をＮ個のセグメントを用いて近似する）を決定する。前述のように、Ｎの値を大きく設定すると近似した円弧は当然に滑らかなものとなるが、一方で、処理時間が長大になる。従って、近似した円弧が滑らかに表現される範囲で最小の値とすることが望ましい。ステップＳ７０３では、終了角度と開始角度の差分を等分分割数Ｎで分割してセグメントの長さに対応する中心角度αを算出し、ステップＳ７０４では、中心角度αを１／２に分割したβを算出する。ステップＳ７０５において、開始角度から中心角度βを減じたγを算出する。
【００２９】
以下、図８を参照しながら説明する。図８において、８００は近似すべき円弧であり、８０１はその円弧を含む円の中心である。ステップＳ７０６では、始点角度をγ、終点角度をγ＋αとして、各角度に対応する円弧上の点８１１および点８１２で与えられるセグメントを黒で描画する。ステップＳ７０７では、始点角度をγ、終点角度をγ＋β（円弧の開始角度）として、始点角度に対応する点８１１と、終点角度に対応し中心からの距離が（半径）×ｃｏｓβである点８１３で与えられるセグメントを白で描画する。そして点８１３を近似した円弧の端点とする。以上のようにして黒で描画したセグメントの余分な部分を白で再度描画することによって消去する。
【００３０】
ステップＳ７０９では、描画したセグメントの数を示すパラメータｉを初期化する。ステップＳ７０９において、直前の黒のセグメントの終点角度を始点角度（ｉ＝０のときには開始角度＋β）とし、更新した始点角度に中心角度αを加算した角度を終点角度として、各角度に対応する円弧上の点を結ぶセグメントを黒で描画する。そしてステップＳ７１０でパラメータｉをインクリメントし、ステップＳ７１１で、パラメータｉが等分分割数Ｎに達したか否かを判定し、等分分割数Ｎに達していない場合には、ステップＳ７０９に戻り、処理を繰り返す。なお、ｉの値がいずれの場合にも、隙間を補間する処理を行うものとする。
【００３１】
パラメータｉの値が等分分割数Ｎと一致した時点で、終点角度は円弧の終了角度を中心角β分超えている。そこで、ステップＳ７１２において、最後（ｉ＝Ｎ−１のとき）に描画したセグメントの内、円弧の終了角度を超えている部分を消去する。即ち、直前の終点角度を始点角度とし、円弧の終了角度を終点角度として、円弧上の始点角度に対応する点と、終点角度に対応し中心からの距離が（半径）×ｃｏｓβである点を結ぶセグメントを白で描画する。
【００３２】
以上のようにして、端点におけるセグメントを接線方向にすることによって、近似した円弧とその接線を滑らかに接続することができる。
【００３３】
なお、上記の近似処理においては、端点付近のセグメントに係る中心角度を、結果として他の部分のセグメントの１／２としているが、本発明はこれに限定されるものではなく、端点付近の円弧を精度良く近似するものであればよい。また、上記実施例においては、円弧の近似処理について説明しているが、本発明がこれに限定されるものではなく、例えば楕円等の曲線についても広く適用可能なことは論じるまでもない。
【００３４】
なお、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器から成る装置に適用しても良い。また、本発明はシステム或は装置にプログラムを供給することによって達成される場合にも適用できることは言うまでもない。
【００３５】
【発明の効果】
以上説明したように本発明によれば、処理速度の低下を招くことなく、近似した曲線とその接線方向をなす他の線とを滑らかに接続することが可能になる。
【００３６】
【図面の簡単な説明】
【図１】第１の実施例に係る印刷装置の構成の一例を示すブロック図である。
【図２】印刷装置１００の全体の処理の流れを説明するフローチャートである。
【図３】描画処理部１０５において実行される円弧線描画処理の流れを示すフローチャートである。
【図４】第１の実施例を適用した結果を説明する図である。
【図５】第２の実施例に係る情報処理装置の構成を示すブロック図である。
【図６】情報処理装置５００の全体の処理の流れを説明するフローチャートである。
【図７】円弧線描画処理の流れを示すフローチャートである。
【図８】第２の実施例に係る円弧線描画処理を説明する図である。
【図９】従来例に係る円弧線の近似の一例を示す図である。
【符号の説明】
４００  円弧
４０１  円弧の中心
４０２  円弧の端点
４１１,４１２,４１３,４１４ セグメント
４５１  接線
８００  円弧
８０１  円弧の中心
９００  円弧
９１１,９１２,９１３  セグメントの中心線
９２１,９２２,９２３  セグメント
９３１，９３２  隙間の補間部分
【図１】
0003647080.tif 000002
【図２】
0003647080.tif 000003
【図３】
0003647080.tif 000004
【図４】
0003647080.tif 000005
【図５】
0003647080.tif 000006
【図６】
0003647080.tif 000007
【図７】
0003647080.tif 000008
【図８】
0003647080.tif 000009
【図９】
0003647080.tif 000010