(57)【要約】【課題】画像を回転させるための装置及び方法。【解決手段】ユーザが定義した基準点を中心に画像を回転させるためのハードウェア実現の方法を提供する。この方法においては、ユーザ定義の基準点を受け取り、ユーザ定義の基準点は画像の外に定義可能である。続いて、画像の位置を計算し、それによりユーザ定義の基準点を中心にした回転後の画像の所在位置を定義する。次に、メモリから１個以上の画像画素をフェッチする順序を計算する。この順序はユーザ定義の基準点を中心にした回転後の画像の回転角度を定義する。その後、算定した順序に従ってメモリから画像画素をフェッチする。ユーザ定義の基準点を中心に画像を回転させるための装置並びにディスプレイコントローラについても説明している。【選択図】    図２
2005327280.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが定義した基準点を中心とした画像の回転をハードウェアで実現するための方法であって、
ユーザ定義の基準点を受け取る方法操作であって、前記ユーザ定義の基準点は画像の外側に定義可能である方法操作と、
画像の位置を計算する方法操作であって、この位置はユーザ定義の基準点を中心にした回転後の画像の所在位置を定義する方法操作と、
１個以上の画像画素をメモリからフェッチする順序を計算する方法操作であって、この順序はユーザ定義の基準点を中心にした回転後の画像の回転角度を定義する方法操作と、
算定した順序に従ってメモリから画像画素をフェッチする方法操作とを含む、ハードウェア実現の方法。
【請求項２】
請求項１に記載された、画像の回転をハードウェアで実現するための方法であって、
フェッチされた画像画素を算定した位置に表示する方法操作をさらに含む、画像の回転をハードウェアで実現するための方法。
【請求項３】
請求項１に記載された、画像の回転をハードウェアで実現するための方法であって、
画像はより大きな画像の一部分である、画像の回転をハードウェアで実現するための方法。
【請求項４】
請求項１に記載された、画像の回転をハードウェアで実現するための方法であって、
画像はスプライトである、画像の回転をハードウェアで実現するための方法。
【請求項５】
請求項１に記載された、画像の回転をハードウェアで実現するための方法であって、
前記画像の位置を計算する方法操作は、
表示の左上隅に対する画像位置のXオフセットから画像の左上隅に対するユーザ定義の基準点のXオフセットの引き算により定義されるX開始座標の計算と、
表示の左上隅に対する画像位置のYオフセットから画像の左上隅に対するユーザ定義の基準点のYオフセットの引き算により定義されるY開始座標の計算と、
表示の左上隅に対する画像位置のXオフセットと、ユーザ定義の基準点と画像の右辺との距離との加算により定義されるX終了座標の計算と、
表示の左上隅に対する画像位置のYオフセットと、ユーザ定義の基準点と画像の底辺との距離との加算により定義されるY終了座標の計算とを備え、
画像はユーザ定義の基準点を中心にして回転されても鏡映されてもいない、画像の回転をハードウェアで実現するための方法。
【請求項６】
請求項１に記載された、画像の回転をハードウェアで実現するための方法であって、
前記画像の位置を計算する方法操作は、
表示の左上隅に対する画像位置のXオフセットからユーザ定義の基準点と画像の底辺との距離の引き算により定義されるX開始座標の計算と、
表示の左上隅に対する画像位置のYオフセットから画像の左上隅に対するユーザ定義の基準点のXオフセットの引き算により定義されるY開始座標の計算と、
表示の左上隅に対する画像位置のXオフセットと画像の左上隅に対するユーザ定義の基準点のYオフセットとの加算により定義されるX終了座標の計算と、
表示の左上隅に対する画像位置のYオフセットとユーザ定義の基準点と画像の右辺との距離との加算により定義されるY終了座標の計算とを含み、
画像はユーザ定義の基準点を中心にして９０度回転されているが鏡映されていない、画像の回転をハードウェアで実現するための方法。
【請求項７】
請求項１に記載された、画像の回転をハードウェアで実現するための方法であって、
前記画像の位置を計算する方法操作は、
表示の左上隅に対する画像位置のXオフセットから画像の左上隅に対するユーザ定義の基準点のXオフセットの引き算により定義されるX開始座標の計算と、
表示の左上隅に対する画像位置のYオフセットからユーザ定義の基準点と画像の底辺との距離の引き算により定義されるY開始座標の計算と、
表示の左上隅に対する画像位置のXオフセットとユーザ定義の基準点と画像の右辺との距離との加算により定義されるX終了座標の計算と  
表示の左上隅に対する画像位置のYオフセットと画像の左上隅に対するユーザ定義の基準点のYオフセットとの加算により定義されるY終了座標の計算とを含み、
画像はユーザ定義の基準点を中心にして１８０回転されると共に鏡映されている、画像の回転をハードウェアで実現するための方法。
【請求項８】
請求項１に記載された、画像の回転をハードウェアで実現するための方法であって、
前記画像の位置を計算する方法操作は、
表示の左上隅に対する画像位置のXオフセットからユーザ定義の基準点と画像の底辺との距離の引き算により定義されるX開始座標の計算と、
表示の左上隅に対する画像位置のYオフセットからユーザ定義の基準点と画像の右辺との距離の引き算により定義されるY開始座標の計算と、
表示の左上隅に対する画像位置のXオフセットと画像の左上隅に対するユーザ定義の基準点のYオフセットとの加算により定義されるX終了座標の計算と、
表示の左上隅に対する画像位置のYオフセットと画像の左上隅に対するユーザ定義の基準点のXオフセットとの加算により定義されるY終了座標の計算とを含み、
画像はユーザ定義の基準点を中心にして２７０度回転されると共に鏡映されている、画像の回転をハードウェアで実現するための方法。
【請求項９】
請求項１に記載された、画像の回転をハードウェアで実現するための方法であって、
前記メモリから画像画素をフェッチする順序を計算する方法操作は、
画像の画素位置をメモリに格納されている画像画素のメモリアドレスと対応付けることを含み、この対応付けによりユーザ定義の基準点を中心にした回転後の画像の回転角度が定義される、画像の回転をハードウェアで実現するための方法。
【請求項１０】
請求項９に記載された、画像の回転をハードウェアで実現するための方法であって、
画像の画素位置をメモリに格納されている画像画素のメモリアドレスと対応付ける方法操作は、
画素位置でフェッチするメモリアドレスを計算することを含み、メモリアドレスは、
開始アドレス＋[(F'+D'-B'-1)*E'+(E'+C'-A'-1)]*2
によって定義され、
画像はユーザ定義の基準点を中心にして１８０度回転されているが鏡映されていない、画像の回転をハードウェアで実現するための方法。
【請求項１１】
請求項１０に記載された、画像の回転をハードウェアで実現するための方法であって、
前記A'は表示の左上隅に対するX画素位置を表わし、
前記B'は表示の左上隅に対するY画素位置を表わし、
前記C'は表示の左上隅に対する算定したX開始座標を表わし、
前記D'は表示の左上隅に対する算定したY開始座標を表わし、
前記E'は画像の幅を表わし、
前記F'は画像の高さを表わしている、
画像の回転をハードウェアで実現するための方法。
【請求項１２】
請求項９に記載された、画像の回転をハードウェアで実現するための方法であって、
画像の画素位置をメモリに格納されている画像画素のメモリアドレスと対応付ける方法操作は、
画素位置でフェッチするメモリアドレスを計算することを含み、メモリアドレスは、
開始アドレス＋[(D'-C')*E'+(E'+D'-B'-1)]*2
によって定義され、
画像はユーザ定義の基準点を中心にして２７０度回転されているが鏡映されていない、画像の回転をハードウェアで実現するための方法。
【請求項１３】
請求項９に記載された、画像の回転をハードウェアで実現するための方法であって、
画像の画素位置をメモリに格納されている画像画素のメモリアドレスと対応付ける方法操作は、
画素位置でフェッチするメモリアドレスを計算することを含み、メモリアドレスは、
開始アドレス＋[(B'-D')*E'+(E'+C'-A'-1)]*2
によって定義され、
画像はユーザ定義の基準点を中心にして回転されていないが鏡映されている、画像の回転をハードウェアで実現するための方法。
【請求項１４】
請求項９に記載された、画像の回転をハードウェアで実現するための方法であって、
画像の画素位置をメモリに格納されている画像画素のメモリアドレスと対応付ける方法操作は、
画素位置でフェッチするメモリアドレスを計算することを含み、メモリアドレスは、
開始アドレス＋[(A'-C')*E'+(B'-D')]*2
によって定義され、
画像はユーザ定義の基準点を中心にして９０度回転されると共に鏡映されている、画像の回転をハードウェアで実現するための方法。
【請求項１５】
ユーザ定義の基準点を中心に画像を回転させるためのディスプレイコントローラであって、
画像画素を格納するように構成されたメモリと、
メモリから格納されている画像画素をフェッチするように構成された主表示パイプと、
前記主表示パイプに接続され、ユーザ定義の基準点を中心にした画像の回転を計算するように構成された回転および鏡映回路機構とを備え、回転および鏡映回路機構は、
ユーザ定義の基準点を受け取るためのロジックを含み、
画像の位置を計算するためのロジックを含み、この位置はユーザ定義の基準点を中心にした回転後の画像の所在位置を定義しており、
メモリから画像画素をフェッチする順序を計算するためのロジックを含み、この順序はユーザ定義の基準点を中心にした回転後の画像の回転角度を定義している、ディスプレイコントローラ。
【請求項１６】
請求項１５に記載のディスプレイコントローラであって、
主表示パイプに接続され、ディスプレイとインタフェースをとるように構成されたディスプレイインタフェースと、
主表示パイプに接続され、タイミング制御信号を主表示パイプに提供するように構成されたタイミング回路機構とをさらに含む、ディスプレイコントローラ。
【請求項１７】
請求項１５に記載のディスプレイコントローラであって、
ユーザ定義の基準点は画像の外側に定義可能である、ディスプレイコントローラ。
【請求項１８】
請求項１５に記載のディスプレイコントローラであって、
メモリは、スタティックランダムアクセスメモリ（SRAM）とダイナミックランダムアクセスメモリ（DRAM）とからなるグループから選択される、ディスプレイコントローラ。
【請求項１９】
請求項１５に記載のディスプレイコントローラであって、
画像はより大きな画像の一部分である、ディスプレイコントローラ。
【請求項２０】
請求項１５に記載のディスプレイコントローラであって、
画像はスプライトである、ディスプレイコントローラ。
【請求項２１】
請求項２０に記載のディスプレイコントローラであって、
スプライトはより大きな画像の中のアニメーション化されたグラフィックイメージである、ディスプレイコントローラ。
【請求項２２】
請求項１５に記載のディスプレイコントローラであって、
ロジックはハードウェアで実現される、ディスプレイコントローラ。
【請求項２３】
ユーザ定義の基準点を中心に画像を回転させるための装置であって、
ディスプレイコントローラを備え、前記ディスプレイコントローラは、
画像の位置を計算するための回路機構であって、ユーザ定義の基準点を中心にした回転後の画像の所在位置を定義する回路機構と、
画像画素を格納するように構成されたメモリから画像画素をフェッチする順序を計算するための回路機構であって、この順序によりユーザ定義の基準点を中心にした回転後の画像の回転角度を定義する回路機構と、
算定した順序に従ってメモリから画像画素をフェッチするための回路機構とを含み、
中央処理機構（CPU）を備え、前記CPUはユーザ定義の基準点を処理する命令とユーザ定義の基準点をディスプレイコントローラに伝送する命令を保有しており、さらに
ディスプレイコントローラに接続されたディスプレイを備え、前記ディスプレイは回転画像の表示を可能にする、ユーザ定義の基準点を中心に画像を回転させるための装置。
【請求項２４】
請求項２３に記載の装置であって、
ユーザ定義の基準点は画像の外側に定義可能である、装置。
【請求項２５】
請求項２３に記載の装置であって、
画像の表示の一部分である、装置。
【請求項２６】
請求項２３に記載の装置であって、
画像はスプライトである、装置。
【請求項２７】
請求項２６に記載の装置であって、
スプライトは表示の中のアニメーション化されたグラフィックイメージである、装置。
【請求項２８】
請求項２３に記載の装置であって、
ディスプレイは、液晶ディスプレイ（LCD）と、薄膜トランジスタ（TFT）ディスプレイ、陰極線管（CRT）モニタ、及びテレビから構成されるグループから選択される、装置。
【請求項２９】
請求項２３に記載の装置であって、
メモリは、スタティックランダムアクセスメモリ（SRAM）とダイナミックランダムアクセスメモリ（DRAM）とから構成されるグループから選択される、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはコンピュータグラフィックスに関し、より具体的には表示画面で画像を回転させるための方法及び装置に関する発明である。
【背景技術】
【０００２】
コンピュータグラフィックスにおいて、スプライトは大型のグラフィックイメージまたはイメージ集合の中の個々にアニメーション化された要素である。スプライトはゲーム技術の一部で、数多くのゲームは基本的にスプライトとそのスプライトをグラフィックバックグラウンドの中で動かすためのプログラム命令とから構成されることが多い。
【０００３】
一つのタイプのアニメーションではスプライトを回転させることが必要になるが、スプライトを回転させるための計算はソフトウェアで行なわれるのが一般的である。しかし、スプライトを回転させるためのそうしたソフトウェア計算は計算的に複雑で、そのために中央処理機構（CPU）の大規模な処理が必要になってくる。例えば、典型的なゲームは同時に表示及びアニメーション化されるスプライトが２７にも上ることがある。
【０００４】
その結果、数多くの小型携帯用デバイスでは、普通、電力、メモリ、及び計算能力に限界があるために、スプライトのアニメーションを処理するのに問題がある。こうしたデバイスは計算力が限られているから、デバイスのCPUサイクルが圧倒的にスプライトの処理で占められることがあり、その結果、アプリケーションの実行が大幅に遅くなる。
【０００５】
【特許文献１】米国特許第6,608,626号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記に鑑み、スプライトをアニメーション化するのに要する計算の複雑性とCPUの処理能力を軽減するための装置並びに方法を提供する必要がある。
【課題を解決するための手段】
【０００７】
大まかに言えば、本発明は、ユーザが定義した基準点を中心に画像を回転させるための方法並びに装置を提供することで、こうしたニーズを満たすものである。本発明は、方法、システムまたはデバイスとしてなど、いろいろなやり方で実現することができることを理解するべきである。本発明の実施例をいくつか以下に説明する。
【０００８】
本発明の第１の態様によれば、ユーザが定義した基準点を中心に画像を回転させるためのハードウェアで実現する方法を提供している。この方法においては、ユーザ定義の基準点を受け取る。なお、ユーザ定義の基準点は画像の外側に定義可能である。続いて、画像の位置を計算し、その位置はユーザ定義の基準点を中心にした回転後の画像の所在位置を定義する。メモリから１個以上の画像画素（image pixels）をフェッチする順序が次に計算される。この順序はユーザ定義の基準点を中心にした回転後の画像の回転角度を定義する。その後、算定した順序に従って画像画素がメモリからフェッチされる。
【０００９】
本発明の第２の態様によれば、ユーザ定義の基準点を中心に画像を回転させるためのディスプレイコントローラを提供している。このディスプレイコントローラは、画像画素を格納するように構成されたメモリと、格納された画像画素をメモリからフェッチするように構成された主表示パイプとを含んで構成されている。さらに、主表示パイプに接続された回転および鏡映回路機構（a rotation and mirroring circuitry）はユーザ定義の基準点を中心にした画像の回転を計算するように構成されている。回転および鏡映回路機構には、ユーザ定義の基準点を受け取るためのロジックと、画像の位置を計算するためのロジック、及びメモリから画像画素をフェッチする順序を計算するためのロジックが含まれている。算定した位置はユーザ定義の基準点を中心にした回転後の画像の所在位置を定義する。さらに、算定した順序はユーザ定義の基準点を中心にした回転後の画像の回転角度を定義する。
【００１０】
本発明の第３の態様によれば、ユーザ定義の基準点を中心に画像を回転させるための装置を提供している。この装置は、ディスプレイコントローラ及び画像画素を格納するように構成されたメモリを含んで構成されている。さらに、装置は、ユーザ定義の基準点を処理するための命令と、ユーザ定義の基準点をディスプレイコントローラに伝送するための命令とを保有している中央処理機構を含んでいる。ディスプレイコントローラには、画像の位置を計算するための回路機構と、画像画素をメモリからフェッチする順序を計算するための回路機構、及び算定した順序に従ってメモリから画像画素をフェッチするための回路機構とが含まれている。算定した位置はユーザ定義の基準点を中心にした回転後の画像の所在位置を定義する。さらに、算定した順序はユーザ定義の基準点を中心にした回転後の画像の回転角度を定義する。この装置には、回転後の画像を表示する、ディスプレイコントローラに接続されたディスプレイも含まれている。
【００１１】
発明のその他の態様並びに効果は、発明の原理を例をあげて説明している、以下に詳細に述べる説明を、添付の図面と共に考慮すれば、明白になる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施形態を図面に基づいて説明する。
【実施例１】
【００１３】
発明をユーザが定義した基準点（a reference point）を中心に画像を回転させるための方法及び装置として説明する。但し、当業者ならば、これらの詳細を部分的にまたは全く知らなくても本発明を実施できることは自明であろう。他の場合においては、本発明を不要に不明瞭にしないために、よく知られたプロセスの操作については詳細に説明していない。
【００１４】
ここで説明している実施例は、ユーザ定義の基準点を中心に画像を回転させるためのハードウェアで実現する方法及びディスプレイコントローラを提供している。以下により詳細に説明するが、画像を回転させるにあたり、画像の位置及びメモリから画像画素をフェッチする順序を計算する。続いて、算定した位置に画像が表示され、算定した順序に従って画像画素がメモリからフェッチされる。画像画素をフェッチする順序によって画像の回転が定義される。
【００１５】
図１Ａ及び１Ｂは、本発明の一実施例に基づき、ユーザ定義の基準点を中心に画像が回転している図である。図１Ａに示すように、表示１０２は画像領域１０４を表示している。画像領域１０４はより大きな画像（例えば、表示１０２）の一部分である。一つの実施例において、画像領域１０４はスプライトである。なお、スプライトはより大きな画像の中のアニメーション化されたグラフィックスイメージでいい。ここで説明するように、画像領域１０４を画像とも定義できるので、これの用語は互いに置き換えて用いても構わない。この例で、画像領域１０４は上向きの矢印で、ユーザは基準点１０６を中心にして時計回りに画像領域を９０度回転させたがっている。基準点１０６は画像領域１０４の真ん中にある。その結果、基準点１０６を中心にして時計回りに９０度回転させると、右向きの矢印になる。回転を実行する詳細をここに提供している。
【００１６】
基準点１０６は表示１０２内ならどこに定義しても構わないことを理解するべきである。一つの実施例においては、図１Ａに示すように、基準点１０６は画像領域１０４内にある。別の実施例においては、図１Ｂに示すように、基準点１０６は画像領域１０４の外にある。図１Ｂは表示１０２内に上向きの矢印を含む画像領域１０４を示し、画像領域は表示の右下隅にある。ユーザは、基準点１０８を中心にして時計回りに画像領域を９０度回転させたいと考えている。この場合、基準点１０８は画像領域１０４の外にある。具体的に、基準点１０８は画像領域１０４の上方にある。基準点１０８を中心にして時計回りに９０度回転させると、その結果、画像領域１０４とその中の矢印が右向きになる。さらに、画像領域１０４の位置が、表示１０２の右下隅から左上隅に変わる。
【００１７】
図１Ａ及び１Ｂに例証されているように、ユーザ定義の基準点１０６、１０８を中心にした画像領域１０４の回転を、（１）画像領域の回転と、（２）画像領域の位置の変動とによって定義することができる。図２は、本発明の一実施例に基づく、ユーザ定義の基準点を中心に画像を回転させるためのハードウェアで実現する方法の高レベルの概要のフローチャート図である。操作２１０で始まり、ユーザ定義の基準点を受け取る。上に説明したように、ユーザ定義の基準点を画像の外側に定義しても構わない。次に、操作２１２で画像の位置を計算する。この位置はユーザ定義の基準点を中心にした回転後の画像の所在位置を定義する。その後、操作２１４でメモリから画像画素をフェッチする順序を計算する。この順序は、ユーザ定義の基準点を中心に画像が回転した後の画像の回転を定義する。以下により詳細に説明するが、一つの実施例において、この順序は、画像内の画素位置とメモリに格納されている画像画素のメモリアドレスとの計算から得た対応付けである。その後、操作２１６で、算定した順序に従ってメモリから画像画素がフェッチされる。
【００１８】
図３Ａ〜３Ｈは、本発明の一実施例に基づく、ユーザ定義の基準点を中心にした回転後の画像の位置の計算に用いられる次元の簡易概略図である。上に説明したように、ユーザが基準点を定義した後、画像の位置を先ず計算する。図３Ａ〜３Ｈに示すように、表示１０２は半矢印の画像３０４を含んでいる。ユーザ定義の基準点３０２は画像３０４内にある。図３Ａは、上向きの半矢印の画像３０４を示し、画像は回転しても鏡映してもいない。ここで用いているように、鏡映（mirroring）は任意の軸を中心にして画像を反転させること（flipping）である。例えば、鏡映イメージは左から右にまたは右から左に反転されている。一つの実施例において、回転なし鏡映なしで表示１０２に対する画像３０４の位置は次のように計算される：
X開始座標(E) = C - A;
Y開始座標(F) = D - B;
X終了座標(I) = C + G;
Y終了座標(J) = D + H.
【００１９】
図３Ａに示すように、
Aは、画像３０４の左上隅３０８に対するユーザ定義の基準点３０２のXオフセット。
Bは、画像３０４の左上隅３０８に対するユーザ定義の基準点３０２のYオフセット。
Cは、表示１０２の左上隅３０６に対する画像位置のXオフセット。
Dは、表示１０２の左上隅３０６に対する画像位置のYオフセット。
Gは、画像３０４の幅からAを引いたもの（つまり、ユーザ定義の基準点３０２と画像３０４の右辺との距離）。
Hは、画像３０４の高さからBを引いたもの（つまり、ユーザ定義の基準点３０２と画像３０４の底辺との距離）。
【００２０】
上に説明した次元（つまり、A, B, C, その他）は、画像３０４の左上隅３０８及び表示１０２の左上隅３０６を基準にしている。しかし、次元を画像３０４内及び表示１０２内の任意の適した点を基準にしても構わない。基準点の他の模式的な実施例としては、表示１０２の右上隅、表示の左下隅、表示の右下隅、画像３０４の右上隅、画像の左下隅、画像の右下隅などがある。
【００２１】
図３Ｂは、鏡映しないでユーザ定義の基準点３０２を中心に９０度回転させた後の画像３０４の位置を示している。図３Ｂに示すように、半矢印は回転後右に向いている。一つの実施例において、９０度回転後の表示１０２に対する画像３０４の位置を次のように計算する：
X開始座標(E) = C - H;
Y開始座標(F) = D - A;
X終了座標(I) = C + B;
Y終了座標(J) = D + G.
【００２２】
図３Ｃは、鏡映しないでユーザ定義の基準点３０２を中心に１８０度回転させた後の画像３０４の位置を示している。図３Ｃに示すように、半矢印は回転後下向きである。一つの実施例において、１８０度回転後の表示１０２に対する画像３０４の位置を次のように計算する：
X開始座標(E) = C - G;
Y開始座標(F) = D - H;
X終了座標(I) = C + A;
Y終了座標(J) = D + B.
【００２３】
図３Ｄは、鏡映しないでユーザ定義の基準点３０２を中心に２７０度回転させた後の画像３０４の位置を示している。図３Ｄに示すように、半矢印は回転後左に向いている。一つの実施例において、２７０度回転後の表示１０２に対する画像３０４の位置を次のように計算する：
X開始座標(E) = C - B;
Y開始座標(F) = D - G;
X終了座標(I) = C + H;
Y終了座標(J) = D + A.
【００２４】
図３Ｅは、回転させないが鏡映させた画像３０４の位置を示している。図３Ｅに示すように、半矢印は上向きだけれども、半矢印の画像３０４は右から左に反転している。一つの実施例において、表示１０２に対する画像３０４の位置を次のように計算する：
X開始座標(E) = C - G;
Y開始座標(F) = D - B;
X終了座標(I) = C + A;
Y終了座標(J) = D + H.
【００２５】
図３Ｆは、鏡映させると共にユーザ定義の基準点３０２を中心に９０度回転させた後の画像３０４の位置を示している。図３Ｆに示すように、半矢印は回転後左に向いている。一つの実施例において、９０度回転後の表示１０２に対する画像３０４の位置を次のように計算する：
X開始座標(E) = C - B;
Y開始座標(F) = D - A;
X終了座標(I) = C + H;
Y終了座標(J) = D + G.
【００２６】
図３Ｇは、鏡映させると共にユーザ定義の基準点３０２を中心に１８０度回転させた後の画像３０４の位置を示している。図３Ｇに示すように、半矢印は回転後下向きである。一つの実施例において、１８０度回転後の表示１０２に対する画像３０４の位置を次のように計算する：
X開始座標(E) = C - A;
Y開始座標(F) = D - H;
X終了座標(I) = C + G;
Y終了座標(J) = D + B.
【００２７】
最後に、図３Ｈは、鏡映させると共にユーザ定義の基準点３０２を中心に２７０度回転させた後の画像３０４の位置を示している。図３Ｈに示すように、半矢印は回転後右に向いている。一つの実施例において、２７０度回転後の表示１０２に対する画像３０４の位置を次のように計算する：
X開始座標(E) = C - H;
Y開始座標(F) = D - G;
X終了座標(I) = C + B;
Y終了座標(J) = D + A.
【００２８】
位置を計算した後、メモリから画像画素をフェッチする順序を計算する。図４は、本発明の一実施例に基づく、ユーザ定義の基準点を中心にして画像を９０度回転させるときメモリアドレスがフェッチされる順序を示す簡易図である。例証のために、画像４０２内の各四角は画素を表わしている。四角の中の各数字（例えば、１、２、３、４、その他）は画素と対応付けられたメモリアドレスを表わす。メモリアドレスは、各画素がメモリに格納されている場所をトラッキングするために使用される、各画素に割り当てられた数字である。メモリアドレスは適していればどんなビット幅でもいい。例えば、一つの実施例において、メモリアドレスは長さ８ビットである。別の実施例において、メモリアドレスは長さ１６ビットである。
【００２９】
図４に示すように、画像４０２は２５個の四角（つまり、５×５の画素配列）から構成される。各画素はメモリアドレス番号と対応付けられている。例えば、０度回転で、画像４０２の左上隅に位置する画素は０で表わされたメモリアドレスをもつ一方、画像の右上隅に位置する別の画素は４で表わされたメモリアドレスをもつ。
【００３０】
この場合、画素をメモリからフェッチする特定の順序が画像４０２の回転を定義する。言い換えれば、画像４０２は画素位置を異なるメモリアドレスと対応付けることによって回転している。例えば、図４に示すように、画像４０２は画像の中央にあるユーザ定義の基準点を中心に９０度回転している。０度回転で、画像４０２の左上隅に位置する画素はメモリアドレス０と対応付けられる。反時計回りに９０度回転後、画像４０２の左上隅に位置する同じ画素は別のメモリアドレス４と対応付けられる。その結果、０度回転で、画像４０２の上水平線を成す画素はメモリアドレス０、１、２、３、４から順番に左から右にフェッチされる。画像４０２を反時計回りに９０度回転させるにあたり、画像４０２の上水平線を成す画素は、今度は、メモリアドレス４、９、１４、１９、２４から順番に左から右にフェッチされる。メモリ内のデータは変わらないが、メモリからデータをフェッチする順序は変わることを理解するべきである。
【００３１】
図５Ａ〜５Ｈは、本発明の一実施例に基づく、画像を回転させるにあたり特定の画素位置をフェッチするメモリアドレスの計算に使用される次元の簡易概略図である。図５Ａ〜５Ｈは表示１０２内の画像３０４を示している。画素は画像３０４内の画素位置５０４にある。これらの図は開始アドレス５０２の所在位置及びメモリアドレスが増えていく方向５０６も示している。一つの実施例において、様々な回転の開始アドレス５０２を次のように計算する：
０度回転の開始アドレス＝開始アドレス、
９０度回転の開始アドレス＝開始アドレス＋（画像の幅−１）、
１８０度回転の開始アドレス＝開始アドレス＋［（画像の幅×画像の高さ）−１］、
２７０度回転の開始アドレス＝開始アドレス＋［画像の幅×（画像の高さ−１）］。
【００３２】
例えば、図４に示すように、０度回転の開始アドレスは０である。これに対し、９０度回転の開始アドレスは４である。図５Ａ〜５Ｈに戻ると、メモリアドレスが増える方向５０６は回転及び鏡映後の表示パイプによるメモリアドレスのリードシーケンスを示す。事実上、メモリアドレスが増える方向５０６は回転前のオリジナルメモリアドレスマッピングを示している。例えば、９０度回転の場合の図４のメモリアドレスが増える方向は左から右を指し、上水平線については、表示パイプは４、９、１４、２４のシーケンスからメモリアドレスを読み取る。
【００３３】
図５Ａに示すように、画像３０４は回転しても鏡映してもいない。一つの実施例において、回転なし鏡映なしで画素位置５０４にあるメモリアドレスは次のように計算される：
メモリアドレス＝開始アドレス＋[(B'-D')*E'+(A'-C')]*2
【００３４】
図５Ａに表示されているように、
A'は、表示１０２の左上隅３０６に対するX画素の位置。
B'は、表示１０２の左上隅３０６に対するY画素の位置。
C'は、表示１０２の左上隅３０６に対する算定したX開始座標。
D'は、表示１０２の左上隅３０６に対する算定したY開始座標。
E'は、画像３０４の幅。
【００３５】
上に説明した次元（つまり、A'、B'、C'、その他）は表示１０２の左上隅３０６を基準にしている。しかし、次元は適切ならば表示１０２内のどの点を基準にしても構わない。他の模式的な基準点の実施例としては、表示１０２の右上隅、表示の左下隅、表示の右下隅などがある。
【００３６】
図５Ｂは、鏡映しないで９０度回転した画像３０４を示している。一つの実施例において、鏡映せずに９０度回転させた画像３０４の画素位置５０４にあるメモリアドレスは次のように計算される：
メモリアドレス＝開始アドレス＋[(F'+C'-A'-1)*E'+(B'-D')]*2
図５Ｂに示されているように、
F'は、画像３０４の高さを表わす。
【００３７】
図５Ｃは、鏡映しないで１８０度回転した画像３０４を示している。図５Ｃに示すように、一つの実施例において、鏡映せずに１８０度回転させた画像３０４の画素位置５０４にあるメモリアドレスは次のように計算される：
メモリアドレス＝開始アドレス＋[(F'+D'-B'-1)*E'+(E'+C'-A'-1)]*2
【００３８】
図５Ｄは、鏡映しないで２７０度回転した画像３０４を示している。図５Ｄに示すように、一つの実施例において、鏡映せずに２７０度回転させた画像３０４の画素位置５０４にあるメモリアドレスは次のように計算される：
メモリアドレス＝開始アドレス＋[(D'-C')*E'+(E'+D'-B'-1)]*2
【００３９】
図５Ｅは、鏡映しているが回転していない画像３０４を示す。図５Ｅに示されているように、一つの実施例において、鏡映しているが回転していない画像３０４の画素位置５０４にあるメモリアドレスは次のように計算される：
メモリアドレス＝開始アドレス＋[(B'-D')*E'+(E'+C'-A'-1)]*2
【００４０】
図５Ｆは、鏡映すると共に９０度回転させた画像３０４を示す。図５Ｆに示すように、一つの実施例において、鏡映して９０度回転させた画像３０４の画素位置５０４にあるメモリアドレスは次のように計算される：
メモリアドレス＝開始アドレス＋[(A'-C')*E'+(B'-D')]*2
【００４１】
図５Ｇは、鏡映すると共に１８０度回転させた画像３０４を示す。図５Ｇに示すように、一つの実施例において、鏡映して１８０度回転させた画像３０４の画素位置５０４にあるメモリアドレスは次のように計算される：
メモリアドレス＝開始アドレス＋[(F'+D'-B'-1)*E'+(A'-C')]*2
【００４２】
最後に、図５Ｈは、鏡映すると共に２７０度回転させた画像３０４を示す。図５Ｈに示すように、一つの実施例において、鏡映して２７０度回転させた画像３０４の画素位置５０４にあるメモリアドレスは次のように計算される：
メモリアドレス＝開始アドレス＋[(F'+C'-A'-1)*E'+(E'+D'-B'-1)]*2
【００４３】
図６は、本発明の一実施例に基づく、ユーザ定義の基準点を中心に画像を回転させるための装置の簡易概略図である。装置６０２は任意の適したタイプのコンピューティングデバイスを含んで構成されている。例えば、装置６０２は、パーソナルデジタルアシスタント、携帯電話、ウェブタブレット、パケットパソコンなどで構わない。図６に示すように、装置６０２には、中央処理機構（CPU）６０４、メモリ６０６、ディスプレイコントローラ６０８、ディスプレイ６１０が含まれている。ディスプレイ６１０としては、液晶（LCD）ディスプレイ、薄膜トランジスタ（TFT）ディスプレイ、陰極線管（CRT）モニタ、テレビなどがある。メモリの例としては、スタティックアクセスメモリ（SRAM）、ダイナミックランダムアクセスメモリ（DRAM）などがある。
【００４４】
ディスプレイコントローラ６０８はCPU６０４、メモリ６０６、及びディスプレイ６１０に接続されている。一つの実施例において、CPU６０４は、ユーザ定義の基準点を処理する命令及びそのユーザ定義の基準点をディスプレイコントローラ６０８に伝送する命令を保有している。メモリ６０６は画像画素を格納する。しかし、別の実施例では、代わって、ディスプレイコントローラ６０８内部に含まれたメモリに画像画素を格納する。当業者ならば、CPU６０４、メモリ６０６、及びディスプレイ６１０は相互接続された状態で示されているが、これらの構成要素は構成要素間の通信を可能にする共通バスと各々通信していて構わないことを理解するだろう。
【００４５】
説明した、ユーザ定義の基準点を中心にした画像回転の機能はディスプレイコントローラ６０８の中に組み込まれている。一つの実施例において、ディスプレイコントローラ６０８には、画像の位置を計算し、メモリから画像画素をフェッチする順序を計算し、算定した順序に従ってメモリ６０６から画像画素をフェッチするための回路機構が入っている。それで、ディスプレイコントローラ６０８に接続されたディスプレイ６１０は回転画像を表示する。当業者ならば、ここで説明した機能を適したハードウェア記述言語（HDL）でファームウェアに合成しても構わないことが明白になるだろう。例えば、画像回転技術及び関連した機能のハードウェア実現のためにファームウェア及びここで説明した必要な機能を提供するための論理ゲートのレイアウトを合成するのにHDL（例えば、VERILOG）を用いることができる。したがって、ここで説明した実施例はここで説明した機能を達成する任意の適した形態（form）または形式（format）でキャプチャして構わないのであって、特定の形態または形式に限定されるものではない。
【００４６】
図７は、本発明の一実施例に基づく、図６に示したディスプレイコントローラのより詳細な概略図である。図７に示すように、ディスプレイコントローラ６０８は、メモリ７０２と、主表示パイプ７０６、タイミング回路機構７０８、ディスプレイインタフェース７１０、及び回転および鏡映回路機構７０４を含んで構成されている。ディスプレイコントローラ６０８内に含まれたメモリ７０２は画像画素を格納し、主表示パイプ７０６は格納されている画像画素をメモリからフェッチする。さらに、タイミング回路機構７０８は主表示パイプ７０６と通信しており、水平表示イネーブル（Hde）信号及び垂直表示イネーブル（Vde）信号を生成するので、基本的に主表示パイプにタイミング制御信号を提供する。主表示パイプ７０６に接続されたディスプレイインタフェース７１０はディスプレイとのインタフェースを提供する。
【００４７】
回転および鏡映回路機構７０４は画像の位置を計算するロジックを含んで構成されており、メモリ７０２から画像画素をフェッチする順序を提供する。例えば、一つの実施例において、回転および鏡映回路機構７０４は、ユーザ定義の基準点を受け取り、画像の位置を計算し、メモリ７０２から画像画素をフェッチする順序を計算するためのハードウェア実現のロジックを含んでいる。説明したユーザ定義の基準点を中心にした画像回転のための機能は回転および鏡映回路機構に限定されるものではなく、適切ならばディスプレイコントローラ６０８のどこに組み込んでも構わない。例えば、別の実施例において、上に説明したハードウェア実現のロジックを主表示パイプ７０６の中に組み入れても構わない。
【産業上の利用可能性】
【００４８】
要約すれば、上に説明した発明は、ユーザが定義した基準点を中心に画像を回転させる装置と、ディスプレイコントローラ、及びハードウェア実現の方法を提供している。画像を回転させる従来のソフトウェア計算と比べた場合、画像を回転させるにあたりメモリから画像画素をフェッチする順序を計算するほうが計算がはるかに高速且つ単純だから、必要な処理能力が減る。その結果、電力、メモリ、及び計算能力に限界があっても上に説明した発明を組み込んだ小型の携帯用デバイスは画像を十分に処理及びアニメーション化することができる。
【００４９】
上記の実施例を考慮すれば、発明は、コンピュータシステムに格納されたデータを伴う様々なコンピュータ実現の操作（operation）を用いることがあるということを理解するべきである。これらの操作は物理的な数量の物理的な操作（manipulation）が欠かせない操作である。必ずしもそうとは限らないが、普通、これらの数量は、格納と、転送、結合、比較、及びその他の操作が可能な電気信号または磁気信号という形をとる。さらに、実行される操作は、処理、識別、判定、または比較といった用語で呼ばれることが多い。
【００５０】
発明の一部を成すここで説明した操作はどれも有用性のあるマシン操作である。発明は、これらの操作を実行するためのデバイスまたは装置にも関係している。装置は、欠かせない目的のために特別に構築されてもいいし、或いは格納されているコンピュータプログラムで選択的に起動または構成される汎用コンピュータでも構わない。とりわけ、様々な汎用のマシンをここで教示しているところに従って書かれたコンピュータプログラムで使用しても構わないし、さもなければ必要な操作を実行する専用の装置を構築するほうが都合がいいかもしれない。
【００５１】
上に説明した発明は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラマブルな消費者エレクトロニクス、ミニコンピュータ、メインフレームコンピュータなど、他のコンピュータシステム構成で実施されても構わない。はっきり理解できるように上記の発明をある程度詳細に説明してきたが、添付の請求項の範囲内で一定の変更及び修正が可能なことは明白であろう。よって、ここで説明した実施例は例証のためで制約ではないと考えるべきで、発明は本書で述べた詳細に限定されるべきではなく、添付の請求項の範囲内及び均等物内で修正されて構わない。請求項において、特に明記されていない限り、要素及び／又はステップは操作の特定の順序を暗に示しているものではない。
【図面の簡単な説明】
【００５２】
【図１Ａ】本発明の一実施例に基づく、ユーザ定義の基準点を中心に画像を回転させる図。
【図１Ｂ】本発明の一実施例に基づく、ユーザ定義の基準点を中心に画像を回転させる図。
【図２】本発明の一実施例に基づく、ユーザ定義の基準点を中心に画像を回転させるためのハードウェアで実現する方法の高レベル概要のフローチャート図。
【図３Ａ】本発明の一実施例に基づく、ユーザ定義の基準点を中心にした回転後の画像の位置の計算に用いられる次元の概略図。
【図３Ｂ】本発明の一実施例に基づく、ユーザ定義の基準点を中心にした回転後の画像の位置の計算に用いられる次元の概略図。
【図３Ｃ】本発明の一実施例に基づく、ユーザ定義の基準点を中心にした回転後の画像の位置の計算に用いられる次元の概略図。
【図３Ｄ】本発明の一実施例に基づく、ユーザ定義の基準点を中心にした回転後の画像の位置の計算に用いられる次元の概略図。
【図３Ｅ】本発明の一実施例に基づく、ユーザ定義の基準点を中心にした回転後の画像の位置の計算に用いられる次元の概略図。
【図３Ｆ】本発明の一実施例に基づく、ユーザ定義の基準点を中心にした回転後の画像の位置の計算に用いられる次元の概略図。
【図３Ｇ】本発明の一実施例に基づく、ユーザ定義の基準点を中心にした回転後の画像の位置の計算に用いられる次元の概略図。
【図３Ｈ】本発明の一実施例に基づく、ユーザ定義の基準点を中心にした回転後の画像の位置の計算に用いられる次元の概略図。
【図４】本発明の一実施例に基づく、画像をユーザ定義の基準点を中心に９０度回転させるときメモリアドレスがフェッチされる順序を示す簡易図。
【図５Ａ】本発明の一実施例に基づく、画像を回転させるために特定の画素位置でフェッチするメモリアドレスの計算に用いられる次元の簡易概略図。
【図５Ｂ】本発明の一実施例に基づく、画像を回転させるために特定の画素位置でフェッチするメモリアドレスの計算に用いられる次元の簡易概略図。
【図５Ｃ】本発明の一実施例に基づく、画像を回転させるために特定の画素位置でフェッチするメモリアドレスの計算に用いられる次元の簡易概略図。
【図５Ｄ】本発明の一実施例に基づく、画像を回転させるために特定の画素位置でフェッチするメモリアドレスの計算に用いられる次元の簡易概略図。
【図５Ｅ】本発明の一実施例に基づく、画像を回転させるために特定の画素位置でフェッチするメモリアドレスの計算に用いられる次元の簡易概略図。
【図５Ｆ】本発明の一実施例に基づく、画像を回転させるために特定の画素位置でフェッチするメモリアドレスの計算に用いられる次元の簡易概略図。
【図５Ｇ】本発明の一実施例に基づく、画像を回転させるために特定の画素位置でフェッチするメモリアドレスの計算に用いられる次元の簡易概略図。
【図５Ｈ】本発明の一実施例に基づく、画像を回転させるために特定の画素位置でフェッチするメモリアドレスの計算に用いられる次元の簡易概略図。
【図６】本発明の一実施例に基づく、ユーザ定義の基準点を中心に画像を回転させるための装置の簡易概略図。
【図７】本発明の一実施例に基づく、図６に示したディスプレイコントローラのより詳細な概略図。
【符号の説明】
【００５３】
１０２・・・表示
１０４・・・画像領域
１０６・・・基準点
１０８・・・基準点
２１０・・・ユーザ定義の基準点を受け取る操作
２１２・・・画像位置の計算操作
２１４・・・メモリから画像画素をフェッチする順序の計算操作
２１６・・・算定した順序に従ってメモリから画像画素をフェッチ操作
３０２・・・基準点
３０４・・・画像
６０２・・・装置
６０４・・・中央処理機構（CPU）
６０６・・・メモリ
６０８・・・ディスプレイコントローラ
６１０・・・ディスプレイ
７０２・・・メモリ
７０４・・・回転および鏡映回路機構
７０６・・・主表示パイプ
７０８・・・タイミング回路機構
７１０・・・ディスプレイインタフェース
【図１Ａ】
2005327280.tif 000003
【図１Ｂ】
2005327280.tif 000004
【図２】
2005327280.tif 000005
【図３Ａ】
2005327280.tif 000006
【図３Ｂ】
2005327280.tif 000007
【図３Ｃ】
2005327280.tif 000008
【図３Ｄ】
2005327280.tif 000009
【図３Ｅ】
2005327280.tif 000010
【図３Ｆ】
2005327280.tif 000011
【図３Ｇ】
2005327280.tif 000012
【図３Ｈ】
2005327280.tif 000013
【図４】
2005327280.tif 000014
【図５Ａ】
2005327280.tif 000015
【図５Ｂ】
2005327280.tif 000016
【図５Ｃ】
2005327280.tif 000017
【図５Ｄ】
2005327280.tif 000018
【図５Ｅ】
2005327280.tif 000019
【図５Ｆ】
2005327280.tif 000020
【図５Ｇ】
2005327280.tif 000021
【図５Ｈ】
2005327280.tif 000022
【図６】
2005327280.tif 000023
【図７】
2005327280.tif 000024