JPH09212665A - 線分描画装置 - Google Patents
線分描画装置Info
- Publication number
- JPH09212665A JPH09212665A JP1732696A JP1732696A JPH09212665A JP H09212665 A JPH09212665 A JP H09212665A JP 1732696 A JP1732696 A JP 1732696A JP 1732696 A JP1732696 A JP 1732696A JP H09212665 A JPH09212665 A JP H09212665A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- data
- line
- holding unit
- holding
- 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.)
- Granted
Links
Landscapes
- Image Generation (AREA)
Abstract
(57)【要約】
【課題】 少ないバッファを用い、効率よくフレームメ
モリに転送し、描画処理速度を向上させた線分描画装置
を提供する。 【解決手段】 線分描画部5で線分を構成する画素が生
成されると、保持部制御部11は、生成された画素の描
画座標がデータ保持部12中の4つの保持部の中ですで
に設定された保持部内に入るか否かを判定する。いずれ
かの保持部に保持可能な場合は、その保持部に画素を描
画する。設定されているどの保持部内にも入らない場合
は、空いている保持部を選択し、その保持部が対応する
フレームメモリ7上の座標を保持部座標演算部13で演
算し設定する。そして、その保持部に画素を描画する。
描画が終了した保持部は、データ転送部14により対応
するフレームメモリ7上の位置にワード単位で転送され
る。このとき、保持部をフレームメモリ7のワード境界
に沿って領域設定すれば、高速転送が可能である。
モリに転送し、描画処理速度を向上させた線分描画装置
を提供する。 【解決手段】 線分描画部5で線分を構成する画素が生
成されると、保持部制御部11は、生成された画素の描
画座標がデータ保持部12中の4つの保持部の中ですで
に設定された保持部内に入るか否かを判定する。いずれ
かの保持部に保持可能な場合は、その保持部に画素を描
画する。設定されているどの保持部内にも入らない場合
は、空いている保持部を選択し、その保持部が対応する
フレームメモリ7上の座標を保持部座標演算部13で演
算し設定する。そして、その保持部に画素を描画する。
描画が終了した保持部は、データ転送部14により対応
するフレームメモリ7上の位置にワード単位で転送され
る。このとき、保持部をフレームメモリ7のワード境界
に沿って領域設定すれば、高速転送が可能である。
Description
【0001】
【発明の属する技術分野】本発明は、プリンタ装置やプ
ロッター装置等を用いて線分を描画したり、CAD(C
omputer Aided Design)システム
やコンピュータグラフィックス等において線分を描画す
る線分描画装置に関するものであり、特に、太線の描画
に用いて好適な線分描画装置に関するものである。
ロッター装置等を用いて線分を描画したり、CAD(C
omputer Aided Design)システム
やコンピュータグラフィックス等において線分を描画す
る線分描画装置に関するものであり、特に、太線の描画
に用いて好適な線分描画装置に関するものである。
【0002】
【従来の技術】図23は、従来の線分描画方法の一例の
説明図である。まず、図23(A)に示す線分描画方法
は、目的の線幅を直径とする円形の画素パターンを線分
の始点から終点まで公知のDDA(Digital D
ifferential Analyzer:ディジタ
ル微分解析機)アルゴリズムに基づいて重ね合わせて描
画する。また、例えば、平4−23179号公報に記載
されているように、始点において円形の画素パターンが
描画された後は、円形の画素パターンに基づく矩形パタ
ーンを用いて複数回アクセスされる画素数を低減させる
方法も提案されている。次に、図23(B)に示す線分
描画方法では、公知のDDAアルゴリズムによって線幅
1画素の直線は高速に発生することができるため、この
直線を数本重ねることによって所望の線幅の線分を描画
する。この方法は、例えば、特開平5−233821号
公報等に記載されている。さらに、図23(C)に示す
線分描画方法は、描画したい太線の輪郭線を予め描画し
て、その後一般的な塗りつぶし処理を用いて線分を描画
する。この方法は、例えば、特開平4−205575号
公報、特開平5−67215号公報、特開平4−779
77号公報等に記載されている。また、特願平7−82
432号に記載されているように、法線方向に線幅分の
線分をを生成し、この線分を重ねることによって線分を
描画する方法も開発した。
説明図である。まず、図23(A)に示す線分描画方法
は、目的の線幅を直径とする円形の画素パターンを線分
の始点から終点まで公知のDDA(Digital D
ifferential Analyzer:ディジタ
ル微分解析機)アルゴリズムに基づいて重ね合わせて描
画する。また、例えば、平4−23179号公報に記載
されているように、始点において円形の画素パターンが
描画された後は、円形の画素パターンに基づく矩形パタ
ーンを用いて複数回アクセスされる画素数を低減させる
方法も提案されている。次に、図23(B)に示す線分
描画方法では、公知のDDAアルゴリズムによって線幅
1画素の直線は高速に発生することができるため、この
直線を数本重ねることによって所望の線幅の線分を描画
する。この方法は、例えば、特開平5−233821号
公報等に記載されている。さらに、図23(C)に示す
線分描画方法は、描画したい太線の輪郭線を予め描画し
て、その後一般的な塗りつぶし処理を用いて線分を描画
する。この方法は、例えば、特開平4−205575号
公報、特開平5−67215号公報、特開平4−779
77号公報等に記載されている。また、特願平7−82
432号に記載されているように、法線方向に線幅分の
線分をを生成し、この線分を重ねることによって線分を
描画する方法も開発した。
【0003】ところで、例えば、フレームメモリがバイ
ト構成やワード構成であり、1バイト、1ワードに複数
の画素を割り当てている場合、1画素分のデータをフレ
ームメモリに書き込む際には、ワード境界やバイト境界
のアライメント処理が必要となり、書き込み速度が低下
する。さらに、発生した複数の描画画素が同一のワード
やバイトに存在する場合でも、順次書き込むためにその
たびにアクセスが発生することとなり、処理速度はさら
に低下することとなる。そのため、直線を描画する際に
は、直接フレームメモリに書き込まずに、一度バッファ
に書き込んでからフレームメモリへ転送する方法が一般
的に採用されている。さらに、バッファからフレームメ
モリへの転送を効率よく行なうことによって、フレーム
メモリに直線が描画されるまでに要する時間を短縮する
ことが望まれている。
ト構成やワード構成であり、1バイト、1ワードに複数
の画素を割り当てている場合、1画素分のデータをフレ
ームメモリに書き込む際には、ワード境界やバイト境界
のアライメント処理が必要となり、書き込み速度が低下
する。さらに、発生した複数の描画画素が同一のワード
やバイトに存在する場合でも、順次書き込むためにその
たびにアクセスが発生することとなり、処理速度はさら
に低下することとなる。そのため、直線を描画する際に
は、直接フレームメモリに書き込まずに、一度バッファ
に書き込んでからフレームメモリへ転送する方法が一般
的に採用されている。さらに、バッファからフレームメ
モリへの転送を効率よく行なうことによって、フレーム
メモリに直線が描画されるまでに要する時間を短縮する
ことが望まれている。
【0004】しかし、任意の方向に任意の線幅で発生し
た直線全体をバッファに一時的に記憶させるためには、
バッファとして膨大なメモリ容量が必要となるという問
題がある。特に、図23(C)に示すような塗りつぶし
処理を行なう方法では、輪郭線の座標をすべて保持して
からでないと塗りつぶし処理を行なえないため、大容量
のバッファは必須である。例えば、上述の特開平5−6
7215号公報では、直線画像記憶部を設け、この直線
画像記憶部に発生した直線を一時記憶し、二値画像記憶
部に転送しているが、直線画像記憶部は大容量とならざ
るを得ない。
た直線全体をバッファに一時的に記憶させるためには、
バッファとして膨大なメモリ容量が必要となるという問
題がある。特に、図23(C)に示すような塗りつぶし
処理を行なう方法では、輪郭線の座標をすべて保持して
からでないと塗りつぶし処理を行なえないため、大容量
のバッファは必須である。例えば、上述の特開平5−6
7215号公報では、直線画像記憶部を設け、この直線
画像記憶部に発生した直線を一時記憶し、二値画像記憶
部に転送しているが、直線画像記憶部は大容量とならざ
るを得ない。
【0005】
【発明が解決しようとする課題】本発明は、上述した事
情に鑑みてなされたもので、少ないバッファを用い、効
率よくフレームメモリに転送し、描画処理速度を向上さ
せた線分描画装置を提供することを目的とするものであ
る。
情に鑑みてなされたもので、少ないバッファを用い、効
率よくフレームメモリに転送し、描画処理速度を向上さ
せた線分描画装置を提供することを目的とするものであ
る。
【0006】
【課題を解決するための手段】請求項1に記載の発明
は、線分描画装置において、入力された情報から描画す
る線分の始点および終点と該線分の線幅とを出力する初
期値設定手段と、該初期値設定手段から出力された始点
と終点とを結ぶ直線上の座標を生成する基準線発生手段
と、該基準線発生手段で生成された座標と前記始点との
間の距離を演算する距離演算手段と、該距離演算手段で
の演算結果と前記基準線発生手段で生成した座標とを基
に前記始点と終点とを結ぶ直線に直交しかつ前記初期値
設定手段から出力された線分の線幅と等しい長さを有す
る画素列を生成する法線ベクトル生成手段と、前記基準
線発生手段で生成された座標ごとに前記法線ベクトル生
成手段で生成された画素列を発生させる描画手段と、該
描画手段によって発生した画素列を一時保持するための
複数の保持部を有するデータ保持手段と、描画された画
像を格納するフレームメモリと、前記保持部が対応する
前記フレームメモリ上の位置を演算する保持部座標演算
手段と、前記描画手段によって得られた画素列の座標と
前記保持部座標演算手段による前記保持部の位置情報か
ら前記保持部を設定または選択する保持部制御手段と、
データを格納し終えた前記保持部から前記フレームメモ
リに順に転送するデータ転送手段と、該データ転送手段
によって転送し終えた前記保持部をクリアするデータ保
持部初期化手段を有することを特徴とするものである。
は、線分描画装置において、入力された情報から描画す
る線分の始点および終点と該線分の線幅とを出力する初
期値設定手段と、該初期値設定手段から出力された始点
と終点とを結ぶ直線上の座標を生成する基準線発生手段
と、該基準線発生手段で生成された座標と前記始点との
間の距離を演算する距離演算手段と、該距離演算手段で
の演算結果と前記基準線発生手段で生成した座標とを基
に前記始点と終点とを結ぶ直線に直交しかつ前記初期値
設定手段から出力された線分の線幅と等しい長さを有す
る画素列を生成する法線ベクトル生成手段と、前記基準
線発生手段で生成された座標ごとに前記法線ベクトル生
成手段で生成された画素列を発生させる描画手段と、該
描画手段によって発生した画素列を一時保持するための
複数の保持部を有するデータ保持手段と、描画された画
像を格納するフレームメモリと、前記保持部が対応する
前記フレームメモリ上の位置を演算する保持部座標演算
手段と、前記描画手段によって得られた画素列の座標と
前記保持部座標演算手段による前記保持部の位置情報か
ら前記保持部を設定または選択する保持部制御手段と、
データを格納し終えた前記保持部から前記フレームメモ
リに順に転送するデータ転送手段と、該データ転送手段
によって転送し終えた前記保持部をクリアするデータ保
持部初期化手段を有することを特徴とするものである。
【0007】請求項2に記載の発明は、請求項1に記載
の線分描画装置において、前記フレームメモリは1ワー
ドに複数画素を格納するように構成されており、前記保
持部は前記フレームメモリのワード境界に基づいてその
位置が設定され、前記データ転送手段はワードごとに転
送を行なうことを特徴とするものである。
の線分描画装置において、前記フレームメモリは1ワー
ドに複数画素を格納するように構成されており、前記保
持部は前記フレームメモリのワード境界に基づいてその
位置が設定され、前記データ転送手段はワードごとに転
送を行なうことを特徴とするものである。
【0008】請求項3に記載の発明は、線分描画装置に
おいて、入力された情報から描画する線分の始点および
終点と該線分の線幅とを出力する初期値設定手段と、該
初期値設定手段から出力された始点と終点とを結ぶ直線
上の座標を生成する基準線発生手段と、該基準線発生手
段で生成された座標と前記始点との間の距離を演算する
距離演算手段と、該距離演算手段での演算結果と前記基
準線発生手段で生成した座標とを基に前記始点と終点と
を結ぶ直線に直交しかつ前記初期値設定手段から出力さ
れた線分の線幅と等しい長さを有する画素列を生成する
法線ベクトル生成手段と、前記基準線発生手段で生成さ
れた座標ごとに前記法線ベクトル生成手段で生成された
画素列を発生させる描画手段と、該描画手段によって発
生した画素列を一時格納するデータ保持手段と、描画さ
れた画像を格納するフレームメモリと、前記データ保持
手段が対応する前記フレームメモリ上の位置を演算する
保持部座標演算手段と、新たに描画しようとする画素列
の座標とすでに前記データ保持手段に格納している画素
列の座標を比較及び修正して新たに描画しようとする画
素列と等しくさせる描画画素修正手段と、前記描画手段
で発生した画素列に基づいて前記データ保持手段へのデ
ータの格納または格納データの修正の終了判定を行なう
保持部制御手段と、前記データ保持手段に格納または修
正し終えたデータを前記フレームメモリに転送するデー
タ転送手段を有することを特徴とするものである。
おいて、入力された情報から描画する線分の始点および
終点と該線分の線幅とを出力する初期値設定手段と、該
初期値設定手段から出力された始点と終点とを結ぶ直線
上の座標を生成する基準線発生手段と、該基準線発生手
段で生成された座標と前記始点との間の距離を演算する
距離演算手段と、該距離演算手段での演算結果と前記基
準線発生手段で生成した座標とを基に前記始点と終点と
を結ぶ直線に直交しかつ前記初期値設定手段から出力さ
れた線分の線幅と等しい長さを有する画素列を生成する
法線ベクトル生成手段と、前記基準線発生手段で生成さ
れた座標ごとに前記法線ベクトル生成手段で生成された
画素列を発生させる描画手段と、該描画手段によって発
生した画素列を一時格納するデータ保持手段と、描画さ
れた画像を格納するフレームメモリと、前記データ保持
手段が対応する前記フレームメモリ上の位置を演算する
保持部座標演算手段と、新たに描画しようとする画素列
の座標とすでに前記データ保持手段に格納している画素
列の座標を比較及び修正して新たに描画しようとする画
素列と等しくさせる描画画素修正手段と、前記描画手段
で発生した画素列に基づいて前記データ保持手段へのデ
ータの格納または格納データの修正の終了判定を行なう
保持部制御手段と、前記データ保持手段に格納または修
正し終えたデータを前記フレームメモリに転送するデー
タ転送手段を有することを特徴とするものである。
【0009】
【発明の実施の形態】図1は、本発明の線分描画装置の
第1の実施の形態を示すブロック図である。図中、1は
初期値認識部、2は基準線走査部、3は距離演算部、4
は法線ベクトル生成部、5は線分描画部、6は演算デー
タ転送部、7はフレームメモリ、11は保持部制御部、
12はデータ保持部、13は保持部座標演算部、14は
データ転送部、15はデータ保持部初期化部である。
第1の実施の形態を示すブロック図である。図中、1は
初期値認識部、2は基準線走査部、3は距離演算部、4
は法線ベクトル生成部、5は線分描画部、6は演算デー
タ転送部、7はフレームメモリ、11は保持部制御部、
12はデータ保持部、13は保持部座標演算部、14は
データ転送部、15はデータ保持部初期化部である。
【0010】初期値認識部1は、入力された情報から描
画する線分の始点及び終点とこの線分の線幅とを認識す
る。基準線走査部2は、初期値認識部1で認識された始
点と終点とを結ぶ直線上にある座標を生成する。距離演
算部3は、基準線走査部2で生成された座標と始点との
間の距離を演算する。法線ベクトル生成部4は、距離演
算部3での演算結果と基準線走査部2で生成された座標
とを基に、始点と終点とを結ぶ直線に直交し、かつ初期
値認識部1で認識された線分の線幅と等しい長さを有す
る画素列を生成する。線分描画部5は、法線ベクトル生
成部4で生成された画素列を基準線走査部2で生成され
た座標毎に発生させる。描画データ転送部6は、線分描
画部5からの描画データを一時的に保持して効率的にフ
レームメモリ7へ転送する。フレームメモリ7には、描
画された画像が展開される。
画する線分の始点及び終点とこの線分の線幅とを認識す
る。基準線走査部2は、初期値認識部1で認識された始
点と終点とを結ぶ直線上にある座標を生成する。距離演
算部3は、基準線走査部2で生成された座標と始点との
間の距離を演算する。法線ベクトル生成部4は、距離演
算部3での演算結果と基準線走査部2で生成された座標
とを基に、始点と終点とを結ぶ直線に直交し、かつ初期
値認識部1で認識された線分の線幅と等しい長さを有す
る画素列を生成する。線分描画部5は、法線ベクトル生
成部4で生成された画素列を基準線走査部2で生成され
た座標毎に発生させる。描画データ転送部6は、線分描
画部5からの描画データを一時的に保持して効率的にフ
レームメモリ7へ転送する。フレームメモリ7には、描
画された画像が展開される。
【0011】描画データ転送部6は、保持部制御部1
1、データ保持部12、保持部座標演算部13、データ
転送部14、データ保持部初期化部15を有している。
保持部制御部11は、データ保持部12内部の保持部を
線分描画部5で演算された描画座標を含むフレームメモ
リ7上の領域に設定して、フレームメモリ7に描画する
代わりにこのデータ保持部12内に描画させ、設定され
ている保持部にこれ以上描画されないと判断した場合
は、その保持部内のデータとフレームメモリ7上での座
標を表わすオフセット値をデータ転送部14へ渡す。
1、データ保持部12、保持部座標演算部13、データ
転送部14、データ保持部初期化部15を有している。
保持部制御部11は、データ保持部12内部の保持部を
線分描画部5で演算された描画座標を含むフレームメモ
リ7上の領域に設定して、フレームメモリ7に描画する
代わりにこのデータ保持部12内に描画させ、設定され
ている保持部にこれ以上描画されないと判断した場合
は、その保持部内のデータとフレームメモリ7上での座
標を表わすオフセット値をデータ転送部14へ渡す。
【0012】データ保持部12は、フレームメモリ7へ
の転送単位に応じた大きさの小領域のデータを保持する
複数の保持部を有している。例えば、フレームメモリ7
が1つのアドレスに対応する1ワードや1バイトのデー
タ単位で読み書きされるいわゆるワード構成、バイト構
成のメモリの場合、このワード長、バイト長の整数倍の
レジスタを幾つか集めて1ブロックとして1つの保持部
とし、この保持部を4つ以上集めて構成することができ
る。図1では4つの保持部を示している。
の転送単位に応じた大きさの小領域のデータを保持する
複数の保持部を有している。例えば、フレームメモリ7
が1つのアドレスに対応する1ワードや1バイトのデー
タ単位で読み書きされるいわゆるワード構成、バイト構
成のメモリの場合、このワード長、バイト長の整数倍の
レジスタを幾つか集めて1ブロックとして1つの保持部
とし、この保持部を4つ以上集めて構成することができ
る。図1では4つの保持部を示している。
【0013】保持部座標演算部13は、データ保持部1
2中の保持部のいずれかが描画座標を必ず含むように、
また互いが重ならないように、フレームメモリ7上での
保持部の位置を演算する。例えば、フレームメモリ7が
ワード構成やバイト構成のメモリの場合には、1ワード
単位の区切り(ワード境界)や1バイト単位の区切り
(バイト境界)に合わせて保持部の位置を設定する。
2中の保持部のいずれかが描画座標を必ず含むように、
また互いが重ならないように、フレームメモリ7上での
保持部の位置を演算する。例えば、フレームメモリ7が
ワード構成やバイト構成のメモリの場合には、1ワード
単位の区切り(ワード境界)や1バイト単位の区切り
(バイト境界)に合わせて保持部の位置を設定する。
【0014】データ転送部14は、保持部制御部11が
指定したデータ保持部12内部の保持部に描画されたデ
ータを、保持部制御部11から渡される保持部のフレー
ムメモリ7上でのオフセット値に基づいてフレームメモ
リ7へ転送する。
指定したデータ保持部12内部の保持部に描画されたデ
ータを、保持部制御部11から渡される保持部のフレー
ムメモリ7上でのオフセット値に基づいてフレームメモ
リ7へ転送する。
【0015】データ保持部初期化部15は、データ保持
部12内部の保持部に描画された全データが転送された
後に、その保持部内を初期化する。
部12内部の保持部に描画された全データが転送された
後に、その保持部内を初期化する。
【0016】図2は、本発明の線分描画装置の第1の実
施の形態における基準線走査部2、距離演算部3、法線
ベクトル生成部4、線分描画部5の具体例を示すブロッ
ク図である。図中、図1と対応する部分には同じ符号を
付してある。21は座標発生部、22は走査座標格納
部、23は移動距離演算部、24は線幅走査判定部、2
5は90゜回転部、26は法線ベクトル格納部、27は
基準線移動処理部、28は画素抜け判定部、29は描画
部、30は終了条件判定部である。
施の形態における基準線走査部2、距離演算部3、法線
ベクトル生成部4、線分描画部5の具体例を示すブロッ
ク図である。図中、図1と対応する部分には同じ符号を
付してある。21は座標発生部、22は走査座標格納
部、23は移動距離演算部、24は線幅走査判定部、2
5は90゜回転部、26は法線ベクトル格納部、27は
基準線移動処理部、28は画素抜け判定部、29は描画
部、30は終了条件判定部である。
【0017】基準線走査部2は、座標発生部21、走査
座標格納部22を有する。座標発生部21は、初期値認
識部1が設定した初期値に基づいて始点から終点までの
直線上の点の座標を発生する。座標発生部21は、例え
ばDDAによって構成することができる。発生した座標
は走査座標格納部22に格納されるとともに、移動距離
演算部23へ渡される。走査座標格納部22に格納され
た座標で構成される線を以下基準線と呼ぶことにする。
座標格納部22を有する。座標発生部21は、初期値認
識部1が設定した初期値に基づいて始点から終点までの
直線上の点の座標を発生する。座標発生部21は、例え
ばDDAによって構成することができる。発生した座標
は走査座標格納部22に格納されるとともに、移動距離
演算部23へ渡される。走査座標格納部22に格納され
た座標で構成される線を以下基準線と呼ぶことにする。
【0018】距離演算部3は、移動距離演算部23、線
幅走査判定部24を有する。移動距離演算部23は、始
点から座標発生部21で発生した画素までの移動距離を
演算し、演算結果が線幅走査判定部24に渡される。線
幅走査判定部24は、移動距離演算部23が演算した移
動距離が、初期値認識部1が認識した線幅を上回るかま
たは両者が等しいか否かを判断し、座標発生部21によ
る座標の発生を中断させる。これにより、線幅分の座標
が生成されたところで中断される。
幅走査判定部24を有する。移動距離演算部23は、始
点から座標発生部21で発生した画素までの移動距離を
演算し、演算結果が線幅走査判定部24に渡される。線
幅走査判定部24は、移動距離演算部23が演算した移
動距離が、初期値認識部1が認識した線幅を上回るかま
たは両者が等しいか否かを判断し、座標発生部21によ
る座標の発生を中断させる。これにより、線幅分の座標
が生成されたところで中断される。
【0019】法線ベクトル生成部4は、90゜回転部2
5、法線ベクトル格納部26を有している。90°回転
部25は、走査座標格納部22に格納された座標をもと
に、始点を中心として時計方向へ90°回転した座標を
作り出し、それらを法線ベクトル情報として法線ベクト
ル格納部26へ格納する。ただし、90゜回転部25
は、線幅走査判定部24で判定された座標と始点との間
にある座標だけを回転させ、線幅分の法線方向の線分
(以下、法線ベクトルと呼ぶ)を発生させる。
5、法線ベクトル格納部26を有している。90°回転
部25は、走査座標格納部22に格納された座標をもと
に、始点を中心として時計方向へ90°回転した座標を
作り出し、それらを法線ベクトル情報として法線ベクト
ル格納部26へ格納する。ただし、90゜回転部25
は、線幅走査判定部24で判定された座標と始点との間
にある座標だけを回転させ、線幅分の法線方向の線分
(以下、法線ベクトルと呼ぶ)を発生させる。
【0020】線分描画部5は、基準線移動処理部27、
画素抜け判定部28、描画部29、終了条件判定部30
を有する。基準線移動処理部27は、描画部29が基準
線上の座標に法線ベクトルを発生させる際に、この法線
ベクトルを基準線上の座標に対してどの位置に発生させ
るかを設定する。すなわち、基準線移動処理部27は、
法線ベクトル格納部26に格納されている法線ベクトル
を、例えば、基準線の始点から終点に向かう方向に対し
て基準線の右側か左側かまたは両側に振り分けて発生さ
せるかを設定する。基準線の各点における振り分け量を
適宜変化させることによって、波線や鋸歯状の線を描画
することも可能である。また、法線ベクトルの画素を適
宜抜くことによって、二重線などのn重線や白抜き線な
どを描画することもできる。
画素抜け判定部28、描画部29、終了条件判定部30
を有する。基準線移動処理部27は、描画部29が基準
線上の座標に法線ベクトルを発生させる際に、この法線
ベクトルを基準線上の座標に対してどの位置に発生させ
るかを設定する。すなわち、基準線移動処理部27は、
法線ベクトル格納部26に格納されている法線ベクトル
を、例えば、基準線の始点から終点に向かう方向に対し
て基準線の右側か左側かまたは両側に振り分けて発生さ
せるかを設定する。基準線の各点における振り分け量を
適宜変化させることによって、波線や鋸歯状の線を描画
することも可能である。また、法線ベクトルの画素を適
宜抜くことによって、二重線などのn重線や白抜き線な
どを描画することもできる。
【0021】画素抜け判定部28は、画素抜けの有無を
判定し、画素抜けの位置を描画部29に知らせる。画素
抜けは、基準線上の画素のy座標が変わるとき、法線ベ
クトルを構成する隣り合う画素がななめの位置にある部
分で発生する。画素抜け判定部28ではこれを検出し
て、画素抜けを判定すればよい。
判定し、画素抜けの位置を描画部29に知らせる。画素
抜けは、基準線上の画素のy座標が変わるとき、法線ベ
クトルを構成する隣り合う画素がななめの位置にある部
分で発生する。画素抜け判定部28ではこれを検出し
て、画素抜けを判定すればよい。
【0022】描画部29は、基準線移動処理部27によ
る移動量に従って、法線ベクトル格納部26に格納され
ている法線ベクトルに基づいて、走査座標格納部22中
の座標ごとに法線方向に描画する。また、画素抜け判定
部28で画素抜けを判定したとき、抜けた画素の修復も
行なう。
る移動量に従って、法線ベクトル格納部26に格納され
ている法線ベクトルに基づいて、走査座標格納部22中
の座標ごとに法線方向に描画する。また、画素抜け判定
部28で画素抜けを判定したとき、抜けた画素の修復も
行なう。
【0023】終了条件判定部30は、座標発生部21で
発生した座標が終点となる条件を判定し、処理を終わら
せる。
発生した座標が終点となる条件を判定し、処理を終わら
せる。
【0024】次に、上述の線分描画装置の第1の実施の
形態における動作の一例について説明する。図3は、本
発明の線分描画装置の第1の実施の形態における基本的
な線分描画動作の説明図である。線分を描画する際に
は、まず初期値認識部1によって描画しようとする線分
の始点及び終点とその線幅が認識される。続いて、基準
線走査部2では、初期値認識部1で認識された始点と終
点とを結ぶ直線上にある座標を、前記始点から順に生成
する。例えば、図3(A)に黒丸で示す点の座標を順に
生成する。このとき、距離演算部3では、基準線走査部
2で生成された座標と始点との間の距離を演算により求
める。
形態における動作の一例について説明する。図3は、本
発明の線分描画装置の第1の実施の形態における基本的
な線分描画動作の説明図である。線分を描画する際に
は、まず初期値認識部1によって描画しようとする線分
の始点及び終点とその線幅が認識される。続いて、基準
線走査部2では、初期値認識部1で認識された始点と終
点とを結ぶ直線上にある座標を、前記始点から順に生成
する。例えば、図3(A)に黒丸で示す点の座標を順に
生成する。このとき、距離演算部3では、基準線走査部
2で生成された座標と始点との間の距離を演算により求
める。
【0025】そして、距離演算部3による演算結果と、
初期値認識部1で認識された線幅とが等しくなる座標ま
で基準線走査部2が座標を生成すると、法線ベクトル生
成部4では、例えば、その座標と始点との間で生成され
た全ての座標を90°回転させ、回転後の座標上に線分
の描画に必要な線幅方向の画素を発生させる。つまり、
法線ベクトル生成部4では、図3(B)に示すように、
初期値認識部1で認識された始点と終点とを結ぶ直線に
直交し、かつ線分の線幅と等しい長さを有する画素列を
生成する。
初期値認識部1で認識された線幅とが等しくなる座標ま
で基準線走査部2が座標を生成すると、法線ベクトル生
成部4では、例えば、その座標と始点との間で生成され
た全ての座標を90°回転させ、回転後の座標上に線分
の描画に必要な線幅方向の画素を発生させる。つまり、
法線ベクトル生成部4では、図3(B)に示すように、
初期値認識部1で認識された始点と終点とを結ぶ直線に
直交し、かつ線分の線幅と等しい長さを有する画素列を
生成する。
【0026】法線ベクトル生成部4で画素列が生成され
ると、線分描画部5では、図3(C)に示すように、こ
の画素列を初期値認識部1で認識された始点から終点ま
で、基準線走査部2で生成された座標毎に発生させる。
描画データ転送部6は、この発生されたある区間の画素
列のデータを一時的に保持して、効率よくフレームメモ
リへ転送する。これにより、所望する線幅の線分が始点
から終点まで描画される。
ると、線分描画部5では、図3(C)に示すように、こ
の画素列を初期値認識部1で認識された始点から終点ま
で、基準線走査部2で生成された座標毎に発生させる。
描画データ転送部6は、この発生されたある区間の画素
列のデータを一時的に保持して、効率よくフレームメモ
リへ転送する。これにより、所望する線幅の線分が始点
から終点まで描画される。
【0027】上述の線分描画動作をさらに具体的に説明
する。図4は、法線ベクトル生成までの動作の一例の説
明図である。初期値認識部1は描画する線分の始点と終
点の座標および線幅を認識する。ここで、図4(A)に
示す格子の交点が画素の中心位置となる画像上におい
て、始点p0と終点peおよび線幅から決まる四角形で
表わした線分を描画するものとする。
する。図4は、法線ベクトル生成までの動作の一例の説
明図である。初期値認識部1は描画する線分の始点と終
点の座標および線幅を認識する。ここで、図4(A)に
示す格子の交点が画素の中心位置となる画像上におい
て、始点p0と終点peおよび線幅から決まる四角形で
表わした線分を描画するものとする。
【0028】座標発生部21は、DDAにより初期値認
識部1が設定した初期値に基づいて始点p0から終点p
eまでの直線上の点の座標p1,p2,p3,...を
発生し、発生した座標が走査座標格納部22および移動
距離演算部23へ渡される。移動距離演算部23は始点
p0から発生した座標までの移動距離を絶えず演算し、
演算結果が線幅走査判定部24に渡される。
識部1が設定した初期値に基づいて始点p0から終点p
eまでの直線上の点の座標p1,p2,p3,...を
発生し、発生した座標が走査座標格納部22および移動
距離演算部23へ渡される。移動距離演算部23は始点
p0から発生した座標までの移動距離を絶えず演算し、
演算結果が線幅走査判定部24に渡される。
【0029】図5は、移動距離演算部の動作の一例の説
明図である。この例では、移動距離の演算誤差を低減す
るために、移動距離演算部23は、過去に発生した2画
素の座標までさかのぼり、これら2つの座標間の距離を
用いて演算を行なう。図5に示すように、現時点で最後
に発生した画素(以下現画素と呼ぶ)Pnからの次に新
しく発生する画素(以下次画素と呼ぶ)Pn+1が発生
されると、移動距離演算部23はまず次画素までの暫定
移動距離Pn〜Pn+1を演算する。このとき、隣接す
る座標間の単位距離をx軸方向、y軸方法ともに1とす
ると、画像は格子状に画素が存在するため暫定移動距離
は1.0または√2のいずれかである。さらに移動距離
演算部23が保持している現画素の前に発生した画素
(以下前画素と呼ぶ)からの移動距離Pn−1〜Pnお
よび先の暫定移動距離Pn〜Pn+1に基づいて新たに
次画素までの移動距離Pn〜Pn+1を算出する。すな
わち、連続する画素の移動距離の値が1.0および√2
または√2および1.0の場合のみ、これらをまとめて
ピタゴラスの定理により√5とする。
明図である。この例では、移動距離の演算誤差を低減す
るために、移動距離演算部23は、過去に発生した2画
素の座標までさかのぼり、これら2つの座標間の距離を
用いて演算を行なう。図5に示すように、現時点で最後
に発生した画素(以下現画素と呼ぶ)Pnからの次に新
しく発生する画素(以下次画素と呼ぶ)Pn+1が発生
されると、移動距離演算部23はまず次画素までの暫定
移動距離Pn〜Pn+1を演算する。このとき、隣接す
る座標間の単位距離をx軸方向、y軸方法ともに1とす
ると、画像は格子状に画素が存在するため暫定移動距離
は1.0または√2のいずれかである。さらに移動距離
演算部23が保持している現画素の前に発生した画素
(以下前画素と呼ぶ)からの移動距離Pn−1〜Pnお
よび先の暫定移動距離Pn〜Pn+1に基づいて新たに
次画素までの移動距離Pn〜Pn+1を算出する。すな
わち、連続する画素の移動距離の値が1.0および√2
または√2および1.0の場合のみ、これらをまとめて
ピタゴラスの定理により√5とする。
【0030】図5に示す例では、Pn−1〜Pn=1.
0、Pn〜Pn+1=√2よりPn−1〜Pn+1=√
5となるように、新たにPn〜Pn+1=(√5−1.
0)を移動距離として出力する。移動距離の演算後、P
n〜Pn+1の値(√5−1.0)は、Pn+1からP
n+2までの移動距離の算出のために、移動距離演算部
23内に保持される。
0、Pn〜Pn+1=√2よりPn−1〜Pn+1=√
5となるように、新たにPn〜Pn+1=(√5−1.
0)を移動距離として出力する。移動距離の演算後、P
n〜Pn+1の値(√5−1.0)は、Pn+1からP
n+2までの移動距離の算出のために、移動距離演算部
23内に保持される。
【0031】図6は、移動距離演算部の動作の一例を示
すフローチャートである。S51において、座標発生部
21が発生した次画素までの暫定移動距離を入力する。
以下この暫定移動距離の値をDnとする。また、移動距
離演算部23内で保持している前画素からの移動距離を
入力する。以下、この移動距離の値をDpとする。
すフローチャートである。S51において、座標発生部
21が発生した次画素までの暫定移動距離を入力する。
以下この暫定移動距離の値をDnとする。また、移動距
離演算部23内で保持している前画素からの移動距離を
入力する。以下、この移動距離の値をDpとする。
【0032】S52において暫定移動距離Dnが1であ
るか否かを判定する。暫定移動距離Dnが1である場合
には、さらにS53において移動距離Dpが√2である
か否かを判定する。移動距離Dpが√2でなければ、S
54において、現座標Pnから次座標Pn+1までの加
算距離を1として、累積距離に加算する。また、移動距
離Dpが√2である場合には、S55において、現座標
Pnから次座標Pn+1までの加算距離を√5−√2と
して、累積距離に加算する。
るか否かを判定する。暫定移動距離Dnが1である場合
には、さらにS53において移動距離Dpが√2である
か否かを判定する。移動距離Dpが√2でなければ、S
54において、現座標Pnから次座標Pn+1までの加
算距離を1として、累積距離に加算する。また、移動距
離Dpが√2である場合には、S55において、現座標
Pnから次座標Pn+1までの加算距離を√5−√2と
して、累積距離に加算する。
【0033】S52において暫定移動距離Dnが1でな
いと判定された場合には、さらにS56において移動距
離Dpが1であるか否かを判定する。移動距離Dpが1
であれば、S57において、現座標Pnから次座標Pn
+1までの加算距離を√5−1として、累積距離に加算
する。また、移動距離Dpが1でない場合には、S58
において、現座標Pnから次座標Pn+1までの加算距
離を√2として、累積距離に加算する。
いと判定された場合には、さらにS56において移動距
離Dpが1であるか否かを判定する。移動距離Dpが1
であれば、S57において、現座標Pnから次座標Pn
+1までの加算距離を√5−1として、累積距離に加算
する。また、移動距離Dpが1でない場合には、S58
において、現座標Pnから次座標Pn+1までの加算距
離を√2として、累積距離に加算する。
【0034】一方、90°回転部25は走査座標格納部
22に格納された図4(A)における座標p1,p2,
p3,...から、始点p0を中心として時計方向へ9
0°回転した座標p1’,p2’,p3’,...を作
り出し、それらを法線ベクトル情報として法線ベクトル
格納部26へ格納する。これと同時に線幅走査判定部2
4は初期値認識部1が認識した線幅を移動距離が上回る
かまたは両者が等しいか否かを判断する。移動距離が線
幅に等しいか上回ったときに座標発生部21の座標発生
を中断させる。これにより、法線ベクトル格納部26に
は、線幅分の法線ベクトルが格納されることになる。図
4(A)では直線p0p3が線幅に最も近いため、座標
p3まで生成された時点で座標発生部21の座標の発生
を一時中断する。これまでに発生した座標p1,p2,
p3は90°回転部25で回転され、座標p1’,p
2’,p3’となる。これにより、図4(B)に示すよ
うな法線ベクトルv0〜v3が得られる。
22に格納された図4(A)における座標p1,p2,
p3,...から、始点p0を中心として時計方向へ9
0°回転した座標p1’,p2’,p3’,...を作
り出し、それらを法線ベクトル情報として法線ベクトル
格納部26へ格納する。これと同時に線幅走査判定部2
4は初期値認識部1が認識した線幅を移動距離が上回る
かまたは両者が等しいか否かを判断する。移動距離が線
幅に等しいか上回ったときに座標発生部21の座標発生
を中断させる。これにより、法線ベクトル格納部26に
は、線幅分の法線ベクトルが格納されることになる。図
4(A)では直線p0p3が線幅に最も近いため、座標
p3まで生成された時点で座標発生部21の座標の発生
を一時中断する。これまでに発生した座標p1,p2,
p3は90°回転部25で回転され、座標p1’,p
2’,p3’となる。これにより、図4(B)に示すよ
うな法線ベクトルv0〜v3が得られる。
【0035】次に、法線ベクトル生成部4から法線ベク
トルが作成されたと判断された後は、法線ベクトルに基
づいて線分描画が行なわれる。図7は、法線ベクトル生
成から線分描画までの動作の一例の説明図である。座標
発生部21は、図7に示すように始点a0から終点f0
まで、順に座標を発生し、走査座標格納部22へ格納す
る。基準線上の画素a0〜f0が発生されるごとに、基
準線移動処理部27によって基準線を平行移動させ、線
分を描画する領域を始点から終点に向かう方向の線の右
側か左側かまたは中心に法線ベクトルを設定する。次に
描画部29が図4(B)に示す法線ベクトルv0〜v3
に基づいて、図7に示すように法線方向に1ラインごと
に描画する。すなわち、画素a0が発生されると、画素
a0から法線方向のラインとして画素a1,a2,a3
を生成する。同様にして、画素b0が発生されると画素
b1,b2,b3が、画素c0が発生されると画素c
1,c2,c3が、画素d0が発生されると画素d1,
d2,d3が、画素e0が発生されると画素e1,e
2,e3が、画素f0が発生されると画素f1,f2,
f3が、それぞれ生成される。このようにして生成され
た画素は、描画データ転送部6のデータ保持部12に渡
され、データ保持部12中のいずれかの保持部に保持さ
れる。
トルが作成されたと判断された後は、法線ベクトルに基
づいて線分描画が行なわれる。図7は、法線ベクトル生
成から線分描画までの動作の一例の説明図である。座標
発生部21は、図7に示すように始点a0から終点f0
まで、順に座標を発生し、走査座標格納部22へ格納す
る。基準線上の画素a0〜f0が発生されるごとに、基
準線移動処理部27によって基準線を平行移動させ、線
分を描画する領域を始点から終点に向かう方向の線の右
側か左側かまたは中心に法線ベクトルを設定する。次に
描画部29が図4(B)に示す法線ベクトルv0〜v3
に基づいて、図7に示すように法線方向に1ラインごと
に描画する。すなわち、画素a0が発生されると、画素
a0から法線方向のラインとして画素a1,a2,a3
を生成する。同様にして、画素b0が発生されると画素
b1,b2,b3が、画素c0が発生されると画素c
1,c2,c3が、画素d0が発生されると画素d1,
d2,d3が、画素e0が発生されると画素e1,e
2,e3が、画素f0が発生されると画素f1,f2,
f3が、それぞれ生成される。このようにして生成され
た画素は、描画データ転送部6のデータ保持部12に渡
され、データ保持部12中のいずれかの保持部に保持さ
れる。
【0036】図7の画素c0およびd0のように基準線
上の画素のy座標が変わると、法線ベクトルを構成する
隣り合う画素がななめの位置にあるとき、すなわちこの
例では法線ベクトルv0〜v3の中でv2およびv3の
間に画素抜けを起こす。そこで、画素抜け判定部28が
画素抜けの有無を判定し、画素抜けの位置を描画部29
に知らせ、画素抜けの位置に画素を挿入して抜けを除去
する。
上の画素のy座標が変わると、法線ベクトルを構成する
隣り合う画素がななめの位置にあるとき、すなわちこの
例では法線ベクトルv0〜v3の中でv2およびv3の
間に画素抜けを起こす。そこで、画素抜け判定部28が
画素抜けの有無を判定し、画素抜けの位置を描画部29
に知らせ、画素抜けの位置に画素を挿入して抜けを除去
する。
【0037】そして、終了条件判定部30が座標発生部
21で発生した座標が終点となる条件を判定し、処理を
終わらせる。このような処理によって、任意の描画角度
の任意の線幅の線分を、ほぼ理想的に近い画質で高速に
描画することができる。
21で発生した座標が終点となる条件を判定し、処理を
終わらせる。このような処理によって、任意の描画角度
の任意の線幅の線分を、ほぼ理想的に近い画質で高速に
描画することができる。
【0038】なお、破線や点線、鎖線など、途中で途切
れる線分を描画する際には、基準線上の画素を線種に応
じて発生させるか、あるいは所定間隔で所定長さだけ基
準線上の画素に対して法線ベクトルによる描画を行なわ
ないようにすることによって、任意の線幅の破線や点線
などを描画することが可能である。例えば、図7に示し
た例において、基準線上の画素として画素c0,d0に
ついて法線方向のラインを形成しないように制御するこ
とにより、2ドット間隔の点線を描画することが可能で
ある。このように、種々の線種に簡単に対応することが
できる。
れる線分を描画する際には、基準線上の画素を線種に応
じて発生させるか、あるいは所定間隔で所定長さだけ基
準線上の画素に対して法線ベクトルによる描画を行なわ
ないようにすることによって、任意の線幅の破線や点線
などを描画することが可能である。例えば、図7に示し
た例において、基準線上の画素として画素c0,d0に
ついて法線方向のラインを形成しないように制御するこ
とにより、2ドット間隔の点線を描画することが可能で
ある。このように、種々の線種に簡単に対応することが
できる。
【0039】また、上述の線分描画処理では、法線ベク
トルとして法線方向の1ライン分のみの画素しか発生さ
せなかったが、例えば隣接する法線ベクトルを複数発生
させ、発生した複数の法線ベクトルのデータを用いて描
画してもよい。
トルとして法線方向の1ライン分のみの画素しか発生さ
せなかったが、例えば隣接する法線ベクトルを複数発生
させ、発生した複数の法線ベクトルのデータを用いて描
画してもよい。
【0040】次に、本発明の線分描画装置の第1の実施
の形態における描画された線分の転送動作について説明
する。図8は、描画する線分の具体例の説明図である。
以下の説明では、具体例として、図8に右上がりのハッ
チングで示す太線を描画する場合について説明する。上
述のように、線分描画部5では、始点と終点を結ぶ基準
線に直交する法線ベクトルを、基準線を構成する画素ご
とに発生させて線分を生成する。図8では、法線ベクト
ルを矢印によって間欠的に示している。
の形態における描画された線分の転送動作について説明
する。図8は、描画する線分の具体例の説明図である。
以下の説明では、具体例として、図8に右上がりのハッ
チングで示す太線を描画する場合について説明する。上
述のように、線分描画部5では、始点と終点を結ぶ基準
線に直交する法線ベクトルを、基準線を構成する画素ご
とに発生させて線分を生成する。図8では、法線ベクト
ルを矢印によって間欠的に示している。
【0041】例えば、フレームメモリ7がワード構成で
ある場合を考える。図8において縦線はワード境界であ
る。このようなワード構成のフレームメモリ7に線分を
描画する場合、各法線ベクトルの画素は各ワードのある
ビットに対応する。このようなフレームメモリ7に直接
画素を描画する場合には、画素の位置を元にフレームメ
モリ7のワードのアドレスとビット位置を計算し、計算
されたアドレスによってワードを読み出し、さらに計算
されたビット位置をもとにワード中のビットの値を変更
して、ワードを書き戻す処理が必要となる。このような
処理には時間がかかり、描画速度が低下してしまう。さ
らに、複数の画素が同じワード内に書き込まれる場合で
も、各画素ごとにフレームメモリ7をアクセスするた
め、アクセス回数が多くなり、描画速度は低下する。
ある場合を考える。図8において縦線はワード境界であ
る。このようなワード構成のフレームメモリ7に線分を
描画する場合、各法線ベクトルの画素は各ワードのある
ビットに対応する。このようなフレームメモリ7に直接
画素を描画する場合には、画素の位置を元にフレームメ
モリ7のワードのアドレスとビット位置を計算し、計算
されたアドレスによってワードを読み出し、さらに計算
されたビット位置をもとにワード中のビットの値を変更
して、ワードを書き戻す処理が必要となる。このような
処理には時間がかかり、描画速度が低下してしまう。さ
らに、複数の画素が同じワード内に書き込まれる場合で
も、各画素ごとにフレームメモリ7をアクセスするた
め、アクセス回数が多くなり、描画速度は低下する。
【0042】この第1の実施の形態では、比較的高速に
アクセス可能なデータ保持部12を設け、ワード単位に
フレームメモリ7へ転送を行なうことによってアライメ
ント処理をなくすとともにアクセス回数を減少させ、描
画速度を向上させている。さらに、データ保持部12中
の保持部を有効に利用することによって、少量のメモリ
容量で構成することが可能である。そのために、データ
保持部12中の保持部の領域は、フレームメモリ7のワ
ード境界に沿って割り当てる。例えば、図8(B)に示
す例では、保持部は1ワード×1ワードの領域を有して
いる。一般に描画する線分の始点や終点は、図8(A)
に示すように常にワード境界に存在するわけではないの
で、保持部の領域を描画する線分に合わせずにフレーム
メモリ7のワード境界に合わせて設定することによっ
て、データ転送部14によるフレームメモリ7への転送
を高速に行なうことができる。保持部のフレームメモリ
7上の位置は、保持部座標演算部13によって演算され
る。例えば、図8(B)に示すように保持部の左上の位
置の座標を演算して設定することができる。
アクセス可能なデータ保持部12を設け、ワード単位に
フレームメモリ7へ転送を行なうことによってアライメ
ント処理をなくすとともにアクセス回数を減少させ、描
画速度を向上させている。さらに、データ保持部12中
の保持部を有効に利用することによって、少量のメモリ
容量で構成することが可能である。そのために、データ
保持部12中の保持部の領域は、フレームメモリ7のワ
ード境界に沿って割り当てる。例えば、図8(B)に示
す例では、保持部は1ワード×1ワードの領域を有して
いる。一般に描画する線分の始点や終点は、図8(A)
に示すように常にワード境界に存在するわけではないの
で、保持部の領域を描画する線分に合わせずにフレーム
メモリ7のワード境界に合わせて設定することによっ
て、データ転送部14によるフレームメモリ7への転送
を高速に行なうことができる。保持部のフレームメモリ
7上の位置は、保持部座標演算部13によって演算され
る。例えば、図8(B)に示すように保持部の左上の位
置の座標を演算して設定することができる。
【0043】図9は、本発明の第1の実施の形態におけ
る描画された画素の格納および転送処理の一例を示すフ
ローチャートである。線分描画部5で画素が生成される
と、S61からS62に移り、S62において生成され
た画素の描画座標を受け取る。S63において、保持部
制御部11は、受け取った描画座標が4つの保持部の中
ですでに設定された保持部内に入るか否かを判定する。
いずれかの保持部に保持可能な場合は、S64におい
て、その保持部を選択し、描画座標に基づいて保持部に
画素を描画する。設定されているどの保持部内にも入ら
ない場合は、S65において、空いている保持部を選択
し、保持部座標演算部13によってその保持部が対応す
るフレームメモリ7上の座標を演算し、設定する。そし
て、その保持部に画素を描画する。
る描画された画素の格納および転送処理の一例を示すフ
ローチャートである。線分描画部5で画素が生成される
と、S61からS62に移り、S62において生成され
た画素の描画座標を受け取る。S63において、保持部
制御部11は、受け取った描画座標が4つの保持部の中
ですでに設定された保持部内に入るか否かを判定する。
いずれかの保持部に保持可能な場合は、S64におい
て、その保持部を選択し、描画座標に基づいて保持部に
画素を描画する。設定されているどの保持部内にも入ら
ない場合は、S65において、空いている保持部を選択
し、保持部座標演算部13によってその保持部が対応す
るフレームメモリ7上の座標を演算し、設定する。そし
て、その保持部に画素を描画する。
【0044】S66において、保持部制御部11は描画
が終了した保持部が存在するか否かを判定し、描画が終
了した保持部がない場合には、S61へ戻る。描画が終
了した保持部が存在する場合には、S67において、デ
ータ転送部14に描画が終了した保持部の設定位置を与
え、内部のデータを設定されたフレームメモリ7上の位
置に転送させる。フレームメモリ7へ保持部のデータを
転送する際には、データ転送部14は保持部を見ながら
描画されたデータのみをワード単位ごとにフレームメモ
リ7に転送する。転送終了後、S68において、データ
保持部初期化部15は転送された保持部の描画されたデ
ータのみをワード単位に初期化、あるいは転送された保
持部の全領域を初期化する。初期化された保持部はS6
5で新たに保持部が必要となったときに再設定される。
初期化終了後、S61へ戻る。
が終了した保持部が存在するか否かを判定し、描画が終
了した保持部がない場合には、S61へ戻る。描画が終
了した保持部が存在する場合には、S67において、デ
ータ転送部14に描画が終了した保持部の設定位置を与
え、内部のデータを設定されたフレームメモリ7上の位
置に転送させる。フレームメモリ7へ保持部のデータを
転送する際には、データ転送部14は保持部を見ながら
描画されたデータのみをワード単位ごとにフレームメモ
リ7に転送する。転送終了後、S68において、データ
保持部初期化部15は転送された保持部の描画されたデ
ータのみをワード単位に初期化、あるいは転送された保
持部の全領域を初期化する。初期化された保持部はS6
5で新たに保持部が必要となったときに再設定される。
初期化終了後、S61へ戻る。
【0045】このような処理を線分描画部5で画素が生
成されるごとに行ない、S61で描画が終了したと判定
すると、S69においてその時点で設定されている保持
部の内容をデータ転送部14によってフレームメモリ7
へ転送して処理を終了する。
成されるごとに行ない、S61で描画が終了したと判定
すると、S69においてその時点で設定されている保持
部の内容をデータ転送部14によってフレームメモリ7
へ転送して処理を終了する。
【0046】図10ないし図17は、本発明の第1の実
施の形態における描画された画素の格納および転送処理
の具体的な過程の説明図である。以下の説明では、デー
タ保持部12には4つの保持部が設けられているものと
し、それぞれ第1の保持部、第2の保持部第3の保持
部、第4の保持部とする。図中では、それぞれの保持部
の番号のみを示している。また、フレームメモリ7はワ
ード構成であり、各保持部は、フレームメモリ7のワー
ドに対応して、1ワード×1ワードの容量を有している
ものとする。
施の形態における描画された画素の格納および転送処理
の具体的な過程の説明図である。以下の説明では、デー
タ保持部12には4つの保持部が設けられているものと
し、それぞれ第1の保持部、第2の保持部第3の保持
部、第4の保持部とする。図中では、それぞれの保持部
の番号のみを示している。また、フレームメモリ7はワ
ード構成であり、各保持部は、フレームメモリ7のワー
ドに対応して、1ワード×1ワードの容量を有している
ものとする。
【0047】まず、線分描画部5から始点に対応する画
素の描画座標が描画データ転送部6に送られてくる。こ
の時点ではまだ保持部の設定が行なわれていないので、
保持部の設定を行なう。図10〜図17において、設定
された保持部の領域には右下がりのハッチングを施して
示している。図10においてフレームメモリ7上のワー
ド境界に沿い、かつ、線分描画部5で発生した法線ベク
トルの始点が入るように、第1の保持部を割り当てる。
そして、保持部座標演算部13によって、第1の保持部
の左上の画素のフレームメモリ上に割り当てられる座標
を計算する。そして、線分の始点の画素を第1の保持部
に描画する。
素の描画座標が描画データ転送部6に送られてくる。こ
の時点ではまだ保持部の設定が行なわれていないので、
保持部の設定を行なう。図10〜図17において、設定
された保持部の領域には右下がりのハッチングを施して
示している。図10においてフレームメモリ7上のワー
ド境界に沿い、かつ、線分描画部5で発生した法線ベク
トルの始点が入るように、第1の保持部を割り当てる。
そして、保持部座標演算部13によって、第1の保持部
の左上の画素のフレームメモリ上に割り当てられる座標
を計算する。そして、線分の始点の画素を第1の保持部
に描画する。
【0048】続いて線分描画部5は始点の画素に対応し
た法線ベクトルの各画素の描画座標を順次発生する。こ
れらの描画座標は第1の保持部に含まれるので、順次、
第1の保持部に描画して行く。さらに、基準線に沿って
発生される画素と、その画素に対応した法線ベクトルの
各画素も、描画座標が第1の保持部に含まれる間は、順
次第1の保持部に描画される。
た法線ベクトルの各画素の描画座標を順次発生する。こ
れらの描画座標は第1の保持部に含まれるので、順次、
第1の保持部に描画して行く。さらに、基準線に沿って
発生される画素と、その画素に対応した法線ベクトルの
各画素も、描画座標が第1の保持部に含まれる間は、順
次第1の保持部に描画される。
【0049】法線ベクトルの始点とワード境界の位置関
係によっては法線ベクトルの終点が同じ保持部に入らな
い場合がある。しかし、線幅が1つの保持部に入りきる
大きさ、すなわちこの例では1ワード以下であれば、以
下に説明するように新たに保持部を割り当てて行くこと
によって描画可能である。
係によっては法線ベクトルの終点が同じ保持部に入らな
い場合がある。しかし、線幅が1つの保持部に入りきる
大きさ、すなわちこの例では1ワード以下であれば、以
下に説明するように新たに保持部を割り当てて行くこと
によって描画可能である。
【0050】保持部制御部11は、常に基準線と法線ベ
クトルに基づいて算出した描画座標が、現在使用してい
るどの保持部に入るかを判断する。図11に示すよう
に、法線ベクトルがbの位置に来たとき、法線ベクトル
bの始点の画素の描画座標は第1の保持部に入らなくな
る。このとき、保持部制御部11は法線ベクトルbの始
点を保持部の範囲外と判断する。そこで、保持部制御部
11は範囲外となった画素の座標が入るように、第2の
保持部をフレームメモリ7のワード境界に沿って新たに
割り当て、法線ベクトルbの始点の画素を第2の保持部
へ描画する。このとき、法線ベクトルが2つの保持部に
割り当てられた描画領域に跨っても、保持部制御部11
は画素ごとにどの保持部かを判断するため、問題なく描
画できる。
クトルに基づいて算出した描画座標が、現在使用してい
るどの保持部に入るかを判断する。図11に示すよう
に、法線ベクトルがbの位置に来たとき、法線ベクトル
bの始点の画素の描画座標は第1の保持部に入らなくな
る。このとき、保持部制御部11は法線ベクトルbの始
点を保持部の範囲外と判断する。そこで、保持部制御部
11は範囲外となった画素の座標が入るように、第2の
保持部をフレームメモリ7のワード境界に沿って新たに
割り当て、法線ベクトルbの始点の画素を第2の保持部
へ描画する。このとき、法線ベクトルが2つの保持部に
割り当てられた描画領域に跨っても、保持部制御部11
は画素ごとにどの保持部かを判断するため、問題なく描
画できる。
【0051】さらに描画が進んで、図12に示すように
法線ベクトルがcの位置に来たとき、法線ベクトルに従
って描画する画素は第1の保持部に書き込まれなくな
る。直線を描画している場合、これ以上描画が進んでも
第1の保持部には描画されないので、データ保持部12
内の第1の保持部は描画完了となる。保持部制御部11
は、データ転送部14に対して第1の保持部の内容をフ
レームメモリ7へ転送するように依頼するとともに、第
1の保持部の位置を示す座標を送る。
法線ベクトルがcの位置に来たとき、法線ベクトルに従
って描画する画素は第1の保持部に書き込まれなくな
る。直線を描画している場合、これ以上描画が進んでも
第1の保持部には描画されないので、データ保持部12
内の第1の保持部は描画完了となる。保持部制御部11
は、データ転送部14に対して第1の保持部の内容をフ
レームメモリ7へ転送するように依頼するとともに、第
1の保持部の位置を示す座標を送る。
【0052】図13に示すように、法線ベクトルがdの
位置に達したとき、第2の保持部から法線ベクトルdの
終点がはみ出る。そのため、新たに第3の保持部を第2
の保持部の下の位置に割り当て、法線ベクトルdの終点
の画素を描画する。もちろん、第1の保持部は内容を転
送済みであるので、この時点では第1の保持部を割り当
てることも可能である。第3の保持部の割り当て以降
は、図13に示したように第2の保持部と第3の保持部
を用いることになる。
位置に達したとき、第2の保持部から法線ベクトルdの
終点がはみ出る。そのため、新たに第3の保持部を第2
の保持部の下の位置に割り当て、法線ベクトルdの終点
の画素を描画する。もちろん、第1の保持部は内容を転
送済みであるので、この時点では第1の保持部を割り当
てることも可能である。第3の保持部の割り当て以降
は、図13に示したように第2の保持部と第3の保持部
を用いることになる。
【0053】さらに描画が進んで、図14に示すよう
に、法線ベクトルがeの位置に来たとき、法線ベクトル
eの始点の画素の描画座標が、使用されている第2の保
持部または第3の保持部の範囲外となる。このため、範
囲外となった画素の座標が入るように新たに第4の保持
部を設定し、法線ベクトルeの始点の画素の描画を行な
う。
に、法線ベクトルがeの位置に来たとき、法線ベクトル
eの始点の画素の描画座標が、使用されている第2の保
持部または第3の保持部の範囲外となる。このため、範
囲外となった画素の座標が入るように新たに第4の保持
部を設定し、法線ベクトルeの始点の画素の描画を行な
う。
【0054】図15において、法線ベクトルがfの位置
に来たときに、法線ベクトルに沿って描画する途中で第
2、第3、第4の保持部の範囲外に画素が現われる。こ
のため、この画素の座標が入るように、現在使用してい
ない第1の保持部の内容をデータ保持部初期化部15に
よってクリアし、新たに割り当てる。データ保持部初期
化部15による保持部のクリアは、保持部の内容の転送
後、新たに割り当てられて描画されるまでの間で行なえ
ばよい。
に来たときに、法線ベクトルに沿って描画する途中で第
2、第3、第4の保持部の範囲外に画素が現われる。こ
のため、この画素の座標が入るように、現在使用してい
ない第1の保持部の内容をデータ保持部初期化部15に
よってクリアし、新たに割り当てる。データ保持部初期
化部15による保持部のクリアは、保持部の内容の転送
後、新たに割り当てられて描画されるまでの間で行なえ
ばよい。
【0055】また、このとき第2の保持部には1画素も
描画しなくなるため、データ転送部14に対し、第2の
保持部の内容を転送するように依頼するとともに、フレ
ームメモリ7上での第2の保持部の位置を示す座標を送
る。第2の保持部の内容を転送後は、第1、第3、第4
の保持部を用いて描画を行なうことになる。
描画しなくなるため、データ転送部14に対し、第2の
保持部の内容を転送するように依頼するとともに、フレ
ームメモリ7上での第2の保持部の位置を示す座標を送
る。第2の保持部の内容を転送後は、第1、第3、第4
の保持部を用いて描画を行なうことになる。
【0056】図16に示すように、法線ベクトルがgの
位置に来たとき、法線ベクトルに沿って描画する画素が
第3の保持部に書き込まれなくなるため、第3の保持部
が描画完了となる。保持部制御部11はデータ転送部1
4に対し、第3の保持部の内容を転送するように依頼す
るとともに、フレームメモリ7上での第3の保持部の位
置を示す座標を送る。
位置に来たとき、法線ベクトルに沿って描画する画素が
第3の保持部に書き込まれなくなるため、第3の保持部
が描画完了となる。保持部制御部11はデータ転送部1
4に対し、第3の保持部の内容を転送するように依頼す
るとともに、フレームメモリ7上での第3の保持部の位
置を示す座標を送る。
【0057】図17に示すように、法線ベクトルがhの
位置に来たとき、すなわち終点まで描画を完了した場
合、保持部制御部11はデータ転送部14に対し、現在
用いているすべての保持部の内容をフレームメモリ7へ
転送するように依頼するとともに、内容の転送を行なう
各保持部のフレームメモリ上での位置を示す座標を送
る。図17では第1、第4の保持部が使用されているた
め、これらの保持部の内容が転送される。これにより、
図8(A)に示す線分の描画データがフレームメモリ7
上に格納される。
位置に来たとき、すなわち終点まで描画を完了した場
合、保持部制御部11はデータ転送部14に対し、現在
用いているすべての保持部の内容をフレームメモリ7へ
転送するように依頼するとともに、内容の転送を行なう
各保持部のフレームメモリ上での位置を示す座標を送
る。図17では第1、第4の保持部が使用されているた
め、これらの保持部の内容が転送される。これにより、
図8(A)に示す線分の描画データがフレームメモリ7
上に格納される。
【0058】以上のように、線分の線幅が1ワードに対
応する画素数以下の場合、4つの保持部を順次用いるこ
とにより、線分の描画が可能となる。また、フレームメ
モリ7への描画データの転送がワード単位に行なわれる
ため、フレームメモリ7へのアクセス回数が減り、描画
処理時間をより短縮できる。
応する画素数以下の場合、4つの保持部を順次用いるこ
とにより、線分の描画が可能となる。また、フレームメ
モリ7への描画データの転送がワード単位に行なわれる
ため、フレームメモリ7へのアクセス回数が減り、描画
処理時間をより短縮できる。
【0059】なお、上述の例では、左右に隣接して設定
する保持部のx座標を同じにして保持部の座標を設定し
ているが、ワード境界に沿って配置すれば左右に隣接す
る保持部のx座標は揃える必要はない。例えば、図11
において第2の保持部を割り当てる際に、法線ベクトル
bの始点のx座標に第2の保持部の上辺を合わせるよう
に領域を設定してもよい。また、この例では保持部の大
きさを1ワード×1ワードとしたが、これに限らず、幅
が1ワード以上であればどのような大きさであってもよ
い。このとき、保持部の幅は1ワードの整数倍にするこ
とによって、効率よくメモリを利用することができる。
する保持部のx座標を同じにして保持部の座標を設定し
ているが、ワード境界に沿って配置すれば左右に隣接す
る保持部のx座標は揃える必要はない。例えば、図11
において第2の保持部を割り当てる際に、法線ベクトル
bの始点のx座標に第2の保持部の上辺を合わせるよう
に領域を設定してもよい。また、この例では保持部の大
きさを1ワード×1ワードとしたが、これに限らず、幅
が1ワード以上であればどのような大きさであってもよ
い。このとき、保持部の幅は1ワードの整数倍にするこ
とによって、効率よくメモリを利用することができる。
【0060】図18、図19は、本発明の第1の実施の
形態において線幅が1つの保持部に入りきらない場合の
描画および転送処理の一例の説明図である。図18に示
すように、描画する線分の線幅が1つの保持部に入りき
らない場合は、上述のように4つの保持部だけでは保持
部が不足する。これを解消する1つの方法として、線分
を数回に分けて描画する方法がある。すなわち、1つの
保持部内に入りきるように線分の法線ベクトルを分け
て、その分けた法線ベクトルに基づいて終点方向へ描画
する。そして続けて、始点から終点方向へ次に分けられ
た法線ベクトルに基づいて描画を行なう。以上を太線の
線幅になるまで分けて行なう。このように処理すること
によって、上述のように最低4つの保持部を用いて効率
的にフレームメモリ7に描画データを転送することがで
きる。
形態において線幅が1つの保持部に入りきらない場合の
描画および転送処理の一例の説明図である。図18に示
すように、描画する線分の線幅が1つの保持部に入りき
らない場合は、上述のように4つの保持部だけでは保持
部が不足する。これを解消する1つの方法として、線分
を数回に分けて描画する方法がある。すなわち、1つの
保持部内に入りきるように線分の法線ベクトルを分け
て、その分けた法線ベクトルに基づいて終点方向へ描画
する。そして続けて、始点から終点方向へ次に分けられ
た法線ベクトルに基づいて描画を行なう。以上を太線の
線幅になるまで分けて行なう。このように処理すること
によって、上述のように最低4つの保持部を用いて効率
的にフレームメモリ7に描画データを転送することがで
きる。
【0061】具体的な描画処理および転送処理を、図1
9を用いて説明する。ここでは、図18にハッチングを
施して示すような、線幅が2ワード以上の線分を描画す
る場合を考える。このように1つの保持部に入りきらな
い線幅の線分を描画するときに、そのまま上述のように
線幅分の法線ベクトルを用意して描画しようとすると、
データ保持部12中の4つの保持部だけでは足りなくな
る。そのため、図19に示すように、線幅を描画領域単
位で分け、法線ベクトルをサブ法線ベクトル〜に分
割する。図19では、分割して描画を行なうそれぞれの
領域を、ハッチングを変えて示している。
9を用いて説明する。ここでは、図18にハッチングを
施して示すような、線幅が2ワード以上の線分を描画す
る場合を考える。このように1つの保持部に入りきらな
い線幅の線分を描画するときに、そのまま上述のように
線幅分の法線ベクトルを用意して描画しようとすると、
データ保持部12中の4つの保持部だけでは足りなくな
る。そのため、図19に示すように、線幅を描画領域単
位で分け、法線ベクトルをサブ法線ベクトル〜に分
割する。図19では、分割して描画を行なうそれぞれの
領域を、ハッチングを変えて示している。
【0062】サブ法線ベクトルを作成する際には、法線
ベクトルの始点およびワード境界に沿って割り当てた保
持部の有する領域によって法線ベクトルをクリップす
る。図19において、保持部制御部11は法線ベクトル
からサブ法線ベクトルを作成し、このサブ法線ベクト
ルに基づいて上述の線幅が1つの保持部に入る場合と同
様にして、順次保持部を割り当てて描画する。図19で
は保持部を割り当てる過程も示しており、割り当てられ
た保持部の番号を数字により示している。
ベクトルの始点およびワード境界に沿って割り当てた保
持部の有する領域によって法線ベクトルをクリップす
る。図19において、保持部制御部11は法線ベクトル
からサブ法線ベクトルを作成し、このサブ法線ベクト
ルに基づいて上述の線幅が1つの保持部に入る場合と同
様にして、順次保持部を割り当てて描画する。図19で
は保持部を割り当てる過程も示しており、割り当てられ
た保持部の番号を数字により示している。
【0063】サブ法線ベクトルによって直線の終点ま
で描画を行なった後、以下同様にサブ法線ベクトル、
サブ法線ベクトルをそれぞれ作成しながら描画を行な
う。このように、線幅が1つの保持部に入りきらない場
合は、法線ベクトルを保持部の大きさでクリップして用
いることにより、4つの保持部を利用して線分の描画を
行なうことができる。
で描画を行なった後、以下同様にサブ法線ベクトル、
サブ法線ベクトルをそれぞれ作成しながら描画を行な
う。このように、線幅が1つの保持部に入りきらない場
合は、法線ベクトルを保持部の大きさでクリップして用
いることにより、4つの保持部を利用して線分の描画を
行なうことができる。
【0064】上述の例では、最低4つの保持部を有効に
利用して、1つの保持部に入りきらない線幅の線分を描
画する例を示したが、例えば、保持部の個数が5つ以上
確保できる場合には、分割するサブ法線ベクトルの長さ
を1つの保持部に入りきる長さ以上とすることが可能で
ある。これによりサブ法線ベクトルの分割数を減少させ
ることができ、高速に描画することができる。また、必
要な個数だけ保持部を確保できる場合、サブ法線ベクト
ルへの分割を行なわずに、法線ベクトルのまま描画する
こともできる。
利用して、1つの保持部に入りきらない線幅の線分を描
画する例を示したが、例えば、保持部の個数が5つ以上
確保できる場合には、分割するサブ法線ベクトルの長さ
を1つの保持部に入りきる長さ以上とすることが可能で
ある。これによりサブ法線ベクトルの分割数を減少させ
ることができ、高速に描画することができる。また、必
要な個数だけ保持部を確保できる場合、サブ法線ベクト
ルへの分割を行なわずに、法線ベクトルのまま描画する
こともできる。
【0065】なお、上述の第1の実施の形態では、特願
平7−82432号に記載されているような法線ベクト
ルを重ねることによって線分を描画する方法を用いて、
データ保持手段を介してフレームメモリに描画データを
転送する構成を示した。しかし、この第1の実施の形態
で示した描画データの転送の手法は、これに限らず、例
えば、始点と終点を結ぶ線分を重ねることによって線分
を描画する方法にも応用することが可能である。この場
合、線分の長さが保持部の大きさより長いのが一般的で
あるので、図18に示すように分割して描画する方法を
用いることができる。
平7−82432号に記載されているような法線ベクト
ルを重ねることによって線分を描画する方法を用いて、
データ保持手段を介してフレームメモリに描画データを
転送する構成を示した。しかし、この第1の実施の形態
で示した描画データの転送の手法は、これに限らず、例
えば、始点と終点を結ぶ線分を重ねることによって線分
を描画する方法にも応用することが可能である。この場
合、線分の長さが保持部の大きさより長いのが一般的で
あるので、図18に示すように分割して描画する方法を
用いることができる。
【0066】図20は、本発明の線分描画装置の第2の
実施の形態を示すブロック図である。図中、図1と同様
の部分には同じ符号を付して説明を省略する。41は描
画画素修正部、42は保持部座標演算部、43は保持部
制御部、44はデータ保持部、45はデータ転送部であ
る。この実施の形態では、描画画素転送部6には、描画
画素修正部41と、保持部座標演算部42と、保持部制
御部43と、データ保持部44と、データ転送部45と
が設けられている。描画画素修正部41は、基準線走査
部2において演算される基準線の座標とデータ保持部内
にすでに描画されている基準線の座標を比較して、異な
る画素を見つけた場合は法線ベクトルに基づいてデータ
保持部内のデータを変更する。
実施の形態を示すブロック図である。図中、図1と同様
の部分には同じ符号を付して説明を省略する。41は描
画画素修正部、42は保持部座標演算部、43は保持部
制御部、44はデータ保持部、45はデータ転送部であ
る。この実施の形態では、描画画素転送部6には、描画
画素修正部41と、保持部座標演算部42と、保持部制
御部43と、データ保持部44と、データ転送部45と
が設けられている。描画画素修正部41は、基準線走査
部2において演算される基準線の座標とデータ保持部内
にすでに描画されている基準線の座標を比較して、異な
る画素を見つけた場合は法線ベクトルに基づいてデータ
保持部内のデータを変更する。
【0067】保持部座標演算部42は、基準線の座標お
よび法線ベクトルに基づいてデータ保持部がなるべく多
くの線分描画画素を保持できるように、データ保持部4
4の設定座標を演算する。
よび法線ベクトルに基づいてデータ保持部がなるべく多
くの線分描画画素を保持できるように、データ保持部4
4の設定座標を演算する。
【0068】保持部制御部43は、線分描画部5が初め
てデータ保持部44に線分を描画するとき、または描画
画素修正部41がデータ保持部44に保持されたデータ
を修正するときに、DDAの演算結果に基づいてその終
了判定を行ない、どちらかの処理が終了した後にデータ
転送部45にデータの転送を行なわせるように制御す
る。
てデータ保持部44に線分を描画するとき、または描画
画素修正部41がデータ保持部44に保持されたデータ
を修正するときに、DDAの演算結果に基づいてその終
了判定を行ない、どちらかの処理が終了した後にデータ
転送部45にデータの転送を行なわせるように制御す
る。
【0069】データ保持部44は、n×m画素の矩形領
域の描画データを保持する。このとき、転送単位に合わ
せて大きさを設定することにより、効率のよい転送を行
なうことができる。具体例としては、8×8画素の矩形
領域とすることができ、1bit/画素の場合、8ビッ
ト×8バイトにより構成することができる。
域の描画データを保持する。このとき、転送単位に合わ
せて大きさを設定することにより、効率のよい転送を行
なうことができる。具体例としては、8×8画素の矩形
領域とすることができ、1bit/画素の場合、8ビッ
ト×8バイトにより構成することができる。
【0070】データ転送部45は、保持部制御部43に
よってデータ保持部44へのアクセスが終了したと判断
された後に、データ保持部44に描画されたデータを保
持部座標演算部42で演算されたフレームメモリ上での
位置に転送する。
よってデータ保持部44へのアクセスが終了したと判断
された後に、データ保持部44に描画されたデータを保
持部座標演算部42で演算されたフレームメモリ上での
位置に転送する。
【0071】図21、図22は、本発明の線分描画装置
の第2の実施の形態における具体的な動作の一例の説明
図である。図21はデータ保持部44の内容の変遷を示
し、図22はフレームメモリ7の内容を示している。こ
の第2の実施の形態においても、上述の第1の実施の形
態と同様に、法線ベクトル(図4におけるv0〜v3に
相当)を生成した後、基準線上の画素ごとにこれを起点
として線分描画部5によって線分の描画座標を算出す
る。このとき、フレームメモリ7上に直接描画するので
なく、データ保持部44に描画をするか、または、すで
に描画されたデータを修正利用する。
の第2の実施の形態における具体的な動作の一例の説明
図である。図21はデータ保持部44の内容の変遷を示
し、図22はフレームメモリ7の内容を示している。こ
の第2の実施の形態においても、上述の第1の実施の形
態と同様に、法線ベクトル(図4におけるv0〜v3に
相当)を生成した後、基準線上の画素ごとにこれを起点
として線分描画部5によって線分の描画座標を算出す
る。このとき、フレームメモリ7上に直接描画するので
なく、データ保持部44に描画をするか、または、すで
に描画されたデータを修正利用する。
【0072】初めてデータ保持部44へ描画する場合
は、線分描画部5で演算された描画座標に基づいて、デ
ータ保持部43がなるべく多くの線分描画画素を保持で
きるように保持部座標演算部42がデータ保持部44の
設定座標を演算し、設定する。例えば、法線ベクトルの
始点と終点がデータ保持部44の縁の部分に来るように
設定すればよい。データ保持部44の領域は、図22に
太線で示すようにフレームメモリ7上の領域に対応して
設定される。
は、線分描画部5で演算された描画座標に基づいて、デ
ータ保持部43がなるべく多くの線分描画画素を保持で
きるように保持部座標演算部42がデータ保持部44の
設定座標を演算し、設定する。例えば、法線ベクトルの
始点と終点がデータ保持部44の縁の部分に来るように
設定すればよい。データ保持部44の領域は、図22に
太線で示すようにフレームメモリ7上の領域に対応して
設定される。
【0073】図21(A)に示すように、線分の基準線
上の画素が画素ア’から順次発生され、その画素を始点
として法線ベクトルがデータ保持部44に描画されてゆ
く。このとき、図2の画素抜け判定部28による判定結
果に基づき、画素抜け部分の修正も行なわれて行く。保
持部制御部43は、データ保持部44内の基準線の始点
(図21(A)では画素ア’)でのDDAによる演算時
の残差とある程度近い残差になるまでデータ保持部44
の範囲内で描画を行なう。図21(A)では画素イ’の
時に画素ア’の残差と最も近くなる。これにより基準線
上の次の画素からの描画パターンが、データ保持部44
に描画された現在のパターンから大きく変わらなくな
る。基準線上の画素イ’まで生成され、法線ベクトルに
基づいて画素がデータ保持部44に描画された後、デー
タ転送部45によってフレームメモリ7上に設定された
位置に転送される。これにより、図22において基準線
上の画素アから画素イまでの部分の線分がフレームメモ
リ7に描画されたことになる。
上の画素が画素ア’から順次発生され、その画素を始点
として法線ベクトルがデータ保持部44に描画されてゆ
く。このとき、図2の画素抜け判定部28による判定結
果に基づき、画素抜け部分の修正も行なわれて行く。保
持部制御部43は、データ保持部44内の基準線の始点
(図21(A)では画素ア’)でのDDAによる演算時
の残差とある程度近い残差になるまでデータ保持部44
の範囲内で描画を行なう。図21(A)では画素イ’の
時に画素ア’の残差と最も近くなる。これにより基準線
上の次の画素からの描画パターンが、データ保持部44
に描画された現在のパターンから大きく変わらなくな
る。基準線上の画素イ’まで生成され、法線ベクトルに
基づいて画素がデータ保持部44に描画された後、デー
タ転送部45によってフレームメモリ7上に設定された
位置に転送される。これにより、図22において基準線
上の画素アから画素イまでの部分の線分がフレームメモ
リ7に描画されたことになる。
【0074】次に、描画画素修正部41は、図21
(B)に示すように、保持部座標演算部42がデータ保
持部44内の基準線が図21(A)の描画部分とうまく
つながるようにデータ保持部44の位置を演算する。そ
して、基準線上の画素ウ’から、順次、基準線上の画素
と、先に描画したデータ保持部44内の基準線の座標を
比較する。異なる画素が見つかると、その部分の修正を
行なう。すなわち、基準線上の画素が1画素ずれると、
法線ベクトルも1画素ずれるため、法線ベクトルの始点
と終点の2画素を修正する。図21(B)に示した例で
は、画素オ’と画素カ’の2画素を修正する。このよう
な処理を、画素ウと近い残差となる画素エまでの基準線
上の画素について行なう。そして、修正後のデータ保持
部44の内容をデータ転送部45によってフレームメモ
リ7上の設定された位置に転送する。これにより、図2
2において基準線上の画素ウから画素エまでの部分の線
分がフレームメモリ7に描画されたことになる。
(B)に示すように、保持部座標演算部42がデータ保
持部44内の基準線が図21(A)の描画部分とうまく
つながるようにデータ保持部44の位置を演算する。そ
して、基準線上の画素ウ’から、順次、基準線上の画素
と、先に描画したデータ保持部44内の基準線の座標を
比較する。異なる画素が見つかると、その部分の修正を
行なう。すなわち、基準線上の画素が1画素ずれると、
法線ベクトルも1画素ずれるため、法線ベクトルの始点
と終点の2画素を修正する。図21(B)に示した例で
は、画素オ’と画素カ’の2画素を修正する。このよう
な処理を、画素ウと近い残差となる画素エまでの基準線
上の画素について行なう。そして、修正後のデータ保持
部44の内容をデータ転送部45によってフレームメモ
リ7上の設定された位置に転送する。これにより、図2
2において基準線上の画素ウから画素エまでの部分の線
分がフレームメモリ7に描画されたことになる。
【0075】同様に、図21(C)においても、まず保
持部座標演算部42が図21(B)で修正し用いたデー
タ保持部44内の基準線が図21(C)とうまくつなが
るようにデータ保持部44の位置を演算し、描画画素修
正部41が画素ケ’と画素コ’を修正して、データ転送
部45がフレームメモリ7への転送を行なう。これによ
り、図22において基準線上の画素キから画素クまでの
部分の線分がフレームメモリ7に描画されたことにな
る。このようにして、線分全体がフレームメモリ7に描
画される。
持部座標演算部42が図21(B)で修正し用いたデー
タ保持部44内の基準線が図21(C)とうまくつなが
るようにデータ保持部44の位置を演算し、描画画素修
正部41が画素ケ’と画素コ’を修正して、データ転送
部45がフレームメモリ7への転送を行なう。これによ
り、図22において基準線上の画素キから画素クまでの
部分の線分がフレームメモリ7に描画されたことにな
る。このようにして、線分全体がフレームメモリ7に描
画される。
【0076】このようにしてデータ保持部44に描画さ
れたデータを修正しながら用いることによって、描画処
理を高速化することができる。また、データ保持部44
をバイト単位やワード単位とすることによって、高速な
転送を行なうことができる。フレームメモリ7がワード
構成やバイト構成の場合、データ保持部44からワード
やバイト単位で転送しても、ワード境界やバイト境界に
一致しないこともある。しかし、データ保持部44から
転送される1ワードあるいは1バイトにつき2回のフレ
ームメモリ7のアクセスで済み、各画素ごとにフレーム
メモリ7をアクセスする場合と比べ格段にアクセス回数
を減少させることができる。そのため、転送に要する時
間を削減でき、高速な描画処理を実現することができ
る。
れたデータを修正しながら用いることによって、描画処
理を高速化することができる。また、データ保持部44
をバイト単位やワード単位とすることによって、高速な
転送を行なうことができる。フレームメモリ7がワード
構成やバイト構成の場合、データ保持部44からワード
やバイト単位で転送しても、ワード境界やバイト境界に
一致しないこともある。しかし、データ保持部44から
転送される1ワードあるいは1バイトにつき2回のフレ
ームメモリ7のアクセスで済み、各画素ごとにフレーム
メモリ7をアクセスする場合と比べ格段にアクセス回数
を減少させることができる。そのため、転送に要する時
間を削減でき、高速な描画処理を実現することができ
る。
【0077】上述の例えば図21、図22に示す例で
は、連続した線分を描画する場合を示したが、この実施
の形態においてもこれに限らず、点線や破線、その他の
線種であっても同様に描画することができる。また、線
幅がデータ保持部44の大きさ以上の場合には、例えば
上述の図18で説明したように、いくつかに分割して描
画すればよい。
は、連続した線分を描画する場合を示したが、この実施
の形態においてもこれに限らず、点線や破線、その他の
線種であっても同様に描画することができる。また、線
幅がデータ保持部44の大きさ以上の場合には、例えば
上述の図18で説明したように、いくつかに分割して描
画すればよい。
【0078】
【発明の効果】以上の説明から明らかなように、本発明
によれば、転送単位に合わせて少容量のデータ保持手段
に描画データを一時的に保持し、フレームメモリへ転送
することによって、フレームメモリへのアクセス回数を
減少させることができる。これにより、転送時間を短縮
して、描画処理の高速化を達成することができるという
効果がある。
によれば、転送単位に合わせて少容量のデータ保持手段
に描画データを一時的に保持し、フレームメモリへ転送
することによって、フレームメモリへのアクセス回数を
減少させることができる。これにより、転送時間を短縮
して、描画処理の高速化を達成することができるという
効果がある。
【0079】特に、請求項1に記載の発明によれば、少
容量の保持部を4つ以上設け、必要に応じて割り当てて
行くことにより、少容量のメモリを効率的に用いて描画
データをフレームメモリへ転送することができ、少容量
のメモリで高速な描画処理を行なうことができる。請求
項2に記載の発明のように保持部に対する領域の割り当
てをワード境界に合わせることによって、ワードごとの
転送が可能になり、高速な描画データの転送を行なうこ
とができる。
容量の保持部を4つ以上設け、必要に応じて割り当てて
行くことにより、少容量のメモリを効率的に用いて描画
データをフレームメモリへ転送することができ、少容量
のメモリで高速な描画処理を行なうことができる。請求
項2に記載の発明のように保持部に対する領域の割り当
てをワード境界に合わせることによって、ワードごとの
転送が可能になり、高速な描画データの転送を行なうこ
とができる。
【0080】また、請求項3に記載の発明によれば、先
にデータ保持手段に描画された描画データを用い、適宜
修正してフレームメモリへの転送を行なうことによっ
て、データ保持手段への描画速度を向上させるととも
に、データ保持手段から転送単位ごとにフレームメモリ
へ描画データを転送することによって、画素ごとにフレ
ームメモリをアクセスする場合に比べて格段にアクセス
回数を減少させることができ、高速な描画処理を実現す
ることができる。
にデータ保持手段に描画された描画データを用い、適宜
修正してフレームメモリへの転送を行なうことによっ
て、データ保持手段への描画速度を向上させるととも
に、データ保持手段から転送単位ごとにフレームメモリ
へ描画データを転送することによって、画素ごとにフレ
ームメモリをアクセスする場合に比べて格段にアクセス
回数を減少させることができ、高速な描画処理を実現す
ることができる。
【図1】 本発明の線分描画装置の第1の実施の形態を
示すブロック図である。
示すブロック図である。
【図2】 本発明の線分描画装置の第1の実施の形態に
おける基準線走査部2、距離演算部3、法線ベクトル生
成部4、線分描画部5の具体例を示すブロック図であ
る。
おける基準線走査部2、距離演算部3、法線ベクトル生
成部4、線分描画部5の具体例を示すブロック図であ
る。
【図3】 本発明の線分描画装置の第1の実施の形態に
おける基本的な線分描画動作の説明図である。
おける基本的な線分描画動作の説明図である。
【図4】 法線ベクトル生成までの動作の一例の説明図
である。
である。
【図5】 移動距離演算部の動作の一例の説明図であ
る。
る。
【図6】 移動距離演算部の動作の一例を示すフローチ
ャートである。
ャートである。
【図7】 法線ベクトル生成から線分描画までの動作の
一例の説明図である。
一例の説明図である。
【図8】 描画する線分の具体例の説明図である。
【図9】 本発明の第1の実施の形態における描画され
た画素の格納および転送処理の一例を示すフローチャー
トである。
た画素の格納および転送処理の一例を示すフローチャー
トである。
【図10】 本発明の第1の実施の形態における描画さ
れた画素の格納および転送処理の具体的な過程の説明図
である。
れた画素の格納および転送処理の具体的な過程の説明図
である。
【図11】 本発明の第1の実施の形態における描画さ
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
【図12】 本発明の第1の実施の形態における描画さ
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
【図13】 本発明の第1の実施の形態における描画さ
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
【図14】 本発明の第1の実施の形態における描画さ
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
【図15】 本発明の第1の実施の形態における描画さ
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
【図16】 本発明の第1の実施の形態における描画さ
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
【図17】 本発明の第1の実施の形態における描画さ
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
れた画素の格納および転送処理の具体的な過程の説明図
(続き)である。
【図18】 本発明の第1の実施の形態において線幅が
1つの保持部に入りきらない場合の線分の一例の説明図
である。
1つの保持部に入りきらない場合の線分の一例の説明図
である。
【図19】 本発明の第1の実施の形態において線幅が
1つの保持部に入りきらない場合の描画および転送処理
の一例の説明図である。
1つの保持部に入りきらない場合の描画および転送処理
の一例の説明図である。
【図20】 本発明の線分描画装置の第2の実施の形態
を示すブロック図である。
を示すブロック図である。
【図21】 本発明の線分描画装置の第2の実施の形態
における具体的な動作の一例の説明図である。
における具体的な動作の一例の説明図である。
【図22】 本発明の線分描画装置の第2の実施の形態
における具体的な動作の一例の説明図(続き)である。
における具体的な動作の一例の説明図(続き)である。
【図23】 従来の線分描画方法の一例の説明図であ
る。
る。
1…初期値認識部、2…基準線走査部、3…距離演算
部、4…法線ベクトル生成部、5…線分描画部、6…演
算データ転送部、7…フレームメモリ、11…保持部制
御部、12…データ保持部、13…保持部座標演算部、
14…データ転送部、15…データ保持部初期化部、2
1…座標発生部、22…走査座標格納部、23…移動距
離演算部、24…線幅走査判定部、25…90゜回転
部、26…法線ベクトル格納部、27…基準線移動処理
部、28…画素抜け判定部、29…描画部、30…終了
条件判定部、41…描画画素修正部、42…保持部座標
演算部、43…保持部制御部、44…データ保持部、4
5…データ転送部。
部、4…法線ベクトル生成部、5…線分描画部、6…演
算データ転送部、7…フレームメモリ、11…保持部制
御部、12…データ保持部、13…保持部座標演算部、
14…データ転送部、15…データ保持部初期化部、2
1…座標発生部、22…走査座標格納部、23…移動距
離演算部、24…線幅走査判定部、25…90゜回転
部、26…法線ベクトル格納部、27…基準線移動処理
部、28…画素抜け判定部、29…描画部、30…終了
条件判定部、41…描画画素修正部、42…保持部座標
演算部、43…保持部制御部、44…データ保持部、4
5…データ転送部。
Claims (3)
- 【請求項1】 入力された情報から描画する線分の始点
および終点と該線分の線幅とを出力する初期値設定手段
と、該初期値設定手段から出力された始点と終点とを結
ぶ直線上の座標を生成する基準線発生手段と、該基準線
発生手段で生成された座標と前記始点との間の距離を演
算する距離演算手段と、該距離演算手段での演算結果と
前記基準線発生手段で生成した座標とを基に前記始点と
終点とを結ぶ直線に直交しかつ前記初期値設定手段から
出力された線分の線幅と等しい長さを有する画素列を生
成する法線ベクトル生成手段と、前記基準線発生手段で
生成された座標ごとに前記法線ベクトル生成手段で生成
された画素列を発生させる描画手段と、該描画手段によ
って発生した画素列を一時保持するための複数の保持部
を有するデータ保持手段と、描画された画像を格納する
フレームメモリと、前記保持部が対応する前記フレーム
メモリ上の位置を演算する保持部座標演算手段と、前記
描画手段によって得られた画素列の座標と前記保持部座
標演算手段による前記保持部の位置情報から前記保持部
を設定または選択する保持部制御手段と、データを格納
し終えた前記保持部から前記フレームメモリに順に転送
するデータ転送手段と、該データ転送手段によって転送
し終えた前記保持部をクリアするデータ保持部初期化手
段を有することを特徴とする線分描画装置。 - 【請求項2】 前記フレームメモリは1ワードに複数画
素を格納するように構成されており、前記保持部は前記
フレームメモリのワード境界に基づいてその位置が設定
され、前記データ転送手段はワードごとに転送を行なう
ことを特徴とする請求項1に記載の線分描画装置。 - 【請求項3】 入力された情報から描画する線分の始点
および終点と該線分の線幅とを出力する初期値設定手段
と、該初期値設定手段から出力された始点と終点とを結
ぶ直線上の座標を生成する基準線発生手段と、該基準線
発生手段で生成された座標と前記始点との間の距離を演
算する距離演算手段と、該距離演算手段での演算結果と
前記基準線発生手段で生成した座標とを基に前記始点と
終点とを結ぶ直線に直交しかつ前記初期値設定手段から
出力された線分の線幅と等しい長さを有する画素列を生
成する法線ベクトル生成手段と、前記基準線発生手段で
生成された座標ごとに前記法線ベクトル生成手段で生成
された画素列を発生させる描画手段と、該描画手段によ
って発生した画素列を一時格納するデータ保持手段と、
描画された画像を格納するフレームメモリと、前記デー
タ保持手段が対応する前記フレームメモリ上の位置を演
算する保持部座標演算手段と、新たに描画しようとする
画素列の座標とすでに前記データ保持手段に格納してい
る画素列の座標を比較及び修正して新たに描画しようと
する画素列と等しくさせる描画画素修正手段と、前記描
画手段で発生した画素列に基づいて前記データ保持手段
へのデータの格納または格納データの修正の終了判定を
行なう保持部制御手段と、前記データ保持手段に格納ま
たは修正し終えたデータを前記フレームメモリに転送す
るデータ転送手段を有することを特徴とする線分描画装
置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1732696A JP3496381B2 (ja) | 1996-02-02 | 1996-02-02 | 線分描画装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1732696A JP3496381B2 (ja) | 1996-02-02 | 1996-02-02 | 線分描画装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09212665A true JPH09212665A (ja) | 1997-08-15 |
JP3496381B2 JP3496381B2 (ja) | 2004-02-09 |
Family
ID=11940931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1732696A Expired - Fee Related JP3496381B2 (ja) | 1996-02-02 | 1996-02-02 | 線分描画装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3496381B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012165238A1 (ja) * | 2011-05-30 | 2012-12-06 | アイシン精機株式会社 | 描画装置、描画方法及びプログラム |
-
1996
- 1996-02-02 JP JP1732696A patent/JP3496381B2/ja not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012165238A1 (ja) * | 2011-05-30 | 2012-12-06 | アイシン精機株式会社 | 描画装置、描画方法及びプログラム |
CN103562965A (zh) * | 2011-05-30 | 2014-02-05 | 爱信精机株式会社 | 描画装置、描画方法及程序 |
JPWO2012165238A1 (ja) * | 2011-05-30 | 2015-02-23 | アイシン精機株式会社 | 描画装置、描画方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP3496381B2 (ja) | 2004-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR970008546B1 (ko) | 문자 또는 도형의 처리방법 | |
JP3496381B2 (ja) | 線分描画装置 | |
JP2634851B2 (ja) | 画像処理装置 | |
JP2982973B2 (ja) | パターン塗り潰し方法 | |
EP0392499B1 (en) | Apparatus for generating high-quality character pattern | |
JPH06162210A (ja) | 画像処理装置 | |
JP2770582B2 (ja) | 図形塗潰し装置 | |
JP3034140B2 (ja) | 文字生成方法及びその装置 | |
JP3555316B2 (ja) | 図形描画装置 | |
JPS63305478A (ja) | パタ−ン情報復元装置 | |
JP3731221B2 (ja) | 太線描画装置および太線描画方法 | |
JPH056439A (ja) | ベクトルデータ/イメージデータ変換方式 | |
JP3791203B2 (ja) | 画像処理装置 | |
JP2630843B2 (ja) | 直線描画方法及び装置 | |
JP3498478B2 (ja) | 図形描画装置 | |
JPS59188761A (ja) | 画像メモリの書き込み方式 | |
JP3089906B2 (ja) | 描画装置 | |
JP3645614B2 (ja) | 作画データの最適化手法 | |
JP2806790B2 (ja) | 文字発生装置およびその方法 | |
US7015923B2 (en) | Apparatus for painting figure | |
JPH04329482A (ja) | 画像回転処理方法およびその処理装置 | |
JP2782904B2 (ja) | 多角形塗りつぶし方式 | |
KR970002108B1 (ko) | 레이저 프린터의 비트맵 폰트 확대 방법 | |
JP3536894B2 (ja) | 図形処理装置 | |
JP2613653B2 (ja) | 画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071128 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081128 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091128 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |