(57)【特許請求の範囲】
【請求項１】
処理対象であるスプライトの水平方向および垂直方向の各画素数に基づき、前記スプライトの回転対称の中心を基準とした前記スプライトの４頂点の水平方向および垂直方向の各座標を算出する画素数／座標変換手段と、
前記画素数／座標変換手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標を用いて、前記回転対称の中心廻りに前記スプライトを回転させた場合の前記スプライトの４頂点の水平方向および垂直方向の各座標を算出する回転処理手段と、
前記回転処理手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標から画素平面における回転後のスプライトの４頂点の水平方向および垂直方向の座標を算出する手段であって、その算出過程において、前記スプライトの水平方向の画素数の奇／偶および垂直方向の画素数の奇／偶の組み合わせに応じて、前記回転後のスプライトの回転に伴う回転対称の中心のずれを少なくする座標補正処理を前記回転処理手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標に施す座標補正手段と、
前記画素平面内において前記スプライトの４頂点の各位置が前記座標補正手段により得られた回転後のスプライトの４頂点の各座標に対応した位置となるように、前記スプライトを前記画素平面に投影した場合において、前記スプライトの画像を構成することとなる前記画素平面内の画素を求め、それらの画素により前記スプライトの画像を示す画像データをメモリに書き込むマッピング処理手段と
を具備することを特徴とする画像処理装置。
【請求項２】
前記座標補正手段は、前記座標補正処理において、前記スプライトの水平方向の画素数および垂直方向の画素数の両方が偶数である場合に、前記回転処理手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標を０．５画素ピッチずつシフトする補正処理を実行することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記座標補正手段は、前記座標補正処理において、前記スプライトの水平方向の画素数および垂直方向の画素数の一方のみが偶数である場合に、前記スプライトの回転角度θに応じた補正量だけ前記回転処理手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標をシフトすることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記座標補正手段は、前記座標補正処理において、前記スプライトの水平方向の画素数が偶数であり、かつ、垂直方向の画素数が奇数である場合には、前記回転処理手段により得られた前記スプライトの４頂点の水平方向の座標をＣＯＳθ／２の絶対値だけシフトするとともに垂直方向の座標をＳＩＮθ／２の絶対値だけシフトし、前記スプライトの水平方向の画素数が奇数であり、かつ、垂直方向の画素数が偶数である場合には、前記回転処理手段により得られた前記スプライトの４頂点の水平方向の座標をＳＩＮθ／２の絶対値だけシフトするとともに垂直方向の座標をＣＯＳθ／２の絶対値だけシフトすることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
コンピュータを、
処理対象であるスプライトの水平方向および垂直方向の各画素数に基づき、前記スプライトの回転対称の中心を基準とした前記スプライトの４頂点の水平方向および垂直方向の各座標を算出する画素数／座標変換手段と、
前記画素数／座標変換手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標を用いて、前記回転対称の中心廻りに前記スプライトを回転させた場合の前記スプライトの４頂点の水平方向および垂直方向の各座標を算出する回転処理手段と、
前記回転処理手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標から画素平面における回転後のスプライトの４頂点の水平方向および垂直方向の座標を算出する手段であって、その算出過程において、前記スプライトの水平方向の画素数の奇／偶および垂直方向の画素数の奇／偶の組み合わせに応じて、前記回転後のスプライトの回転に伴う回転対称の中心のずれを少なくする座標補正処理を前記回転処理手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標に施す座標補正手段と、
前記画素平面内において前記スプライトの４頂点の各位置が前記座標補正手段により得られた回転後のスプライトの４頂点の各座標に対応した位置となるように、前記スプライトを前記画素平面に投影した場合において、前記スプライトの画像を構成することとなる前記画素平面内の画素を求め、それらの画素により前記スプライトの画像を示す画像データをメモリに書き込むマッピング処理手段と
して機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、回転処理を伴う描画処理機能を備えた画像処理装置およびプログラムに関する。
【背景技術】
【０００２】
スプライトの画像をフレームメモリ内にマッピングする描画処理機能を備えた画像処理装置が知られている。この種の画像処理装置の中には、マッピングの際にスプライトの画像を回転させる機能を備えたものがある。図５は、従来技術の下で行われていたスプライトの回転処理の例を示すフローチャートである。
【０００３】
この回転処理では、図６に示すスプライトの画素数ＳＩＺＥＸおよびＳＩＺＥＹを用いる。ここで、画素数ＳＩＺＥＹは、表示画面を構成する画素平面上にスプライトを回転させないで投影した場合においてスプライトが占める領域のＸ方向（水平方向）の画素数、画素数ＳＩＺＥＹは同領域のＹ方向（垂直方向）の画素数である。そして、回転処理では、まず、Ｘ方向の画素数ＳＩＺＥＸが偶数か奇数かを判断する（ステップＳ１）。そして、画素数ＳＩＺＥＸが奇数である場合には、次式に従って、画素平面内におけるスプライトの頂点Ａ、Ｂ、ＣおよびＤの各Ｘ座標ＤＡＸ、ＤＢＸ、ＤＣＸおよびＤＤＸ（図６参照）を算出する（ステップＳ２）。
ＤＡＸ＝−ＳＩＺＥＸ／２＋０．５            ……（１）
ＤＢＸ＝−ＳＩＺＥＸ／２＋０．５            ……（２）
ＤＣＸ＝  ＳＩＺＥＸ／２−０．５            ……（３）
ＤＤＸ＝  ＳＩＺＥＸ／２−０．５            ……（４）
【０００４】
一方、画素数ＳＩＺＥＸが偶数である場合には、次式に従って、画素平面内におけるスプライトの頂点Ａ、Ｂ、ＣおよびＤの各Ｘ座標ＤＡＸ、ＤＢＸ、ＤＣＸおよびＤＤＸを算出する（ステップＳ３）。
ＤＡＸ＝−ＳＩＺＥＸ／２                    ……（５）
ＤＢＸ＝−ＳＩＺＥＸ／２                    ……（６）
ＤＣＸ＝  ＳＩＺＥＸ／２−１                ……（７）
ＤＤＸ＝  ＳＩＺＥＸ／２−１                ……（８）
【０００５】
次に、Ｙ方向の画素数ＳＩＺＥＹが偶数か奇数かを判断する（ステップＳ４）。そして、画素数ＳＩＺＥＹが奇数である場合には、次式に従って、画素平面内におけるスプライトの頂点Ａ、Ｂ、ＣおよびＤの各Ｙ座標ＤＡＹ、ＤＢＹ、ＤＣＹおよびＤＤＹを算出する（ステップＳ５）。
ＤＡＹ＝−ＳＩＺＥＹ／２＋０．５            ……（９）
ＤＢＹ＝  ＳＩＺＥＹ／２−０．５            ……（１０）
ＤＣＹ＝  ＳＩＺＥＹ／２−０．５            ……（１１）
ＤＤＹ＝−ＳＩＺＥＹ／２＋０．５            ……（１２）
【０００６】
一方、画素数ＳＩＺＥＹが偶数である場合には、次式に従って、画素平面内におけるスプライトの頂点Ａ、Ｂ、ＣおよびＤの各Ｙ座標ＤＡＹ、ＤＢＹ、ＤＣＹおよびＤＤＹを算出する（ステップＳ６）。
ＤＡＹ＝−ＳＩＺＥＹ／２                    ……（１３）
ＤＢＹ＝  ＳＩＺＥＹ／２−１                ……（１４）
ＤＣＹ＝  ＳＩＺＥＹ／２−１                ……（１５）
ＤＤＹ＝−ＳＩＺＥＹ／２                    ……（１６）
【０００７】
そして、このようにして求めたスプライトの４頂点のＸ座標およびＹ座標を用いて周知の回転アフィン変換を実行する（ステップＳ７）。具体的には、次式にスプライトの回転角度θと各頂点のＸ座標およびＹ座標を代入し、スプライトの回転後の各頂点の座標Ｘ’およびＹ’を算出する。
Ｘ’＝Ｘ＊ＣＯＳθ＋Ｙ＊ＳＩＮθ            ……（１７）
Ｙ’＝Ｙ＊ＣＯＳθ−Ｘ＊ＳＩＮθ            ……（１８）
【０００８】
そして、画像処理装置は、マッピング処理等の後続の処理を実行する。ここで、マッピング処理では、表示画面を構成する画素平面内においてスプライトの４頂点の各位置が上述のようにして算出された各座標Ｘ’、Ｙ’に対応した位置となるように、スプライトを画素平面に投影した場合において、スプライトの画像を構成することとなる画素平面内の画素を求め、それらの画素により回転後のスプライトの画像をリサンプリングした画像データをフレームメモリに書き込む。これにより回転後のスプライトの画像が表示装置に表示されることとなる。なお、回転アフィン変換を用いた画像の回転処理については例えば特許文献１に開示されている。
【特許文献１】特開２００７−８０００１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、上述した従来の画像処理装置は、スプライトの水平方向および垂直方向の各画素数の少なくとも一方が偶数である場合に、回転に伴って、スプライトの回転対称の中心がずれ、あるいはスプライトの頂点の回転軌跡がぶれる、という問題があった。以下、図７を参照し、この問題について詳述する。
【００１０】
まず、比較のため、スプライトの画素数ＳＩＺＥＸおよびＳＩＺＥＹがいずれも奇数である場合について説明する。この場合、図５におけるステップＳ２およびＳ５が実行されるため、４頂点のＸ座標の絶対値が皆等しくなり、Ｙ座標の絶対値も皆等しくなる。そして、このように４頂点の座標が決定されたスプライトの回転対称の中心Ｑは、図７（ａ）に例示するように、画素平面においてＸ方向およびＹ方向の各アドレスがいずれも０である画素Ｏ（０、０）の中心に位置することとなる。この回転対称の中心Ｑが画素Ｏ（０、０）の中心に配置されたスプライトの４頂点は、図７（ｂ）に示すように、スプライトが回転すると、画素平面内において同一の円軌道に沿って移動する。このように、スプライトの画素数ＳＩＺＥＸおよびＳＩＺＥＹがいずれも奇数である場合には、回転対称の中心のずれおよび回転軌跡のぶれの問題は生じない。
【００１１】
これに対し、例えばスプライトの画素数ＳＩＺＥＸおよびＳＩＺＥＹがいずれも偶数である場合、図５におけるステップＳ３およびＳ６が実行されるため、頂点ＡおよびＢのＸ座標の絶対値は頂点ＣおよびＤのＸ座標の絶対値よりも「１」だけ大きくなり、頂点ＡおよびＤのＹ座標の絶対値は頂点ＢおよびＣのＹ座標の絶対値よりも「１」だけ大きくなる。そして、このように４頂点の座標が決定されたスプライトの回転対称の中心Ｑは、図７（ｃ）に示すように、画素Ｏ（０、０）を他の画素から隔てる境界をなす矩形の左上の頂点に位置することとなる。このようにスプライトの回転対称の中心Ｑが画素の中心からずれた位置に配置されると、図７（ｄ）に示すように、スプライトの回転処理により、スプライトの回転対称の中心Ｑは画素Ｏ（０、０）の中心廻りに回転し、回転対称の中心Ｑのずれの問題が生じる。また、４頂点のＸ座標の絶対値が不揃いとなり、Ｙ座標の絶対値が不揃いとなるため、スプライトの回転処理により、スプライトの４頂点の回転軌跡のぶれの問題が生じる。
【００１２】
スプライトの画素数ＳＩＺＥＸおよびＳＩＺＥＹの一方が偶数である場合も同様である。この場合も４頂点のＸ座標の絶対値またはＹ座標の絶対値の一方が不揃いとなる。従って、スプライトは、回転対称の中心Ｑを画素Ｏ（０、０）の中心に対して偏心させた状態で回転する。より具体的には、スプライトの回転対称の中心Ｑは、画素Ｏ（０、０）の中心の廻りに半径０．５画素ピッチの円軌道を描いて回転することとなり、回転対称の中心Ｑのずれの問題が生じる。また、スプライトの４頂点のＸ座標の絶対値またはＹ座標の絶対値の一方が不揃いであるため、スプライトの４頂点の回転軌跡のぶれの問題が生じる。
【００１３】
この発明は、以上説明した事情に鑑みてなされたものであり、回転処理を伴うスプライトの描画処理において、スプライトの回転対称の中心のずれおよび頂点の回転軌跡のぶれを少なくする技術的手段を提供することを目的としている。
【課題を解決するための手段】
【００１４】
この発明は、処理対象であるスプライトの水平方向および垂直方向の各画素数に基づき、前記スプライトの回転対称の中心を基準とした前記スプライトの４頂点の水平方向および垂直方向の各座標を算出する画素数／座標変換手段と、前記画素数／座標変換手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標を用いて、前記回転対称の中心廻りに前記スプライトを回転させた場合の前記スプライトの４頂点の水平方向および垂直方向の各座標を算出する回転処理手段と、前記回転処理手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標から画素平面における回転後のスプライトの４頂点の水平方向および垂直方向の座標を算出する手段であって、その算出過程において、前記スプライトの水平方向の画素数の奇／偶および垂直方向の画素数の奇／偶の組み合わせに応じて、前記回転後のスプライトの回転に伴う回転対称の中心のずれを少なくする座標補正処理を前記回転処理手段により得られた前記スプライトの４頂点の水平方向および垂直方向の各座標に施す座標補正手段と、前記画素平面内において前記スプライトの４頂点の各位置が前記座標補正手段により得られた回転後のスプライトの４頂点の各座標に対応した位置となるように、前記スプライトを前記画素平面に投影した場合において、前記スプライトの画像を構成することとなる前記画素平面内の画素を求め、それらの画素により前記スプライトの画像を示す画像データをメモリに書き込むマッピング処理手段とを具備することを特徴とする画像処理装置およびコンピュータを上記各手段として機能させるプログラムを提供する。
【００１５】
かかる発明によれば、画素数／座標変換手段により得られるスプライトの４頂点の水平方向の座標の絶対値が揃い、かつ、垂直方向の座標の絶対値が揃うので、スプライトの回転の際にスプライトの４頂点の回転軌跡のぶれをなくすことができる。また、回転処理手段により得られたスプライトの４頂点の水平方向および垂直方向の座標に対し、スプライトの水平方向の画素数の奇／偶および垂直方向の画素数の奇／偶の組み合わせに応じて、回転後のスプライトの回転対称の中心のずれを少なくする座標補正処理が実行される。従って、スプライトの回転に伴う回転対称の中心のずれを少なくすることができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照し、この発明の実施の形態を説明する。
図１は、この発明の一実施形態である画像処理装置の構成を示すブロック図である。図１に示すように、本実施形態における画像処理装置は、ＣＰＵ１と、スプライトメモリ２と、描画処理部３と、フレームメモリ６と、表示制御部７と、表示装置８とを有している。ここで、フレームメモリ６は、表示装置８に表示する画像データを記憶するメモリであり、ＲＡＭ等により構成されている。表示制御部７は、一定時間長の垂直走査周期毎にフレームメモリ６に記憶された画像データを表示装置８に表示する制御を繰り返す。表示装置８は、例えば液晶パネルとその駆動装置により構成されている。
【００１７】
スプライトメモリ２は、ゲームのキャラクタ等のスプライトの画像データを記憶するメモリであり、例えばＲＯＭにより構成されている。描画処理部３は、ＣＰＵ１からの指示に従い、スプライトメモリ２に記憶されたスプライトの画像データをフレームメモリ６内の表示対象の画像データに反映させる描画処理を実行する装置である。
【００１８】
本実施形態における描画処理部３は、ＣＰＵ１からの指示に従い、スプライトを回転させ、その画像データをフレームメモリ６に書き込む回転処理機能を備えている。そして、描画処理部３は、この回転処理機能を実現するための手段として、座標演算部４とマッピング処理部５とを有する。
【００１９】
ここで、座標演算部４は、描画対象であるスプライトのＸ方向の画素数ＳＩＺＥＸ、Ｙ方向の画素数ＹＳＩＺＥＹおよび回転角度θに関する指示をＣＰＵ１から受け取り、画素平面内においてスプライトを角度θだけ回転させた場合の４頂点Ａ、Ｂ、ＣおよびＤのＸ、Ｙ座標を算出する手段である。
【００２０】
マッピング処理部５は、マッピング処理を実行する手段である。このマッピング処理において、マッピング処理部５は、描画対象であるスプライトの画像データのスプライトメモリ２内でのアドレスと画素平面内におけるスプライトの位置を指示する配置情報（例えばスプライトの中心の位置）をＣＰＵ１から受け取るとともに、回転後のスプライトの４頂点の画素平面内でのＸ、Ｙ座標を座標演算部４から受け取る。そして、マッピング処理部５は、スプライトの４頂点の各位置が座標演算部４によって算出されたＸ、Ｙ座標に対応した各位置となるように、回転後のスプライトを画素平面に投影した場合において、スプライトの画像を構成することとなる画素平面内の各画素を求める。そして、スプライトメモリ２から描画対象であるスプライトの画像データを読み出し、この画像データを用いて、回転後のスプライトの画像を構成する画素平面内の各画素の画像データを算出し、かつ、ＣＰＵ１からの配置情報が示す位置をスプライトが占めるようにこの画像データの位置調整を行い、位置調整後の画像データをフレームメモリに書き込む。
【００２１】
本実施形態において、座標演算部４は、画素数／座標変換部４１と、回転処理部４２と、座標補正部４３とを有する。図２は、この座標演算部４の各部が実行する処理内容を示す図である。
【００２２】
画素数／座標変換部４１は、図２に示す画素数／座標変換処理を実行する。この画素数／座標変換処理では、処理対象であるスプライトのＸ方向およびＹ方向の各画素数ＳＩＺＥＸおよびＳＩＺＥＹを用い、スプライトの回転対称の中心Ｑを画素平面内においてＸ方向のアドレスおよびＹ方向のアドレスがいずれも０である画素Ｏ（０、０）の中心に位置させた場合のスプライトの４頂点Ａ、Ｂ、Ｃ、ＤのＸ方向の各座標ＤＡＸ、ＤＢＸ、ＤＣＸおよびＤＤＸとＹ方向の各座標ＤＡＹ、ＤＢＹ、ＤＣＹおよびＤＤＹを次式により算出する。
ＤＡＸ＝−ＳＩＺＥＸ／２＋０．５            ……（１９）
ＤＡＹ＝−ＳＩＺＥＹ／２＋０．５            ……（２０）
ＤＢＸ＝−ＳＩＺＥＸ／２＋０．５            ……（２１）
ＤＢＹ＝  ＳＩＺＥＹ／２−０．５            ……（２２）
ＤＣＸ＝  ＳＩＺＥＸ／２−０．５            ……（２３）
ＤＣＹ＝  ＳＩＺＥＹ／２−０．５            ……（２４）
ＤＤＸ＝  ＳＩＺＥＸ／２−０．５            ……（２５）
ＤＤＹ＝−ＳＩＺＥＹ／２＋０．５            ……（２６）
【００２３】
回転処理部４２は、図２に示す回転処理を実行する。この回転処理では、画素数／座標変換処理により得られたスプライトの４頂点のＸ方向の各座標ＤＡＸ、ＤＢＸ、ＤＣＸおよびＤＤＸとＹ方向の各座標ＤＡＹ、ＤＢＹ、ＤＣＹおよびＤＤＹを用い、画素Ｏ（０、０）の中心廻りにスプライトを角度θだけ回転させた場合のスプライトの４頂点のＸ方向の各座標ＤＡＸ＿ＲＯＴ、ＤＢＸ＿ＲＯＴ、ＤＣＸ＿ＲＯＴおよびＤＤＸ＿ＲＯＴとＹ方向の各座標ＤＡＹ＿ＲＯＴ、ＤＢＹ＿ＲＯＴ、ＤＣＹ＿ＲＯＴおよびＤＤＹ＿ＲＯＴを次の回転アフィン変換式に従って算出する。
ＤＡＸ＿ＲＯＴ＝  ＤＡＸ・ＣＯＳθ＋ＤＡＹ・ＳＩＮθ  ……（２７）
ＤＡＹ＿ＲＯＴ＝  ＤＡＹ・ＣＯＳθ−ＤＡＸ・ＳＩＮθ  ……（２８）
ＤＢＸ＿ＲＯＴ＝  ＤＢＸ・ＣＯＳθ＋ＤＢＹ・ＳＩＮθ  ……（２９）
ＤＢＹ＿ＲＯＴ＝  ＤＢＹ・ＣＯＳθ−ＤＢＸ・ＳＩＮθ  ……（３０）
ＤＣＸ＿ＲＯＴ＝  ＤＣＸ・ＣＯＳθ＋ＤＣＹ・ＳＩＮθ  ……（３１）
ＤＣＹ＿ＲＯＴ＝  ＤＣＹ・ＣＯＳθ−ＤＣＸ・ＳＩＮθ  ……（３２）
ＤＤＸ＿ＲＯＴ＝  ＤＤＸ・ＣＯＳθ＋ＤＤＹ・ＳＩＮθ  ……（３３）
ＤＤＹ＿ＲＯＴ＝  ＤＤＹ・ＣＯＳθ−ＤＤＸ・ＳＩＮθ  ……（３４）
【００２４】
座標補正部４３は、図２に示す座標補正処理を実行する。この座標補正処理では、回転処理により得られたスプライトの４頂点のＸ方向の各座標ＤＡＸ＿ＲＯＴ、ＤＢＸ＿ＲＯＴ、ＤＣＸ＿ＲＯＴおよびＤＤＸ＿ＲＯＴとＹ方向の各座標ＤＡＹ＿ＲＯＴ、ＤＢＹ＿ＲＯＴ、ＤＣＹ＿ＲＯＴおよびＤＤＹ＿ＲＯＴから画素平面における回転後のスプライトの４頂点のＸ方向の各座標ＤＡＸ＿ＲＯＴ’、ＤＢＸ＿ＲＯＴ’、ＤＣＸ＿ＲＯＴ’およびＤＤＸ＿ＲＯＴ’とＹ方向の各座標ＤＡＹ＿ＲＯＴ’、ＤＢＹ＿ＲＯＴ’、ＤＣＹ＿ＲＯＴ’およびＤＤＹ＿ＲＯＴ’を算出する。その際、座標補正処理では、Ｘ方向の画素数ＳＩＺＥＸの奇／偶およびＹ方向の画素数ＳＩＺＥＹの奇／偶の組み合わせに応じて、スプライトの回転に伴う回転対称の中心Ｑのずれを少なくするための補正を、回転処理により得られたスプライトの４頂点のＸ方向の各座標ＤＡＸ＿ＲＯＴ、ＤＢＸ＿ＲＯＴ、ＤＣＸ＿ＲＯＴおよびＤＤＸ＿ＲＯＴとＹ方向の各座標ＤＡＹ＿ＲＯＴ、ＤＢＹ＿ＲＯＴ、ＤＣＹ＿ＲＯＴおよびＤＤＹ＿ＲＯＴに施す。
【００２５】
具体的には、Ｘ方向の画素数ＳＩＺＥＸおよびＹ方向の画素数ＳＩＺＥＹがいずれも奇数である場合には、Ｘ方向の補正値ＲＯＴ＿ＡＤＪＸおよびＹ方向の補正値ＲＯＴ＿ＡＤＪＹをいずれも０とする。また、Ｘ方向の画素数ＳＩＺＥＸおよびＹ方向の画素数ＳＩＺＥＹがいずれも偶数である場合には、Ｘ方向の補正値ＲＯＴ＿ＡＤＪＸおよびＹ方向の補正値ＲＯＴ＿ＡＤＪＹをいずれも０．５とする。また、Ｘ方向の画素数ＳＩＺＥＸが奇数であり、Ｙ方向の画素数ＳＩＺＥＹが偶数である場合には、Ｘ方向の補正値ＲＯＴ＿ＡＤＪＸはＳＩＮθ／２の絶対値Ａｂｓ（ＳＩＮθ）／２とし、Ｙ方向の補正値ＲＯＴ＿ＡＤＪＹはＣＯＳθ／２の絶対値Ａｂｓ（ＣＯＳθ）／２とする。また、Ｘ方向の画素数ＳＩＺＥＸが偶数であり、Ｙ方向の画素数ＳＩＺＥＹが奇数である場合には、Ｘ方向の補正値ＲＯＴ＿ＡＤＪＸはＡｂｓ（ＣＯＳθ）／２とし、Ｙ方向の補正値ＲＯＴ＿ＡＤＪＹはＡｂｓ（ＳＩＮθ）／２とするのである。
【００２６】
そして、座標補正処理では、次式に従い、画素平面内における回転後のスプライトの４頂点のＸ方向の各座標ＤＡＸ＿ＲＯＴ’、ＤＢＸ＿ＲＯＴ’、ＤＣＸ＿ＲＯＴ’およびＤＤＸ＿ＲＯＴ’とＹ方向の各座標ＤＡＹ＿ＲＯＴ’、ＤＢＹ＿ＲＯＴ’、ＤＣＹ＿ＲＯＴ’およびＤＤＹ＿ＲＯＴ’を算出する。
ＤＡＸ＿ＲＯＴ’＝ＤＡＸ＿ＲＯＴ−ＲＯＴ＿ＡＤＪＸ  ……（３５）
ＤＡＹ＿ＲＯＴ’＝ＤＡＹ＿ＲＯＴ−ＲＯＴ＿ＡＤＪＹ  ……（３６）
ＤＢＸ＿ＲＯＴ’＝ＤＢＸ＿ＲＯＴ−ＲＯＴ＿ＡＤＪＸ  ……（３７）
ＤＢＹ＿ＲＯＴ’＝ＤＢＹ＿ＲＯＴ−ＲＯＴ＿ＡＤＪＹ  ……（３８）
ＤＣＸ＿ＲＯＴ’＝ＤＣＸ＿ＲＯＴ−ＲＯＴ＿ＡＤＪＸ  ……（３９）
ＤＣＹ＿ＲＯＴ’＝ＤＣＹ＿ＲＯＴ−ＲＯＴ＿ＡＤＪＹ  ……（４０）
ＤＤＸ＿ＲＯＴ’＝ＤＤＸ＿ＲＯＴ−ＲＯＴ＿ＡＤＪＸ  ……（４１）
ＤＤＹ＿ＲＯＴ’＝ＤＤＹ＿ＲＯＴ−ＲＯＴ＿ＡＤＪＹ  ……（４２）
【００２７】
マッピング処理部５は、このようにして得られた補正後におけるスプライトの４頂点のＸ、Ｙ座標を用いて、上述したマッピング処理を実行する。以上が本実施形態による画像処理装置の詳細である。
【００２８】
次に具体例を挙げ、本実施形態の動作を説明する。図３は、スプライトのＸ方向の画素数ＳＩＺＥＸが偶数２ｍ（ｍは整数）であり、Ｙ方向の画素数ＳＩＺＥＹが偶数２ｎ（ｎは整数）である場合の本実施形態の動作を、図４は、スプライトのＸ方向の画素数ＳＩＺＥＸが偶数２ｍ（ｍは整数）であり、Ｙ方向の画素数ＳＩＺＥＹが奇数２ｎ＋１（ｎは整数）である場合の本実施形態の動作を示している。さらに詳述すると、図３（ａ）、（ｂ）、（ｃ）および（ｄ）と図４（ａ）、（ｂ）、（ｃ）および（ｄ）は、本実施形態において回転角度θが０°、９０°、１８０°および２７０°の各場合における座標補正処理後のスプライトの画素平面内での位置を示している。また、図３（ａ）’、（ｂ）’、（ｃ）’および（ｄ）’と図４（ａ）’、（ｂ）’、（ｃ）’および（ｄ）’において、破線により示す図形は回転処理後、座標補正処理前のスプライトの画素平面内での位置を示している。なお、図３（ａ）’、（ｂ）’、（ｃ）’および（ｄ）’等では、座標補正処理前後におけるスプライトの位置の移動を分かりやすくするため、座標補正処理後のスプライトが実線により示されている。
【００２９】
画素数ＳＩＺＥＸおよびＳＩＺＥＹの両方が偶数であり、ＳＩＺＥＸ＝２ｍ、ＳＩＺＥＹ＝２ｎであると、画素数／座標変換処理では、上記式（１９）〜（２６）にＳＩＺＥＸおよびＳＩＺＥＹを代入して得られる４頂点のＸ座標の絶対値がいずれもｍ−０．５となり、４頂点のＹ座標の絶対値がいずれもｎ−０．５となる。このようにして算出される４頂点の座標は、図３（ａ）’に示すように、スプライトの回転対称の中心Ｑを画素平面における画素Ｏ（０、０）の中心に位置させたときのスプライトの４頂点の座標に相当する。本実施形態における回転処理では、このようにスプライトの回転対称の中心Ｑを画素Ｏ（０、０）の中心に位置させて角度θだけスプライトを回転させた場合において、画素Ｏ（０、０）の中心から見た４頂点のＸ方向の各座標ＤＡＸ＿ＲＯＴ、ＤＢＸ＿ＲＯＴ、ＤＣＸ＿ＲＯＴおよびＤＤＸ＿ＲＯＴとＹ方向の各座標ＤＡＹ＿ＲＯＴ、ＤＢＹ＿ＲＯＴ、ＤＣＹ＿ＲＯＴおよびＤＤＹ＿ＲＯＴが算出される。
【００３０】
そして、座標補正処理では、Ｘ方向の補正値ＲＯＴ＿ＡＤＪＸおよびＹ方向の補正値ＲＯＴ＿ＡＤＪＹがいずれも０．５とされる。そして、前掲式（３５）〜（４２）の演算により、補正後の４頂点のＸ方向の各座標ＤＡＸ＿ＲＯＴ’、ＤＢＸ＿ＲＯＴ’、ＤＣＸ＿ＲＯＴ’およびＤＤＸ＿ＲＯＴ’とＹ方向の各座標ＤＡＹ＿ＲＯＴ’、ＤＢＹ＿ＲＯＴ’、ＤＣＹ＿ＲＯＴ’およびＤＤＹ＿ＲＯＴ’が算出される。
【００３１】
これらの４頂点の座標は、図３（ａ）〜（ｄ）に示すように、画素平面内において原点の画素Ｏ（０、０）を他の画素から隔てる境界である矩形の左上の頂点にスプライトの回転対称の中心Ｑを位置させたときのスプライトの４頂点の座標となる。なお、図３（ａ）〜（ｄ）には、回転角度θが０°、９０°、１８０°、２７０°の各場合におけるスプライトの配置状態が示されているが、他の回転角度の場合も同様であり、前掲式（３５）〜（４２）の演算により得られる４頂点の座標は、原点の画素Ｏ（０、０）を他の画素から隔てる境界である矩形の左上の頂点にスプライトの回転対称の中心Ｑを位置させたときのスプライトの４頂点の座標となる。
【００３２】
以上のように、本実施形態において画素数ＳＩＺＥＸおよびＳＩＺＥＹの両方が偶数である場合には、画素平面において画素Ｏ（０、０）を他の画素から隔てる境界である矩形の左上の頂点に常に回転対称の中心Ｑを位置させて、スプライトを回転させることができる。従って、スプライトの回転時に、回転対称の中心のぶれがなく、回転軌跡がぶれることもない。
【００３３】
次にＸ方向の画素数ＳＩＺＥＸが偶数２ｍであり、Ｙ方向の画素数ＳＩＺＥＹが奇数２ｎ＋１である場合について説明する。この場合、画素数／座標変換処理、回転処理の内容は、画素数ＳＩＺＥＸおよびＳＩＺＥＹの両方が偶数である場合と基本的に同様である。すなわち、画素数／座標変換処理および回転処理を経ることにより、スプライトの回転対称の中心Ｑを画素Ｏ（０、０）の中心に位置させて角度θだけスプライトを回転させた場合において、画素Ｏ（０、０）の中心から見た４頂点のＸ方向の各座標ＤＡＸ＿ＲＯＴ、ＤＢＸ＿ＲＯＴ、ＤＣＸ＿ＲＯＴおよびＤＤＸ＿ＲＯＴとＹ方向の各座標ＤＡＹ＿ＲＯＴ、ＤＢＹ＿ＲＯＴ、ＤＣＹ＿ＲＯＴおよびＤＤＹ＿ＲＯＴが得られる。
【００３４】
しかし、Ｘ方向の画素数ＳＩＺＥＸが偶数２ｍであり、Ｙ方向の画素数ＳＩＺＥＹが奇数２ｎ＋１である場合、座標補正処理の態様は、画素数ＳＩＺＥＸおよびＳＩＺＥＹの両方が偶数である場合とは異なったものとなる。さらに詳述すると次の通りである。
【００３５】
まず、画素数ＳＩＺＥＸおよびＳＩＺＥＹの両方が偶数である場合、如何なる回転角度θにおいても、回転後のスプライトの回転対称の中心Ｑは、画素Ｏ（０、０）を他の画素から隔てる境界をなす矩形の左上の頂点に位置する（図３（ａ）〜（ｄ）参照）。
【００３６】
これに対し、Ｘ方向の画素数ＳＩＺＥＸが偶数であり、Ｙ方向の画素数ＳＩＺＥＹが奇数である場合には、回転後のスプライトの回転対称の中心Ｑがとるべき位置は回転角度θにより異なったものとなる。例えば回転角度θが０°および１８０°の各場合、回転後のスプライトの回転対称の中心Ｑは、図４（ａ）および（ｃ）に示すように、画素平面内において画素Ｏ（０、０）を他の画素から隔てる境界である矩形の左辺中央の点に位置する必要がある。また、回転角度θが９０°および２７０°の各場合、回転後のスプライトの回転対称の中心Ｑは、図４（ｂ）および（ｄ）に示すように、画素平面内において画素Ｏ（０、０）を他の画素から隔てる境界である矩形の上辺中央の点に位置する必要がある。
【００３７】
これは、回転を伴わないスプライトの描画処理では、Ｘ方向の画素数ＳＩＺＥＸが偶数であり、かつ、Ｙ方向の画素数ＳＩＺＥＹが奇数であるスプライトは図４（ａ）および（ｃ）に示すように画素平面上に配置し、Ｘ方向の画素数ＳＩＺＥＸが奇数であり、かつ、Ｙ方向の画素数ＳＩＺＥＹが偶数であるスプライトは図４（ｂ）および（ｄ）に示すように画素平面上に配置するので、回転を伴うスプライトの描画処理でもスプライトの回転対称の中心Ｑの配置方法をこれに合わせるためである。このようにスプライトの回転対称の中心Ｑの配置方法を回転を伴わないスプライトの描画処理と回転を伴うスプライトの描画処理とで同じにしておくことにより、幾つかの利点が得られる。まず、回転を伴う描画処理により画素平面上に配置されるスプライトと、回転を伴わない描画処理により画素平面上に配置されるスプライトとが混在する場合に、両スプライトの位置関係を意図したものにするのが容易になる。また、スプライトが回転していない状態から回転を開始するような場合の描画を行う場合に、スプライトの回転開始の際にスプライトの位置が不連続に変化するのを回避することができる。
【００３８】
以上のような理由により、Ｘ方向の画素数ＳＩＺＥＸが偶数であり、Ｙ方向の画素数ＳＩＺＥＹが奇数である場合には、回転後のスプライトの回転対称の中心Ｑがとるべき位置は回転角度θにより異なったものとなる。従って、この場合の座標補正処理では、補正量ＲＯＴ＿ＡＤＪＸおよびＲＯＴ＿ＡＤＪＹは、回転角度θに応じて変化させる。具体的にはＸ方向の補正値ＲＯＴ＿ＡＤＪＸはＡｂｓ（ＣＯＳθ）／２とされ、Ｙ方向の補正値ＲＯＴ＿ＡＤＪＹはＡｂｓ（ＳＩＮθ）／２とされ、前掲式（３５）〜（４２）の演算により、補正後の４頂点のＸ方向の各座標ＤＡＸ＿ＲＯＴ’、ＤＢＸ＿ＲＯＴ’、ＤＣＸ＿ＲＯＴ’およびＤＤＸ＿ＲＯＴ’とＹ方向の各座標ＤＡＹ＿ＲＯＴ’、ＤＢＹ＿ＲＯＴ’、ＤＣＹ＿ＲＯＴ’およびＤＤＹ＿ＲＯＴ’が算出される。
【００３９】
ここで、θ＝０°、９０°、１８０°、２７０°の各場合について、補正値ＲＯＴ＿ＡＤＪＸ＝Ａｂｓ（ＣＯＳθ）／２と、補正値ＲＯＴ＿ＡＤＪＹ＝Ａｂｓ（ＳＩＮθ）／２を計算すると、次のようになる。
θ＝０°        ＲＯＴ＿ＡＤＪＸ＝０．５      ＲＯＴ＿ＡＤＪＹ＝０
θ＝９０°      ＲＯＴ＿ＡＤＪＸ＝０          ＲＯＴ＿ＡＤＪＹ＝０．５
θ＝１８０°    ＲＯＴ＿ＡＤＪＸ＝０．５      ＲＯＴ＿ＡＤＪＹ＝０
θ＝２７０°    ＲＯＴ＿ＡＤＪＸ＝０          ＲＯＴ＿ＡＤＪＹ＝０．５
【００４０】
従って、座標補正処理により得られたＸ方向の各座標ＤＡＸ＿ＲＯＴ’、ＤＢＸ＿ＲＯＴ’、ＤＣＸ＿ＲＯＴ’およびＤＤＸ＿ＲＯＴ’とＹ方向の各座標ＤＡＹ＿ＲＯＴ’、ＤＢＹ＿ＲＯＴ’、ＤＣＹ＿ＲＯＴ’およびＤＤＹ＿ＲＯＴ’が示す各位置にスプライトの４頂点を位置させると、θ＝０°、９０°、１８０°、２７０°の各場合のスプライトの配置は図４（ａ）、（ｂ）、（ｃ）、（ｄ）に示すものとなる。
【００４１】
また、０°、９０°、１８０°、２７０°以外の回転角度θにおけるスプライトの配置は、θ＝０°、９０°、１８０°、２７０°の各場合のスプライトの配置との連続性が保たれたものとなる。
【００４２】
まず、回転角度θが０°から９０°まで変化する場合には、Ｘ方向の補正値ＲＯＴ＿ＡＤＪＸ＝Ａｂｓ（ＣＯＳθ）／２は、角度θの増加に応じて０．５から０まで余弦曲線を描いて連続的に減少し、Ｙ方向の補正値ＲＯＴ＿ＡＤＪＹ＝Ａｂｓ（ＳＩＮθ）／２は、角度θの増加に応じて０から０．５まで正弦曲線を描いて連続的に増加する。このため、スプライトの回転対称の中心Ｑの位置は、回転角度θが０°から９０°まで変化する間、画素Ｏ（０、０）の中心廻りの半径０．５画素ピッチの円周に沿って、画素Ｏ（０、０）の他の画素との境界である矩形の左辺中央から上辺中央に移動する。
【００４３】
次に、回転角度θが９０°から１８０°まで変化する場合には、Ｘ方向の補正値ＲＯＴ＿ＡＤＪＸ＝Ａｂｓ（ＣＯＳθ）／２は、角度θの増加に応じて０から０．５まで余弦曲線を描いて連続的に増加し、Ｙ方向の補正値ＲＯＴ＿ＡＤＪＹ＝Ａｂｓ（ＳＩＮθ）／２は、角度θの増加に応じて０．５から０まで正弦曲線を描いて連続的に減少する。このため、スプライトの回転対称の中心Ｑの位置は、回転角度θが９０°から１８０°まで変化する間、画素Ｏ（０、０）の中心廻りの半径０．５画素ピッチの円周に沿って、画素Ｏ（０、０）の他の画素との境界である矩形の上辺中央から左辺中央に移動する。
【００４４】
以下同様であり、回転角度θを連続的に変化させた場合に、スプライトの回転対称の中心Ｑの位置は、１８０°の周期で、上記矩形の上辺中央と左辺中央との間を半径０．５画素ピッチの円弧に沿って往復する。
【００４５】
以上のように、本実施形態において、スプライトのＸ方向の画素数ＳＩＺＥＸが偶数であり、かつ、Ｙ方向の画素数ＳＩＺＥＹが奇数である場合には、回転に伴うスプライトの回転対称の中心Ｑのずれをなくすことはできない。しかし、仮にスプライトを１回転させる場合に、従来技術の下では、スプライトの回転対称の中心Ｑが半径０．５画素ピッチの円に沿って１周したのに対し、本実施形態においてスプライトの回転対称の中心Ｑは半径０．５画素ピッチの円の１／４周相当の区間を往復するに過ぎない。このように本実施形態では、スプライトの回転対称の中心Ｑのずれを従来よりも小さくすることができる。また、本実施形態では、回転処理の際、スプライトの４頂点のＸ方向の座標の絶対値が揃い、かつ、４頂点のＹ方向の座標の絶対値も揃うので、スプライトの４頂点の回転軌跡のぶれの問題が生じない。
【００４６】
スプライトのＸ方向の画素数ＳＩＺＥＸが奇数であり、かつ、Ｙ方向の画素数ＳＩＺＥＹが偶数である場合、座標補正処理では、補正値ＲＯＴ＿ＡＤＪＸとしてＡｂｓ（ＳＩＮθ）／２を、補正値ＲＯＴ＿ＡＤＪＹとしてＡｂｓ（ＣＯＳθ）／２を用いる。この点を除けば、スプライトのＸ方向の画素数ＳＩＺＥＸが奇数であり、かつ、Ｙ方向の画素数ＳＩＺＥＹが偶数である場合の処理内容は、既に説明したスプライトのＸ方向の画素数ＳＩＺＥＸが偶数であり、かつ、Ｙ方向の画素数ＳＩＺＥＹが奇数である場合の処理内容と同様である。
【００４７】
スプライトのＸ方向の画素数ＳＩＺＥＸが奇数であり、かつ、Ｙ方向の画素数ＳＩＺＥＹが奇数である場合、座標補正処理では、補正値ＲＯＴ＿ＡＤＪＸおよびＲＯＴ＿ＡＤＪＹとして０を用いる。従って、従来技術と同様、回転対称の中心Ｑのずれおよび４頂点の回転軌跡のぶれの問題を発生させることなくスプライトを回転させることができる。
【００４８】
以上のように、本実施形態によれば、スプライトを回転させて描画する場合において、スプライトの回転対称の中心Ｑのずれをなくし、または小さくし、かつ、４頂点の回転軌跡のぶれを発生させないでスプライトを回転させることができる。
【００４９】
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態があり得る。例えば次の通りである。
（１）画素数／座標変換部４１、回転処理部４２および座標補正部４３を含む座標演算部４と、マッピング処理部５は、上記実施形態において説明した処理を行う専用のハードウェアであってもよいが、コンピュータにそのような処理を実行させる描画アプリケーションプログラムであってもよい。
（２）座標補正処理において用いる補正値ＲＯＴ＿ＡＤＪＸやＲＯＴ＿ＡＤＪＹは、Ａｂｓ（ＳＩＮθ）／２やＡｂｓ（ＣＯＳθ）／２でなくてもよい。０．５〜０までの範囲で変化する適切なθの関数をＡｂｓ（ＳＩＮθ）／２やＡｂｓ（ＣＯＳθ）／２の代わりに用いて補正値ＲＯＴ＿ＡＤＪＸやＲＯＴ＿ＡＤＪＹを算出してもよい。
【図面の簡単な説明】
【００５０】
【図１】この発明の一実施形態である画像処理装置の構成を示すブロック図である。
【図２】同実施形態における座標演算部４の画素数／座標変換部４１、回転処理部４２および座標補正部４３の処理内容を示す図である。
【図３】同実施形態においてスプライトのＸ方向の画素数ＳＩＺＥＸおよびＹ方向の画素数ＳＩＺＥＹがいずれも偶数である場合の動作を示す図である。
【図４】同実施形態においてスプライトのＸ方向の画素数ＳＩＺＥＸが偶数であり、Ｙ方向の画素数ＳＩＺＥＹが奇数である場合の動作を示す図である。
【図５】従来のスプライトの回転を伴う描画処理の内容を示すフローチャートである。
【図６】スプライトの画素数および４頂点の座標を説明する図である。
【図７】従来の描画処理におけるスプライトの回転状況を示す図である。
【符号の説明】
【００５１】
１……ＣＰＵ、２……スプライトメモリ、３……描画処理部、６……フレームメモリ、７……表示制御部、８……表示装置、４……座標演算部、５……マッピング処理部、４１……画素数／座標変換部、４２……回転処理部、４３……座標補正部。
【図１】
0004983570.tif 000002
【図２】
0004983570.tif 000003
【図３】
0004983570.tif 000004
【図４】
0004983570.tif 000005
【図５】
0004983570.tif 000006
【図６】
0004983570.tif 000007
【図７】
0004983570.tif 000008