(57)【特許請求の範囲】
【請求項１】
コンピュータで実行されるベクトルをキャラクタ化するためのキャラクタ変換方法であって、
合成ベクトルを読み出すステップと、
上記合成ベクトルを２点の座標で形成される単一ベクトルに分割するステップと、
上記各々の単一ベクトルの方向を判定するステップと、
上記方向に応じて予め設定されるキャラクタを記憶手段から読み出し、上記複数の単一ベクトル各々を該キャラクタで表現するステップと、
上記キャラクタで表現された複数の単一ベクトルの接続点を所定のキャラクタで上書きするステップと、
上記上書きされたベクトル出力するステップとを有し、
上記単一ベクトルの方向が０゜〜±４５゜の傾き角の場合、上記キャラクタで表現した時のＸ座標について終点から順次始点に向って対応するＹ座標を求め、該Ｙ座標が前に求めた座標から変化するとき、〔／〕又は〔＼〕を、同じ座標にあるとき、〔−〕をそれぞれの座標に割り当て、
上記単一ベクトルの方向が±４５°〜±９０°の傾き角の場合、上記キャラクタで表現した時のＹ座標について終点から順次始点に向って対応するＸ座標を求め、該Ｘ座標が前に求めた座標から変化するとき、〔／〕又は〔＼〕を、同じ座標であるとき、〔｜〕をそれぞれの座標に割り当てることを特徴とするベクトルデータのキャラクタ変換方法。
【請求項２】
前記キャラクタで上書きするステップは、前記合成ベクトル上の全ての屈曲点と全てのノードに対してキャラクタ〔＋〕を割り当てることを特徴とする請求項１に記載のベクトルデータのキャラクタ変換方法。
【請求項３】
前記判定するステップにおける判定に基づいて、前記単一ベクトルの方向を所定の方向まで角度変換を加えるステップをさらに有することを特徴とする請求項１又は２に記載のベクトルデータのキャラクタ変換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ベクトルデータを文字・記号等のキャラクタに変換する方法に関し、特に簡略地図あるいは図面等を生成する場合およびベクトルデータを表示システムに表示する場合に有効なベクトルデータのキャラクタ変換方法に関する。
【０００２】
【従来の技術】
例えば、液晶による簡易文字表示端末等では、文字・記号だけしか表示しないので、ベクトルで記述された形状は描画することができない。例えば、詳細地図はベクトルで形状を記述しているが、この詳細地図を簡易文字表示端末で表示するためには、ベクトルを文字・記号に変換する必要がある（キャラクタ変換）。この方法は、テレビジョンのラスタデータをベクトルのように描画する場合と類似している。
従来のキャラクタ変換方法としては、Ｂｒｅｓｅｎｈａｍ方式に代表されるディジタル描画アルゴリズムが実用化されていた（例えば、Ｗｉｌｌｉａｍ  Ｍ．Ｎｅｗｍａｎ  ａｎｄ  Ｒｏｂｅｒｔ  Ｆ．  Ｓｐｒｏａｌｌ著“Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ”ＭｃＧｒａｗ  Ｈｉｌｌ．Ｉｎｃ．（1979)参照)。このディジタル描画アルゴリズムを直接適用した場合、図２（上図）に示すように、原図形が左下と右上とを結ぶ直線に対しては、ｘ軸方向に４つのセル、ｙ軸方向に３つのセルをそれぞれ通過するので、キャラクタ変換を行うと、その右側に示した図のように、通過セルに対して単純に同じキャラクタ（ここでは、（−符号））を割り当てていく方法であった。図２（下図）の場合にも、同じようにして、ｘ軸方向に３つセル、ｙ軸方向に４つのセルをそれぞれ通過するので、キャラクタ変換を行うと、その右側に示した図のようになった（ここでは、｜符号に変換）。つまり、図２の上図の場合には、４行のうち２行にキャラクタ（−）が二重に割り当てられ、図２の下図の場合には、４列のうち２列にキャラクタ（｜）が二重に割り当てられることになる。
【０００３】
図６は、従来のキャラクタ変換の処理の流れを示す図である。
原図２０１のように、始点２１２を持つ右上りのベクトル２１１に対しては、図２０２のようにベクトルが右上りの６箇のセルを通過するので、通過するセル２１４に対して特定の記号（ここでは、（−）符号）２１５を割り当て、変換後の図２０３のようにキャラクタ変換を行う。また、原図２０４のように、始点２１２を持つ右下りのベクトル２１１に対しては、図２０５のようにベクトルが右下りの６箇のセル２１４を通過するので、通過するセル２１４に対して特定の記号を割り当て、変換後の図２０６のようにキャラクタ変換を行う。
このように、従来の方法では、任意の角度を有する直線の場合、必ず複数のセルを通過するため、特定のキャラクタを隣接するセルにも重複して割り当てる必要がある。その結果、０．１ｍｍ程度の間隔を有するラスター表示装置の場合には殆んど影響はないが、通常使用される８×８ピクセルによるキャラクタ表示装置の場合には重複したキャラクタが太く見えてしまい、見難いという問題があった。
【０００４】
【発明が解決しようとする課題】
前述のように、従来のキャラクタ変換方法では、通過セルに対して単純に同じキャラクタを割り当てていたので、キャラクタ描画の線が一部太く見える箇所ができてしまい、見難くなるという問題があった。つまり、従来のキャラクタ変換では、あまり美しい図形は生成されなかった。
そこで本発明の目的は、このような従来の課題を解決し、ベクトルをキャラクタに変換した場合でも、太く見える部分がなく、キャラクタ表示システムに表示することができ、かつ形状がつぶれることなく美しい結果の図形が得られるベクトルデータのキャラクタ変換方法を提供することにある。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、本発明によるベクトルデータのキャラクタ変換方法では、合成ベクトルを読み出すステップと、上記合成ベクトルを２点の座標で形成される単一ベクトルに分割するステップと、上記各々の単一ベクトルの方向を判定するステップと、
上記方向に応じて予め設定されるキャラクタを記憶手段から読み出し、上記複数の単一ベクトル各々を該キャラクタで表現するステップと、上記キャラクタで表現された複数の単一ベクトルの接続点を所定のキャラクタで上書きするステップと、上記上書きされたベクトル出力するステップとを有し、上記単一ベクトルの方向が０゜〜±４５゜の傾き角の場合、上記キャラクタで表現した時のＸ座標について終点から順次始点に向って対応するＹ座標を求め、該Ｙ座標が前に求めた座標から変化するとき、〔／〕又は〔＼〕を、同じ座標にあるとき、〔−〕をそれぞれの座標に割り当て、上記単一ベクトルの方向が±４５°〜±９０°の傾き角の場合、上記キャラクタで表現した時のＹ座標について終点から順次始点に向って対応するＸ座標を求め、該Ｘ座標が前に求めた座標から変化するとき、〔／〕又は〔＼〕を、同じ座標であるとき、〔｜〕をそれぞれの座標に割り当てることを特徴とする。
また、前記キャラクタで上書きするステップは、前記合成ベクトル上の全ての屈曲点と全てのノードに対してキャラクタ〔＋〕を割り当てることも特徴としている。
さらに、前記判定するステップにおける判定に基づいて、前記単一ベクトルの方向を所定の方向まで角度変換を加えるステップをさらに有することも特徴としている。
これにより、形状がつぶれることなく、円滑で美しい曲線の図形に変換することができ、表示システムに表示することができる。
【０００６】
【発明の実施の形態】
以下、本発明の実施例を、図面により詳細に説明する。
図１は、本発明の動作原理を示すベクトルキャラクタ化のモデル設定図である。
原図形として、領域サイズｗ×ｈを持ち、始点Ｘｓ，Ｙｓおよび終点Ｘｅ，Ｙｅ（ただし、Ｘｓ≦Ｘｅ）のベクトルに対して、本発明のキャラクタ変換を行うと、領域サイズｎ×ｍを持ち、始点ＩＸｓ，ＩＹｓおよび終点ＩＸｅ，ＩＹｅの複数の文字・記号列に変換される。変換される文字・記号は任意のものでよいが、ここでは一例として割算記号（／）と負記号（−）を用いる。なお、ここでは、記号（−）と（＼）が交互に記述されているが、後述のように本発明のアルゴリズムを実行した結果、このような結果になっただけであって、いずれの記号になるかは演算結果に従って決定される。
図３は、図２の従来方法による変換結果と比較して、本発明のアルゴリズムに従って変換した場合のキャラクタ変換の記号列である。これから明らかなように、ベクトルが通過する全てのセルに記号を割り当てることなく、上図の場合には同じ行で重複することなく、１行に１つの記号が割り当てられ（−と／）、下図の場合には同じ列で重複することなく、１列に１つの記号が割り当てられる（−と＼）。
【０００７】
図４は、本発明のキャラクタ割り当てアルゴリズムの一例を示す説明図である。
先ず、図形の数式化を行い、始点（Ｘｓ，Ｙｓ）、終点（Ｘｅ，Ｙｅ）間のベクトルの数式を、ｙ＝ａｘ＋ｂで表わす。ここで、ａ＝（Ｙｅ−Ｙｓ）／（Ｘｅ−Ｘｓ），ｂ＝Ｙｓ−ａ・Ｘｓである。
キャラクタ割り当てアルゴリズムは、下記の４つに分けて処理される。
（１）０゜＜傾き角≦４５゜の場合、キャラクタ変換した時のＸ座標について対応するＹ座標を求める。次に、ＩＸ＝ＩＸｅ（終点）からＩＸｓ（始点）まで−１ずつ減少させ、ＩＹ＝（ａ・ＩＸ・Ｃｘ＋ｂ）／Ｃｙを計算し、もしＩＹが変化する場合には、キャラクタ‘／’を割り当て、その他の場合には、‘−’を割り当てる。
（２）−４５゜＜傾き角＜０゜の場合、キャラクタ変換した時のＸ座標について対応するＹ座標を求める。次に、ＩＸ＝ＩＸｓ（始点）からＩＸｅ（終点）まで１ずつ増加させ、ＩＹ＝（ａ・ＩＸ・Ｃｘ＋ｂ）／Ｃｙを計算し、もしＩＹが変化する場合には、キャラクタ‘＼’を割り当て、その他の場合には、‘−’を割り当てる。
（３）４５゜＜傾き角＜９０゜の場合、キャラクタ変換した時のＹ座標について対応するＸ座標を求める。次に、ＩＹ＝ＩＹｅ（終点）からＩＹｓ（始点）まで−１ずつ減少させ、ＩＸ＝（ＩＹ・Ｃｙ−ｂ）／ａ）／Ｃｘを計算し、もしＩＸが変化する場合には、キャラクタ‘／’を割り当て、その他の場合には、‘｜’を割り当てる。
（４）−９０゜＜傾き角＜−４５゜の場合、キャラクタ変換した時のＹ座標について対応するＸ座標を求める。次に、ＩＹ＝ＩＹｓ（始点）からＩＹｅ（終点）まで１ずつ増加させ、ＩＸ＝（ＩＹ・Ｃｙ−ｂ）／ａ）／Ｃｘを計算し、もしＩＸが変化する場合には、キャラクタ‘＼’を割り当て、その他の場合には、‘｜’を割り当てる。
【０００８】
図５は、本発明の１つの例である図１に対して、図４のアルゴリズムを適用した場合の説明図である。
原図形１０１として、領域サイズｗ×ｈを持ち、始点Ｘｓ，Ｙｓおよび終点Ｘｅ，Ｙｅ（ただし、Ｘｓ≦Ｘｅ）のベクトルに対して、本発明のキャラクタ変換を行い、領域サイズｎ×ｍを持ち、始点ＩＸｓ，ＩＹｓおよび終点ＩＸｅ，ＩＹｅの複数の文字・記号列に変換する。ここで、ＩＸｓ＝Ｘｓ／Ｃｘ，ＩＹｓ＝Ｙｓ／Ｃｙ、ＩＸｅ＝Ｘｅ／Ｃｘ，ＩＹｅ＝Ｙｅ／Ｃｙ、Ｃｘ＝ｗ／ｎ，Ｃｙ＝ｈ／ｍである。
図７〜図１３は、本発明に基づく一本の直線をキャラクタ変換する際の処理の流れを示すＰＡＤ図、およびその中の詳細の流れを示すＰＡＤ図である。
図７において、先ずＸｓ≦Ｘｅ（すなわち、ＩＸｓ≦ＩＸｅ）となるように設定しておく（ステップ３０１）。次に、ｘ軸及びｙ軸に平行でない場合（ＩＸｓ≠ＩＸｅ∧ＩＹｓ≠ＩＹｅ）には（ステップ３０２）、直線の式（ｙ＝ａｘ＋ｂ）を求める（ステップ３０３）。次に、０゜＜傾き角≦４５゜の場合（ステップ３０４）、処理（１）を実施する（ステップ３０５）。また、−４５゜＜傾き角＜０゜の場合（ステップ３０６）、処理（２）を実施例する（ステップ３０７）。
次に、４５゜＜傾き角＜９０゜の場合（ステップ３０８）、処理（３）を実施する（ステップ３０９）。次に、−９０゜＜傾き角＜−４５゜の場合（ステップ３１０）、処理（４）を実施する（ステップ３１１）。一方、ｘ軸に平行の場合には（ステップ３１２）、処理（５）を実施する（ステップ３１３）。また、ｙ軸に平行の場合には（ステップ３１４）、処理（６）を実施する（ステップ３１５）。
【０００９】
図８においては、処理（１）の詳細アルゴリズムを示している。
先ず、終点（ＩＸｅ，ＩＹｅ）に対して、キャラクタ‘／’を割り当てる（ステップ３２１）。次に、ＩＸ＝ＩＸｅ（終点）からＩＸｓ（始点）まで−１ずつ減少させ（ステップ３２２）、ＩＹ＝（ａ・ＩＸ・Ｃｘ＋ｂ）／Ｃｙを計算し、ＩＸに対応するＩＹを求める（ステップ３２３）。もしＩＹが変化する場合には（ステップ３２４）、キャラクタ‘／’を割り当て（ステップ３２５）、その他の場合には、‘−’を割り当てる（ステップ３２６）。
図９においては、処理（２）の詳細アルゴリズムを示している。
先ず、始点（ＩＸｓ，ＩＹｓ）に対してキャラクタ‘＼’を割り当てる（ステップ３３１）。次に、ＩＸ＝ＩＸｓ＋１（始点＋１）からＩＸｅ（終点）まで１ずつ増加させ（ステップ３３２）、ＩＹ＝（ａ・ＩＸ・Ｃｘ＋ｂ）／Ｃｙを計算し、ＩＸに対応するＩＹを求める（ステップ３３３）。もしＩＹが変化する場合には（ステップ３３４）、キャラクタ‘＼’を割り当て（ステップ３３５）、その他の場合には、‘−’を割り当てる（ステップ３３６）。
図１０においては、処理（３）の詳細アルゴリズムを示している。
先ず、終点（ＩＸｅ，ＩＹｅ）に対して、キャラクタ‘／’を割り当てる（ステップ３４１）。次に、ＩＹ＝ＩＹｅ＋１（終点＋１）からＩＹｓ（始点）まで−１ずつ減少させ（ステップ３４２）、ＩＸ＝（ＩＹ・Ｃｙ−ｂ）／ａ）／Ｃｘを計算し、ＩＹに対応するＩＸを求める（ステップ３４３）。もしＩＸが変化する場合には（ステップ３４４）、キャラクタ‘／’を割り当て（ステップ３４５）、その他の場合には、‘｜’を割り当てる（ステップ３４６）。
【００１０】
図１１においては、処理（４）の詳細アルゴリズムを示している。
先ず、始点（ＩＸｓ，ＩＹｓ）に対して、キャラクタ‘＼’を割り当てる（ステップ３５１）。次に、ＩＹ＝ＩＹｓ（始点）からＩＹｅ（終点）まで１ずつ増加させ（ステップ３５２）、ＩＸ＝（ＩＹ・Ｃｙ−ｂ）／ａ）／Ｃｘを計算し、ＩＹに対応するＩＸを求める（ステップ３５３）。もしＩＸが変化する場合には（ステップ３５４）、キャラクタ‘＼’を割り当て（ステップ３５５）、その他の場合には、‘｜’を割り当てる（ステップ３５６）。
図１２においては、処理（５）の詳細アルゴリズムを示している。
先ず、ＩＹ＝ＩＹｓ（始点）からＩＹｅ（終点）までＩＹを１ずつ増加させる（ステップ３６１）。次に、（ＩＸｓ，ＩＹ）に対してキャラクタ‘｜’を割り当てる（ステップ３６２）。
図１３においては、処理（６）の詳細アルゴリズムを示している。
先ず、ＩＸ＝ＩＸｓ（始点）からＩＸｅ（終点）までＩＸを１ずつ増加させる（ステップ３７１）。次に、（ＩＸ，ＩＹｓ）に対してキャラクタ‘−’を割り当てる（ステップ３７２）。
【００１１】
図１４〜図１９は、それぞれ図８〜図１３、つまり処理（１）〜処理（６）の処理結果を示す図である。
すなわち、図１４では、ＩＹ＝（ａ・ＩＸ・Ｃｘ＋ｂ）／Ｃｙを計算し、ＩＸに対応するＩＹを求めると、ＩＸの３回目の減少に対する計算でのみＩＹが変化しないので、そこだけ‘−’が割り当てられ、他のＩＸに対しては‘／’を割り当てる。
図１５では、ＩＹ＝（ａ・ＩＸ・Ｃｘ＋ｂ）／Ｃｙを計算し、ＩＸに対応するＩＹを求めると、ＩＸの２回目の増加に対する計算でのみＩＹが変化しないので、そこだけ‘−’が割り当てられ、他のＩＸに対しては‘＼’が割り当てられる。
また、図１６では、ＩＸ＝（ＩＹ・Ｃｙ−ｂ）／ａ）／Ｃｘを計算し、ＩＹに対応するＩＸを求めると、ＩＹの３回目の減少に対する計算でのみＩＸが変化しないので、そこだけ‘｜’が割り当てられ、他のＩＹに対しては‘／’が割り当てられる。
また、図１７では、ＩＸ＝（ＩＹ・Ｃｙ−ｂ）／ａ）／Ｃｘを計算し、ＩＹに対応するＩＸを求めると、ＩＹの２回目の減少に対する計算でのみＩＹが変化しないので、そこだけ‘｜’が割り当てられ、他のＩＹに対しては‘＼’が割り当てられる。
次に、図１８では、ＩＹ＝ＩＹｓ（始点）からＩＹｅ（終点）までＩＹを１ずつ増加させてもＩＸは変化しないので、（ＩＸｓ，ＩＹ）に対してキャラクタ‘｜’を割り当てる。
図１９では、ＩＸ＝ＩＸｓ（始点）からＩＸｅ（終点）までＩＸを１ずつ増加させてもＩＹは変化しないので、（ＩＸ，ＩＹｓ）に対してキャラクタ‘−’を割り当てる。
【００１２】
図２０は、ネットワーク図の概念を説明するための図である。
図において、４０１はネットワーク図の領域であり、４０２は終端点、４０３は直線相互間を接続する屈曲点、４０４は直線が交差する交差点、つまりノード、４０５はベクトルをキャラクタ変換した直線部分である。
図２０に示すようなネットワークに対しても、順次、左側または右側から本発明における単一ベクトルのキャラクタ変換アルゴリズムを実行し、ネットワーク全体のキャラクタ化を行う。次に、屈曲点位置４０３において不連続部分が発生するため、少しでも滑らかな感じを出すために、‘＋’記号を上書きする。
さらに、全てのノード４０４（交差点）に対しても‘＋’記号を上書きする。ただし、‘＋’記号でなければならない必要性はなく、‘.'等の他の記号でも構わない。
図２１は、図２０における上書き処理のアルゴリズムを示すＰＡＤ図である。
先ず、ネットワーク図を構成する全てのリンクに対して（ステップ５０１）、リンク上の全ての直線について（ステップ５０２）、直線のキャラクタ変換（図７のステップ３０１〜３１５）を実施する（ステップ５０３）。次に、ネットワーク図を構成する全てのリンクに対して（ステップ５０４）、リンク上の全ての屈曲点について（ステップ５０５）、キャラクタ‘＋’を割り当てる（ステップ５０６）。次に、ネットワーク図を構成する全てのノードについて（ステップ５０７）、キャラクタ‘＋’を割り当てる（ステップ５０８）。
【００１３】
本実施例では、ベクトルの傾き角度を判定して、処理（１）〜（６）の１つに割り振って実行するのであるが、予め文字・記号の表示可能な特定の方向となるように予め角度変換を加えることにより、処理（１）のみあるいは処理（２）のみを実行するだけで簡単にキャラクタ変換することも可能である。すなわち、原図のベクトルの角度まで変換して、単一なアルゴリズムとすることにより、さらに短時間でネットワーク図等を表示システムに表示することができる。
【００１４】
【発明の効果】
以上説明したように、本発明によれば、ベクトルをキャラクタに変換した場合でも、太く見える部分がなく、表示システムに表示することができ、かつ形状がつぶれることなく美しい結果の図形を短時間で得られる。
【図面の簡単な説明】
【図１】本発明のベクトルデータのキャラクタ変換方法を示すモデル設定の図である。
【図２】従来の単純なキャラクタ変換方法の説明図である。
【図３】図２を本発明で変換した場合の変換結果を示す図である。
【図４】本発明におけるキャラクタ割り当てアルゴリズムを示す説明図である。
【図５】図１におけるベクトルデータを図４のアルゴリズムによりキャラクタ変換した結果の図である。
【図６】従来におけるキャラクタ変換の処理の流れを示す図である。
【図７】本発明の一実施例を示す一本の直線をキャラクタ変換する際の処理の流れを示すＰＡＤ図である。
【図８】図７における処理（１）の流れを示すＰＡＤ図である。
【図９】図７における処理（２）の流れを示すＰＡＤ図である。
【図１０】図７における処理（３）の流れを示すＰＡＤ図である。
【図１１】図７における処理（４）の流れを示すＰＡＤ図である。
【図１２】図７における処理（５）の流れを示すＰＡＤ図である。
【図１３】図７における処理（６）の流れを示すＰＡＤ図である。
【図１４】処理（１）によるキャラクタ変換を説明するための図である。
【図１５】処理（２）によるキャラクタ変換を説明するための図である。
【図１６】処理（３）によるキャラクタ変換を説明するための図である。
【図１７】処理（４）によるキャラクタ変換を説明するための図である。
【図１８】処理（５）によるキャラクタ変換を説明するための図である。
【図１９】処理（６）によるキャラクタ変換を説明するための図である。
【図２０】ネットワーク図の概念を説明するための図である。
【図２１】本発明に基づくネットワーク図をキャラクタ変換する際の処理の流れを示すＰＡＤ図である。
【符号の説明】
１０１…原図形、１０２…キャラクタ変換結果、１０３…原図形の座標、
１０４…キャラクタ変換結果の座標とサイズ、
１０５…１０３と１０４の関係式、２０１，２０４…原図形、
２０２，２０５…離散化による途中経過、２１２…端点、２１４…通過セル、
２０３，２０６…キャラクタ変換結果、２１１…直線、２１５…キャラクタ、
２１３…離散化メッシユ、３８１，３８３，３８５，３８７，３８９…原図形、
３９１…原図形、３８４，３８８，３９２…キャラクタ変換結果、
４０１…ネットワーク図、４０２…終端点、４０３…屈曲点、４０４…ノード、
４０５…リンク、３８２，３８６，３９０…キャラクタ変換結果。
【図１】
0004117810.tif 000002
【図２】
0004117810.tif 000003
【図３】
0004117810.tif 000004
【図４】
0004117810.tif 000005
【図５】
0004117810.tif 000006
【図６】
0004117810.tif 000007
【図７】
0004117810.tif 000008
【図８】
0004117810.tif 000009
【図９】
0004117810.tif 000010
【図１０】
0004117810.tif 000011
【図１１】
0004117810.tif 000012
【図１２】
0004117810.tif 000013
【図１３】
0004117810.tif 000014
【図１４】
0004117810.tif 000015
【図１５】
0004117810.tif 000016
【図１６】
0004117810.tif 000017
【図１７】
0004117810.tif 000018
【図１８】
0004117810.tif 000019
【図１９】
0004117810.tif 000020
【図２０】
0004117810.tif 000021
【図２１】
0004117810.tif 000022