(57)【特許請求の範囲】
【請求項１】
描画する面パターンにおける透過色のパターンを解析する面パターン解析手段と、
面パターン解析手段から得られる２つの面パターンの透過色のパターンを用い、
２つの面パターンともに透過色の場合には、面の描画を行わず、
第１の面パターンが透過色で第２の面パターンが特定色の領域を含むか或いは２つの面パターンで特定色の領域が同じ場合には、第２の面パターンにより地図に表示する図形の面を描画する第１の描画手段と、
第１の面パターンが透過色の領域を含まず、第２の面パターンが透過色の領域を含む場合には、面パターン生成手段により当該透過色の領域を第１の面パターンの特定色で置き換えた第２の面パターンを用いて地図に表示する図形の面を描画する第２の面描画手段と、
他の場合は、各面パターンで順に地図に表示する図形の面を描画する第３の面描画手段とを備えること
を特徴とするグラフィック表示装置。
【請求項２】
請求項１に記載のグラフィック表示装置において、描画する面パターンが全面塗りつぶしで、かつ枠の色が面の色と一致するかを判定する枠描画判定手段と、枠描画判定手段で全面塗りつぶしでないかまたは色が一致しないと判定されたときにのみ地図に表示する図形の枠を描画する枠描画手段とを備えること
を特徴とする請求項１に記載のグラフィック表示装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、線や面，文字といった図形情報を表示するグラフィックス表示装置に関し、特に地図をより高速に、かつ高い品質で表示するグラフィックス表示装置に関する。
【０００２】
【従来の技術】
グラフィックス表示装置は、線や面，文字といった図形を、与えられた属性で、与えられた位置に、指定された順番で表示することにより、ディスプレイ上に表示する装置で、その構成や動作原理は“コンピュータ  グラフィックス”    （“Ｃｏｍｐｕｔｅｒ    Ｇｒａｐｈｉｃｓ”），Ｆｏｌｅｙ，ｖａｎ  Ｄａｍ，  Ｆｅｉｎｅｒ，  Ｈｕｇｈｅｓ：Ａｄｄｉｓｏｎ−ＷｅｓｌｅｙＰｕｂｌｉｓｈｉｎｇ  Ｃｏｍｐａｎｙに詳細に述べられている。従来、グラフィックス表示装置では以下の方法で表示を行っていた。
【０００３】
第１に、幅のある線の描画では、ペンと呼ばれる矩形ないし円形のイメージを、始点から終点に移動させることで実現していた。ここでペンの幅及び高さが、描画する線の幅に対応する。
【０００４】
第２に、複数の面パターンを用い同一形状の面を描画するといった要求では、指定された順に指定された面パターンで面描画を実行していた。
【０００５】
第３に、面の枠を描画する処理では、要求に従い、常に枠を描画するように処理していた。
【０００６】
第４に、縁取り文字といった装飾文字の表示では、全ての文字を装飾文字で表示するように処理していた。
【０００７】
第５に、文字を回転処理する方法として２種類存在していた。第１に、文字の描画開始座標を座標変換し、座標変換された座標値より文字列は常に上向きになるように表示する方法で、第２に文字を構成する画素の座標を全て座標変換することで、文字列自身も回転表示する方法である。
【０００８】
第６に、回転処理を実施する前に不要なデータをクリップ処理で削除することは実施していなかった。
【０００９】
第７に、スクロール実行時に差分描画で必要な表示面を生成していたときに、スクロールが停止しても、再度全面を描画することは行っていなかった。
【００１０】
【発明が解決しようとする課題】
従来のグラフィックス表示装置では、線や面，文字といった図形を高速、かつ高品位に表示する上で以下の課題があった。
【００１１】
第１に、１ドット幅からｎドット幅の折れ線の表示において、折れ線の曲がり角で画素の欠落が発生することなく表示しようとすると、線の表示速度が低下してしまうという課題があった。一方、２，３ドット線幅といった頻繁に描画要求が発生する折れ線を高速に表示する方法では、線幅を広げたときに折れ線の曲がり角で画素が欠落するという課題があった。
【００１２】
第２に、同一形状の面を、複数の面パターンを用いて面描画しなければならないという要求において、従来は与えられた面パターンの数だけそれぞれの面パターンに対し面描画を実行する必要があり、高速性に欠けるという課題があった。第３に、面の縁に枠を描画する面描画において、常に枠描画を実施していたため、枠描画の処理に要する時間だけ処理速度が低下するという課題があった。
【００１３】
第４に、縁取り文字やといった装飾文字を表示する場合に、文字の種別や表現する文字内容によらず、一意に装飾文字での表示を行っていたため、かえって表示品質を落としてしまう場合があった。
【００１４】
第５に、線や面といった背景に文字を重ねて表示するときに、それら図形を回転し表示するような用途では、回転前は背景と文字が重なっていたものが、回転後は背景と文字が重ならなくなってしまい、文字列が何を指し示しているかわからなくなるといった課題があった。
【００１５】
第６に、線や面といった背景と文字などの図形を回転し表示する用途では、必要な図形データを回転処理の前にクリップ処理で削除することなく処理していたため、回転処理の為の座標変換処理の負荷が重くなり、処理速度が遅くなるという課題があった。
【００１６】
第７に、スクロール表示等を実施する場合において、高速に処理を実行する為に、既に表示されている領域はそのまま残し、新たに表示する必要のある領域のみ図形を生成する差分描画方式があるが、処理途中で発生する量子化誤差等の要因で、境界上に画素抜けや画素の重なりが発生し、表示品質を劣化させるという課題があった。
【００１７】
本発明の目的は、地図等を表示するグラフィックス表示装置において、線，面，文字を高速かつ高品位に表示するグラフィックス表示装置を提供することにある。
【００１８】
【課題を解決するための手段】
第１の問題を解決するため、線幅の狭い線と線幅の広い線につき、太線を表現する始点，終点の点の形状を変化させるような手段を用いる。さらに、線の傾きに応じて始点，終点の点の形状を変化させるような手段を用いる。
【００１９】
第２の問題を解決するため、複数のパターンを組み合わせた面パターンを生成し、その面パターンを用いて面を塗りつぶすような手段を用いる。
【００２０】
第３の問題を解決するため、枠を描画する必要のある面のパターン，色を調べ、面パターンがなく、かつ面の色が枠の色と等しい場合には枠描画をスキップするような手段を用いる。
【００２１】
第４の問題を解決するため、装飾文字での表示を要求された文字が、複数の文字の集合で一つの文字を表すか、また複数の文字の間で表示が重なる文字があるかを判定し、解読した文字を装飾しない文字で表示するような手段を用いる。
【００２２】
第５の問題を解決するため、文字の重心の座標値を求め、その座標値を回転等の座標変換し、座標変換された座標値が文字の重心になるように表示する手段を用いる。
【００２３】
第６の問題を解決するため、回転処理をする前に実際に描画する必要のある領域を決定し、その領域に外接する矩形領域でプレクリップ処理を行うような手段を用いる。
【００２４】
第７の問題を解決するため、スクロール要求が停止したときに、表示されている領域全面を再度描画するような手段を用いる。
【００２５】
【作用】
第１の手段により、線幅によって異なる始点，終点の点の形状で表示されるように作用する。
【００２６】
第２の手段により、複数回の面描画が１回の面描画に縮退するように作用する。
【００２７】
第３の手段により、面の形状やパターンにより、枠描画がスキップされるように作用する。
【００２８】
第４の手段により、複数の文字の集合で一つの文字を表すか、また複数の文字の間で表示が重なる文字では、文字への装飾がなされないように作用する。
【００２９】
第５の手段により、線や面といった背景と文字が回転処理された場合でも重なって表示されるように作用する。
【００３０】
第６の手段により、回転といった座標変換を実施するまえにプレクリップ処理で不要なデータが削除されるように作用する。
【００３１】
第７の手段により、スクロール停止したときに全面が再描画されるように作用する。
【００３２】
【実施例】
以下図面を参照して、本発明によるグラフィックス表示装置をナビゲーション装置に適用した一実施例を説明する。
【００３３】
図１は、本発明を適用した移動体ナビゲーション装置の一構成例である。
【００３４】
以下ナビゲーション装置の各構成ユニットについて説明する。演算処理部１は６〜９の各種センサから出力される情報を基に現在位置を検出し、得られた現在位置情報から表示に必要な地図情報を地図記憶装置３から読み込むと共に、地図データをグラフィックス展開し、そこに現在地マークを重ねディスプレイ２へ表示したり、ユーザから指示された目的地と現在地を結ぶ最適な道路を選択し、音声入出力装置４やディスプレイ２を用いてユーザを誘導する、等といった様々な処理を行う中心的なユニットである。ディスプレイ２は、演算処理部１で生成されたグラフィックス情報を表示するユニットで、ＣＲＴや液晶ディスプレイで構成される。また演算処理部とディスプレイ間の信号Ｓ１は、ＲＧＢ信号やＮＴＳＣ（Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｃｏｍｍｉｔｔｅｅ）信号で接続するのが一般的である。地図記憶装置３は、ＣＤ−ＲＯＭやＩＣカードといった大容量記憶媒体で構成され、必要とする地図データを読み出し／書き込む処理を行う。また音声入出力装置４は、演算処理部１で生成したユーザへのメッセージを音声信号に変換し出力すると共に、ユーザが発した声を認識し演算処理部１にその内容を転送する処理を行う。入力装置５は、ユーザからの指示を受け付けるユニットで、特にナビゲーション装置では、スクロールキー，縮尺変更キー，角度変更キーなどのハードスイッチ，ジョイスティック，ディスプレイ上に貼られたタッチパネルなどで構成される。また移動体ナビゲーションで位置を検出するために使用するセンサは、車輪の円周と計測される車輪の回転数の積から距離を測定し、さらに対となる車輪の回転数の差から移動体が進む角度を計測する車輪速センサ６，地球が保持している磁場を検知し移動体が向いている方角を検出する地磁気センサ７，光ファイバジャイロや振動ジャイロで構成され移動体が回転した角度を検出するジャイロ８，ＧＰＳ衛星からの信号を受信し移動体とＧＰＳ衛星間の距離と距離の変化率を３個以上の衛星に対して測定することで移動体の現在位置，進行方向及び進行方位を測定するＧＰＳ受信装置９で構成される。また、道路の渋滞，工事，通行止め情報や駐車場情報といった交通情報を発するビーコン送信機やＦＭ多重放送からの信号を受信する交通情報受信装置１０を備える。さらに、車両の様々な情報、例えばドアの開閉情報，点灯しているライトの種類と状況，エンジンの状況や故障診断結果などを受ける車内ＬＡＮ装置１１を備える。
【００３５】
図２は処理演算部のハードウェア構成について説明した図である。
【００３６】
以下各構成要素について説明する。演算処理部１は、各デバイス間がバス及びアドレス線Ｓ２１で接続された構成である。各構成要素は、地図の描画，数値演算及び各デバイスを制御するといった様々な処理を実行するＣＰＵ２１，地図情報やビットマップに展開した地図データ，演算データを格納するＲＡＭ２２，プログラムやデータを格納するＲＯＭ２３，高速にメモリとメモリ間及びメモリと各デバイス間のデータ転送を実行するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）２４，ＲＡＭ２２にビットマップ展開した地図の画素データを受け取りＶＲＡＭ２６へ格納するといった処理を実行すると共に、１秒間に６０回の割合でＶＲＡＭに格納された地図の画素データを読み込み、カラーパレット２７に転送するという表示制御を実行する表示ＡＳＩＣ２５，ビットマップ展開した地図の画素データを表示することを目的に画素データを記憶するＶＲＡＭ２６，ビットマップ展開した地図の画素データをＲＧＢアナログ信号に変換するカラーパレット２７，アナログ信号をデジタル信号に変換するＡ／Ｄ変換器２８，シリアル信号をバスに同期したパラレル信号に変換するＳＣＩ（Ｓｅｒｉａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）２９，パラレル信号と同期をとりバスＳ２１に信号を供給するＰＩＯ３０，パルス信号を積分するカウンター３１、及び所定の周期のパルス信号を発生させるＩＴＵ（Ｉｎｔｅｇｒａｔｅｄ  Ｔｉｍｅｒ  Ｐｕｌｓｅ  Ｕｎｉｔ）３２で構成される。ここで、各デバイス間を結ぶバス及びアドレス線Ｓ２１は、表示ＡＳＩＣ２５，ＶＲＡＭ２６，カラーパレット２７を結ぶバス及びアドレス線Ｓ２２と独立しているが、これはＳ２２の表示処理に要する負荷が重いため、Ｓ２１のスループットを向上させることを目的に独立させている。また、信号線Ｓ２３は、ＩＴＵ３２で生成した表示用の垂直同期信号、及び水平同期信号である。
【００３７】
図３はグラフィックス表示部のハードウェア構成について説明した図である。
以下各構成要素について説明する。ＦＩＦＯ４１は、表示ＡＳＩＣ２５に転送されるビットマップに展開した地図の画素データをＶＲＡＭ２６へ転送する前に一時的に保存することで、バスＳ２１からＳ２２へデータを送り込む際にデータの欠落が発生しないように動作する。表示制御ロジック４２は、垂直同期信号、及び水平同期信号Ｓ２３を用い、それぞれの同期信号に同期してＶＲＡＭ２６から画素データを読み込み、カラーパレット２７へ画素データを転送する。パレットＲＡＭ４３には、画素データの番号に対応するＲＧＢ各色の輝度情報が格納されている。Ｄ／Ａ変換器４４は前記デジタル化されている輝度情報をアナログ信号に変換するように動作する。
【００３８】
次に図３に示すグラフィックス表示部の動作について説明する。このグラフィックス表示部は、表示のみ行うモードと、表示と転送を同時に実行するモードの２モードで動作する。まず表示のみ行うモードでは、垂直同期信号、及び水平同期信号に同期してＶＲＡＭ２６内の所定アドレスから画素データを読み出す。このようにして読み出された画素データが、パレットＲＡＭ４３で対応するＲＧＢ各輝度情報に変換され、さらにＤ／Ａ変換器４４でデジタル信号からアナログ信号に変換しディスプレイ２に信号が送られる。上記処理を垂直同期信号に同期して１秒間に６０回の割合で実行することで表示がなされる。
【００３９】
次に、表示と転送を同時に実行するモードでは、垂直同期信号、及び水平同期信号に同期してＶＲＡＭ２６内の所定アドレスから画素データを読み出すと共に、    ＦＩＦＯ４１に転送されている画素データのアドレスがＶＲＡＭから読み出したデータのアドレスと一致するか判定する。アドレスが一致している場合は、ＦＩＦＯに蓄えられていた画素データを対応するアドレスのＶＲＡＭへ書き込むと共に、その画素データをカラーパレットに送り込む。またアドレスが一致していない場合は、表示のみ行うモードと同様に動作する。このようにして読み出された画素データが、パレットＲＡＭ４３で対応するＲＧＢ各輝度情報に変換され、さらにＤ／Ａ変換器４４でデジタル信号からアナログ信号に変換しディスプレイ２に信号が送られる。上記処理を垂直同期信号に同期して１秒間に６０回の割合で実行することで表示がなされる。
【００４０】
次に、地図の描画手法につき図４及び図１６を用い具体的に説明する。
【００４１】
まず、ユーザからの要求をもとにディスプレイ２に表示されている画面の全領域を表示し直す全体領域描画かを判定する（ステップ１００１）。例えば、ユーザが縮尺変換や視野方向の更新、あるいは地図以外の表示から地図表示を求めた場合等は、これまで表示していた地図データを活用できないため全体領域描画が必要になる。全体地図描画と判定された場合は、全体描画領域決定手段１においてディスプレイ２に地図を表示するのに必要十分な地図領域を決定し（ステップ１００２）、地図描画手段（ステップ１００３）にて地図を描画するように動作する。このようにして描画された地図の画素データはＲＡＭ２２上に存在するため、ＶＲＡＭ２６に転送し表示する領域２００５を指定することで地図表示が成される。次に、ユーザからの要求をもとにディスプレイに表示されている画面のある一部を表示し直す差分領域描画かを判定する（ステップ１００４）。例えばユーザがスクロール表示を要求した場合には、図１６に示したように、これまで表示していた地図データ２００３に加え、スクロールによって新たに表示しなければならない領域２００４のみ新たに描画すればよい差分領域描画が最も効率的である。この場合は、差分描画領域決定手段（ステップ１００５）においてスクロール表示する上で不足する地図領域を決定し、地図描画手段（ステップ１００３）にて地図を描画するように動作する。このようにして描画された地図の画素データ２００２はＲＡＭ２２上に存在するため、表示ＡＳＩＣ２５によりＶＲＡＭ２６に表示されていた地図データ２００３と境界が一致する位置２００４へ転送するように動作する。さらに表示する領域２００５を再指定することで地図表示が成される。ここで問題点は、ＶＲＡＭ上に表示されていた地図データ２００３と、新たに転送する差分地図データ２００４の境界において、境界上の図形の描画時に発生する量子化誤差や、描画アルゴリズム高速化により画素抜けや画素の冗長が発生することである。これらは、スクロール時には地図全体が移動しているので気にならないが、スクロール停止時にはユーザは境界２００６の画素欠落や冗長を注視することができるため、表示品質の低下が目立つようになる。そこで、ユーザ要求において差分領域描画が完了したか否か、即ちスクロール要求が終了したかを判定する（ステップ１００６）。差分領域描画が完了したと判断したときは、全体描画領域決定手段２（ステップ１００７）において現在表示されている地図領域を考慮し、ディスプレイに地図を表示するのに必要十分な地図領域を決定し、地図描画手段（ステップ１００３）にて地図を描画するように動作する。このようにして描画された地図の画素データはＲＡＭ２２上に存在するため、ＶＲＡＭ２６に転送し表示する領域２００５を指定することで地図表示が成される。なお、表示する領域２００５は、スクロール停止時の表示位置と同じ位置になるよう制御する。上記処理を実行すれば、表示領域内には差分領域描画で発生する境界２００６が存在しなくなるため、画素欠落や冗長は発生せず、表示品質が向上する。
【００４２】
次に、地図描画手段１００３につき図５を用い具体的に説明する。
【００４３】
まずメッシュ選択手段１０２１は、ユーザないしシステムで指定した地点を中心とした地図表示に必要な地図メッシュを選択する。それぞれの地図メッシュは、所定の矩形領域内における道路や線路等を表現する線データ，水系等を表現する面データ、地名等を表現する文字データで構成される。次に、メッシュ選択手段１０２１で選択された地図メッシュがメモリへ読込済か判定する。ここでメモリはＲＡＭ２２を指す。もし、メモリ上に選択された地図メッシュが存在しなければ（ステップ１０２２）、地図記憶装置３をアクセスし必要な地図メッシュをメモリ（ＲＡＭ２２）上に読み込む（ステップ１０２３）。次に、縮尺／回転角度設定手段１０２４では、これらメモリ上に配置された地図メッシュを画素展開する際の縮尺、及び所定方向を上方向に表示するために回転する角度を設定する。なお、任意角度で地図を回転し、表示するシステムでは、表示資源である    ＲＡＭ２２の使用量を削減し、かつ高速に表示を行うことが要求されている。従来は図２６に示すようにメッシュ１つの大きさの領域をディスプレイ全面に表示するように縮尺を制御していた。図２６の表示領域Ａ（２０２３）のような位置の地図を表示する場合には隣り合う４メッシュの地図があれば表示が達成できるが、表示領域Ｂ（２０２４）のような位置の地図を表示する場合には隣り合う６メッシュの地図が必要となり、使用するメモリの増大と処理速度の低下を招いていた。この課題を解決するには、２０２６に示すように表示領域の対角が地図メッシュの幅と高さより小さくなるように縮尺を決定するとよい。これにより、どのような角度に地図を回転しても、どの位置に地図を表示しても隣り合う４メッシュの地図があれば表示が達成できるため、メモリ使用量が削減されると共に、表示に使用するメッシュが減るため表示処理も高速化される。なお、縮尺／回転角設定手段１０２４で設定すべき項目は、図１７の座標変換パラメータテーブル２０２２に示したような、回転前のＸ，Ｙ軸縮尺値，回転角度，回転後のＸ，Ｙ軸縮尺値である。これら縮尺／回転角設定手段１０２４で設定したパラメータを用い、文字／背景描画手段（ステップ１０２５）では文字や背景の表示位置を演算し、画素データに展開する。上記文字／背景描画手段は各地図メッシュ単位に実行されるため、全メッシュの描画完了したか確認する（ステップ１０２６）。描画されていない地図メッシュが存在する場合には、再度ステップ１０２５へ戻り文字／背景を描画し、地図を表示するために必要な全メッシュ描画完了後、処理を終える。
【００４４】
次に、文字／背景描画手段１０２５につき図６を用い具体的に説明する。
【００４５】
地図表示では、地図に重なった文字列が判読できるように背景を最初に、文字列を後に描画する。そこで、まず背景データ描画前手段１０４１において背景データを描画する。背景データ描画前手段では、線や面を描画するが、線や面を表現するデータは始点が絶対座標で、中間点、及び終点は全て相対座標で座標値が与えられる。一方、実際に座標変換や描画を実行する場合には、座標値は全て絶対座標であることが望ましい。そこでバッファ領域を確保し、その領域に一時的に線や面を表現するデータを相対座標値から絶対座標値へ変換し格納するとよい。しかし、マルチタスクシステムでは、これらバッファをタスク毎に確保していたのではＲＡＭ２２を大量に消費してしまい効率的でない。そこでバッファ領域を複数のタスク間で共有化するため、セマフォを用いて排他管理する。まず、バッファ領域が必要な場合、即ち背景データ描画では、バイナリセマフォをＴａｋｅし（ステップ１０４２）、さらにバッファ領域を確保する（ステップ１０４３）。これにより、他タスクよりこのバッファ領域を確保することが出来なくなる。次に、地図メッシュを表示する際、ユーザないしシステムが指定した地点を中心に表示するため、座標変換において水平ないし垂直方向に移動する量を設定する（ステップ１０４４）。ここで設定する項目は、図１７の座標変換パラメータテーブル２０２２に示した、回転前のＸ，Ｙ軸水平移動量である。このようにして資源確保及び座標変換パラメータ設定がされたので、次に線や面といった背景データの描画を実行する（ステップ１０４５）。全ての背景データの描画が終了した後、不要になったバッファ領域を開放し（ステップ１０４６）、バイナリセマフォをＧｉｖｅする（ステップ１０４７）ことで、他のタスクがここで使用したバッファ領域を再利用することができる。このようにして背景データ描画前手段１０４１が終了した後、文字データ描画手段１０４８において文字を描画することにより文字／背景描画手段１０２５が終了する。
【００４６】
次に、背景データ描画手段１０４５につき図７を用い具体的に説明する。
【００４７】
背景データは複数の線及び面で構成されている。そのため、全ての線及び面が描画し終えたことを確認する事を目的に、一組の線ないし面を描画し終えた毎にカウンタをカウントアップし、そのカウンタ値と背景データを構成する線及び面数の和を比較することで１メッシュ分の背景データの描画終了を判定している。そこで、まず上記カウンタの値をクリアする（ステップ１０６１）。次に、要求されている背景描画が、線描画要求であるかを確認する（ステップ１０６２）。線描画要求と判定された場合は、線描画手段１０６３を呼び出し、線描画を実行する。また、線描画要求でない場合には、次に面描画要求であるかを確認する（ステップ１０６４）。なお、背景データが面データと線データのみで構成されている場合には、ステップ１０６２，１０６４の一方の判定ルーチンを省略することが可能である。ここで、面描画要求と判定された場合は、面描画手段１０６５を呼び出し、面描画を実行する。線ないし面描画が終了した後、カウンタを１インクリメントする（ステップ１０６６）。さらに、１メッシュ分の描画完了かを判定する（ステップ１０６７）。実際には、カウンタ値と背景データを構成する線及び面数の和を比較し、その値が一致したかを調べる。一致した場合には１メッシュ分の描画が完了したことになるので、ループを抜けて処理が終了する。また、一致しない場合、より具体的にはカウンタ値が背景データを構成する線及び面数の和より小さい場合には、再び線ないし面の描画を実行するように動作する。
次に、線描画手段１０６３につき図８を用い具体的に説明する。
【００４８】
線描画手段では、まず線幅／線種情報解析（ステップ１０８１）において、指定された線の線幅、及び線の進行方向のパターンを解析し、内部変数に記憶する。さらに、座標変換を実行するわけであるが、与えられるデータの構造が、始点は絶対座標値，中間点、及び終点は全て相対座標値になっている。一方、座標変換を実行する場合には、座標値は絶対座標値であることが望ましい。そこで、線を構成する座標値を相対値から絶対値に変換する相対絶対変換処理（ステップ１０８２）を行い、得られた絶対座標値をバッファ領域に格納する。このようにして座標変換前の線を構成する絶対座標値が求められるが、これらには実際には描画しない座標データが多数含まれており、これらを排除する処理、即ちプレクリップ処理を行うことで不必要な座標データを削除し、座標変換処理を高速化している。例えば図１８に示したようにメッシュ１（２０４１）からメッシュ４（２０４４）の地図データを用い、描画領域２０４５の領域に含まれるデータを選択し描画する場合を以下説明する。地図の表示では進行方向や目的地方向をディスプレイの上側に表示できることが望まれるため、任意角度で地図メッシュを回転する座標変換処理が必要がある。そこで、実際に描画する描画領域２０４５に外接する矩形、即ち図中２０４６で示したクリップ領域境界をクリップ領域演算１０８３で計算する。ここでクリップ領域境界２０４６は、クリッピング処理を単純化させるため、矩形であることが望ましい。なお、クリップ領域境界を矩形としたときの座標点の計算方法は、描画領域の各頂点の座標（Ｘ，Ｙ）から、それぞれＸ座標値，Ｙ座標値の最大値Ｘｍａｘ  ，Ｙｍａｘ  、及び最小値Ｘｍｉｎ，Ｙｍｉｎを選択した時、クリップ領域境界の左下端点の座標値は（Ｘｍｉｎ  ，Ｙｍｉｎ  ）、右上端点の座標値は（Ｘｍａｘ  ，Ｙｍａｘ  ）になる。さらに線がクリップ領域境界内に存在するか判定し、存在しない線を削除するというプレクリップ処理１０８４を実施する。ここでは、線幅といった情報を無視し、各線を構成する一つ一つの線の始点，終点座標値に着目し、Ｃｏｈｅｎ−Ｓｕｔｈｅｒｌａｎｄ  線クリップアルゴリズム    （Ｆｏｌｅｙ，ｖａｎ  Ｄａｍ，  Ｆｅｉｎｅｒ，  Ｈｕｇｈｅｓ：Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ：Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ        Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏｍｐａｎｙ  ｐｐ１１１−１２７）を用い、クリップ領域境界内外を判定し、始点，終点ともクリップ領域境界外のデータを削除する。この場合、線幅が太い線については、境界付近の始終点のデータが削除されることが原因で画素抜けが発生する可能性がある。この問題を解決する一手法として、ここで求められたクリップ領域境界より所定量広い領域をクリップ領域境界とする方法で、特開平２−２４４２８５  号公報に詳細が記載されている。この技術を適用することで線幅が太い線については、境界付近の始終点のデータが削除されることはなくなり画素抜けが防止できる。以上、プレクリップ処理により削除されたデータ以外は、描画される可能性があるものなので、各座標値を座標変換手段１０８５によって座標変換する。ここで、座標変換における各パラメータは、縮尺／回転角設定手段１０２４、及び水平移��量設定手段１０４４で設定した座標変換パラメータテーブルであり、数１により変換前の座標テーブル２０２１が変換後の座標テーブル２０２３に変換される。
【００４９】
【数１】
0003550444.tif 000002
【００５０】
座標変換を実施したとき、描画領域２０４５は矩形になり、クリップ領域境界２０４６と描画領域２０４５の差分が実際は描画されない領域になる。ここで、地図の回転角度が９０度の倍数値に４５度を加えた値に近い場合は、プレクリップ処理１０８４で得られた領域に描画されないデータが多く含まれ、逆に地図の回転角度が９０度の倍数値に近い場合は、描画されないデータが少なくなる。よって、描画されないデータが少ない場合は、再度プレクリップ処理を実行し、不要なデータを削除する処理時間より、描画する際にクリップ処理する時間の方が短くなる。よって回転角度判定１０８６では、回転角度に応じ、地図の回転角度が９０度の倍数値から所定角度以上であれば、プレクリップ手段１０８７において描画領域境界２０４５でプレクリップ処理するように動作する。このプレクリップ手段１０８７は、１０８４と同様処理を実行するものである。また、地図の回転角度が９０度の倍数値から所定角度以内であれば、プレクリップ処理１０８７をスキップするように動作する。これにより、回転角度によらず最も高速に目的とする線データが選択できる。次に線幅／線種情報解析１０８１によって内部変数に記憶された線種情報を用い、線種による分岐を行う（ステップ１０８８）。実線（ソリッド線）であると判定された場合は実線描画手段１０８９を、パターン線であると判定された場合はパターン線描画手段１０９０を実行するように動作し、処理を終了する。
【００５１】
次に、実線描画手段１０８９につき図９及び図１９を用い具体的に説明する。
実線描画手段１０８９では、まず基準線に着目し描画を実行する（ステップ１１０１）。基準線は与えられた始点及び終点を結ぶ１ドット幅の線であり、ＤＤＡアルゴリズムにより画素データを発生する。次に描画する線の幅が２〜４ドット幅かを判定する（ステップ１１０２）。地図描画では２〜４ドット幅線が最も頻繁に発生し、かつ高速化が要求される。そこで、２〜４幅の線であると判定されたときは、次に線の傾きを判定する（ステップ１１０３）。ここで、Ｘ軸と描画する直線のなす角度が４５度以上であると判定されたときは、補助線描画手段１にて図１９（ｂ）に示したような線幅に応じ必要ドット幅分Ｘ軸方向にずれた基準線と平行な補助線を描画するように動作する（ステップ１１０４）。また図１９（ｂ）から明らかなように、始終点のペンの形状２０６２はＸ軸に平行な１ドット幅線になる。一方、Ｘ軸と描画する直線のなす角度が４５度以下であると判定されたときは、補助線描画手段２にて図１９（ａ）に示したような線幅に応じ必要ドット幅分Ｙ軸方向にずれた基準線と平行な補助線を描画するように動作する（ステップ１１０５）。また図１９（ａ）から明らかなように、始終点のペンの形状２０６１はＹ軸に平行な１ドット幅線になる。このように動作することで、必要最小限の補助線描画に抑制されるため、処理の高速化が図られる。また、ペンの形状は線の傾きによって変化するように動作する。以上、線幅が２〜４ドットの場合は線幅が細いため、始点及び終点のペンの形状が２０６１，２０６２に示されたように直線になる上記アルゴリズムでも線の傾きが変化する点で画素抜けが目立たないが、５ドット幅以上の線幅では線の傾きが変化する点で画素抜けが目立つようになり、表示品質が悪化してしまう。そこで、５ドット幅以上の線幅かを次に判定し（ステップ１１０６）、５ドット幅以上の線幅であると判定されたときは、まず始点を中心とし、かつ線幅に一致した縦，横長さの矩形（正方形）２０６３ないし２０６４を描画する（ステップ１１０７）。さらに補助線描画手段３では、矩形を取り囲む外周の画素に着目し、その画素を始点とする基準線に平行で、かつ長さの等しい直線を描画する（ステップ１１０８）。このような処理を実施することで図１９（ｃ），（ｄ）に示されたように線幅が太い線が描画される。なお、始点及び終点のペンの形状が正方形なので、線の傾きによる判定処理は必要なく、かつ線の傾きが変化する点でも画素抜け等が発生することはなく、表示品質が高まる。このように線幅や傾きに応じ、線を構成する点の形状を変化させることにより、高速性と表示品質という相反する性質の事象を、ユーザの選択といった煩わしい操作なしに実現できるようになる。
【００５２】
次に、基準線描画手段１１０１につき図１０を用い具体的に説明する。
【００５３】
基準線は始点及び終点を結ぶ１ドット幅線を複数本一筆書きできるように結んだ連続線、つまり１ドット幅のポリラインで構成される。このポリラインを構成する線を残らず描画するためにラインカウンタを使用し、カウンタ値とライン数を比較することでポリライン描画が終了したかを判定している。そこで、まずラインカウンタをクリアしカウント開始できる状態を設定する（ステップ１１２１）。次にクリップ領域判定方式ポリライン描画１１２２にて、与えられたポリラインを描画する。なお、ここでは描画領域がクリップ領域境界になる。この描画ルーチンではポリラインを構成する線がクリップ領域境界内に存在する場合には線描画を実行するが、線がクリップ領域境界と交わるか、線がクリップ領域境界外であれば、対応する線の描画を中断するように動作する（ステップ１１２２）。よって、画素単位にクリップ判定していないため、処理速度は速い。ラインカウンタインクリメント１１２３では、描画した線の本数分ラインカウンタをインクリメントするように動作する。次にラインカウンタ値と描画すべきラインの総数を比較し（ステップ１１２４）、描画されていない線が有ると判定されたときは画素単位クリップ対応ライン描画１１２５を用い、クリップ領域境界内外を画素単位にチェックし、クリップ領域境界内と判定された領域へ線を描画を実行するように動作する（ステップ１１２５）。なお、このルーチンはクリップ領域境界を画素毎に判定するため処理速度が遅い。よって、ステップ１１２２で処理が中断されるケース、即ちクリップ領域境界と交差するラインの描画に限定させるため一ラインに対してのみ実行する。次に、描画されず残っているポリラインがクリップ領域境界外かを判定するプレクリップ処理１１２６で、クリップ領域境界外のラインを除去する。この処理方法はステップ１０８４と同様である。次にラインカウンタインクリメント１１２７では、画素単位クリップ対応ライン描画１１２５で描画された線数１、及びプレクリップ処理で削除された線の本数をラインカウンタに加える。さらに、ラインカウンタ値と描画すべきラインの総数を比較し（ステップ１１２８）、残り線が有ると判定されたときはステップ１１２２より処理を再度実行するように動作する。また、全ての線が描画されたと判定されたときは処理が終了する。
【００５４】
より具体的に図１０の動作を図２０を用い説明する。図２０で矩形領域が描画領域、即ちクリップ領域境界になる。まず、図２０（ａ）に示したポリライン２０８２が全てクリップ領域境界内にあるケースでは、ステップ１１２２でａ〜ｅ全ての線が描画され、かつステップ１１２４で残り線が無いと判定されるのでＮｏの方向に分岐し処理が終了する。次に、図２０（ｂ）に示したような線ａがクリップ領域境界と交わり、それ以外の線がクリップ領域境界内にあるケースでは、ステップ１１２２で何も描画せずに処理が中断される。この場合残り線が５本存在するため、ステップ１１２４ではＹｅｓ  の方向に分岐し、ステップ１１２５でラインａのみが描画される。また残り線４本は全てクリップ領域境界内のため、プレクリップ処理１１２６で除去される線はない。またステップ１１２８で残り線が存在すると判定されるためステップ１１２２に処理が飛び、残りの全ての線が描画される。よって、ステップ１１２４で残り線が無いと判定されるのでＮｏの方向に分岐し処理が終了する。また、図２０（ｃ）で示したようなケースでは、ステップ１１２２でａ〜ｃの線が描画され、ｄの線分描画の開始時に処理が中断する。この場合残り線が２本存在するため、ステップ１１２４ではＹｅｓ  の方向に分岐し、ステップ１１２５でラインｄのみが描画される。また線分ｅはクリップ領域境界外なので、プレクリップ処理１１２６で線分が除去される。これにより残り線は無くなるため、ステップ１１２８でＮｏの方向に分岐し、処理が終了する。このように動作することで、クリップ領域境界内の線分描画では描画処理の高速なクリップ領域判定方式ポリライン描画１１２２を、クリップ領域境界と交わる線分描画では画素単位にクリップ処理を行う画素単位クリップ対応ライン描画１１２５を実行するので、高速かつ確実に基準線を描画することができる。またこの方式は、補助線描画手段１〜３（１１０４，１１０５，１１０８）に適用してもよい。
【００５５】
次に、面描画手段１０６５につき図１１，図１２を用い具体的に説明する。
【００５６】
面描画手段では、まず面パターン情報解析（ステップ１１４１）において、指定された面データの面パターン，色、及び枠の色を解析し、内部変数に記憶する。さらに、座標変換を実行するわけであるが、与えられるデータの構造が、始点は絶対座標値，中間点、及び終点は全て相対座標値になっている。一方、座標変換を実行する場合には、座標値は絶対座標値であることが望ましい。そこで、面を構成する座標値を相対値から絶対値に変換する相対絶対変換処理（ステップ１１４２）を行い、得られた絶対座標値をバッファ領域に格納する。このようにして座標変換前の面を構成する絶対座標値が求められるが、これらには実際には描画しない座標データが多数含まれており、これらを排除する処理、即ちプレクリップ処理を行うことで不必要な座標データを省き、座標変換処理を高速化している。例えば図１８に示したようにメッシュ１（２０４１）からメッシュ４（２０４４）の地図データを用い、描画領域２０４５の領域に含まれるデータを選択し描画する場合を以下説明する。地図の表示では進行方向や目的地方向をディスプレイの上側に表示できることが望まれるため、任意角度で地図メッシュを回転する座標変換処理が必要である。そこで、実際に描画する描画領域２０４５に外接する矩形、即ち図中２０４６で示したクリップ領域境界をクリップ領域演算１１４３で計算する。ここでクリップ領域境界２０４６は、クリッピング処理を単純化させるため、矩形であることが望ましい。なお、クリップ領域境界を矩形としたときの座標点の計算方法は、描画領域の各頂点の座標（Ｘ，Ｙ）から、それぞれＸ座標値，Ｙ座標値の最大値Ｘｍａｘ  ，Ｙｍａｘ  、及び最小値Ｘｍｉｎ  ，Ｙｍｉｎ  を選択した時、クリップ領域境界の左下端点の座標値は（Ｘｍｉｎ  ，Ｙｍｉｎ  ）、右上端点の座標値は（Ｘｍａｘ  ，Ｙｍａｘ  ）になる。さらに面がクリップ領域境界内に存在するか判定し、存在しない面を削除するというプレクリップ処理１１４４を実施する。ここでは、面を構成する枠の線幅を無視し、クリップ領域境界と面が交わるかを判定し、交わらない面を削除する。これら処理により残ったデータは、描画される可能性があるものなので、座標変換手段１１４５によって座標変換する。ここで、座標変換における各パラメータは、縮尺／回転角設定手段１０２４、及び水平移動量設定手段１０４４で設定した座標変換パラメータテーブルであり、数１により変換前の座標テーブル２０２１が変換後の座標テーブル２０２３に変換される。
【００５７】
【数２】
0003550444.tif 000003
【００５８】
座標変換を実施したとき、描画領域２０４５は矩形になり、クリップ領域境界２０４６と描画領域２０４５の差分が実際に描画されない領域になる。ここで、地図の回転角度が９０度の倍数値に４５度を加えた値に近い場合は、プレクリップ処理１１４４で得られた領域に描画されないデータが多く含まれ、逆に地図の回転角度が９０度の倍数値に近い場合は、描画されないデータが少なくなる。よって、描画されないデータが少ない場合は、再度プレクリップ処理を実行し、不要なデータを削除する処理時間より、描画する際にクリップ処理する時間の方が短くなる。よって、図１１には記載していないが、図８のステップ１０８６、及びステップ１０８７を、図１１のステップ１１４５とステップ１１４６の間に挿入し、処理を行ってもよい。このとき、回転角度判定では、回転角度に応じ、地図の回転角度が９０度の倍数値から所定角度以上であれば、プレクリップ手段において描画領域境界２０４５でクリップ処理する。このプレクリップ手段は、
１１４４と同様処理を実行するものである。また、地図の回転角度が９０度の倍数値から所定角度以内であれば、プレクリップ処理をスキップするように動作する。これにより、回転角度によらず最も高速に目的とする線データが選択できる。
【００５９】
次に面を描画することになるが、面パターン情報解析１１４１で内部変数に記憶された面パターン情報は、複雑なパターンで面を表示できるように２種類の面パターンが与えられる。またそれぞれの面パターンの色は、次の２色、即ちデータに記憶された所定色と、描画する面の背景色をそのまま残す透過色の２種類の色で指定される。従来、２種類のパターンが与えられた場合は、第１のパターンでまず面描画を実行し、さらに第２のパターンで面描画を実行するという、２回の面描画を実行する必要があるが、同じ領域に２回面描画しなければならないため処理時間が長くなるという課題があった。そこで、面パターンの組合せに応じ、面描画の回数を削減する方式を開発した。このような場合に、面パターンの組合せで考慮する必要のある基本パターンは、図２１に示したような、全てのパターン色が透過色であるパターン２１０１、全てのパターン色が特定色であるパターン２１０２，パターンの一部が特定色で残りの領域が透過色であるパターン２１０３，パターン２１０３と異なるパターンで、かつパターンの一部が特定色で残りの領域が透過色であるパターン２１０４が考えられる。これらを組合せて面描画をしたとき、計１６通りの組合せが考えられ、それぞれ以下の方法で描画を行う。
【００６０】
１）パターン１同士（２１０１＆２１０１）の場合は、両者とも面パターンは全面透過色なので面描画をスキップして良い。
【００６１】
２）パターン１とパターン２の組合せ（２１０１＆２１０１）の場合は、パターン１の面描画をスキップし、パターン２の面描画、即ち全面を塗りつぶす面描画（面描画手段１）を実行すればよい。
【００６２】
３）パターン１とパターン３の組合せ（２１０１＆２１０３）の場合は、パターン１の面描画をスキップし、パターン３の面描画、即ちパターン３で与えられたパターンで塗りつぶす面描画（面描画手段２）を実行すればよい。
【００６３】
４）パターン１とパターン４の組合せ（２１０１＆２１０４）の場合は、パターン１の面描画をスキップし、パターン４の面描画、即ちパターン４で与えられたパターンで塗りつぶす面描画（面描画手段２）を実行すればよい。
【００６４】
５）パターン２とパターン１の組合せ（２１０２＆２１０１）の場合は、パターン１の面描画をスキップし、パターン２の面描画、即ち全面を塗りつぶす面描画（面描画手段１）を実行すればよい。
【００６５】
６）パターン２同士（２１０２＆２１０２）の場合は、いずれか一方のパターン２の面描画をスキップし、残ったパターン２の面描画、即ち全面を塗りつぶす面描画（面描画手段１）を実行すればよい。
【００６６】
７）パターン２とパターン３の組合せ（２１０２＆２１０３）の場合は、パターン２の面描画をスキップし、パターン３で与えられたパターンで、かつパターン３で与えられた特定色はそのまま、透過色をパターン２で与えられた特定色に置き換え塗りつぶす面描画（面描画手段２）を実行すればよい。
【００６７】
８）パターン２とパターン４の組合せ（２１０２＆２１０４）の場合は、パターン２の面描画をスキップし、パターン４で与えられたパターンで、かつパターン４で与えられた特定色はそのまま、透過色をパターン２で与えられた特定色に置き換え塗りつぶす面描画（面描画手段２）を実行すればよい。
【００６８】
９）パターン３とパターン１の組合せ（２１０３＆２１０１）の場合は、パターン１の面描画をスキップし、パターン３の面描画、即ちパターン３で与えられたパターンで塗りつぶす面描画（面描画手段２）を実行すればよい。
【００６９】
１０）パターン３とパターン２の組合せ（２１０３＆２１０２）の場合は、パターン２の面描画をスキップし、パターン３で与えられたパターンで、かつパターン３で与えられた特定色はそのまま、透過色をパターン２で与えられた特定色に置き換え塗りつぶす面描画（面描画手段２）を実行すればよい。
【００７０】
１１）パターン３同士（２１０３＆２１０３）の場合は、いずれか一方のパターン３の面描画をスキップし、パターン３の面描画、即ちパターン３で与えられたパターンで塗りつぶす面描画（面描画手段２）を実行すればよい。
【００７１】
１２）パターン３とパターン４の組合せ（２１０３＆２１０４）の場合は、パターン３の面描画、即ちパターン３で与えられたパターンで塗りつぶす面描画、及びパターン４の面描画、即ちパターン４で与えられたパターンで塗りつぶす面描画の計２回（面描画手段３）を実行すればよい。
【００７２】
１３）パターン４とパターン１の組合せ（２１０４＆２１０１）の場合は、パターン１の面描画をスキップし、パターン４の面描画、即ちパターン４で与えられたパターンで塗りつぶす面描画（面描画手段２）を実行すればよい。
【００７３】
１４）パターン４とパターン２の組合せ（２１０４＆２１０２）の場合は、パターン２の面描画をスキップし、パターン４で与えられたパターンで、かつパターン４で与えられた特定色はそのまま、透過色をパターン２で与えられた特定色に置き換え塗りつぶす面描画（面描画手段２）を実行すればよい。
【００７４】
１５）パターン４とパターン３の組合せ（２１０４＆２１０３）の場合は、パターン４の面描画、即ちパターン４で与えられたパターンで塗りつぶす面描画、及びパターン３の面描画、即ちパターン３で与えられたパターンで塗りつぶす面描画の計２回（面描画手段３）を実行すればよい。
【００７５】
１６）パターン４同士（２１０４＆２１０４）の場合は、いずれか一方のパターン４の面描画をスキップし、パターン４の面描画、即ちパターン４で与えられたパターンで塗りつぶす面描画（面描画手段２）を実行すればよい。
【００７６】
以上のように、１６通りの組合せのうち２通りは従来通り２回の面描画が必要であるが、残りについては１回ないし２回の面描画をスキップすることが出来るので、処理の高速化が図られる。上記内容をフローチャートに従って説明すると、面パターン分岐１〜３（ステップ１１５０，ステップ１１４６，ステップ１１４８）では、面パターンの組合せを判定し、上記組合せに応じ、面描画手段１〜３（ステップ１１５１，ステップ１１４７，ステップ１１４９）が呼び出される。面描画手段１（ステップ１１５１）では、全面塗りつぶしを実行するため、まず塗りつぶす色を色設定手段１２２１で設定し、指定された面の全面を塗りつぶす面描画ルーチン１２２２を呼び出し、処理を終了する。面描画手段２（ステップ１１４７）では、パターン塗りつぶしを実行するため、まずパターンの各色を色設定手段１２２３で設定し、さらに塗りつぶすパターンを設定する（ステップ１２２４）。そして、指定された面を指定されたパターン，色で塗りつぶす面描画ルーチン１２２５を呼び出し、処理を終了する。面描画手段３（ステップ１１４９）では、第１のパターン面塗りつぶしを実行するため、まずパターンの各色を色設定手段１２２６で設定し、さらに塗りつぶす第１のパターンを設定する（ステップ１２２７）。そして、指定された面を指定されたパターン，色で塗りつぶす面描画ルーチン１２２８を呼び出す。さらに、第２のパターン面塗りつぶしを実行するため、まずパターンの各色を色設定手段１２２９で設定し、さらに塗りつぶす第２のパターンを設定する（ステップ１２３０）。そして、指定された面を指定されたパターン，色で塗りつぶす面描画ルーチン１２３１を呼び出し、処理を終了する。
【００７７】
面描画が終了すると、次に枠を描画することになるが、従来は面パターンや面の色によらず一意に枠描画を実行していた。面パターンが存在する場合、ここでは面描画手段２（ステップ１１４７）、及び面描画手段３（ステップ１１４９）では、面の色と枠の色が異なるケースが発生するため常に枠描画を実行する必要があるが、全面塗りつぶし、ここでは面描画手段１（ステップ１１５１）では枠描画を省略できる場合がある。今回は面の色と枠の色を比較し（ステップ１１５２）色が一致するか判定する。ここで面と枠の色が同一色である場合は枠描画手段１０５３をスキップするように動作する。また、面の色と枠の色が異なる場合は、枠描画手段１１５３で枠描画を実行する。なお、枠描画手段１１５３の動作の詳細は、線描画手段１０６３と同様である。これにより、面と枠の色が同一色である場合は枠描画がスキップするように動作するため、処理の高速化が期待できる。
【００７８】
次に、文字データ描画手段１０４８につき図１３を用い具体的に説明する。
【００７９】
文字データは複数の文字列で構成されている。そのため、全ての文字列が描画し終えたことを確認する事を目的に、一組の文字列を描画し終えた毎にカウンタをカウントアップし、そのカウンタ値と文字データを構成する文字列の数を比較することで１メッシュ分の文字データの描画終了を判定している。そこで、まず上記カウンタの値をクリアする（ステップ１１６１）。次に、文字種別解析（ステップ１１６２）において、指定された文字列の文字種別，スタイルを解析し、内部変数に記憶する。ここで文字種別とは、ＲＯＭ２３等に格納されている漢字フォントに記憶されているドット幅及び高さで表示する標準文字や、横方向に半分の大きさで表示する半角文字等で、文字スタイルとは、例えば文字の周囲に縁取り文字や、文字を太らせるボールド体等を意味する。さらに、文字描画方向解析（ステップ１１６３）で、文字列の描画方向、例えば縦書きで下方向に文字を描画とか、横書きで右方向に文字を描画等といった情報を解析し、内部変数に記憶する。このようにして得られた文字列には、実際には描画しない文字列が多数含まれており、これら文字列排除する処理、即ちプレクリップ処理を適用することで不必要な座標データを省き、座標変換処理を高速化している。例えば図１８に示したようにメッシュ１（２０４１）からメッシュ４（２０４４）の地図データを用い、描画領域２０４５の領域に含まれるデータを選択し描画する場合を以下説明する。地図の表示では進行方向や目的地方向をディスプレイの上側に表示できることが望まれるため、任意角度で地図メッシュを回転する座標変換処理が必要である。そこで、実際に描画する描画領域２０４５に外接する矩形、即ち図中２０４６で示したクリップ領域境界をクリップ領域演算１１６４で計算する。ここでクリップ領域境界２０４６は、クリッピング処理を単純化させるため、矩形であることが望ましい。なお、クリップ領域境界を矩形としたときの座標点の計算方法は、描画領域の各頂点の座標（Ｘ，Ｙ）から、それぞれＸ座標値，Ｙ座標値の最大値Ｘｍａｘ  ，Ｙｍａｘ  、及び最小値Ｘｍｉｎ，Ｙｍｉｎを選択した時、クリップ領域境界の左下端点の座標値は（Ｘｍｉｎ，Ｙｍｉｎ）、右上端点の座標値は（Ｘｍａｘ，Ｙｍａｘ  ）になる。さらに、ここで求められたクリップ領域境界より所定量広い領域をクリップ領域境界とする方法が特開平２−２４４２８５に記載されているが、この技術を適用することで適切な文字列を選択することが可能になる。次に、文字列に外接する多角形、ないし処理を簡略化するため矩形がクリップ領域境界内に存在するか判定し、存在しない文字列を削除するというプレクリップ処理１１６５を実施する。ここでは、クリップ領域境界と文字列に外接する多角形ないし矩形が交わるかを判定し、交わらない文字列を削除する。これら処理により残ったデータは描画される可能性があるものなので、文字の座標変換手段１１６６によって座標変換する。ところで、文字列の座標値は図２２（ａ）に示したような基準点２１２２、及び基準点から文字列の最初の文字の左下端点へのオフセット２１２４で与えられる。文字列の表示方向は回転処理を行った場合でも基準点及びオフセットのみ座標変換し、文字列そのものは回転させないように処理する。これは、文字を回転させてしまうと読みにくくなるという課題が発生するためである。それぞれの基準点及びオフセットを、縮尺／回転角設定手段１０２４、及び水平移動量設定手段１０４４で設定した座標変換パラメータテーブルを用い数１で座標変換処理すると、変換前は２１２５で示した道路上に文字列の中心が重なるように表示されていたものが、変換後は図２２（ｂ）に示したように例えば右に４５度回転させたとき文字列の中心が道路上から離れてしまうように動作する。よって、任意回転させる必要のある地図表示において、背景の線や面と、文字列の表示される位置が回転角度によってずれてしまうことになり、背景の線や面と文字列が一対一に関係付けられているとき、文字列が何を指し示しているかわからなくなるという課題があった。この課題を解決するためには、オフセット２１２３を座標変換するのではなく、基準点から文字列の中心へのオフセット２１２７を座標変換するように動作させる。さらに座標変換されたオフセット２１３０が文字列の中心になるように表示する。このように処理すると、図２２（ｂ）と同様に右に４５度回転させたとき図２２（ｃ）に示したように２１２５で示した道路上に文字列の中心が重なるように表示され、背景の線や面と文字列のずれといった課題は解決出来る。また、上記方法では文字列の長さに応じ重心を計算しなければいけないため、処理負荷が重くなることが考えられる。この問題を回避する一手法として、基準点２１２２のみ座標変換し、オフセット２１２３については回転処理は行わず、縮尺変換のみ実行し文字を表示する方法がある。これにより、基準点とオフセットの関係が特定の関係にある場合、背景の線や面と文字列が重なるように動作するため、処理を高速化するために有効である。このようにして文字列を描画開始する座標値が計算された後、文字列描画手段１１６７を用い文字列の描画を開始する。描画が終了した後、文字列カウンタを１インクリメントし（ステップ１１６８）、与えられた文字列の総数と文字列カウンタのカウンタ値を比較する（ステップ１１６９）。文字列の総数と文字列カウンタ値が一致する場合は、指定された１メッシュの描画が完了したときなので処理が終了し、一致しないときは次に文字列の描画処理を行う。
【００８０】
次に、文字列描画処理手段１１６７につき図１４を用い具体的に説明する。
【００８１】
文字列は複数の文字で構成されている。そのため、全ての文字が描画し終えたことを確認する事を目的に、一つの文字を描画し終えた毎にカウンタをカウントアップし、そのカウンタ値と文字列を構成する文字の数を比較することで文字列の描画終了を判定している。そこで、まず上記カウンタの値をクリアする（ステップ１１８１）。次に、文字列の第１番目の文字につき、文字コードがＪＩＳ第１，第２水準文字コードに含まれるのか、それ以外の外字領域に含まれるのかを判定する（ステップ１１８２）。コード判定はコード情報を解析することで判定可能である。判定結果において、外字領域に含まれていると判定されたときは、対応する外字のフォントデータの先頭アドレスを検索し内部変数に記憶する（ステップ１１８３）。一方、ＪＩＳ第１，第２水準文字コードに含まれていると判定されたときは、文字のイメージデータが格納された漢字ＲＯＭデータで対応するフォントデータの先頭アドレスを検索し内部変数に記憶する（ステップ１１８４）。このように、指定された文字のイメージの先頭アドレスが計算された後、文字描画を実行する（ステップ１１８５）。文字描画が終了した後、文字カウンタを１インクリメントし（ステップ１１８６）、文字列の文字数と文字カウンタの値を比較する（ステップ１１８７）。文字列の文字数と文字カウンタ値が一致する場合は、指定された文字列の描画が完了したときなので処理が終了し、一致しないときは文字の描画方向を参照し、次の文字を描画する座標値を求め（ステップ１１８８）、次の文字の描画処理を行う。なお、次文字描画開始位置更新１１８８では、例えば下方向への縦書き文字であれば、以前に描画した文字の座標（ｘ，ｙ）から、文字の高さｈを減じた（ｘ，ｙ−ｈ）が次の文字を描画する位置になる。また、右方向への横書き文字であれば、以前に描画した文字の座標（ｘ，ｙ）に、文字の幅ｗを加えた（ｘ＋ｗ，ｙ）が次の文字を描画する位置になる。
【００８２】
次に、文字描画手段１１８５につき図１５を用い具体的に説明する。
【００８３】
ここでは、まず文字スタイルに装飾文字等が指定されているかを判定する（ステップ１２０１）。装飾文字としては、文字を強調するために文字の線幅を太くするボールド文字や、線や面といった背景が多数表示されている領域に文字を重ねて表示したとき、文字が見にくくなることを防ぐため文字を構成する線の周囲に背景色、ないし指定された特定色の枠を表示する縁取り文字がある。図２５の２１８１に縁取り文字の一例を示す。縁取り文字を描画するためには、描画したい文字につき、目的とする文字描画を行う座標から左上に１ドットの位置２１８２に背景色で文字描画を行う。さらに背景色を用い同じ要領で、上に１ドット２１８３，右上に１ドット２１８４，左に１ドット２１８５，右に１ドット２１８６，左下に１ドット２１８７，下に１ドット２１８８，右下に１ドット２１８９の位置に計８回文字描画を行う。そして最後に目的とする文字を指定された座標に指定された色で描画する（２１９１）ことで縁取り文字が表示される。また、ここで示した縁取り文字の変形例として、文字の一定方向、例えば右側と下側と右下側へ背景色、ないし指定された特定色の枠を表示する方法もある。文字スタイル判定において、装飾文字でないと判定されたときは、クリップ判定（ステップ１２０７）で、指定された文字とクリップ領域の関係を判定し、画素単位のクリップ有り、または無しの文字描画ルーチンを呼び出す。クリップ処理ルーチンは、文字の描画開始座標、例えば指定された文字の左下端点とクリップ領域を比較し、文字の左下端点がクリップ領域２１６２，描画領域２１６１、あるいはそれ以外に含まれるのかを判定する。なお、描画する文字が標準文字の場合は、描画領域よりクリップ領域を左側に文字の幅分，下方向に文字の高さ分広げる。例えば、標準文字及び半角文字の高さがｈ，標準文字の幅がｗ，半角文字の幅がｗ′，描画領域の左下端点が（ｘ１，ｙ１）、右上端点が（ｘ２，ｙ２）とすると、標準文字におけるクリップ領域の左下端点は（ｘ１−ｗ，ｙ１−ｈ）、右上端点は（ｘ２，ｙ２）に、半角文字におけるクリップ領域の左下端点は（ｘ１−ｗ′，ｙ１−ｈ）、右上端点は（ｘ２，ｙ２）になる。図２４で２１６３及び２１６７で示された文字の左下端点はクリップ領域外になるので、クリップで除かれ何も描画しないように動作する。図２４で２１６４及び２１６８で示された文字の左下端点はクリップ領域内であるが描画領域内には含まれないので、画素単位でクリップ処理を実施するルーチンが呼ばれ、処理速度は速くないが確実に文字描画を行うように動作する（ステップ１２０９）。図２４で２１６５及び２１６９で示された文字の左下端点は描画領域内に含まれるので、画素単位でクリップ処理を省略し、高速に文字描画を実施する文字描画を行うように動作する（ステップ１２０８）。このように処理を実施することで、高速に文字描画が達成される。なお、ここでは文字の描画開始座標を文字の左下端点としたが、この文字の左下端点からある一定値オフセットした点を文字の描画開始座標とした時は、描画領域及びクリップ領域の境界の座標値にオフセット分を加算するとよい。
【００８４】
また、文字スタイル判定１２０１において、文字の装飾有りと判定されたときは、指定された文字が複数文字で一つの文字を構成するかを判定する（ステップ１２０２）。複数文字で一つの文字列を表す例として、図２３（ａ）に示したように、１文字で表現できるサイズを越えた形状の文字がある。このような文字列に対して、文字単位に装飾を実施すると、例えば縁取り文字の場合には図２３（ｂ）に示したように、それぞれの文字２１４２の境界に縁２１４３が表示されてしまい、表示品質が低下してしまう。そこで、複数文字で一つの文字列を構成すると判定されたときは、文字への装飾を行わないルーチンへジャンプするように動作する。なお、複数文字で一つの文字列を構成すると判定する一手法に、文字コードを調べ、ある所定領域のコードで有れば複数文字で一つの文字列を構成すると判定する方法がある。これにより、装飾文字、例えば縁取り文字の場合にも、それぞれの文字２１４２の境界に縁２１４３が表示されることはなくなり、表示品質が向上する。また、クリップ判定１２０７以降の動作は前記説明と同様である。
【００８５】
次に、ステップ１２０２において、複数文字で一つの文字を構成するケースでないと判定されたときは、指定された文字が他の文字に重なって表示されるかを判定する（ステップ１２０３）。ここでは、特に複数文字で一つの文字を構成する文字に、指定された文字が重なっているかを評価する。縁取り文字といった装飾文字は、線や面などの背景情報に重なる文字を見やすく表示することが目的で、重なる文字があるときに縁取り文字といった装飾文字を表示すると、重なった文字列が見にくくなってしまう。また、複数文字で一つの文字を構成する文字と、それに重ねて表示する文字を組合せることで、一つの記号等を表示する場合もあり、よってこのような用途では重ねて表示する文字を装飾文字にする必要性はない。よって、ステップ１２０３で指定された文字が他の文字に重なって表示されるかを判定し、重なっていると判定されたときは、文字への装飾を行わないルーチンへジャンプするように動作する。これにより図２３（ｄ）に示したような表示が実施され、目的とする表示が達成されるように動作する。また、クリップ判定１２０７以降の動作は前記説明と同様である。
【００８６】
次に、ステップ１２０３において、指定された文字が他の文字に重なって表示されないと判定されたときは、装飾文字の描画を実行する。クリップ判定（ステップ１２０４）で、指定された文字とクリップ領域の関係を判定し、画素単位のクリップ有り、または無しの文字描画ルーチンを呼び出す。クリップ処理ルーチンは、文字の描画開始座標、例えば指定された文字の左下端点とクリップ領域を比較し、文字の左下端点が図２４のクリップ領域２１６２，描画領域２１６１、あるいはそれ以外に含まれるのかを判定する。例えば、文字の高さがｈ，文字の幅がｗ，描画領域の左下端点が（ｘ１，ｙ１）、右上端点が（ｘ２，ｙ２）とすると、クリップ領域の左下端点は（ｘ１−ｗ，ｙ１−ｈ）、右上端点は（ｘ２，ｙ２）になる。文字の左下端点がクリップ領域外の時は、クリップで除かれ何も描画しないように動作する。文字の左下端点がクリップ領域内にあり、かつ描画領域内に含まれない時は、画素単位でクリップ処理を実施するという処理速度は速くないが確実に装飾文字描画を行うように動作する（ステップ１２０６）。文字の左下端点が描画領域内に含まれる時は、画素単位でクリップ処理を省略し、高速に装飾文字描画を実施するように動作する（ステップ１２０５）。このように処理を実施することで、高速に文字描画が達成される。なお、ここでは文字の描画開始座標を文字の左下端点としたが、この文字の左下端点からある一定値オフセットした点を文字の描画開始座標とした時は、描画領域及びクリップ領域の境界の座標値にオフセット分を加算するとよい。
【００８７】
【発明の効果】
第１の手段により、線幅の狭い線描画では表示速度が向上し、素早くユーザにグラフィックス画面を提供できるようになる。また、線幅の広い線では、折れ線の角などで画素抜けが発生しなくなるため、表示品質が向上する。
【００８８】
第２の手段により、複数回の面描画が１回の面描画処理で実施出来るようになるため表示速度が向上し、素早くユーザにグラフィックス画面を提供できるようになる。
【００８９】
第３の手段により、枠描画がスキップするように動作するため、表示速度が向上し、素早くユーザにグラフィックス画面を提供できるようになる。
【００９０】
第４の手段により、文字が表現したい内容を考慮し、装飾文字を適用する、適用しないが決定されるため、装飾文字適用による表示品質劣化を避けることが可能になり、表示品質が向上する。
【００９１】
第５の手段により、回転等の処理を行った場合でも線や面といった背景と文字が重なって表示されるため、表示品質が向上する。
【００９２】
第６の手段により、回転処理の前に不要なデータを除去する事が可能になったため、座標変換時間を短縮することが可能になり、素早くユーザにグラフィックス画面を提供できるようになる。
【００９３】
第７の手段により、スクロールが停止したときに差分描画の境界に画素の抜けや重なりが発生しないように動作するため、表示品質が向上する。
【図面の簡単な説明】
【図１】本発明を実現するナビゲーション装置の構成図。
【図２】本発明を実現する演算処理部のハードウェア構成図。
【図３】グラフィックス表示部のハードウェア構成図。
【図４】地図描画のフローチャート図。
【図５】地図描画手段のフローチャート図。
【図６】文字／背景描画手段のフローチャート図。
【図７】背景データ描画手段のフローチャート図。
【図８】線描画手段のフローチャート図。
【図９】実線描画手段のフローチャート図。
【図１０】基準線描画手段のフローチャート図。
【図１１】面描画手段のフローチャート図。
【図１２】面描画手段１，２及び３のフローチャート図。
【図１３】文字データ描画手段のフローチャート図。
【図１４】文字列描画手段のフローチャート図。
【図１５】文字描画手段のフローチャート図。
【図１６】スクロール地図描画の一実施例。
【図１７】座標変換処理テーブルの一実施例。
【図１８】プレクリップ処理の一実施例。
【図１９】補助線設定の一実施例。
【図２０】ポリラインのクリップ処理の一実施例。
【図２１】面パターン設定の一実施例。
【図２２】文字列の回転処理の一実施例。
【図２３】複数文字で１文字を表現する文字の縁取り表示の一実施例。
【図２４】文字のクリップ処理の一実施例。
【図２５】縁取り文字の表示手法の一実施例。
【図２６】使用する地図メッシュ数を削減する一実施例。
【符号の説明】
１…演算処理部、２…ディスプレイ、３…地図記憶装置、４…音声入出力装置、５…入力装置、６…車輪速センサ、７…地磁気センサ、８…ジャイロ、９…ＧＰＳ受信機、１０…交通情報受信装置、１１…車内ＬＡＮ装置、２１…ＣＰＵ、２２…ＲＡＭ、２３…ＲＯＭ、２４…ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）、２５…表示制御ＡＳＩＣ、２６…ＶＲＡＭ、２７…カラーパレット、２８…Ａ／Ｄ変換器、２９…ＳＣＩ（Ｓｅｒｉａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）、３０…Ｉ／Ｏ（Ｉｎｐｕｔ  ／Ｏｕｔｐｕｔ）、３１…カウンター、３２…ＩＴＵ（Ｉｎｔｅｇｒａｔｅｄ  Ｔｉｍｅｒ  Ｐｕｌｓｅ  Ｕｎｉｔ）、４１…ＦＩＦＯ、４２…表示制御ロジック、４３…パレットＲＡＭ、４４…Ｄ／Ａ変換器。
【図１】
0003550444.tif 000004
【図２】
0003550444.tif 000005
【図３】
0003550444.tif 000006
【図４】
0003550444.tif 000007
【図５】
0003550444.tif 000008
【図６】
0003550444.tif 000009
【図７】
0003550444.tif 000010
【図８】
0003550444.tif 000011
【図９】
0003550444.tif 000012
【図１０】
0003550444.tif 000013
【図１１】
0003550444.tif 000014
【図１２】
0003550444.tif 000015
【図１３】
0003550444.tif 000016
【図１４】
0003550444.tif 000017
【図１５】
0003550444.tif 000018
【図１６】
0003550444.tif 000019
【図１７】
0003550444.tif 000020
【図１８】
0003550444.tif 000021
【図１９】
0003550444.tif 000022
【図２０】
0003550444.tif 000023
【図２１】
0003550444.tif 000024
【図２２】
0003550444.tif 000025
【図２３】
0003550444.tif 000026
【図２４】
0003550444.tif 000027
【図２５】
0003550444.tif 000028
【図２６】
0003550444.tif 000029