JP2005242456A - 回転体画像表示装置及び回転体画像表示プログラム - Google Patents
回転体画像表示装置及び回転体画像表示プログラム Download PDFInfo
- Publication number
- JP2005242456A JP2005242456A JP2004048028A JP2004048028A JP2005242456A JP 2005242456 A JP2005242456 A JP 2005242456A JP 2004048028 A JP2004048028 A JP 2004048028A JP 2004048028 A JP2004048028 A JP 2004048028A JP 2005242456 A JP2005242456 A JP 2005242456A
- Authority
- JP
- Japan
- Prior art keywords
- gear
- image data
- rotating body
- image
- virtual
- 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.)
- Pending
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
【課題】演算処理能力が制限された環境下でも、同期して異なる回転速度で回転可能な複数の歯車を任意に配置して、回転した状態に表示させることを可能とする。
【解決手段】 携帯電話1に互いに同期して回転する歯車をアニメーション表示させるプログラムである。歯数が異なる複数の歯車に対応して、一歯分の回転角度を互いにほぼ等間隔に各歯車で同じ分割数で分割した各回転角度位置での歯車の画像を示すインデックス画像62を記憶領域6に記憶させる。インデックス画像62を順次切り替えて表示することで、歯数が異なることにより、同期して回転していても、回転速度が異なる歯車を表示する。この場合に、互いに同期し、かつ、歯数の異なる歯車を表示するために、各歯車の表示において、インデックス画像32を順次切り替えるタイミングをほぼ同期させる。
【選択図】図1
【解決手段】 携帯電話1に互いに同期して回転する歯車をアニメーション表示させるプログラムである。歯数が異なる複数の歯車に対応して、一歯分の回転角度を互いにほぼ等間隔に各歯車で同じ分割数で分割した各回転角度位置での歯車の画像を示すインデックス画像62を記憶領域6に記憶させる。インデックス画像62を順次切り替えて表示することで、歯数が異なることにより、同期して回転していても、回転速度が異なる歯車を表示する。この場合に、互いに同期し、かつ、歯数の異なる歯車を表示するために、各歯車の表示において、インデックス画像32を順次切り替えるタイミングをほぼ同期させる。
【選択図】図1
Description
本発明は、歯車等の互いに同期して回転する回転体を表示する回転体画像表示装置及び回転体画像表示プログラムに関する。
近年、携帯電話には、カラー液晶ディスプレイが備えられ、テキストやマークによる情報の表示だけではなく、絵や写真といった画像の表示が行われ、さらに、ビデオ等の動画の表示も可能となっている。
また、インターネット上の携帯電話専用ウェブページと、この携帯電話専用ウェブページを閲覧するための専用ブラウザを搭載した携帯電話とからなるシステムも開発され、インターネットを介して情報の収集が可能となるとともに、インターネットを介しての電子メールの送受も可能となっている。
また、インターネット上の携帯電話専用ウェブページと、この携帯電話専用ウェブページを閲覧するための専用ブラウザを搭載した携帯電話とからなるシステムも開発され、インターネットを介して情報の収集が可能となるとともに、インターネットを介しての電子メールの送受も可能となっている。
また、組み込み機器用のJava(登録商標)を用いたアプリケーションを実行可能となった携帯電話もあり、例えば、インターネットを介してJavaを用いたコンテンツ(Javaアプレット)として簡易なビデオゲームプログラムをダウンロードし、ダウンロードした簡易なビデオゲームを実行できるようになった携帯電話も市販されている。
ビデオゲームを実行する上では、キャラクタ等のアニメーションを表示する必要があるが、例えば、携帯電話用のブラウザソフトによりアニメーションを表示可能とする携帯電話機が開発されている。(例えば、特許文献1参照。)。
特開2002−352262号公報(第5頁)
ビデオゲームを実行する上では、キャラクタ等のアニメーションを表示する必要があるが、例えば、携帯電話用のブラウザソフトによりアニメーションを表示可能とする携帯電話機が開発されている。(例えば、特許文献1参照。)。
ところで、本出願人らは、インターネット接続環境を有する携帯電話に提供するコンテンツとして、携帯電話の表示画面に携帯電話の使用者が任意の歯数の歯車を複数組み合わせて配置して表示させるようにインタラクティブに操作可能とし、使用者の操作により表示画面上に表示された各歯車を駆動側の歯車の回転速度と、各歯車の歯数の比に応じて別々の回転速度で回転するようにアニメーション表示するプログラムの開発を試みた。
また、上述のコンテンツでは、使用者の興趣を高められるように、各歯車の回転に対応して回転する時計の針も表示可能とされ、使用者がうまく歯車を組み合わせて配置することにより、時針、分針、秒針をそれぞれ時、分、秒単位で回転させることが可能であり、いわゆるスケルトン時計のような表示も可能とするものとした。
また、上述のコンテンツでは、使用者の興趣を高められるように、各歯車の回転に対応して回転する時計の針も表示可能とされ、使用者がうまく歯車を組み合わせて配置することにより、時針、分針、秒針をそれぞれ時、分、秒単位で回転させることが可能であり、いわゆるスケルトン時計のような表示も可能とするものとした。
しかし、現在の携帯電話では、電話として電池の限られた電力で長時間の使用を可能とすることや、小型軽量化が求められており、メモリの記憶容量や演算処理装置の処理能力等のハード構成に限界があるとともに、携帯電話で用いられる組み込み機器用のJavaでは、上述のハード構成に対応して、限られた演算処理しか実行することができない設定となっている。前記Javaでは、例えば、浮動小数点演算を行うことができず、演算は整数に限られ、さらに、使用可能な関数が少なく、例えば、三角関数を用いることができないなどの制約がある。また、このような携帯電話では、使用可能な画像ファイルの種類も限られる。例えば、使用可能な画像ファイルは、インデックス画像ファイルであるGIF(サービスマーク)や不可逆圧縮を用いたJpegなどに限られる。
従って、上述のような携帯電話機において、前記コンテンツを実現するために、予め、決められた歯車を回転表示させるのではなく、使用者が任意に配置した互いに噛み合う複数の歯車をそれぞれ互いに同期させた状態でアニメーション表示したりすることは極めて困難であった。すなわち、互いに噛み合う歯車は、それらの歯数の比に基づいて回転速度が異なり、かつ、互いに噛み合う歯車においては、一方の歯車の歯と歯の間の谷の部分に他方の歯車の歯が噛み合うように同期するので、異なる回転速度でかつ互いに同期した二つ以上の歯車をアニメーション表示することが、上述の携帯電話の機能が限られた条件下では困難であった。
また、写真などに比較して色数の少ないアニメーション等の表示ではJpegより、インデックス画像であるgifの方が有利であり、画像データとしてはインデックス画像が用いられることになる。そして、各歯車の色を使用者の操作に応じて変更可能とする場合には、例えば、上述のインデックス画像の色の変更を行うようなアプリケーションを組み込んだり、複数種の各歯車のアニメーション用の画像データに、予め色違いの複数種の画像データを用意する必要があるが、このような場合にアプリケーションの記憶用や色違いの画像データの記憶用に多くのメモリ容量が必要となり、携帯電話のメモリ容量や処理能力では容量や能力が不足する可能性があったり、メモリ容量や処理能力が限界近くなることで、使い勝手が悪くなる可能性がある。
また、コンテンツとしてのJavaアプレットは、例えば、携帯電話にインターネットを介して接続されたサーバからダウンロードすることになる。また、複数のJavaアプレットを使用するような場合には、携帯電話の記憶容量の問題で、使用していないJavaアプレットを消去し、消去されたJavaアプレットを使用する場合には、再びダウンロードする必要がある。また、Javaアプレットの利用料等の課金上の問題で、使用する毎や所定期間毎にJavaアプレットをダウンロードする必要が生じる場合もある。
従って、上述のような携帯電話のハード上の制限や組み込み用Javaの上述のようなソフト上の制限がないものとしても、コンテンツとして多くの処理を行うために、コンテンツのデータ容量が大きなものとなってしまった場合には、コンテンツをダウンロードする際の通信に対する課金により、使用者に大きな負担を強いることになり、コンテンツ自体の利用料が安くとも、コンテンツの利用が困難なものとなってしまう。
従って、上述のような携帯電話のハード上の制限や組み込み用Javaの上述のようなソフト上の制限がないものとしても、コンテンツとして多くの処理を行うために、コンテンツのデータ容量が大きなものとなってしまった場合には、コンテンツをダウンロードする際の通信に対する課金により、使用者に大きな負担を強いることになり、コンテンツ自体の利用料が安くとも、コンテンツの利用が困難なものとなってしまう。
本発明の課題は、演算処理能力が制限された環境下でも、歯車等の互いに同期して異なる回転速度で回転可能な複数の回転体を任意に配置して、回転した状態に表示させることが可能な携帯端末及び回転体画像表示プログラムを提供することである。
請求項1に記載の発明は、それぞれ互いに同期して回転可能で、それぞれ固有の所定角度を回転する毎に、回転前の形状と回転後の形状とが一致する回転対称の形状を有し、かつ、複数の回転体が互いに同期して回転する場合にそれぞれ固有の所定角度を回転する時間が略一致する複数の歯車等の回転体をアニメーション表示する回転体画像表示装置であって、
前記所定角度が互いに異なる複数の回転体のそれぞれのアニメーション用の画像データとして、各回転体のそれぞれ固有の所定角度をほぼ等間隔に各回転体で同じ分割数で分割した各回転角度位置での前記回転体の画像を示し、かつ、所定角度を各回転体で同じ分割数で分割することにより各回転体で同数にされた画像データを記憶する記憶手段と、
前記記憶手段に記憶された複数の回転体毎の複数の前記画像データを順次表示することで回転体をアニメーション表示するとともに、前記回転体の任意の回転速度に応じて前記記憶手段に記憶された前記画像データを順次切り替えて表示していく場合に、同期して回転した状態に表示される回転体同士の前記画像データを切り替えるタイミングをほぼ同期させる表示制御手段とを備えることを特徴とする。
前記所定角度が互いに異なる複数の回転体のそれぞれのアニメーション用の画像データとして、各回転体のそれぞれ固有の所定角度をほぼ等間隔に各回転体で同じ分割数で分割した各回転角度位置での前記回転体の画像を示し、かつ、所定角度を各回転体で同じ分割数で分割することにより各回転体で同数にされた画像データを記憶する記憶手段と、
前記記憶手段に記憶された複数の回転体毎の複数の前記画像データを順次表示することで回転体をアニメーション表示するとともに、前記回転体の任意の回転速度に応じて前記記憶手段に記憶された前記画像データを順次切り替えて表示していく場合に、同期して回転した状態に表示される回転体同士の前記画像データを切り替えるタイミングをほぼ同期させる表示制御手段とを備えることを特徴とする。
ここで、回転体画像表示装置とは、例えば、液晶表示装置やEL表示装置等を備えた携帯端末であり、記憶容量や演算処理能力に限界があり、かつ、プログラムを実行可能な小型コンピュータと見なせる装置であるが、本発明は特に携帯電話に好適に応用可能である。
また、回転体とは、例えば、歯車、特に平歯車(外歯歯車だけではなく、内歯歯車を含んでも良い)であるが、完全な歯車である必要はなく、歯車風に表示される回転体であれば良い。例えば、歯車風の回転体が歯の形状等により実際に歯車とした場合に、互いに噛み合って回転することが困難なものであっても良い。また、通常1つの歯車には、回転対称となる角度が複数存在するが、ここでは1つの歯分の回転角度であり、回転対称となる角度のうちの最小となる角度が所定角度となる。
また、回転体とは、例えば、歯車、特に平歯車(外歯歯車だけではなく、内歯歯車を含んでも良い)であるが、完全な歯車である必要はなく、歯車風に表示される回転体であれば良い。例えば、歯車風の回転体が歯の形状等により実際に歯車とした場合に、互いに噛み合って回転することが困難なものであっても良い。また、通常1つの歯車には、回転対称となる角度が複数存在するが、ここでは1つの歯分の回転角度であり、回転対称となる角度のうちの最小となる角度が所定角度となる。
請求項1に記載の発明によれば、各回転体は、所定角度毎に対称となる回転対称の形状を有するので、回転体を所定角度分だけ回転するアニメーション用の複数の画像データを用意し、これを回転体が一回転する間に含まれる所定角度の数(360度/所定角度)だけ繰り返し表示することで、回転体を一回転するアニメーションが可能となり、必要な画像データの数を減らすことができる。
また、回転体である歯車において、互いに噛み合う歯車は、所定角度である一歯分の回転角度を回転する時間が等しくなっているので、アニメーション用の画像データとして、各回転体のそれぞれ固有の所定角度をほぼ等間隔に各回転体で同じ分割数で分割した各回転角度位置での前記回転体の画像を示し、かつ、所定角度を各回転体で同じ分割数で分割することにより各回転体で同数にされた画像データを用いることにより、アニメーション用の画像データを順次表示していく場合に、各回転体で同じタイミングで順次画像データを表示していくことにより、互い噛み合っている歯車(回転体)を、これらの回転体の歯数の比に基づいた同期する回転速度で回転した状態に表示することができる。
すなわち、歯数が6の歯車と歯数が12の歯車が噛み合っている場合に、歯数が6の歯車は、歯数が12の歯車の2倍の回転速度で回転することになるが、この発明によれば、前記回転体の任意の回転速度に応じて前記記憶手段に記憶された画像データを順次切り替えて表示していく場合に、同期して回転した状態に表示される回転体同士の画像データを切り替えるタイミングをほぼ同期させるだけで、各歯車の歯数に応じた回転速度で同期して回転させた状態にアニメーション表示を行うことができる。
また、基本的に各回転体の画像データを切替のタイミングを合わせて表示していくだけの処理で互いに噛み合った歯車を表示可能なので、使用者が任意に複数の歯車を配置するとともに噛み合わせ、かつ、回転速度を任意に変更するものとしても、記憶容量や演算処理能力に制限がある携帯電話等の携帯端末で、容易に噛み合った歯車のアニメーション表示が可能となる。すなわち、小数点以下の数値を用いたり、三角関数を用いたりしなくとも、互いに同期して回転体をアニメーション表示することができる。
また、基本的に各回転体の画像データを切替のタイミングを合わせて表示していくだけの処理で互いに噛み合った歯車を表示可能なので、使用者が任意に複数の歯車を配置するとともに噛み合わせ、かつ、回転速度を任意に変更するものとしても、記憶容量や演算処理能力に制限がある携帯電話等の携帯端末で、容易に噛み合った歯車のアニメーション表示が可能となる。すなわち、小数点以下の数値を用いたり、三角関数を用いたりしなくとも、互いに同期して回転体をアニメーション表示することができる。
なお、任意の回転速度で回転するのは、例えば、駆動源に接続された原車であり、原車に噛み合う従車は、原車と従車との歯数の比に応じて原車の回転速度に応じた回転速度で回転する。なお、原車の回転速度を任意に変更可能ならば、原車の回転速度を任意に変更することで従車の回転速度も任意に変更されることになる。
また、画像データを順次切り替えて表示する場合には、アニメーションの単位時間当りのフレームの表示数に対応することになるが、フレーム間の経過時間が任意の回転速度で回転する回転体が所定角度を各歯車で同数となる分割数で分割した分割角度だけ回転する時間より短い場合には、例えば、同じ画像データを複数フレームに渡って表示した後に、その後のフレームで次ぎの画像データに切り替えて画像データを表示することになるが、各回転体が同じフレームで画像データを切り替えることにより、より明確に、互いに噛み合う歯車を同期した状態に表示可能となる。
また、画像データを順次切り替えて表示する場合には、アニメーションの単位時間当りのフレームの表示数に対応することになるが、フレーム間の経過時間が任意の回転速度で回転する回転体が所定角度を各歯車で同数となる分割数で分割した分割角度だけ回転する時間より短い場合には、例えば、同じ画像データを複数フレームに渡って表示した後に、その後のフレームで次ぎの画像データに切り替えて画像データを表示することになるが、各回転体が同じフレームで画像データを切り替えることにより、より明確に、互いに噛み合う歯車を同期した状態に表示可能となる。
また、フレーム間の経過時間が任意の回転速度で回転する回転体が前記分割角度だけ回転する時間より長い場合には、例えば、画像データが1,2,3,…と順番にある場合に、1の画像データを表示した後に2や3等の間の画像データを飛ばして、3や4の画像データを表示する場合もあるが、この場合も、各回転体において、前の画像データを表示した後に各回転体で同じ数だけ飛ばした画像データを表示するようにすることで各回転体が同期した状態に回転するアニメーション表示を行うことができる。なお、本発明において、回転速度とフレーム間の経過時間との関係で、回転体の画像データが1つ飛ばしや2つ飛ばし等で切り替えて表示される場合も、順次切り替えて表示されているものとする。
また、フレーム毎に表示されるアニメーション表示において、同期して回転する各回転体毎の複数の画像データが、同じフレームで必ず同時に切り替えて表示される必要はなく、数フレームずれるようなことがあっても良いが、ずれが累積して増加していくようなことがないように同期させておく必要がある。
また、フレーム毎に表示されるアニメーション表示において、同期して回転する各回転体毎の複数の画像データが、同じフレームで必ず同時に切り替えて表示される必要はなく、数フレームずれるようなことがあっても良いが、ずれが累積して増加していくようなことがないように同期させておく必要がある。
請求項2に記載の発明は、請求項1記載の画像表示装置において、隣接して互いに同期して回転する各回転体にそれぞれ対応するとともに、互いに接触して同期して回転する仮想円の円周上に、各回転体の一回転に含まれる前記所定角度の数に、所定角度回転する回転体をアニメーション表示させるための前記画像データの数を乗算して得られた値となる数の仮想点をほぼ等間隔毎に設定しておくとともに、各仮想点がそれぞれアニメーション表示用の複数の前記画像データの1つに対応するものとし、各仮想点を個々に示す仮想点の座標データを記憶する円周座標記憶手段を備え、
前記表示制御手段は、前記画像データを順次表示することで回転体をアニメーション表示する場合に、前記画像データの表示時における前記回転体の回転速度に応じた回転角度に対応する前記仮想点を求め、複数の前記画像データのうちの求められた仮想点に対応する前記画像データを表示することを特徴とする。
前記表示制御手段は、前記画像データを順次表示することで回転体をアニメーション表示する場合に、前記画像データの表示時における前記回転体の回転速度に応じた回転角度に対応する前記仮想点を求め、複数の前記画像データのうちの求められた仮想点に対応する前記画像データを表示することを特徴とする。
ここで、仮想円とは、回転体が歯車の場合に、歯車のピッチ円である。各回転体が同期して回転する場合、すなわち、噛み合って回転する場合に、仮想円は、各回転体の回転中心を中心とする円で、且つ、互いに同期して回転する回転体に対応する各円同士は互い接する半径を有する。なお、この際に互いに接する仮想円を一対の摩擦円板と見立て際に、二つの摩擦円板(仮想円)同士の速度比は、各摩擦円板(仮想円)に対応する回転体同士の速度比と等しいものとし、この場合の各摩擦円板の半径が仮想円の半径となる。
また、仮想円の円周上の各仮想点は、上述の所定角度内における複数の画像データが示す回転体の回転角度に対応しており、例えば、歯車の一歯分の所定角度が5分割されて、各回転角度毎の画像データが記憶されている場合に、仮想点も一歯分の角度間隔毎に5点ずつ配置され、一歯分ずつ、5つの仮想点がそれぞれ1対1で5つの画像データに対応し、各画像データは、円周一周分の仮想点に対して歯車の歯数分だけ繰り返し対応している。
また、各仮想点の座標データは、単に回転速度に応じて表示する画像データを選択するだけならば、必ずしもxy座標のように、相対座標上の位置が特定できるものである必要はなく、各仮想点を特定できるとともに、仮想点に対応する画像データを特定できるものならば良く、例えば、座標データとして、円周上の基準となる仮想点から円周に沿って各仮想点に付された連番でも良い。
請求項2に記載の発明によれば、例えば、任意の回転速度に応じて順次画像データを表示する場合に、回転速度を仮想円の円周上の仮想点の数に対応付けたものとすることで、回転速度を変更しても容易に変更された回転速度に応じたアニメーション表示を行うことができる。特に、回転速度を単位時間当りのフレーム数に対応づけて表すようにすれば、より容易に回転速度を変更することができる。例えば、10フレーム/秒でアニメーションが表示されるものとした場合で、かつ、回転体の回転速度が0.1回転/秒のような場合に、100フレーム分表示した際に回転体が1回転することになり、1フレーム毎の回転体の回転数は、1/100回となる。一方、回転体となる歯車の歯数を12とし、回転体の所定角度の回転をアニメーション表示する画像データ数を5とした場合に、回転体の1回転分の回転を表示する画像データ数は、12×5=60となり、1画像データあたり回転体の回転回数は、1/60となる。ここで、1/100と1/60とを通分すると、6/600と10/600となる。従って、回転体は、1フレーム毎の回転数が6/600回となるとともに、1画像データ毎の回転数が10/600回となる。
すなわち、回転体は、1画像データ毎に、1番目の画像データの回転数が0(600)/600回、2番目の画像データの回転数が10/600回、3番目の画像データとなる回転数が20/600回、…となる。そして、画像データ数を5とした場合に、6番目の画像データは、再び1番目の画像データとなりこのときの回転数は60/600回となる。そして、画像データが5番となった後に、再び、1番の画像データとなることを繰り返しながら、1画像データに対して10/600回ずつ回転することになる。
また、仮想円の円周上の各仮想点は、上述の所定角度内における複数の画像データが示す回転体の回転角度に対応しており、例えば、歯車の一歯分の所定角度が5分割されて、各回転角度毎の画像データが記憶されている場合に、仮想点も一歯分の角度間隔毎に5点ずつ配置され、一歯分ずつ、5つの仮想点がそれぞれ1対1で5つの画像データに対応し、各画像データは、円周一周分の仮想点に対して歯車の歯数分だけ繰り返し対応している。
また、各仮想点の座標データは、単に回転速度に応じて表示する画像データを選択するだけならば、必ずしもxy座標のように、相対座標上の位置が特定できるものである必要はなく、各仮想点を特定できるとともに、仮想点に対応する画像データを特定できるものならば良く、例えば、座標データとして、円周上の基準となる仮想点から円周に沿って各仮想点に付された連番でも良い。
請求項2に記載の発明によれば、例えば、任意の回転速度に応じて順次画像データを表示する場合に、回転速度を仮想円の円周上の仮想点の数に対応付けたものとすることで、回転速度を変更しても容易に変更された回転速度に応じたアニメーション表示を行うことができる。特に、回転速度を単位時間当りのフレーム数に対応づけて表すようにすれば、より容易に回転速度を変更することができる。例えば、10フレーム/秒でアニメーションが表示されるものとした場合で、かつ、回転体の回転速度が0.1回転/秒のような場合に、100フレーム分表示した際に回転体が1回転することになり、1フレーム毎の回転体の回転数は、1/100回となる。一方、回転体となる歯車の歯数を12とし、回転体の所定角度の回転をアニメーション表示する画像データ数を5とした場合に、回転体の1回転分の回転を表示する画像データ数は、12×5=60となり、1画像データあたり回転体の回転回数は、1/60となる。ここで、1/100と1/60とを通分すると、6/600と10/600となる。従って、回転体は、1フレーム毎の回転数が6/600回となるとともに、1画像データ毎の回転数が10/600回となる。
すなわち、回転体は、1画像データ毎に、1番目の画像データの回転数が0(600)/600回、2番目の画像データの回転数が10/600回、3番目の画像データとなる回転数が20/600回、…となる。そして、画像データ数を5とした場合に、6番目の画像データは、再び1番目の画像データとなりこのときの回転数は60/600回となる。そして、画像データが5番となった後に、再び、1番の画像データとなることを繰り返しながら、1画像データに対して10/600回ずつ回転することになる。
このような場合に、1フレームで、基準の回転角度、すなわち0(600)/600となる画像データを表示する。次ぎに、例えば、2フレームでは、回転体の回転数が6/600回となるので、この回転数に最も近い回転数が10/600回となる2番目の画像データを選択して表示する。次ぎに、3フレームでは、回転体の回転数が12/600となるので、再び、この回転数に最も近い回転数が10/600回となる2番目の画像データを表示する。次ぎに、4フレームでは、回転体の回転数が18/600となるので、この回転数に最も近い回転数が20/600となる3番目の画像データを表示する。このように、順次フレームが表示されるたびに表示する画像データを選択することで、任意に設定された回転速度に対応して回転体のアニメーション表示を行うことができる。
なお、分数を用いるものとしても、上述のような場合に、分子と分母を別々に取り扱い、かつ、基本的に分子を分母で除算した際の剰余を用いるようにすることで、小数点以下の数値や三角関数を取り扱うことなく、上述のように任意の回転速度の変更に容易に対応することができる。従って、記憶容量や演算処理能力が制限された携帯電話等の端末でも、容易に互いに同期する回転体の表示を行うことができる。
なお、分数を用いるものとしても、上述のような場合に、分子と分母を別々に取り扱い、かつ、基本的に分子を分母で除算した際の剰余を用いるようにすることで、小数点以下の数値や三角関数を取り扱うことなく、上述のように任意の回転速度の変更に容易に対応することができる。従って、記憶容量や演算処理能力が制限された携帯電話等の端末でも、容易に互いに同期する回転体の表示を行うことができる。
請求項3に記載の発明は、請求項2記載の画像表示装置において、
隣接して互いに同期して回転する回転体同士の間では、それぞれの回転体が所定角度分だけ回転する時間が等しくされ、かつ、互いに所定角度回転する際の位相が所定角度回転する時間の半分の時間だけずれるという条件を有する場合に、
前記表示制御手段は、隣接して互いに同期して回転する回転体にそれぞれ対応するとともに、互いに接する仮想円同士の接点に最も近い前記仮想点を互いに接する仮想円毎に求め、
一方の仮想円に対して求められた仮想点と一方の仮想円に対応する回転体の回転角度に対応する前記位相との関係に基づくとともに、前記条件に基づいて、
他方の仮想円に対して求められた仮想点と他方の仮想円に対応する回転体の位相との関係を求めることにより前記条件に対応して互いに同期して回転する回転体を表示することを特徴とする。
隣接して互いに同期して回転する回転体同士の間では、それぞれの回転体が所定角度分だけ回転する時間が等しくされ、かつ、互いに所定角度回転する際の位相が所定角度回転する時間の半分の時間だけずれるという条件を有する場合に、
前記表示制御手段は、隣接して互いに同期して回転する回転体にそれぞれ対応するとともに、互いに接する仮想円同士の接点に最も近い前記仮想点を互いに接する仮想円毎に求め、
一方の仮想円に対して求められた仮想点と一方の仮想円に対応する回転体の回転角度に対応する前記位相との関係に基づくとともに、前記条件に基づいて、
他方の仮想円に対して求められた仮想点と他方の仮想円に対応する回転体の位相との関係を求めることにより前記条件に対応して互いに同期して回転する回転体を表示することを特徴とする。
請求項3に記載の発明によれば、同期して回転する回転体として歯車の歯が互いに噛み合った状態で表示することができる。
そして、一方の仮想円に対して求められた仮想点と一方の仮想円に対応する回転体の回転角度に対応する前記位相との関係に基づくとともに、前記条件に基づいて、他方の仮想円に対して求められた仮想点と他方の仮想円に対応する回転体の位相との関係を求めることにより前記条件に対応して互いに同期して回転する回転体を表示する場合には、例えば、以下のようにする。
そして、一方の仮想円に対して求められた仮想点と一方の仮想円に対応する回転体の回転角度に対応する前記位相との関係に基づくとともに、前記条件に基づいて、他方の仮想円に対して求められた仮想点と他方の仮想円に対応する回転体の位相との関係を求めることにより前記条件に対応して互いに同期して回転する回転体を表示する場合には、例えば、以下のようにする。
互いに噛み合う歯車のそれぞれの仮想円の接点に最も近い仮想点は、各仮想点がアニメーションの画像データに対応することから、回転体の回転表示における回転角度の解像度上それより小さい角度での回転を表示することができない。従って、回転角度の解像度上最も接点に近似する点となる。また、各仮想点に円周方向に沿って付された連番を、上述の所定角度の分割数(画像データ数)で除算した場合の剰余は、所定角度の回転を1つの周期とし、1回の歯車の回転に歯数分の周期が存在するとした場合に、1回の回転における各周期内の位相を表すことになる。そして、1周期内の各位相毎に対応する画像データが存在することになる。
ここで、一方の仮想円の接点に最も近い仮想点の位相を求める。上述のように仮想点に円周方向に沿って付された連番を所定角度をアニメーション表示する画像データの数で除算した際の剰余が接点に最も近い仮想点の位相となる。また、同様に他方の仮想円の接点に最も近い仮想点の位相を求める。
また、歯車同士の噛み合わせを行う際の一方の仮想円に対応する歯車は、既に回転角度が決定しているものとし、一方の仮想円に対応する一方の歯車の決定されている回転角度の位相を求める。この位相は、一方の歯車を表示する際の画像データに対応することになる。
また、歯車同士の噛み合わせを行う際の一方の仮想円に対応する歯車は、既に回転角度が決定しているものとし、一方の仮想円に対応する一方の歯車の決定されている回転角度の位相を求める。この位相は、一方の歯車を表示する際の画像データに対応することになる。
そして、一方の仮想円の接点に最も近い仮想点の位相と、一方の仮想円に対応する一方の歯車の回転角度に対応する位相との差(ずれ)を求める。そして、他方の仮想円に対応する他方の歯車の回転角度(位相)を、一方の歯車の既に決められた歯車の回転角度(位相)に基づいて決める。この場合には、一方の仮想円の接点に最も近い仮想点は、対応する歯車の回転角度の解像度上最も接点に近似し、他方の仮想円の接点に最も近い仮想点は、対応する歯車の回転角度の解像度上最も接点に近似することから、これら仮想点同士も歯車の回転角度の解像度上、最も近似する点となり、ほぼ同一の点と見なすことができる。
ここで、一方の仮想円の接点に最も近い仮想点の位相と、一方の仮想円に対応する一方の歯車の回転角度に対応する位相との差(ずれ量)分だけ、他方の仮想円の接点に最も近い仮想点の位相をずらした位相を、他方の歯車の回転角度に対応する位相とすると、互いに接する二つの仮想円の互いに略一致する二つの仮想点から同じずれ量だけ一方の歯車の位相と他方の歯車の位相とがずれることから、この場合に、一方の歯車の歯と他方の歯車の歯とが重なったり、一方の歯車の谷と他方の歯車の谷とが重なったりすることになる。すなわち、二つの歯車がほぼ同位相で回転することになり、これでは、噛み合った状態の表示とならない。
そこで、一方の歯車の位相に対して他方の歯車の位相を決める際に、他方の仮想円の接点に最も近い仮想点の位相を上記ずれ量だけずらすのではなく、ずれ量の順方向もしくは逆方向に半周期分の位相だけずらすようにする。例えば、画像データの数が5の場合に、位相は五段階となるので、半周期分の位相のずれ量は、2.5となるが、小数点以下を切り下げもしくは切り上げるものとすると、半周期分の位相のずれ量は、2もしくは3となる。ここで、半周期分の位相のずれ量を2とし、一方の仮想円の接点に最も近い仮想点の位相と、一方の仮想円に対応する一方の歯車の回転角度に対応する位相とのずれ量を3とすれば、他方の仮想円の接点に最も近い仮想点の位相を1もしくは5ずらした位相を他方の回転体の位相とすることにより、一方の歯車の谷に他方の歯車の歯が噛み、一方の歯車の歯が他方の歯車の谷に噛むように、互いに噛み合った状態とすることができる。なお、画像データ数が5の場合の位相は、例えば、0,1,2,3,4の5段階であり、位相をずらした場合の位相の値が5以上となった場合は、5(画像データ数)で除算した余りが位相を示す値となり、ずらした場合の位相の値がマイナスの場合は、5(画像データ数)にマイナスの値を加算した値(この値が5以上になる場合は、さらに、5(画像データ数)で除算した値)が位相を示す値となる。
すなわち、互いに同期して回転する回転体として互いに噛み合った歯車をアニメーション表示する場合には、一方の歯車の歯と歯の間の谷に、他方の歯車の歯が噛み合った状態に表示する必要があり、この場合にも、一般的には、三角関数等を用いた演算処理が必要となる。
しかし、上述のようにピッチ円である仮想円周上に仮想点を想定することで、三角関数等を用いることなく、歯車の歯の噛み合いを表現することができる。なお、この際の仮想点の座標データは、仮想円の接点に最も近い仮想点を求めるために、xy座標等の座標上の位置を示す値が必要となるが、これらの値を回転体画像表示プログラムの処理として求める必要はなく、予め求められた座標データをデータとして使用できるようになっていれば良い。また、座標データとして小数点以下の数値を必要とするような場合には、切り捨て、切り上げ等することにより、整数としておけば良い。また、演算処理結果として小数点の数値が得られるような場合にも小数点以下の部分を無視するようにすれば良い。
従って、座標データ等の値は、基本的に、実際のデータが整数でない限りは、近似値となる。
しかし、上述のようにピッチ円である仮想円周上に仮想点を想定することで、三角関数等を用いることなく、歯車の歯の噛み合いを表現することができる。なお、この際の仮想点の座標データは、仮想円の接点に最も近い仮想点を求めるために、xy座標等の座標上の位置を示す値が必要となるが、これらの値を回転体画像表示プログラムの処理として求める必要はなく、予め求められた座標データをデータとして使用できるようになっていれば良い。また、座標データとして小数点以下の数値を必要とするような場合には、切り捨て、切り上げ等することにより、整数としておけば良い。また、演算処理結果として小数点の数値が得られるような場合にも小数点以下の部分を無視するようにすれば良い。
従って、座標データ等の値は、基本的に、実際のデータが整数でない限りは、近似値となる。
請求項4に記載の発明は、請求項1〜3のいずれか1項に記載の回転体画像表示装置において、
前記記憶手段は、前記画像データを配色表と配色表式画像データとを有するインデックス画像として記憶し、
前記記憶手段に記憶されたインデックス画像の配色表上の色のデータを書き換えることにより、回転体の画像の色を変更する色変更手段を備えたことを特徴とする。
前記記憶手段は、前記画像データを配色表と配色表式画像データとを有するインデックス画像として記憶し、
前記記憶手段に記憶されたインデックス画像の配色表上の色のデータを書き換えることにより、回転体の画像の色を変更する色変更手段を備えたことを特徴とする。
ここで、インデックス画像とは、例えば、GIFやPNGである。
請求項4に記載の発明によれば、インデックス画像を展開して画像として表示した状態で、色を変更する領域を指定して、その領域の色を変更するような、インデックス画像用のグラフィックソフトを用いることなく、歯車の画像データの色を変更することができる。すなわち、インデックス画像を例えばVRAM等の表示用メモリに展開して、表示できる状態としなくとも、展開されていないバイナリー状態の画像データの配色表、すなわち、カラーパレットにおいて、例えば、画像の回転体の領域の配色に使われているインデックスのRGB値を直接書き換えることにより、回転体の色を書き換えることができる。
請求項4に記載の発明によれば、インデックス画像を展開して画像として表示した状態で、色を変更する領域を指定して、その領域の色を変更するような、インデックス画像用のグラフィックソフトを用いることなく、歯車の画像データの色を変更することができる。すなわち、インデックス画像を例えばVRAM等の表示用メモリに展開して、表示できる状態としなくとも、展開されていないバイナリー状態の画像データの配色表、すなわち、カラーパレットにおいて、例えば、画像の回転体の領域の配色に使われているインデックスのRGB値を直接書き換えることにより、回転体の色を書き換えることができる。
なお、インデックス画像のバイナリーデータ上の配色表(globalとlocalがある場合に、基本的にglobalの配色表)の位置が決まっているとともに、配色表における各色のデータ(例えば、RGB値)はインデックス順に配置されているので、バイナリーデータの状態のインデックス画像でも、歯車に対応するインデックスが既知ならば容易に歯車に対応するインデックスのRGB値を変更することで、回転体の色を変更することができる。従って、回転体の色を規定するインデックスは、予め決まっている必要がある。また、回転体を、例えば、輪郭線(縁)と、その内部等のように複数の領域にわけ、領域毎に異なるインデックスを決めておくものとすれば、回転体を複数の領域に分けて複数の色で表示する場合も領域毎の色の変更が可能である。
また、インデックス画像において、配色表は圧縮されておらず、配色表式画像データの部分が圧縮されている。従って、インデックス画像を展開しなくとも配色表の書き換えを容易に行うことができる。
以上のことから、インデックス画像用のアプリケーションを使用しなくとも、回転体の色を変更できるので、極めてデータ容量の少ないプログラムで回転体の色の変更を可能とすることができる。また、予め、複数の色違いの回転体の画像データを記憶しておく必要がなく、かつ、変更可能な回転体の色数を極めて多くすることができる。
すなわち、回転体の色を変更可能としても、回転体画像表示プログラムのデータ容量を大きくすることなく、かつ、必要な画像データの容量も最低限のものとすることができるので、記憶容量や演算処理処理能力に制限がある携帯電話等の携帯端末の好適に用いることができる。また、携帯電話の通信回線を利用してインターネット上から回転体画像表示プログラム及びそのデータをダウンロードする際や、回転体画像表示プログラムで作成されたファイルをダウンロード及びアップロードする際の通信にかかる課金を減少させることができる。
以上のことから、インデックス画像用のアプリケーションを使用しなくとも、回転体の色を変更できるので、極めてデータ容量の少ないプログラムで回転体の色の変更を可能とすることができる。また、予め、複数の色違いの回転体の画像データを記憶しておく必要がなく、かつ、変更可能な回転体の色数を極めて多くすることができる。
すなわち、回転体の色を変更可能としても、回転体画像表示プログラムのデータ容量を大きくすることなく、かつ、必要な画像データの容量も最低限のものとすることができるので、記憶容量や演算処理処理能力に制限がある携帯電話等の携帯端末の好適に用いることができる。また、携帯電話の通信回線を利用してインターネット上から回転体画像表示プログラム及びそのデータをダウンロードする際や、回転体画像表示プログラムで作成されたファイルをダウンロード及びアップロードする際の通信にかかる課金を減少させることができる。
請求項5に記載の発明は、表示装置を備えるコンピュータに、それぞれ互いに同期して回転可能で、それぞれ固有の所定角度を回転する毎に、回転前の形状と回転後の形状とが一致する回転対称の形状を有し、かつ、互いに同期して回転する場合にそれぞれ固有の所定角度を回転する時間が略一致する複数の歯車等の回転体をアニメーション表示させるプログラムであって、
前記所定角度が互いに異なる複数の回転体のそれぞれのアニメーション用の画像データとして、各回転体のそれぞれ固有の所定角度を互いにほぼ等間隔に同じ分割数で分割した各回転角度位置での前記回転体の画像を示し、かつ、所定角度を各回転体で同じ分割数で分割することにより各回転体で同数にされた画像データを順次表示することで回転体をアニメーション表示する機能と、
前記回転体の任意の回転速度に応じて前記画像データを順次切り替えて表示していく場合に、同期して回転した状態に表示される回転体同士の前記画像データを切り替えるタイミングをほぼ同期させる機能とをコンピュータに実現させることを特徴とする。
前記所定角度が互いに異なる複数の回転体のそれぞれのアニメーション用の画像データとして、各回転体のそれぞれ固有の所定角度を互いにほぼ等間隔に同じ分割数で分割した各回転角度位置での前記回転体の画像を示し、かつ、所定角度を各回転体で同じ分割数で分割することにより各回転体で同数にされた画像データを順次表示することで回転体をアニメーション表示する機能と、
前記回転体の任意の回転速度に応じて前記画像データを順次切り替えて表示していく場合に、同期して回転した状態に表示される回転体同士の前記画像データを切り替えるタイミングをほぼ同期させる機能とをコンピュータに実現させることを特徴とする。
ここで、コンピュータとは、回転体画像表示プログラムを実行可能な装置であるが、例えば、記憶容量や演算処理能力に制限がある携帯電話等の携帯端末である。
請求項5記載の発明によれば、請求項1に記載の発明と同様の作用効果を得ることができる。
請求項5記載の発明によれば、請求項1に記載の発明と同様の作用効果を得ることができる。
請求項6に記載の発明は、請求項5に記載の回転体画像表示プログラムにおいて、
隣接して互いに同期して回転する各回転体にそれぞれ対応するとともに、互いに接触して同期して回転する仮想円の円周上に、各回転体の一回転に含まれる前記所定角度の数に、所定角度回転する回転体をアニメーション表示させるための前記画像データの数を乗算して得られた値となる数の仮想点をほぼ等間隔毎に設定しておくとともに、各仮想点がそれぞれアニメーション表示用の複数の前記画像データの1つに対応するものとし、
前記画像データを順次表示することで回転体をアニメーション表示する場合に、前記画像データの表示時における前記回転体の回転速度に応じた回転角度に対応する前記仮想点を求め、複数の前記画像データのうちの求められた仮想点に対応する前記画像データを表示する機能を前記コンピュータに実現させることを特徴とする。
請求項6記載の発明によれば、請求項2に記載の発明と同様の作用効果を得ることができる。
隣接して互いに同期して回転する各回転体にそれぞれ対応するとともに、互いに接触して同期して回転する仮想円の円周上に、各回転体の一回転に含まれる前記所定角度の数に、所定角度回転する回転体をアニメーション表示させるための前記画像データの数を乗算して得られた値となる数の仮想点をほぼ等間隔毎に設定しておくとともに、各仮想点がそれぞれアニメーション表示用の複数の前記画像データの1つに対応するものとし、
前記画像データを順次表示することで回転体をアニメーション表示する場合に、前記画像データの表示時における前記回転体の回転速度に応じた回転角度に対応する前記仮想点を求め、複数の前記画像データのうちの求められた仮想点に対応する前記画像データを表示する機能を前記コンピュータに実現させることを特徴とする。
請求項6記載の発明によれば、請求項2に記載の発明と同様の作用効果を得ることができる。
請求項7に記載の発明は、請求項6に記載の回転体画像表示プログラムにおいて、
隣接して互いに同期して回転する回転体同士の間では、それぞれの回転体が所定角度分だけ回転する時間が等しくされ、かつ、互いに所定角度回転する際の位相が所定角度回転する時間の半分の時間だけずれるという条件を有する場合に、
隣接して互いに同期して回転する回転体にそれぞれ対応するとともに互いに接する仮想円同士の接点に最も近い前記仮想点を互いに接する仮想円毎に求め、
一方の仮想円に対して求められた仮想点と一方の仮想円に対応する回転体の回転角度に対応する前記位相との関係に基づくとともに、前記条件に基づいて、
他方の仮想円に対して求められた仮想点と他方の仮想円に対応する回転体の位相との関係を求めることにより前記条件に対応して互いに同期する回転体を表示する機能を前記コンピュータに実現させることを特徴とする。
請求項7記載の発明によれば、請求項3に記載の発明と同様の作用効果を得ることができる。
隣接して互いに同期して回転する回転体同士の間では、それぞれの回転体が所定角度分だけ回転する時間が等しくされ、かつ、互いに所定角度回転する際の位相が所定角度回転する時間の半分の時間だけずれるという条件を有する場合に、
隣接して互いに同期して回転する回転体にそれぞれ対応するとともに互いに接する仮想円同士の接点に最も近い前記仮想点を互いに接する仮想円毎に求め、
一方の仮想円に対して求められた仮想点と一方の仮想円に対応する回転体の回転角度に対応する前記位相との関係に基づくとともに、前記条件に基づいて、
他方の仮想円に対して求められた仮想点と他方の仮想円に対応する回転体の位相との関係を求めることにより前記条件に対応して互いに同期する回転体を表示する機能を前記コンピュータに実現させることを特徴とする。
請求項7記載の発明によれば、請求項3に記載の発明と同様の作用効果を得ることができる。
請求項8に記載の発明は、請求項5〜7のいずれか1項に記載の回転体画像表示プログラムにおいて、
前記画像データを配色表と配色表式画像データとを有するインデックス画像として前記コンピュータの記憶手段に記憶し、
前記記憶手段に記憶されたインデックス画像の配色表上の色のデータを書き換えることにより、回転体の画像の色を変更する機能を前記コンピュータに実現させることを特徴とする。
請求項8記載の発明によれば、請求項4に記載の発明と同様の作用効果を得ることができる。
前記画像データを配色表と配色表式画像データとを有するインデックス画像として前記コンピュータの記憶手段に記憶し、
前記記憶手段に記憶されたインデックス画像の配色表上の色のデータを書き換えることにより、回転体の画像の色を変更する機能を前記コンピュータに実現させることを特徴とする。
請求項8記載の発明によれば、請求項4に記載の発明と同様の作用効果を得ることができる。
本発明によれば、携帯電話等の記憶容量や演算処理能力が制限された携帯端末において、使用者が歯車を任意に配置して組み合わせて、歯車列を作成し、これら歯車を任意の回転速度で回転した状態に表示させるコンテンツを浮動小数点演算や三角関数演算等を用いることなく提供することができる。
以下、本発明の一実施形態としての回転体画像表示装置及び回転体画像表示プログラムを説明する。
この例における回転体画像表示装置は、携帯電話1等の通信機能を有する携帯端末であり、インターネットに接続可能となっている。そして、携帯電話1は、アプリケーションとしてウェブページを閲覧する周知のブラウザを搭載したものである。また、携帯電話1は、例えば、Javaアプレットを実行可能となっており、この実施形態の回転体画像表示プログラムは、Javaアプレット(マルチプラットホームで実行可能で比較的記憶容量の少ないプログラム)として、インターネットを介して携帯電話1にダウンロードされて、携帯電話1上で実行される。また、携帯電話1上で実行されるJavaアプレットは、機能制限がある組み込み用Javaのものであり、浮動小数点演算や三角関数の関数演算等を直接的に用いることができないものとなっている。
この例における回転体画像表示装置は、携帯電話1等の通信機能を有する携帯端末であり、インターネットに接続可能となっている。そして、携帯電話1は、アプリケーションとしてウェブページを閲覧する周知のブラウザを搭載したものである。また、携帯電話1は、例えば、Javaアプレットを実行可能となっており、この実施形態の回転体画像表示プログラムは、Javaアプレット(マルチプラットホームで実行可能で比較的記憶容量の少ないプログラム)として、インターネットを介して携帯電話1にダウンロードされて、携帯電話1上で実行される。また、携帯電話1上で実行されるJavaアプレットは、機能制限がある組み込み用Javaのものであり、浮動小数点演算や三角関数の関数演算等を直接的に用いることができないものとなっている。
そして、携帯電話1は、図1のブロック図に示すように、画像表示を行う表示部2と、各種プログラムを実行する計算処理部3と、使用者が携帯電話1を操作したりデータを入力したりする場合に用いられる各種キーとポインタの移動等に用いられる十字キー等とを備えたキー入力部4と、インターネットへの接続等に用いられるネットワーク通信部5と、不揮発性のメモリからなる記憶領域6(磁気的、光学的記憶媒体でも良い)とを備えるものである。
前記表示部2は、例えば、カラー液晶ディスプレイと、液晶ディスプレイの駆動回路と、VRAMを備える表示制御回路等とを備えたものであり、計算処理部3の制御の下にカラー液晶ディスプレイに画像の表示を行うものである。
前記計算処理部3は、プログラムとして、前記ブラウザやJavaアプレット等を実行させることが可能となっている。そして、計算処理部3は、例えば、組み込み機器用MPUのチップとして、CPU31及び実行メモリ32(DRAM)等を備えたものである。
そして、計算処理部3は、本発明の回転体画像表示プログラムを実行することにより、本発明の表示制御手段及び色変更手段として機能するものである。
前記計算処理部3は、プログラムとして、前記ブラウザやJavaアプレット等を実行させることが可能となっている。そして、計算処理部3は、例えば、組み込み機器用MPUのチップとして、CPU31及び実行メモリ32(DRAM)等を備えたものである。
そして、計算処理部3は、本発明の回転体画像表示プログラムを実行することにより、本発明の表示制御手段及び色変更手段として機能するものである。
キー入力部4は、例えば、携帯電話1としてのキー配列を有するもので、ひらがな、カタカナ、アルファベット等を入力可能とされるとともに、変換機能により漢字、記号等も入力可能なテンキー及び記号キーと、メニュー選択、ポインタの移動、ポインティングデバイス等として使用可能な十字キー等とを備え、その他に、通話、インターネット接続等の専用キーを備える。
ネットワーク通信部5は、この例では、携帯電話1用の無線通信装置となり、基地局との間での無線でのデータ通信を可能とし、携帯電話1用の通信回線を使用してインターネットに接続可能となっている。
また、記憶領域6は、例えば、不揮発性のフラッシュメモリやEEPROM等から構成されるものであり、インターネットを介してサーバからダウンロードされたJavaアプレット等を記憶するとともに、この例では、後述するように、Javaアプレットとしての回転体画像表示プログラムで用いられる画像データや表示用に生成された歯車の表示に係わるデータ等が記憶される。従って、記憶領域6は、本発明の記憶手段及び円周座標記憶手段として機能するものである。
ネットワーク通信部5は、この例では、携帯電話1用の無線通信装置となり、基地局との間での無線でのデータ通信を可能とし、携帯電話1用の通信回線を使用してインターネットに接続可能となっている。
また、記憶領域6は、例えば、不揮発性のフラッシュメモリやEEPROM等から構成されるものであり、インターネットを介してサーバからダウンロードされたJavaアプレット等を記憶するとともに、この例では、後述するように、Javaアプレットとしての回転体画像表示プログラムで用いられる画像データや表示用に生成された歯車の表示に係わるデータ等が記憶される。従って、記憶領域6は、本発明の記憶手段及び円周座標記憶手段として機能するものである。
ここで、Javaアプレットとして、計算処理部3で実行される回転体画像表示プログラムの概要について説明する。
回転体画像表示プログラムでは、基本的に、図2に示すように回転体として複数の歯車7(平歯車)が回転するアニメーションを表示するとともに、複数の歯車7が互いに噛み合っている場合に、複数の歯車7が噛み合った状態で同期して回転するアニメーションを表示するものであるが、各歯車7の歯数及び径、各歯車7の配置、各歯車7が噛み合うか否か、駆動歯車7(原車)と従動歯車7(従車)の決定、各歯車7の位置等を携帯端末の使用者が設定もしくは選択可能となっている。また、歯車7の他に時計の針9(図5に図示)を任意の歯車と一体に回転するように表示可能となっており、原車となる歯車の回転速度、互いに噛み合う歯車の変速比等を調整することにより、図5(L)に示すように時計の時針9a、分針9b、秒針9cの動きを再現すること、すなわち、歯車7が露出したスケルトン時計をデザインすることが可能となっている。なお、回転体画像表示プログラムにより、時計を再現する必要はなく、複数の歯車7を組み合わせたり、歯車7とともに回転する針9(図5に図示)を表示させたりすることにより、歯車7のアニメーションによるアート的な表現が可能となっている。
回転体画像表示プログラムでは、基本的に、図2に示すように回転体として複数の歯車7(平歯車)が回転するアニメーションを表示するとともに、複数の歯車7が互いに噛み合っている場合に、複数の歯車7が噛み合った状態で同期して回転するアニメーションを表示するものであるが、各歯車7の歯数及び径、各歯車7の配置、各歯車7が噛み合うか否か、駆動歯車7(原車)と従動歯車7(従車)の決定、各歯車7の位置等を携帯端末の使用者が設定もしくは選択可能となっている。また、歯車7の他に時計の針9(図5に図示)を任意の歯車と一体に回転するように表示可能となっており、原車となる歯車の回転速度、互いに噛み合う歯車の変速比等を調整することにより、図5(L)に示すように時計の時針9a、分針9b、秒針9cの動きを再現すること、すなわち、歯車7が露出したスケルトン時計をデザインすることが可能となっている。なお、回転体画像表示プログラムにより、時計を再現する必要はなく、複数の歯車7を組み合わせたり、歯車7とともに回転する針9(図5に図示)を表示させたりすることにより、歯車7のアニメーションによるアート的な表現が可能となっている。
なお、歯車は、所定角度を回転する毎に、回転前の形状と回転後の形状とが一致する回転対称の形状を有するものである。また、歯車の場合、例えば、歯数が12の歯車の場合30度、60度、120度、180度等のように、回転前の形状と回転後の形状とが一致する所定角度が複数含まれることになるが、ここでは、所定角度は、360度未満で、かつ、その回転体で最少の回転対称となる角度であり、上述の歯数が12の歯車の場合には、30度が所定角度となる。すなわち、所定角度は、歯車7の一歯分の回転角度である。ここで、歯車7の外周部の回転を固定された1つの角度位置で見た場合に、歯車7の歯となる山とその間の谷の部分とが交互に繰り返すことになり、前記所定角度を1つの周期として見ることができる。すなわち、歯車が一回転する間に、上述の山と谷とを繰り返す波状の周期が歯数分だけ繰り返すことになる。従って、以下に歯車の所定角度の回転を周期と表現する場合がある。
また、噛み合った状態で同期する歯車7同士は、それぞれ回転方向が逆になるとともに、互いに歯が噛み合った部分を見た場合に、一方の歯車7の谷の部分に他方の歯車7の山の部分が噛み合うようになっていることから、互いに噛み合う歯車7の一回転における周期数(歯数)が同じでも違っていても、互いに噛み合って同期して回転する各歯車7が一周期(最少所定角度)分回転するのにかかる時間は等しくなる。各歯車の回転角度は、半周期分ずれたものとなっている。すなわち、噛み合った歯車同士は、互いに同期して逆回転するとともに、位相が半周期ずれたものとなっている。
以下に回転体画像表示装置としての携帯端末における回転体画像表示プログラムとしてのJavaアプレットの処理を説明する。
まず、携帯電話1は、例えば、インターネット接続環境にあるものとし、インターネットを介して所定のウェブページにアクセスすることにより、ハイパーリンク等によりJavaアプレットとしての回転体画像表示プログラムが自動的にダウンロードされ、携帯電話1の記憶領域6に記憶されることになる。この際にJavaアプレットのデータとして、回転画像表示プログラムのデータと以下の回転体画像表示プログラムで使用されるデータがダウンロードされることになる。
まず、携帯電話1は、例えば、インターネット接続環境にあるものとし、インターネットを介して所定のウェブページにアクセスすることにより、ハイパーリンク等によりJavaアプレットとしての回転体画像表示プログラムが自動的にダウンロードされ、携帯電話1の記憶領域6に記憶されることになる。この際にJavaアプレットのデータとして、回転画像表示プログラムのデータと以下の回転体画像表示プログラムで使用されるデータがダウンロードされることになる。
記憶領域5に記憶されるデータとしては、回転体の画像データがあり、記憶領域5には、画像データ記憶領域61が設けられている。
回転体の画像データは、この例において、配色表(カラーテーブル、カラーパレット)を有するパレット部621と、配色表に基づくイメージデータ(配色表式画像データ)を有するピクセルデータ部622とを備えるインデックス画像62として記憶される。
なお、インデックス画像62は、この例では、GIFが用いられている。また、画像データにおいては、カラーの歯車7の形状が記憶されているが、ここで歯車7は、その外周縁となる輪郭線の領域と、輪郭線の内部の領域と、輪郭線の外部で例えば、歯車を立体的に見せるための影や側面を示す領域との三つの領域に分けられ、各領域毎に色が設定されている。すなわち、歯車の上述の各領域毎に、パレット部621の配色表のインデックスが指定されている。
回転体の画像データは、この例において、配色表(カラーテーブル、カラーパレット)を有するパレット部621と、配色表に基づくイメージデータ(配色表式画像データ)を有するピクセルデータ部622とを備えるインデックス画像62として記憶される。
なお、インデックス画像62は、この例では、GIFが用いられている。また、画像データにおいては、カラーの歯車7の形状が記憶されているが、ここで歯車7は、その外周縁となる輪郭線の領域と、輪郭線の内部の領域と、輪郭線の外部で例えば、歯車を立体的に見せるための影や側面を示す領域との三つの領域に分けられ、各領域毎に色が設定されている。すなわち、歯車の上述の各領域毎に、パレット部621の配色表のインデックスが指定されている。
インデックス画像62のパレット部621では、例えば、最大256のインデックスを有し、各インデックス毎にRGB値(例えば、RGB各8bit)を指定可能となっており、いわゆるフルカラーから最大256の色を選択可能である。なお、インデックス数は、256以下の何段階かに設定可能となっており、例えば、インデックスを4つとして4色だけ選択可能とすることもできる。
そして、パレット部621においては、例えば、使用可能な色が4色だとすると、インデックス0〜インデックス3にそれぞれ、R,G,Bの各光度(8bitならば0〜255)が指定される。
そして、パレット部621においては、例えば、使用可能な色が4色だとすると、インデックス0〜インデックス3にそれぞれ、R,G,Bの各光度(8bitならば0〜255)が指定される。
また、ピクセルデータ部622では、例えば、歯車の輪郭線の領域に含まれるピクセル(画素)には、全てインデックス0が指定され、輪郭線で囲まれた歯車内部の領域のピクセルには、インデックス1が指定され、輪郭線の外部(歯車の外部の影等)の領域のピクセルには、インデックス2が指定される。そして、歯車の輪郭線の領域の色、歯車内部の領域の色、歯車外部の領域の色は、指定されたインデックスの各R,G,Bの値により決定される。なお、色として透明を指定することも可能となっており、例えば、歯車の輪郭線内部の領域に対して透明を指定した場合には、歯車が前後に重なっている場合に、歯車の輪郭線内部に後方の歯車が表示される。なお、後方に歯車がなければ、透明となった部分には、背景色が表示される。
ここで、インデックス画像62をダウンロードした時点では、パレット部621の各インデックスには、デフォルトで設定されたRGB値が格納されている。
ここで、インデックス画像62をダウンロードした時点では、パレット部621の各インデックスには、デフォルトで設定されたRGB値が格納されている。
また、この例においては、表示可能な歯車7として、例えば、歯数が6,12,18,24,30の5種類の歯車7が設定されている。なお、各歯車7の歯の形状はほぼ同様のものとなっている。ここで、歯車の歯数の基底となる値cogは、正の整数とされ、例えば、この例では、6とされている。そして、歯車7の歯数の種類は、cogを(正の)整数倍したものであり、基底を6とすると、cog0が6、cog1が12、cog2が18、cog3が24、cog4が30となる。これらcog0〜cog4が歯車7の歯数の集合COGの要素となる。これら歯車7を噛み合わせた場合の変速比は、(整数:整数)となる。
なお、ここでcogmと表した場合に、mは、歯数の異なる歯車7の種類を歯数の少ない順に表す連番、すなわち、m=0,1,2,3,…となり、上述のように基底となる歯数を整数倍した際の値から1を減算した値に対応する。
なお、ここでcogmと表した場合に、mは、歯数の異なる歯車7の種類を歯数の少ない順に表す連番、すなわち、m=0,1,2,3,…となり、上述のように基底となる歯数を整数倍した際の値から1を減算した値に対応する。
また、図2に示すように歯車7には、ピッチ円8(仮想円)が設定されており、互いに噛み合う二つの歯車7間の距離は、これら歯車7に対応する二つのピッチ円8の半径radの和となり、互いに噛み合う二つの歯車7のピッチ円8同士は接した状態となっている。また、歯車7同士の変速比と、互いに接触するピッチ円8を摩擦円板とした場合の変速比は一致するようになっている。
なお、歯車7(回転体)の半径radと記載した場合には、歯車7に対応するピッチ円8の半径radを指すものとする。
そして、上述の歯数に基づく歯車7の種類において、各歯車7の半径radm(mは上述のように歯数の異なる歯車の種類を表す)は、歯数の種類が歯数の正の整数倍となっていることから、基底の歯数cog0の歯車の半径rad0を例えば1とした場合に、rad1が2、rad2が3、rad3が4、rad4が5となる。
これらrad0〜rad4(radm)が歯車の半径の種類の集合RADの要素となる。
なお、歯車7(回転体)の半径radと記載した場合には、歯車7に対応するピッチ円8の半径radを指すものとする。
そして、上述の歯数に基づく歯車7の種類において、各歯車7の半径radm(mは上述のように歯数の異なる歯車の種類を表す)は、歯数の種類が歯数の正の整数倍となっていることから、基底の歯数cog0の歯車の半径rad0を例えば1とした場合に、rad1が2、rad2が3、rad3が4、rad4が5となる。
これらrad0〜rad4(radm)が歯車の半径の種類の集合RADの要素となる。
従って、インデックス画像としては、歯数が異なる、すなわち、上述の所定角度(周期)が異なる複数種類(5種類)用のインデックス画像62(画像データ)がダウンロードされて記憶領域6に記憶されることになる。
また、歯車7を回転させるアニメーションを表示するためには、回転角度の異なる複数のインデックス画像62が必要となるが、この例では、歯数すなわち所定角度(周期)が異なる各歯車7でアニメーションを表現するのに同数のインデックス画像62が記憶領域6に記憶される。なお、歯車7の色の変更等を行った場合に色違いのインデックス画像52が生じることになるが、各歯車7(歯数の異なる歯車7、色の異なる歯車7)において、アニメーションにはみな同じ数のインデックス画像62が用いられる。
また、歯車7を回転させるアニメーションを表示するためには、回転角度の異なる複数のインデックス画像62が必要となるが、この例では、歯数すなわち所定角度(周期)が異なる各歯車7でアニメーションを表現するのに同数のインデックス画像62が記憶領域6に記憶される。なお、歯車7の色の変更等を行った場合に色違いのインデックス画像52が生じることになるが、各歯車7(歯数の異なる歯車7、色の異なる歯車7)において、アニメーションにはみな同じ数のインデックス画像62が用いられる。
そして、アニメーションのインデックス画像62としては、上述の所定角度(周期)を例えば、円周に沿って等間隔に各種類の歯車7で同じ分割数で分割した回転角度(分割角度)毎のインデックス画像62が用いられる。従って、各種類の歯車7毎の画像データ数は、歯数の異なる各歯車7で同じ数とされる。また、一歯分の所定角度の回転を1周期とするので、各歯車で、等間隔に同じ分割数で分割された回転角度毎のインデックス画像62は、1周期を等間隔に分割した場合の各位相位置を示すともに、分割された各回転角度毎のインデックス画像62に連番を付した場合に、各歯数の異なる歯車7において、同じ番号のインデックス画像62は、歯数が異なっていても同じ位相位置を示すことになる。そして、画像データ数は、1周期内の表示可能な位相位置の数(phase、歯数の異なる各歯車で共通の値)を示す。
そして、図3に示すように、所定角度の画像データ数を、例えば、5とした場合に、歯数が12の歯車7において、1つの歯7(例えば、この歯7を基準とする)を真上に向けた状態を0度とした場合に、所定角度が30度となるので、等分に分割した際の分割角度は6度となり、インデックス画像62としては、上述の0度の状態の基準となる画像データimageoと、それから、6度毎回転した画像データ、すなわち、6度回転した画像データimage1、12度回転した画像データimage2、18度回転した画像データimage3、24度回転した画像データimage4が予め作成されて記憶されることになる。なお、さらに6度回転した画像データ、すなわち、30度回転した画像データは、回転対称となる角度で回転しているので、最初の0度の画像データimage0と同じ画像データとなる。また、各画像データ(インデックス画像62)には、上述のように角度の大きさ順に0〜4等のように設定された分割数に対応する自然数(0を含む)の連番が割り付けられる。
なお、この例では、記憶された各画像データは、imagecollar m,nのように表され、この場合に、collarは、上述のインデックス画像62の配色表に設定された色を表し、mは歯数の異なる歯車の種類(歯数)を表し、nは上述の画像データ毎に付けられた連番を表す。
なお、この例では、記憶された各画像データは、imagecollar m,nのように表され、この場合に、collarは、上述のインデックス画像62の配色表に設定された色を表し、mは歯数の異なる歯車の種類(歯数)を表し、nは上述の画像データ毎に付けられた連番を表す。
そして、回転対称である歯車7は、歯数が12の場合に、30度回転する度に回転前の形状と回転後の形状が一致することになるで、image0(連番のみ記載)からimage4の画像データを順番に表示した後に、再びimage0からimage4の画像データを順番に表示することを繰り返すことにより、歯車7(回転体)が回転しつづけた状態をアニメーション表示することが可能となる。
そして、上述のように各回転角度毎の画像データimage0〜image4は、山と谷が繰り返す1周期が等分割された地点のそれぞれの位相を示すものと考えることができる。そして、歯数の異なる各歯車7におてい、同じ表示タイミングで、各画像データimage0〜image4を順番に表示部2において描画して表示画面に表示することにより、同期した状態に回転させることができる。なお、互いに噛み合う歯車同士は、回転方向が逆になるとともに、歯が噛み合うことにより、一方の谷の部分に他方の山の部分が対応することから噛み合った部分では、回転の位相が半周期ずれたものとなる。
以上のように記憶領域6は、歯数の異なる複数の歯車7の画像データ(インデックス画像62)がそれぞれ記憶されるとともに、回転体として歯車7のそれぞれ固有の所定角度(周期)を互いに等間隔に同じ分割数で分割した回転角度位置(各位相)での各回転体の画像を示し、各回転体でそれぞれ同数にされた画像データを記憶する記憶手段となる。
また、記憶領域6には、上述の各歯数の歯車7毎の円周座標データ63が記憶されている。この円周座標データ63は、図4に示すように、各歯数の歯車7毎に、そのピッチ円8の円周上に各歯車7の上記分割角度毎に仮想点Kを設定し、各仮想点Kの位置を示ものである。なお、各分割角度毎に設定された仮想点Kの数resmは、歯数cogmに画像データ数(phase(表示可能な位相の数))を乗算したものとなる。なお、ここで、resmは、歯数の異なる歯車7毎の仮想点Kの総数を示す。また、図4は、歯数が12の歯車7のピッチ円8とピッチ円8の円周上の仮想点Kを示す。また、図4において、仮想点Kのうちの黒点は、歯車7の歯の中心点を示し、黒点間が所定角度、すなわち、1周期となる。
また、記憶領域6には、上述の各歯数の歯車7毎の円周座標データ63が記憶されている。この円周座標データ63は、図4に示すように、各歯数の歯車7毎に、そのピッチ円8の円周上に各歯車7の上記分割角度毎に仮想点Kを設定し、各仮想点Kの位置を示ものである。なお、各分割角度毎に設定された仮想点Kの数resmは、歯数cogmに画像データ数(phase(表示可能な位相の数))を乗算したものとなる。なお、ここで、resmは、歯数の異なる歯車7毎の仮想点Kの総数を示す。また、図4は、歯数が12の歯車7のピッチ円8とピッチ円8の円周上の仮想点Kを示す。また、図4において、仮想点Kのうちの黒点は、歯車7の歯の中心点を示し、黒点間が所定角度、すなわち、1周期となる。
そして、仮想点Kは、歯数が12の歯車7の場合に、phaseを例えば5とすると、上記所定角度が30度で分割角度が6度となるので、円周上に6度毎に仮想点kが設定されることになる。従って、各仮想点Kは、その角度位置が時計回りに0度、6度、12度、18度、24度、…、とされ、最後の仮想点Kが354度となる。
そして、上述の画像データ数(phase)を5とした場合に、歯数が6の場合には、12度毎に30個の仮想点Kが設定され、歯数が18の場合に、4度毎に90個の仮想点Kが設定され、歯数が24の場合に、3度毎に120個の仮想点Kが設定され、歯数が30の場合に2.4度毎に150個の仮想点Kが設定されることになる。そして、各仮想点Kには、例えば、0〜resm-1の連番が設定される。
また、各仮想点Kは、前記画像データimage0〜image4にも対応するものとなっており、例えば、各仮想点Kに連番を割りふった場合に、上述の各歯車7で同じとされた画像データ数(phase)である5で割った場合の剰余が各画像データに割りふられた連番nとなる。例えば、0〜4までの仮想点Kは、そのまま順に画像データimage0〜image4に対応し、5〜9までの仮想点Kが順に画像データimage0〜image4に対応し、以下同様に5ずつ順に各仮想点Kと、画像データimage0〜image5とが対応する。従って、仮想点Kが決まると画像データimage0〜image4が決まるようになっている。また、各画像データimage0〜image4は、上述のように1周期内の位相に対応している。また、各歯車7の種類毎の仮想点Kの総数resmは、上述のように各仮想点Kが分割角度毎の画像データimage0〜image4に対応するので、アニメーションの時系列上の解像度に対応する。各歯車7は、resmより細かいアニメーション表示はできない。すなわち、380度をresmで除算した分割角度より細かい角度位置の画像データは存在しないので、resmの値が回転体のアニメーションの解像度を示すものとなる。
そして、上述の画像データ数(phase)を5とした場合に、歯数が6の場合には、12度毎に30個の仮想点Kが設定され、歯数が18の場合に、4度毎に90個の仮想点Kが設定され、歯数が24の場合に、3度毎に120個の仮想点Kが設定され、歯数が30の場合に2.4度毎に150個の仮想点Kが設定されることになる。そして、各仮想点Kには、例えば、0〜resm-1の連番が設定される。
また、各仮想点Kは、前記画像データimage0〜image4にも対応するものとなっており、例えば、各仮想点Kに連番を割りふった場合に、上述の各歯車7で同じとされた画像データ数(phase)である5で割った場合の剰余が各画像データに割りふられた連番nとなる。例えば、0〜4までの仮想点Kは、そのまま順に画像データimage0〜image4に対応し、5〜9までの仮想点Kが順に画像データimage0〜image4に対応し、以下同様に5ずつ順に各仮想点Kと、画像データimage0〜image5とが対応する。従って、仮想点Kが決まると画像データimage0〜image4が決まるようになっている。また、各画像データimage0〜image4は、上述のように1周期内の位相に対応している。また、各歯車7の種類毎の仮想点Kの総数resmは、上述のように各仮想点Kが分割角度毎の画像データimage0〜image4に対応するので、アニメーションの時系列上の解像度に対応する。各歯車7は、resmより細かいアニメーション表示はできない。すなわち、380度をresmで除算した分割角度より細かい角度位置の画像データは存在しないので、resmの値が回転体のアニメーションの解像度を示すものとなる。
各仮想点Kの座標位置は、この例において、ピッチ円8の中心のxy座標を0,0として、半径radmの円周上の座標を示すものとされている。
ここで、歯数mの仮想点Kの座標の集合CPOSm(センターポジション)は、
{(xm,0、ym,0)、(xm,1、ym,1)、…、(xm,resm-1、ym,resm-1)}
で表される。なお、各xy座標値は、小数点以下を含む数値を使わずに整数を使うものとする。従って、各xy座標値は、座標の整数近似値となる。なお、xm及びymは、上述のように歯数の異なる歯車7毎のxy座標値を示し、0,1,2,…,resm-1をiとし、歯車の仮想点Kに付された連番を示す。また、簡易的に各座標を仮想点Kに付された連番に対応づけて、
CPOSm={Xm,0、Xm,1、…、Xm,resm-1}
と表しても良い。
ここで、歯数mの仮想点Kの座標の集合CPOSm(センターポジション)は、
{(xm,0、ym,0)、(xm,1、ym,1)、…、(xm,resm-1、ym,resm-1)}
で表される。なお、各xy座標値は、小数点以下を含む数値を使わずに整数を使うものとする。従って、各xy座標値は、座標の整数近似値となる。なお、xm及びymは、上述のように歯数の異なる歯車7毎のxy座標値を示し、0,1,2,…,resm-1をiとし、歯車の仮想点Kに付された連番を示す。また、簡易的に各座標を仮想点Kに付された連番に対応づけて、
CPOSm={Xm,0、Xm,1、…、Xm,resm-1}
と表しても良い。
ここで、上記xy座標を上述のようにピッチ円8の中心のxy座標を0,0として、半径radmの円周上の座標を示すものとし、(xm,0、ym,0)=(0、radm(半径))を開始点として時計回りに回転するものとし、i=0,1,2,…,resm-1とすると以下の関係が成立し、CPOSmを得るのに必要な情報を削減することができる。
すなわち、(xm,0、ym,0)=(0、radm(半径))を開始点とするとともに、等間隔で仮想点Kが円周上に並んでいる場合に、各仮想点Kの配置は、Y軸に対して線対称となるので、
(xm,i、ym,i)=(−xm,resm-1-i、ym,resm-1-i)
という関係が成立する。
また、仮想点Kの総数resmを2で除算した場合の剰余が0の場合に、各仮想点Kの配置は、X軸に対しても線対称となり、
(xm,i、ym,i)=(xm,(resm-1)/2-i、−ym,(resm-1)/2-i)
という関係が成立する。
すなわち、(xm,0、ym,0)=(0、radm(半径))を開始点とするとともに、等間隔で仮想点Kが円周上に並んでいる場合に、各仮想点Kの配置は、Y軸に対して線対称となるので、
(xm,i、ym,i)=(−xm,resm-1-i、ym,resm-1-i)
という関係が成立する。
また、仮想点Kの総数resmを2で除算した場合の剰余が0の場合に、各仮想点Kの配置は、X軸に対しても線対称となり、
(xm,i、ym,i)=(xm,(resm-1)/2-i、−ym,(resm-1)/2-i)
という関係が成立する。
また、仮想点Kの総数resmを4で除算した場合の剰余が0の場合に、各仮想点Kの配置は、xy座標の原点を通る45度及び−45度の線分に対しても線対称となり
(xm,i、ym,i)=(xm,(resm-1)/4-i、ym,(resm-1)/4-i)
という関係が成立する。
そして、各仮想点の座標データは、表示画面の表示領域に対応する座標系のものであるが、表示画面から一部がはみ出した歯車7も表示可能となっており、座標系は表示領域よりも広いものとなっている。また、歯車7の画像データを実際に座標系に配置した場合に、歯車7の位置は、歯車7の回転中心(ピッチ円8の中心)で表され、各仮想点Kの座標系上の座標は、記憶領域6に記憶されたピッチ円8の中心のxy座標を0,0とした仮想点Kのxy座標値に、座標系上に配置された歯車7の回転中心のxy座標値を加算したものとなる。
以上のことから、隣接して互いに同期して回転する各回転体(歯車7)にそれぞれ対応するとともに、互いに接触して同期して回転する仮想円(ピッチ円8)の円周上に、各回転体(歯車7)の一回転に含まれる前記所定角度の数(歯数)に、所定角度回転する回転体(歯車7)をアニメーション表示させるための画像データの数(phase)を乗算して得られた値となる数の仮想点Kをほぼ等間隔毎に設定しておき、各仮想点Kがそれぞれアニメーション表示用の複数の画像データの1つに対応するものとした場合に、記憶領域6は、各仮想点Kを個々に示す仮想点Kの座標データを記憶する円周座標記憶手段として機能する。
(xm,i、ym,i)=(xm,(resm-1)/4-i、ym,(resm-1)/4-i)
という関係が成立する。
そして、各仮想点の座標データは、表示画面の表示領域に対応する座標系のものであるが、表示画面から一部がはみ出した歯車7も表示可能となっており、座標系は表示領域よりも広いものとなっている。また、歯車7の画像データを実際に座標系に配置した場合に、歯車7の位置は、歯車7の回転中心(ピッチ円8の中心)で表され、各仮想点Kの座標系上の座標は、記憶領域6に記憶されたピッチ円8の中心のxy座標を0,0とした仮想点Kのxy座標値に、座標系上に配置された歯車7の回転中心のxy座標値を加算したものとなる。
以上のことから、隣接して互いに同期して回転する各回転体(歯車7)にそれぞれ対応するとともに、互いに接触して同期して回転する仮想円(ピッチ円8)の円周上に、各回転体(歯車7)の一回転に含まれる前記所定角度の数(歯数)に、所定角度回転する回転体(歯車7)をアニメーション表示させるための画像データの数(phase)を乗算して得られた値となる数の仮想点Kをほぼ等間隔毎に設定しておき、各仮想点Kがそれぞれアニメーション表示用の複数の画像データの1つに対応するものとした場合に、記憶領域6は、各仮想点Kを個々に示す仮想点Kの座標データを記憶する円周座標記憶手段として機能する。
この例において、回転速度は、分数で設定されるようになっている。例えば、回転速度の分子と分母とを使用者が入力するようになっており、例えば、分子1、分母600等のように入力する。そして、この例においては、100msec、すなわち、1/10秒毎に、分子の値分、分子が増加するようにカウントアップされる。この際に回転体である歯車は、例えば、1/600回転するようになる。なお、この例でアニメーションの表示は、1秒間に10フレーム表示され、100msec毎に1フレーム表示される。
歯数が6の歯車7は、上述の周期で考えた場合に一周するのに6周期必要となり、1周期に5個の画像データがあるので、歯車7の一周が30個(上述の設定された仮想点Kの総数resm)の画像データで現されることになる。すなわち、歯車7の1回転(一周の回転)が上述の設定された仮想点Kの数である30に分割された状態となり、一周の1/30ずつの画像でアニメーションが行われることになる。上述の分数で示される回転速度で回転するものとした場合に、ピッチ円8の円周上に設定された仮想点Kの数を分母とし、分子を1とする分数と、回転速度となる分数とで、分母を統一して通分する。すなわち、分母の公倍数を求める。ここでは、分母の公倍数は、600となる。
従って、上述の解像度となる数値1/30(resm)は、20/600となる。そして、上述した各仮想点Kには、上述の仮想点Kに割りふられた連番にそれぞれ、回転速度の分母と、仮想点の数との公倍数をとった場合の仮想点Kの数に乗算した値fを乗算した数値を割りふる。
従って、仮想点KをK0、K1、K2、…、Kresm-1とした場合に、仮想点K0に0(600)、仮想点K1に20、仮想点K2に40、…、仮想点Kresm-1に580が割りふられる。
なお、通分する際に、分母となるresmに乗算された値(20)がこの例では、後述するfとなる。また、回転速度の分母と解像度の分母との公倍数は、後述するbとなり、回転速度の通分後の分子は、後述する速度(フレーム更新時間毎の周速度)を示すsとなる。
歯数が6の歯車7は、上述の周期で考えた場合に一周するのに6周期必要となり、1周期に5個の画像データがあるので、歯車7の一周が30個(上述の設定された仮想点Kの総数resm)の画像データで現されることになる。すなわち、歯車7の1回転(一周の回転)が上述の設定された仮想点Kの数である30に分割された状態となり、一周の1/30ずつの画像でアニメーションが行われることになる。上述の分数で示される回転速度で回転するものとした場合に、ピッチ円8の円周上に設定された仮想点Kの数を分母とし、分子を1とする分数と、回転速度となる分数とで、分母を統一して通分する。すなわち、分母の公倍数を求める。ここでは、分母の公倍数は、600となる。
従って、上述の解像度となる数値1/30(resm)は、20/600となる。そして、上述した各仮想点Kには、上述の仮想点Kに割りふられた連番にそれぞれ、回転速度の分母と、仮想点の数との公倍数をとった場合の仮想点Kの数に乗算した値fを乗算した数値を割りふる。
従って、仮想点KをK0、K1、K2、…、Kresm-1とした場合に、仮想点K0に0(600)、仮想点K1に20、仮想点K2に40、…、仮想点Kresm-1に580が割りふられる。
なお、通分する際に、分母となるresmに乗算された値(20)がこの例では、後述するfとなる。また、回転速度の分母と解像度の分母との公倍数は、後述するbとなり、回転速度の通分後の分子は、後述する速度(フレーム更新時間毎の周速度)を示すsとなる。
そして、上記設定された仮想点K0に対応する画像データimage0から1/600の回転速度でアニメーションをする場合には、分子が0から100msec毎に1増えることになる。ここで、100msec後は、回転速度を現す分数の分子が0(600)から1となり、200msec後は、2となるが、これは何れも2番目の仮想点Kに対応する20/600より小さいことから、それぞれ100msec毎のタイミングで画像データimage0が表示される。
そして、2000msec経過すると回転速度の分数の分子は20/600となる。この場合に、回転速度の分数(20/600)は、画像データimage1に対応する20/600以上となるので、1900msecのタイミングまでは、画像データimage0が表示され、2000mgのタイミング以後は、画像データimage1が表示される。
そして、2000msec経過すると回転速度の分数の分子は20/600となる。この場合に、回転速度の分数(20/600)は、画像データimage1に対応する20/600以上となるので、1900msecのタイミングまでは、画像データimage0が表示され、2000mgのタイミング以後は、画像データimage1が表示される。
また、4000msecのタイミングでは、回転速度の分子が40となり、画像データimage2に対応する分子40以上となり、画像データimage2が表示されることになる。また、6000msecのタイミングでは、回転速度の分子が60となり、画像データimage3に対応する分数の分子60以上となり、画像データimage3が表示されることになる。すなわち、以後、2000msec毎に、画像データimage0〜image4が連番の小さい順に切り替えて表示されるとともに、切り替えられるまでの間は、100msec毎に同じ画像データimage0〜image4が表示される。
なお、回転速度の通分された分数は、分子が分母を越えた場合に、分母の値分だけ減算されるようになっているので、上述の場合に60000msec経過した際に600(0)/600となり、60100msec経過した際に1/600となる。また、100msec毎に1フレーム表示する処理が行われるが、実際にはフレームを表示する毎にずれが生じることになり、例えば、前のフレームを表示した後に次ぎのフレームを表示するのに120msecかかったりするような場合がある。従って、1フレーム表示する処理を行うたびに、回転速度の分数の分子をカウントアップするようにすると、携帯電話1に設けられた機能としての時計と、回転体画像表示プログラムで歯車7を組み合わせることにより形成した時計とにずれが生じることになる。従って、回転速度の分数の分子のカウントアップは、フレーム毎の表示タイミングに関係なく、携帯電話1内部の発振器に基づく時計機能の計時に対応して100msec毎に行われる。従って、フレーム毎の表示タイミングが累積的に100msec以上遅れた場合には、例えば、前のフレームの表示タイミングから次ぎのフレームの表示タイミングの間に、回転速度の分子が二度カウントアップされることもある。
また、回転速度の分数を例えば1/13として、歯数が6の歯車7を回転表示させるものとすると、歯数が6の歯車7の上述の設定された仮想点Kの数resmが30となり、回転速度の分母と設定された仮想点Kの数との公倍数が390となる。従って、回転速度の分数は、30/390となり、回転速度の分子は、100msec(1フレーム分の時間)毎に、30ずつ増加することになる。ここで最初に画像データimage0が表示されるものとした場合に、100msec後には、回転速度の分数は、0(390)/390から30/390となる。この場合に、仮想点K0に割り付けられた解像度の分子が0(390)、仮想点K1に割り付けられた分子が13、仮想点K2に割り付けられた分子が26、仮想点K3に割り付けられた分子が39となるので、100msec経過後には、回転速度の分数の分子に最も近い仮想点K2に対応する画像データimage2が表示されることになる。すなわち、早い回転速度を設定した場合には、画像データimage0〜image4が連番に沿って順番に表示されずに、1つ以上の画像データimage0〜image4を飛ばして表示される場合もある。
以上のことから浮動小数点演算や、三角関数等を用いることなく、整数や自然数の加減乗除の演算により回転する歯車の任意の回転速度による回転のアニメーション表示が可能となる。なお、演算に分数を用いているが、計算上は、ほとんど分子を取り扱うだけであり、分母は、例えば、時間経過に伴って増加する分子が分母を越えた場合に、分子を分母で除算して剰余を求める際などに用いられるだけで、演算は、整数の演算となる。
以下に、携帯電話1の計算処理部3における回転画像表示プログラムの実行に基づく処理を説明する。
ここで、回転画像表示プログラムを起動すると、実行モードとなり、歯車の表示が可能な状態となるが、初めて起動した場合には、歯車7及び針9の設定が行われていないので歯車7の表示は行われない。
この状態でメニューにより編集モードを選択可能となっている。使用者の操作により編集モードが選択されると携帯電話1の表示画面には、図5(A)に示す編集モードのメニューが表示される。メニューには、歯車7及び針9を生成(選択)するcreate(生成)メニューと、既に生成された歯車7の位置変更(針9はセットされた歯車7とともに移動)、歯車7及び針9の色変更を行う、すなわち、歯車7、針9の属性変更を行うedit(属性変更)メニューと、噛み合った歯車7同士の接続トポロジとして噛み合った歯車7の中心同士を結ぶ線分を表示するか否かを選択するview(表示メニュー)と、生成された歯車7等のデータのファイルの保存、削除等を行うfile(ファイル)メニューと、実行モードに移行するrun(実行モード)メニューと、プログラムを終了するcancel(終了)メニューとがポップアップメニューとして表示される。なお、メニュー項目の選択は、十字キーの操作により行われ、メニュー項目の決定は、キー入力部4の予め決められた所定のキーを決定キーとし、決定キーの操作により行われる。
ここで、回転画像表示プログラムを起動すると、実行モードとなり、歯車の表示が可能な状態となるが、初めて起動した場合には、歯車7及び針9の設定が行われていないので歯車7の表示は行われない。
この状態でメニューにより編集モードを選択可能となっている。使用者の操作により編集モードが選択されると携帯電話1の表示画面には、図5(A)に示す編集モードのメニューが表示される。メニューには、歯車7及び針9を生成(選択)するcreate(生成)メニューと、既に生成された歯車7の位置変更(針9はセットされた歯車7とともに移動)、歯車7及び針9の色変更を行う、すなわち、歯車7、針9の属性変更を行うedit(属性変更)メニューと、噛み合った歯車7同士の接続トポロジとして噛み合った歯車7の中心同士を結ぶ線分を表示するか否かを選択するview(表示メニュー)と、生成された歯車7等のデータのファイルの保存、削除等を行うfile(ファイル)メニューと、実行モードに移行するrun(実行モード)メニューと、プログラムを終了するcancel(終了)メニューとがポップアップメニューとして表示される。なお、メニュー項目の選択は、十字キーの操作により行われ、メニュー項目の決定は、キー入力部4の予め決められた所定のキーを決定キーとし、決定キーの操作により行われる。
そして、生成メニューでは、図5(B)に示すように、歯車7(gear)か針9(hand)のいずれを生成するかを選択する。歯車7を選択した場合には、図5(C)に示すように、歯車7の選択可能な歯数がメニューとして表示され、歯車7の歯数を選択することで、生成すべき歯車7が決定されるようになっている。ここでは、上述のように6の倍数となる6,12,18,24,30の歯数の歯車7が選択可能となっている。
そして、歯車7の種類(歯数)を選択すると、図5(D)に示すように、選択された歯数の歯車7のアニメーション用の複数の画像データから1つの画像データが選択されて表示画面に表示される。この場合に歯車7の中心の座標位置が決定される。最初に生成された歯車7は、例えば、デフォルトで表示画面の中心となる座標位置が決定される。
なお、図5(E)に示すように、複数の歯車7を続けて生成する操作を行った場合、例えば、ここでは、携帯電話1の使用者が歯数が6の最初の歯車7の生成を行った後に、歯数が18の歯車7の生成を行った場合には、図1(F)に示すように、先に生成された歯車7に噛み合った状態で次ぎの歯車7が生成されるようになっている。
また、生成された歯車7は、他の歯車7と噛み合う以外に、図5(G)に示すように1つの歯車7の同軸上に固着する歯車7を設定することも可能であり、図5(H)に示すように同軸上に固着した二つの前後する歯車7にそれぞれ別の歯車7を噛み合わせることも可能となっている。また、図5(I)に示すように、同軸上に三つ以上の歯車を設定することも可能である。
なお、図5(E)に示すように、複数の歯車7を続けて生成する操作を行った場合、例えば、ここでは、携帯電話1の使用者が歯数が6の最初の歯車7の生成を行った後に、歯数が18の歯車7の生成を行った場合には、図1(F)に示すように、先に生成された歯車7に噛み合った状態で次ぎの歯車7が生成されるようになっている。
また、生成された歯車7は、他の歯車7と噛み合う以外に、図5(G)に示すように1つの歯車7の同軸上に固着する歯車7を設定することも可能であり、図5(H)に示すように同軸上に固着した二つの前後する歯車7にそれぞれ別の歯車7を噛み合わせることも可能となっている。また、図5(I)に示すように、同軸上に三つ以上の歯車を設定することも可能である。
また、図5(J)に示すように、針9(hand)を選択すると、選択可能な針9のサイズ(長さ)がメニューとして表示される。なお、針9の表示は、歯車7に対応して行われるようになっており、針9を生成するには、1つ以上の歯車7が生成されている必要があり、複数の歯車7が生成されている場合には、針9を付ける歯車7を選択するようになっている。すなわち、針9は、1つの歯車7と組み合わされ、組み合わされた歯車7の回転中心を回転中心(基端)として歯車7と同じ回転速度で回転するように表示される。
ここでは、針9のサイズは選択可能な歯車7の歯数の種類と同じ種類だけ設定されており、例えば、歯数の5種類「6,12,18,24,30」に対応して針9のサイズは、SS、S、M、L、LLの5種類となっている。そして、各針9の長さは、対応する歯数の歯車7のピッチ円8の半径の長さもしくは、歯車7の中心から歯の先端までの長さに対応するように設定される。
ここでは、歯数が6の歯車7の半径とほぼ同じ針9の長さがSSとされ、歯数が12の歯車7の半径とほぼ同じ針9の長さがSとされ、歯数が18の歯車7の半径とほぼ同じ針9の長さがMとされ、歯数が24の歯車7の半径とほぼ同じ針9の長さがLとされ、歯数が30の歯車7の半径とほぼ同じ針9の長さがLLとされている。なお、選択される針9の長さと、選択された針9が組み合わされる歯車7の歯数とには制限がなく、例えば、歯数が6の歯車7に、サイズがLLの針9を組み合わせるものとしても良い。
ここでは、針9のサイズは選択可能な歯車7の歯数の種類と同じ種類だけ設定されており、例えば、歯数の5種類「6,12,18,24,30」に対応して針9のサイズは、SS、S、M、L、LLの5種類となっている。そして、各針9の長さは、対応する歯数の歯車7のピッチ円8の半径の長さもしくは、歯車7の中心から歯の先端までの長さに対応するように設定される。
ここでは、歯数が6の歯車7の半径とほぼ同じ針9の長さがSSとされ、歯数が12の歯車7の半径とほぼ同じ針9の長さがSとされ、歯数が18の歯車7の半径とほぼ同じ針9の長さがMとされ、歯数が24の歯車7の半径とほぼ同じ針9の長さがLとされ、歯数が30の歯車7の半径とほぼ同じ針9の長さがLLとされている。なお、選択される針9の長さと、選択された針9が組み合わされる歯車7の歯数とには制限がなく、例えば、歯数が6の歯車7に、サイズがLLの針9を組み合わせるものとしても良い。
そして、生成された歯車7、針9は、その属性を属性変更メニューで変更可能となっている。
歯車7の属性には、位置(表示される歯車7の中心位置のxy座標)、色、表示される歯車7の前後配置、回転速度等がある。
なお、歯車7の生成時に、位置は、最初に生成される歯車7が画面の中心、それ以降が先に生成された歯車7と噛み合う位置となり、色はデフォルトの色とされ、回転速度は例えば0とされる。また、歯車7、針9の生成時には、生成順に後から生成された歯車7、針9が先に生成された歯車7、針9より前となる。なお、歯車7、針9の前後関係は、表示上の問題で、少なくとも一部が重なった状態で複数の歯車7、針9が表示される場合に、どちらの歯車7、針9が隠されるように表示されるかを決めるものである。そして、歯車7同士を噛み合わせる際には、歯車7の前後関係は無視され、平面上の距離に基づいて歯車7が噛み合うか否かが判定される。
歯車7の属性には、位置(表示される歯車7の中心位置のxy座標)、色、表示される歯車7の前後配置、回転速度等がある。
なお、歯車7の生成時に、位置は、最初に生成される歯車7が画面の中心、それ以降が先に生成された歯車7と噛み合う位置となり、色はデフォルトの色とされ、回転速度は例えば0とされる。また、歯車7、針9の生成時には、生成順に後から生成された歯車7、針9が先に生成された歯車7、針9より前となる。なお、歯車7、針9の前後関係は、表示上の問題で、少なくとも一部が重なった状態で複数の歯車7、針9が表示される場合に、どちらの歯車7、針9が隠されるように表示されるかを決めるものである。そして、歯車7同士を噛み合わせる際には、歯車7の前後関係は無視され、平面上の距離に基づいて歯車7が噛み合うか否かが判定される。
また、他の歯車7と噛み合って従動する従車の回転速度は、原動歯車となる原車の回転速度と歯数の比とに基づいて決定されるが、使用者による回転速度の設定上は、従車の回転速度は0とされる。
従って、回転速度が0以外に設定された歯車7が原車となる。なお、複数の噛み合った歯車7からなる歯車列では、1つの歯車7だけを原車とすることが可能となっている。なお、1つの画面中に異なる歯車列を配置することが可能であり、歯車列が異なれば、それぞれの歯車列に原車を設定可能となっている。また、他の歯車7と噛み合っていない自由歯車7も回転速度を0以外として原車にすることができる。
従って、回転速度が0以外に設定された歯車7が原車となる。なお、複数の噛み合った歯車7からなる歯車列では、1つの歯車7だけを原車とすることが可能となっている。なお、1つの画面中に異なる歯車列を配置することが可能であり、歯車列が異なれば、それぞれの歯車列に原車を設定可能となっている。また、他の歯車7と噛み合っていない自由歯車7も回転速度を0以外として原車にすることができる。
また、針9には、属性のデータとして色と、種類と、角度等とがある。また、針7の種類は、時計の針の種類に対応したものであり時針9a、分針9b、秒針9cの3種類があり、針の形状としての幅(太さ)が時針9a>分針9b>秒針9cとなっている。
歯車7、針9の属性ではないが、この属性変更メニューで背景色の変更も可能となっている。
そして、図5(N)に示すように、例えば、既に、歯車7が生成された状態で、属性変更(edit)メニューを選択すると、メニュー項目として、位置変更(move)、前後配置変更(back/front)、色変更(Collar)、回転速度(speed)、針の角度(angle)、歯車・針の削除(remove)、背景色変更(background)が表示される。
歯車7の位置変更では、使用者の十字キーの操作に基づき位置変更する歯車7を選択する処理を行い、次いで、2番目移行に生成された歯車7では、歯車生成時には、他の歯車7と噛み合った状態(接続された状態)となっているので、選択された歯車7の接続を解除する処理を行う。そして、使用者の十字キー操作により、歯車7を移動させて位置を変更する処理を行う。また、歯車7を移動させていく過程で、移動する歯車の中心と他の歯車の中心との距離を計測し、距離が移動する歯車7のピッチ円8半径と、他の歯車7のピッチ円8半径との和もしくはこの和に誤差範囲となる値を増減した数値の範囲内となった場合、すなわち、所定の距離となった場合に、移動する歯車7と他の歯車7を接続可能とし、この状態で十字キーの操作による歯車7の移動を停止して、例えば、決定キーを操作すると、位置が変更された歯車7と他の歯車7とが接続状態となる。なお、1つの歯車列に二つ以上の原車が配置されるような場合など所定の条件下では、移動する歯車7の中心と他の歯車7の中心との距離が所定の距離となっても接続状態とはならない。
歯車7、針9の属性ではないが、この属性変更メニューで背景色の変更も可能となっている。
そして、図5(N)に示すように、例えば、既に、歯車7が生成された状態で、属性変更(edit)メニューを選択すると、メニュー項目として、位置変更(move)、前後配置変更(back/front)、色変更(Collar)、回転速度(speed)、針の角度(angle)、歯車・針の削除(remove)、背景色変更(background)が表示される。
歯車7の位置変更では、使用者の十字キーの操作に基づき位置変更する歯車7を選択する処理を行い、次いで、2番目移行に生成された歯車7では、歯車生成時には、他の歯車7と噛み合った状態(接続された状態)となっているので、選択された歯車7の接続を解除する処理を行う。そして、使用者の十字キー操作により、歯車7を移動させて位置を変更する処理を行う。また、歯車7を移動させていく過程で、移動する歯車の中心と他の歯車の中心との距離を計測し、距離が移動する歯車7のピッチ円8半径と、他の歯車7のピッチ円8半径との和もしくはこの和に誤差範囲となる値を増減した数値の範囲内となった場合、すなわち、所定の距離となった場合に、移動する歯車7と他の歯車7を接続可能とし、この状態で十字キーの操作による歯車7の移動を停止して、例えば、決定キーを操作すると、位置が変更された歯車7と他の歯車7とが接続状態となる。なお、1つの歯車列に二つ以上の原車が配置されるような場合など所定の条件下では、移動する歯車7の中心と他の歯車7の中心との距離が所定の距離となっても接続状態とはならない。
また、1つの歯車7が複数の歯車7に噛み合うことも可能であり、移動させた歯車7の中心と複数の歯車7の中心との距離がそれぞれの歯車7のピッチ円8半径の和もしくはその近似値(誤差範囲内)となれば、位置的に1つの歯車7に複数の歯車7が接続可能となる。なお、この際には、接続トポロジ的に接続可能か否かが判定される。すなわち、例えば、接続トポロジ的に、それぞれ原車を有する二つの歯車列が接続されてしまうような接続や、1つの歯車列に二つの原車が配置されてしまうような接続や、1つの歯車列に属する二つ以上の歯車7同士の歯車の接続で、かつ、それぞれの歯車が同じ歯車列の他の歯車を介すか直接かのいずれかで原車に接続されているような場合の接続等を行うことができない。従って、1つの歯車が二カ所から回転駆動されるような接続はできない。また、歯車列が環状に繋がるような接続はできない。
そして、移動した歯車7を他の歯車7に接続した場合に、移動した歯車7が原車ではなく、接続された他の歯車7が原車の場合もしくは接続された他の歯車7が属する歯車列に原車が含まれる場合には、原車の回転速度と、原車と移動した歯車7とそれらの間にある歯車7との変速比に基づいて、移動した歯車7の回転速度が決定される。また、歯車7と歯車7を噛み合わせた場合には、後述するようにして、歯車7同士が噛み合った状態となるように移動した方の歯車7の角度が設定される。
なお、針9が組み合わされた歯車7の位置変更を行うと、組み合わされた針9も歯車7ととともに移動する。
なお、針9が組み合わされた歯車7の位置変更を行うと、組み合わされた針9も歯車7ととともに移動する。
歯車7、針9の前後配置変更の処理では、図6のフローチャートに示すように、歯車7、針9を選択し、選択された歯車7、針9の前後配置を使用者の操作に基づいて、1つ前面へ配置する(ステップS1)か、1つ背面へ配置する(ステップS2)処理を行う。なお、三つ以上の歯車がある場合には、例えば、最も背面に配置された歯車7を選択した後に、前面に配置の操作を二度行うと、選択された歯車7が最も前に配置される。なお、各歯車7、針9には、例えば、生成順に、前後関係を示す連番Ziが付されており、Ziが0の場合に、最も背後の歯車となり、Ziが最も大きい歯車が1番前となる。従って、各歯車7、針9に設定されたZiを変更することで、前後配置を変更することができ、例えば、前後の歯車7、針9のZiの値を入れ替えることで、1つ背面もしくは1つ前面への前後配置の変更を行う。そして、繰り返し各変更操作が可能であるが、決定キーが操作された場合に配置を決定し(ステップS3)、処理を終了する。
なお、歯車7、針9の描画においては、Ziが小さい歯車7、針9から描画されることになり、歯車7や針9が重なった部分がある場合に、先に描画されたZiの小さい方の歯車7、針9が後から描画されるZiの大きい歯車7、針9により書き換えられる(塗りつぶされる)。これにより、Ziが大きい方の歯車7、針9が、Ziが小さい方の歯車7、針9を隠すように描画されることになる。
歯車7、針9の色変更では、歯車7の色の変更と、針9の色と種類(形状)の変更が可能となっている。使用者の操作により歯車7もしくは針9が選択される。
そして、メニュー項目として、図5(N)も示すように色変更(collar)を選択すると、図5(O)に示すように色変更ウインドウが開き、色変更ウインドウ内で、歯車7の場合に、歯車7の縁(輪郭線)、歯車7の縁内(body)、歯車7の縁外を選択できる。また、歯車7の縁内を選択した場合は、透明(transparent)の選択支が表示され、透明を選択可能となる。そして、図7のフローチャートに示すように、使用者の選択操作に対応して縁の中の色の編集(ステップS4)、縁の色の編集(ステップS5)、縁の外の色の編集(ステップS6)、縁の中を透明にする処理(ステップS7)が行われる。そして、透明にする処理を除いて、各編集処理においては、使用者がRGB値の変更の操作を行うとそれに対応してRGB値が変更される(ステップS8,9,10)。そして、繰り返し各変更操作が可能であるが、決定キーが操作されると、歯車7の色が決定して処理が終了する(ステップS11)。なお、歯車7の縁の中を透明にする処理では、歯車7を描画する際に、縁の中を描画しないようにする。
そして、メニュー項目として、図5(N)も示すように色変更(collar)を選択すると、図5(O)に示すように色変更ウインドウが開き、色変更ウインドウ内で、歯車7の場合に、歯車7の縁(輪郭線)、歯車7の縁内(body)、歯車7の縁外を選択できる。また、歯車7の縁内を選択した場合は、透明(transparent)の選択支が表示され、透明を選択可能となる。そして、図7のフローチャートに示すように、使用者の選択操作に対応して縁の中の色の編集(ステップS4)、縁の色の編集(ステップS5)、縁の外の色の編集(ステップS6)、縁の中を透明にする処理(ステップS7)が行われる。そして、透明にする処理を除いて、各編集処理においては、使用者がRGB値の変更の操作を行うとそれに対応してRGB値が変更される(ステップS8,9,10)。そして、繰り返し各変更操作が可能であるが、決定キーが操作されると、歯車7の色が決定して処理が終了する(ステップS11)。なお、歯車7の縁の中を透明にする処理では、歯車7を描画する際に、縁の中を描画しないようにする。
上述のように、歯車7の輪郭線(縁)にはインデックス画像のパレット部のインデックス0の色が割りふられ、歯車7の輪郭線内部にはパレット部のインデックス1の色が割りふられ、歯車7の輪郭線外部にはパレット部のインデックス2の色が割りふられている。
そして、色の変更処理では、色の変更の対象となる歯車7に対応し、記憶領域6に記憶されているインデックス画像62を記憶領域6の別の領域にコピーするように書き出し、このインデックス画像を展開せずにバイナリーデータの状態で、パレット部(配色表)において、輪郭線の場合にインデックス0、輪郭線内部の場合にインデックス1、輪郭線外部の場合にインデックス2のRGB値を直接書き換えることで行われる。書き換えるRGB値は、図5(N)に示すように、色変更ウインドウ上でRGB値を変更することで入力された値が用いられる。
そして、色の変更処理では、色の変更の対象となる歯車7に対応し、記憶領域6に記憶されているインデックス画像62を記憶領域6の別の領域にコピーするように書き出し、このインデックス画像を展開せずにバイナリーデータの状態で、パレット部(配色表)において、輪郭線の場合にインデックス0、輪郭線内部の場合にインデックス1、輪郭線外部の場合にインデックス2のRGB値を直接書き換えることで行われる。書き換えるRGB値は、図5(N)に示すように、色変更ウインドウ上でRGB値を変更することで入力された値が用いられる。
このように歯車の色変更を行うことで、予め、複数の色の画像データを記憶しておくようにした場合と比較して、画像データ用の記憶容量を極めて少なくできるとともに、多くの色が使用可能となり、かつ、インデックス画像を展開して画像の色の変更を行うようなアプリケーションを必要とせず、プログラムの記憶容量も極めて少なくすることができる。なお、インデックス画像においても、通常、圧縮が行われているが圧縮はイメージデータの部分すなわち、ピクセルデータ部622が圧縮されており、パレット部621は圧縮されておらず、展開されていないバイナリーデータの状態のインデックス画像でも、容易に変更可能である。
なお、最初にインデックス画像62は、歯車7の歯数の種類毎に上述の各歯車7で同数のアニメーション用画像データとして記憶されているが、色の変更により色違いの画像データが各歯車で同数のアニメーション用画像データとして書き出されることになる。そして、新たに画像データを記憶領域6に書き出すことで、記憶容量が増えることになるが、複数の同じ歯数の歯車7を同時に表示する場合に、色違いの歯車7を表示することが可能となる。
そして、歯車7の色変更を行うことにより、図5(P)に示すように歯車7の色が変更されるとともに、上述のように色違いの同じ歯数の歯車7を表示することも可能となる。
以上のことから、色の変更処理を行う計算処理部3は、回転画像表示プログラムにより実現される機能として、前記記憶手段(記憶領域6)に記憶されたインデックス画像62の配色表上の色のデータを書き換えることにより、回転体(歯車7)の画像の色を変更する色変更手段となる。
なお、最初にインデックス画像62は、歯車7の歯数の種類毎に上述の各歯車7で同数のアニメーション用画像データとして記憶されているが、色の変更により色違いの画像データが各歯車で同数のアニメーション用画像データとして書き出されることになる。そして、新たに画像データを記憶領域6に書き出すことで、記憶容量が増えることになるが、複数の同じ歯数の歯車7を同時に表示する場合に、色違いの歯車7を表示することが可能となる。
そして、歯車7の色変更を行うことにより、図5(P)に示すように歯車7の色が変更されるとともに、上述のように色違いの同じ歯数の歯車7を表示することも可能となる。
以上のことから、色の変更処理を行う計算処理部3は、回転画像表示プログラムにより実現される機能として、前記記憶手段(記憶領域6)に記憶されたインデックス画像62の配色表上の色のデータを書き換えることにより、回転体(歯車7)の画像の色を変更する色変更手段となる。
また、針9を選択した場合に、図8のフローチャートに示すように、使用者は、変更する項目として針9の色、針9の形状とを選択できる。
針9の色を選択して変更する場合には、歯車7の場合と同様にRGB値を変更する(ステップS12)ことになるが、針9は、画像データとして記憶領域6に記憶されておらず、針9をアニメーション表示する際には、組み合わされた歯車7の回転速度に対応して角度を変更してフレーム毎に毎回描画(描画する毎に角度を変更するとは限らない)することになる。この際に、変更されたRGB値を用いることにより、針9の色が変更され、色違いの針9を表示可能となる。また、描画に際しては、針9の形状の種類に応じて線幅、長さの異なる線として描画される。従って、針9の色変更では、記憶領域6の画像データにおける色の更新は行われない。
針9の色を選択して変更する場合には、歯車7の場合と同様にRGB値を変更する(ステップS12)ことになるが、針9は、画像データとして記憶領域6に記憶されておらず、針9をアニメーション表示する際には、組み合わされた歯車7の回転速度に対応して角度を変更してフレーム毎に毎回描画(描画する毎に角度を変更するとは限らない)することになる。この際に、変更されたRGB値を用いることにより、針9の色が変更され、色違いの針9を表示可能となる。また、描画に際しては、針9の形状の種類に応じて線幅、長さの異なる線として描画される。従って、針9の色変更では、記憶領域6の画像データにおける色の更新は行われない。
また、針9の形状の変更を選択して、複数の針の種類、すなわち、時針、分針、秒針から1つの針の種類を使用者が決定することにより、針9として太線、標準線、細線のいずれかが選択されることになる(ステップS13)。なお、太線が時針に対応し、標準線が分針に対応し、細線が秒針に対応する。また、針9の形状の選択で、上述の針9の長さのサイズも選択できるものとしても良い。そして、繰り返し各変更操作が可能であるが、使用者が決定キーを操作すると、針9の色と形状が決定されて、処理が終了する(ステップS14)。
歯車の回転速度の変更では、図9のフローチャートに示すように、まず、選択された歯車の回転方向を時計回りと反時計回りとのいずれかで使用者の操作に基づいて選択する(ステップS15)。次ぎに回転速度の入力は上述のように分数で行なわれるようになっており、使用者の操作に基づき、速度の分母が入力された値に変更され(ステップS16)、速度の分子が入力された値に変更される(ステップS17)。
そして、上述のように選択された歯車7の仮想点Kの数resmと分母の公倍数を求め、分母を公倍数とする(ステップS18)。また、分子に、分母を公倍数とした場合に乗算された値を乗算し、resmを分母とする分数と通分した状態とする(ステップS19)。
そして、繰り返し変更操作が可能であるが、決定キーの操作により、回転速度を決定して処理を終了する(ステップS20)。
そして、上述のように選択された歯車7の仮想点Kの数resmと分母の公倍数を求め、分母を公倍数とする(ステップS18)。また、分子に、分母を公倍数とした場合に乗算された値を乗算し、resmを分母とする分数と通分した状態とする(ステップS19)。
そして、繰り返し変更操作が可能であるが、決定キーの操作により、回転速度を決定して処理を終了する(ステップS20)。
なお、基本的に1フレームの描画に対応する時間毎に設定された値(上述のように通分された分子の値)ずつ分子を増加していく。そして、増加した分子の値が分母の値を越えた際に、歯車が一周を回ったものとし、設定された分子の値を分母の値で除算して剰余を現在の分子の値とする。すなわち、歯車7が一周するのに要する時間は、分母を分子で除算した値に1フレームの描画に対応する時間を乗算したものとなる。なお、1フレームに対応する時間が、実際に前のフレームが描画されてから次ぎのフレームが描画される時間ではなく、予め設定された1フレームの描画時間としての一定の時間が用いられる。
そして、回転速度の分母の値としては、1以上の正の整数が使用可能であり、分子の値としては、0以上の自然数が使用可能となっており、ここで、分子の値を0とすると、回転速度0となり、上述のように従車となる。一方、分子の値を0以上とすると上述のように原車となるが、順次歯車が接続された1つの歯車列では、上述のように1つの歯車だけ原車とすることが可能であり、同じ歯車列の原車以外の従車は、全て、回転速度を示す分数の分子が0とされる。なお、従車も原車の回転に対応して回転するものであり、回転速度が生じるので、設定値としての分子は0であるが、後述するように原車を有する歯車列に接続された従車の回転速度が求められ、この際に回転速度の分子と分母が決定される。
そして、回転速度の分母の値としては、1以上の正の整数が使用可能であり、分子の値としては、0以上の自然数が使用可能となっており、ここで、分子の値を0とすると、回転速度0となり、上述のように従車となる。一方、分子の値を0以上とすると上述のように原車となるが、順次歯車が接続された1つの歯車列では、上述のように1つの歯車だけ原車とすることが可能であり、同じ歯車列の原車以外の従車は、全て、回転速度を示す分数の分子が0とされる。なお、従車も原車の回転に対応して回転するものであり、回転速度が生じるので、設定値としての分子は0であるが、後述するように原車を有する歯車列に接続された従車の回転速度が求められ、この際に回転速度の分子と分母が決定される。
針9の角度は、例えば、一周360度として度数で設定する。そこで、図10のフローチャートに示すように、例えば、使用者の操作に基づいて針9の角度を変更する(ステップS21)。
実際に針9を回転する場合には、針9は、その長さのサイズに対応する半径を有する歯車7と同様に回転することになり、対応する歯車の歯数に画像データ数を乗算した値である仮想点Kの総数resmで360度を割った分割度数毎に回転するように表示される。従って、針9の角度は、1/resm等のように分数に変換される。例えば、歯数が30の歯車7と同じLLサイズの針9の場合には、歯数が30の歯車7の上述の分割角度である2.4度毎回転するものとされる。すなわち、1/150ずつ回転する。そして、針9は、歯車7と同様に回転速度を分数として表されることになる。従って、針9の角度を、分数とし、その分子を自然数(0を含む)とし分母を正の整数としてそれぞれ変更する(ステップS22)。
実際に針9を回転する場合には、針9は、その長さのサイズに対応する半径を有する歯車7と同様に回転することになり、対応する歯車の歯数に画像データ数を乗算した値である仮想点Kの総数resmで360度を割った分割度数毎に回転するように表示される。従って、針9の角度は、1/resm等のように分数に変換される。例えば、歯数が30の歯車7と同じLLサイズの針9の場合には、歯数が30の歯車7の上述の分割角度である2.4度毎回転するものとされる。すなわち、1/150ずつ回転する。そして、針9は、歯車7と同様に回転速度を分数として表されることになる。従って、針9の角度を、分数とし、その分子を自然数(0を含む)とし分母を正の整数としてそれぞれ変更する(ステップS22)。
なお、針9は、取り付けられた歯車7と一体に回転するようになっており、回転する歯車7に同軸上で固着される歯車7と同様に回転することになる。この際に、針9の長さに対応した半径radmの歯車7の歯数と、針9と一体に回転する歯車7の歯数が異なる場合に、これら歯車7の仮想点Kの総数resmが異なることから、アニメーションとしての解像度(resmや前記分割角度)が異なることになる。例えば、歯数が6の歯車7に歯数が30の歯車7の半径radに対応する針9が付けられた場合に、歯数が6の歯車が1つの画像データ分移動する間に、針9は、5画像データ分移動することになる。しかし、最終的に歯車7とそれに取り付けられた状態に回転する針9との一周に要するフレーム数(時間)は同じとなる。
また、針9の角度の変更では、携帯電話1の時計機能に基づいて現在の時刻を求め、現在の時刻に基づいた角度に、時針9a、分針9b、秒針9cのそれぞれを設定するメニュー項目も用意されている。
すなわち、使用者の操作に基づいて、携帯電話1の時計機能から、現在の時刻を読み取り、読み取られた時間、分、秒に対応して、時針9a、分針9b、秒針9cをそれぞれ、現在の時間の角度、現在の分の角度、現在の秒の角度に設定する処理が行われる(ステップS23,24,25)。そして、繰り返し各変更操作を行うことが可能であるが、決定キーを操作することにより、針9の角度を決定して、処理を終了する(ステップS26)。
すなわち、使用者の操作に基づいて、携帯電話1の時計機能から、現在の時刻を読み取り、読み取られた時間、分、秒に対応して、時針9a、分針9b、秒針9cをそれぞれ、現在の時間の角度、現在の分の角度、現在の秒の角度に設定する処理が行われる(ステップS23,24,25)。そして、繰り返し各変更操作を行うことが可能であるが、決定キーを操作することにより、針9の角度を決定して、処理を終了する(ステップS26)。
なお、針9a、分針9b、秒針9cを用いて時計の表示を可能とした場合に、編集モード時に歯車7の回転を止めた状態(編集モード開始時で針9の回転を止めた状態)で編集を行い、実行モードに戻って針9の回転を再開して針9を描画する際に、現状の時刻まで針9を進めて描画することになる。しかし、編集モードを開始してから、実際に時計を見て、針9の角度を変更するまでに長い時間かかってしまうと、編集モードを開始した時刻と、針9を合わせた際の時計の時刻とに大きな差ができてしまい、実行モード開始時に編集開始時の針9の角度に対して、現在の時刻に基づいて針9の角度を進めても、変更された際の針9の角度が編集開始時の時刻と合っておらず、正確に時間を合わせられない。そこで、上述のように短時間で、時針9a、分針9b、秒針9cの角度合わせを可能とすることで、針9の角度の正確な時刻合わせが可能となる。
背景色の決定では、図11のフローチャートに示すように、背景色用の色変更ウインドウが表示され、使用者の操作に基づくRGB値に変更する処理が行われる(ステップS27)。なお、変更前は、デフォルトの背景色の設定となっている。また、背景色は、各フレームの描画において最初に行われる。
表示メニューを選択した場合は、互いに噛み合う歯車7の中心同士を結んだ線分である接続トポロジの表示/非表示の選択メニューを表示し、使用者の操作に基づいて、表示/非表示が選択され、表示の場合には、実行モードの際に、接続トポロジを表示する処理を行う。なお、歯車7の表示では、隣接する歯車7同士が噛み合う配置となっていても、噛み合っていない場合もあり、接続トポロジが表示されていない状態では、直ぐには歯車7の噛み合い状態を判断できない場合もある。
表示メニューを選択した場合は、互いに噛み合う歯車7の中心同士を結んだ線分である接続トポロジの表示/非表示の選択メニューを表示し、使用者の操作に基づいて、表示/非表示が選択され、表示の場合には、実行モードの際に、接続トポロジを表示する処理を行う。なお、歯車7の表示では、隣接する歯車7同士が噛み合う配置となっていても、噛み合っていない場合もあり、接続トポロジが表示されていない状態では、直ぐには歯車7の噛み合い状態を判断できない場合もある。
ファイルメニューを選択した場合には、メニュー項目として、新規ファイル作成、ローカルファイルオープン、ファイルの上書き保存、ファイルの削除、ファイルの新規保存、ファイルのアップロード、ファイルのダウンロードがある。なお、ここでファイルとは、生成された歯車や針の属性データや歯車と歯車の接続及び歯車と針の接続のデータや、背景色のデータ等のデータであり、歯車7の色変更を行った場合に、変更されたRGB値等が画像データとは別に記憶可能となっていれば、必ずしも、歯車7の画像データを含んでいなくとも良い。そして、このようなファイルは、記憶領域6に歯車・針の位置・組合せデータ64として記憶可能となっている。なお、ファイルには、ファイルを特定するID(ファイル名)がそれぞれ付けられるようになっている。なお、歯車7と針9のセットのファイルには、歯車7が必須となるが針9は無くても良い。
新規ファイル作成では、現在、オープンして編集モードとなっているファイル、すなわち、生成された歯車7と針9のセットを廃棄もしくは記憶領域6に上書き保存して、新たな歯車7と針9のセット(ファイル)のIDを設定し、新たなファイルで、歯車7、針9の生成を可能とする。
ローカルファイルオープンでは、記憶領域6に記憶されているローカルファイルのIDを使用者に選択させ、選択したIDに対応するファイルに記述された歯車7と針9のセットのデータを実行メモリ32に読み込む。また、現在、実行されるファイルのIDとして、選択されたファイルのIDを設定する。次いで、実行モードに移行し、設定されたIDのファイルのデータに基づいて歯車7、針9をアニメーション表示する。また、ここでローカルとは、携帯電話1もしくはその記憶領域6を示している。なお、ローカルに対してグローバルとは、ネット上のサーバ等のインターネットストレージを指すことになる。
ローカルファイルオープンでは、記憶領域6に記憶されているローカルファイルのIDを使用者に選択させ、選択したIDに対応するファイルに記述された歯車7と針9のセットのデータを実行メモリ32に読み込む。また、現在、実行されるファイルのIDとして、選択されたファイルのIDを設定する。次いで、実行モードに移行し、設定されたIDのファイルのデータに基づいて歯車7、針9をアニメーション表示する。また、ここでローカルとは、携帯電話1もしくはその記憶領域6を示している。なお、ローカルに対してグローバルとは、ネット上のサーバ等のインターネットストレージを指すことになる。
ファイルの上書き保存では、現在、実行可能となっているファイルのIDでファイルを記憶領域6に記憶する。この際には、既に同じIDで記憶されているファイルがある場合には、先に記憶されている同じIDのファイルを消去(更新)して、現在、実行可能となっているファイルを記憶する。
ファイルの新規保存では、使用者の操作により新規のIDを設定させ、新規のIDで記憶領域6にファイルを記憶するとともに、現在実行可能なファイルのIDを新規の前記IDに更新する。
ファイルの削除は、ローカルとなる記憶領域6に記憶されているローカルファイルのIDを使用者に選択させ、選択されたIDを有するローカルファイルを記憶領域6から削除する。
ファイルの新規保存では、使用者の操作により新規のIDを設定させ、新規のIDで記憶領域6にファイルを記憶するとともに、現在実行可能なファイルのIDを新規の前記IDに更新する。
ファイルの削除は、ローカルとなる記憶領域6に記憶されているローカルファイルのIDを使用者に選択させ、選択されたIDを有するローカルファイルを記憶領域6から削除する。
ファイルのダウンロードでは、インターネットストレージに記憶されたファイルをダウンロードすることになる。携帯電話1がインターネットに接続されインターネットストレージとなるサーバにアクセスした状態で、ファイルのネットワーク上のIDであるネットワークIDを使用者に指定(選択)させる。指定したファイルに記述されている歯車7及び針9のセットのファイルを携帯電話1に読み込む。そして、インターネットを介して読み込まれた現在のファイルに新規のIDを設定し、ダウンロードされてID(ローカルID)が設定されたファイルを設定されたIDで記憶領域6に記憶する。
ファイルのアップロードでは、ダウンロードの場合と同じ状況で、現在、実行可能となっているファイルにネットワークIDを設定し、設定したIDでファイルをネットワークストレージに送信して、ネットワークストレージに記憶させる。
ファイルのアップロードでは、ダウンロードの場合と同じ状況で、現在、実行可能となっているファイルにネットワークIDを設定し、設定したIDでファイルをネットワークストレージに送信して、ネットワークストレージに記憶させる。
なお、携帯電話1では、記憶容量が限られるために、多くのデータのファイルを記憶できないとともに、多くのアプリケーションのファイルを同時に記憶しておくことができない。従って、他のアプリケーションを実行可能とするために、回転体画像表示プログラムを記憶領域1から消去する場合がある。このような場合に、生成した歯車7と針9のファイルを消去されないように保存するためには、インターネットストレージを使用する必要がある。また、専用のインターネットストレージに、予め、サンプル等として作成されたファイルが記憶されていれば、これをダウンロードすることにより、歯車7の生成等の操作を行わずに、例えば、歯車7・針9の表示を行うことが可能となる。
次ぎに、実行モードにおける回転体画像表示プログラムの処理を説明する。
メイン処理は、図12の実行モードのメインフローに示すように、歯車7・針9のセット(針9は無くとも良い)の更新(ステップS30)、更新された歯車7・針9のセットの描画(ステップ31)とからなる。
歯車7・針9のセットの更新は、生成された歯車7及び生成された歯車7に組み合わされた針9の経過時間に基づく回転角度を求め、歯車7においては、上述のアニメーション用の複数の画像データが対応する位相を求める。すなわち、求められた回転角度に最も近い回転角度の画像データに対応する位相を求める。
そして、歯車7・針9のセットの描画においては、位相に対応する歯車7の画像データが選択されて描画され、針9は、歯車7の回転角度に対応する回転角度で描画される。
そして、所定タイミング、例えば、単位時間当りのフレーム数が10/secの場合に、約100msec毎に上述の処理を繰り返し行うことで、歯車7と針9の描画が行われる。
歯車7、針9のセットの更新は、より具体的には、図13のフローチャートに示すように、まず、更新開始時刻を携帯電話1の時計機能に基づいて取得し、tnow(msec単位)として記憶する(ステップS32)。
メイン処理は、図12の実行モードのメインフローに示すように、歯車7・針9のセット(針9は無くとも良い)の更新(ステップS30)、更新された歯車7・針9のセットの描画(ステップ31)とからなる。
歯車7・針9のセットの更新は、生成された歯車7及び生成された歯車7に組み合わされた針9の経過時間に基づく回転角度を求め、歯車7においては、上述のアニメーション用の複数の画像データが対応する位相を求める。すなわち、求められた回転角度に最も近い回転角度の画像データに対応する位相を求める。
そして、歯車7・針9のセットの描画においては、位相に対応する歯車7の画像データが選択されて描画され、針9は、歯車7の回転角度に対応する回転角度で描画される。
そして、所定タイミング、例えば、単位時間当りのフレーム数が10/secの場合に、約100msec毎に上述の処理を繰り返し行うことで、歯車7と針9の描画が行われる。
歯車7、針9のセットの更新は、より具体的には、図13のフローチャートに示すように、まず、更新開始時刻を携帯電話1の時計機能に基づいて取得し、tnow(msec単位)として記憶する(ステップS32)。
次ぎに、歯車7・針9のセットの集合Gの要素である生成された歯車giから、上述の前後関係を示すZiの小さい順に歯車gi、針hiを選択して以下の処理を実行する(ステップS33)。なお、集合Gには、生成された歯車(7)gi(g0、g1、…)が含まれるとともに、歯車giにセットされる針9がある場合に生成された針(9)hi(h0、h1、…)が含まれるが、針hiは、その長さの半径を有する歯車giとして、以下の処理が実行される。なお、実行モードにおいて、i=0、1,2,…は、生成された各歯車7及び針9を示すもので、以下、ai、si、Zi、bi、pi、rsi等においても、生成された歯車7及び針9に対応する。
なお、集合Gの要素の全てとなる歯車gi及び針hiに対して以下の処理が終了した場合には、更新処理を終了する(ステップS34)。
そして、上述の現在時刻tnowにおける各歯車gi(針hiの長さに対応する半径の歯車7を含む)の角度aiは、ステップS35に示される式に基づいて求められる。ここで、上述のように歯車7の歯数ciと、歯車giが所定角度(1周期)分回転する1周期分のアニメーション用の画像データ数、すなわち、上述の位相数phaseの値とを乗算した値を歯車giのピッチ円8上に等間隔で設定された仮想点Kの総数を示す上述の解像度rsi(resm)とする。
また、phaseの値となる数だけ記憶された各画像データに対応する位相がpi(0,1,2,…、phase−1)とされる。
そして、上述の現在時刻tnowにおける各歯車gi(針hiの長さに対応する半径の歯車7を含む)の角度aiは、ステップS35に示される式に基づいて求められる。ここで、上述のように歯車7の歯数ciと、歯車giが所定角度(1周期)分回転する1周期分のアニメーション用の画像データ数、すなわち、上述の位相数phaseの値とを乗算した値を歯車giのピッチ円8上に等間隔で設定された仮想点Kの総数を示す上述の解像度rsi(resm)とする。
また、phaseの値となる数だけ記憶された各画像データに対応する位相がpi(0,1,2,…、phase−1)とされる。
また、回転速度は、上述のように分子と分母とを入力することにより得られる。
すなわち、入力された回転速度の分母が600で、分子が1の場合に、1回の描画更新時間tf毎に、1/600ずつ回転することになる。
歯数が6でphaseが5の場合に、解像度rsiが30となる。従って、各位相(画像データ)毎の回転角度は、1/30となる。ここで、各位相毎の回転角度を現す分数と、入力された回転速度の分数とを通分すると、各位相毎の回転角度は、20/600と表される。通分した際の分母は、分母biとされる。なお、分母biは、rsi(例えば、30)に通分に用いられた正の整数fi(例えば、20)を乗算したものとなる。
すなわち、入力された回転速度の分母が600で、分子が1の場合に、1回の描画更新時間tf毎に、1/600ずつ回転することになる。
歯数が6でphaseが5の場合に、解像度rsiが30となる。従って、各位相(画像データ)毎の回転角度は、1/30となる。ここで、各位相毎の回転角度を現す分数と、入力された回転速度の分数とを通分すると、各位相毎の回転角度は、20/600と表される。通分した際の分母は、分母biとされる。なお、分母biは、rsi(例えば、30)に通分に用いられた正の整数fi(例えば、20)を乗算したものとなる。
また、入力された回転速度の分数の通分された分母biに対する分子を1回の描画更新時間毎の回転角度の分数(分母はbi)増加量としての速度Siとすると、ここで速度Siは1となる。
そして、ステップS35の式では、更新開始時刻tnowから基準時刻tst iを除算することにより、経過時間が求められ、経過時間を描画更新時間tfで除算することにより、基準時刻tst iからの描画回数(表示フレーム数)が求められることになる。なお、描画更新時間tfは、実際の描画更新にかかった時間ではなく設定時間である。
そして、ステップS35の式では、更新開始時刻tnowから基準時刻tst iを除算することにより、経過時間が求められ、経過時間を描画更新時間tfで除算することにより、基準時刻tst iからの描画回数(表示フレーム数)が求められることになる。なお、描画更新時間tfは、実際の描画更新にかかった時間ではなく設定時間である。
そして、描画回数に1回の描画毎の上述の角度の分子の増加量としての速度Siを乗算することで、基準時刻からの角度(分子)の変化量が求められ、これに基準時刻tst iの角度ast iを加算し、これを分母biで除算して剰余を求めることにより、歯車の一回転内での角度aiが回転角度を示す分数の分子として求められる(ステップS35)。
例えば、基準時刻を100msecとし、基準角度の分子ast iを100とし、現在時刻を40000msecとした場合に、角度aiは、499となる。すなわち、回転角度は一周を1とした場合に、499/600となる。なお、ここで[x]は、xを越えない最大の整数を返すガウス関数を示すものであり、a mod bは、aをbで除算した際の余りを示すものである。なお、a<0の場合には、b−(aの絶対値)mod bとする。
ここで、ステップS35の2番目の式において、求められた角度ai(499)を通分時に用いたfi(20)で除算することにより、上述の回転角度は、24番目の仮想点Kに対応することになる。そして、24番目の仮想点Kを示す24をphase(5)で除算して余りを求めることにより、位相pi(=4)を求めることができる。アニメーション用の複数の画像データのうちの位相pi(=4)に対応する画像データ(image3)を選択することが可能となる。すなわち、[ai/fi]は、仮想点Kを特定するために仮想点Kに付された連番に対応し、フレームの描画時毎に[ai/fi]を求めることにより、仮想点Kに対応する画像データを選択し、描画時の時刻に対応する回転角度の歯車を表示することができる。
例えば、基準時刻を100msecとし、基準角度の分子ast iを100とし、現在時刻を40000msecとした場合に、角度aiは、499となる。すなわち、回転角度は一周を1とした場合に、499/600となる。なお、ここで[x]は、xを越えない最大の整数を返すガウス関数を示すものであり、a mod bは、aをbで除算した際の余りを示すものである。なお、a<0の場合には、b−(aの絶対値)mod bとする。
ここで、ステップS35の2番目の式において、求められた角度ai(499)を通分時に用いたfi(20)で除算することにより、上述の回転角度は、24番目の仮想点Kに対応することになる。そして、24番目の仮想点Kを示す24をphase(5)で除算して余りを求めることにより、位相pi(=4)を求めることができる。アニメーション用の複数の画像データのうちの位相pi(=4)に対応する画像データ(image3)を選択することが可能となる。すなわち、[ai/fi]は、仮想点Kを特定するために仮想点Kに付された連番に対応し、フレームの描画時毎に[ai/fi]を求めることにより、仮想点Kに対応する画像データを選択し、描画時の時刻に対応する回転角度の歯車を表示することができる。
そして、図14のフローチャートに示すように、各歯車gi、針hiのセットを描画していく。ここでは、上述のように前後関係を示すZiの小さい順に歯車gi、針hiを集合Gから選択して、以下の処理を実行する(ステップS37)。なお、集合Gの要素の全てとなる歯車gi及び針hiに対して以下の処理が終了した場合には、更新処理を終了する(ステップS38)。
次ぎに、集合Gから選択されたのが歯車giか針hiかを判定する(ステップS39)。そして、歯車giの場合には、歯数ciの歯車giの画像データのうちの更新処理で求められた位相piに対応する画像データで、かつ、歯車の属性としての色collargiが上述のように変更された画像データもしくはデフォルトの色の画像データを描画することになる。
次ぎに、集合Gから選択されたのが歯車giか針hiかを判定する(ステップS39)。そして、歯車giの場合には、歯数ciの歯車giの画像データのうちの更新処理で求められた位相piに対応する画像データで、かつ、歯車の属性としての色collargiが上述のように変更された画像データもしくはデフォルトの色の画像データを描画することになる。
すなわち、imagecollargi ci,piとなる画像データを描画する(ステップS40)。また、選択されたのが針hiの場合には、針hiのサイズの長さで、針hiに設定された色collarhiで、かつ、設定された形状(時針9a、分針9b、秒針9cのいずれか)で針hiを描画することになる。そして、描画する際の針hiの角度は、針hiにおいても、針hiの長さのサイズに対応する半径の歯車giと同様に上述の角度ai/biが求められており、針hiが接続された歯車giの中心の座標位置から角度ai/biで針hiが描画されることになる。なお、ここでは、針hiが接続された歯車giの中心座標から、Xci,[ai/fi]で示される仮想点Kの座標位置に向かって針hiを描画する(ステップS41)。なお、[ai/fi]は、仮想点Kに付された連番に対応するものであり、これにより仮想点Kが特定され、記憶領域6から特定された仮想点Kの円周座標データ63を得ることができる。
以上のような実行モードでの回転体画像表示プログラムにより実現される計算処理部3の処理により、計数処理部3は、前記記憶手段(記憶領域6)に記憶された複数の回転体(歯車7)毎の複数の画像データを順次表示することで回転体をアニメーション表示するとともに、前記回転体の任意の回転速度に応じて前記記憶手段に記憶された画像データを順次切り替えて表示していく場合に、同期して回転した状態に表示される回転体同士の画像データを切り替えるタイミングをほぼ同期させる表示制御手段として機能する。
また、計数処理部3は、画像データを順次表示することで回転体をアニメーション表示する場合に、前記画像データの表示時における前記回転体の回転速度に応じた回転角度に対応する前記仮想点を求め、複数の前記画像データのうちの求められた仮想点に対応する画像データを表示する表示制御手段として機能する。
また、計数処理部3は、画像データを順次表示することで回転体をアニメーション表示する場合に、前記画像データの表示時における前記回転体の回転速度に応じた回転角度に対応する前記仮想点を求め、複数の前記画像データのうちの求められた仮想点に対応する画像データを表示する表示制御手段として機能する。
以上の処理では、互いに噛み合った歯車7や、同軸上で一体に回転する複数の歯車7や、歯車7と一体に回転する針9等を設定された回転速度で回転表示することができるが、歯と歯が正確に噛み合った状態で、各歯車7や針9を回転表示することができない。そこで、編集モードにおいて、噛み合った歯車同士の位相を対応させるように、歯車7及び針9生成時や属性変更時に以下の複数の処理を行う必要がある。
例え各歯車7に対応する変数である歯数ci、半径ri、解像度rsi、上述の通分時の正の整数fi、通分された回転速度を示す分数の分母bi、前後関係を示す連番zi、基準時刻tst iは、図15のフローチャートに示すように歯車を生成した際に決定れる。すなわち、ステップS43において、歯数ciは、使用者により選択された歯車7の歯数cogmとされ、半径riは、選択された歯数cogmに対応して予め決められた半径radmとされ、解像度(ピッチ円8上に設定された仮想点の総数)rsiも歯数cogmに対応して予め決められた解像度resmとされる。
なお、通分する際の正の整数fiは、回転速度を変更されるか、原車を有する歯車列の歯車と接続されるまでは1とされる。また、分母となるbiは、デフォルトで1とされた正の整数fiに基づきrsi×fiとされる。
また、前後配置を示すZiは、生成された際の歯車giの集合Gの要素数(生成された歯車giの数と針hiの数の和)となる。すなわち、Zi生成順に0から連番で値が決定される。
また、基準時間tst iは、編集モードを開始した時刻tedとされる(ステップS43)。
また、歯車giの中心のxy座標も決定され、歯車giの各領域の色collar giもデフォルトの色が設定される。なお、歯車giの中心の座標位置は、予め、設定された座標位置とされるものとしても良いし、使用者に指定させるようにしても良いし、既に別の歯車gjが生成されている場合に、別の歯車gjに噛み合う位置、すなわち、別の歯車gjの中心と生成された歯車giの中心との距離がそれぞれのピッチ円8半径のほぼ和となる位置にしても良い。
なお、以上の歯車giの属性は、歯数毎に予め決め値が決められるか、生成時に自動的付与されるものであり、使用者が歯車生成時に歯数を選択することにより決定される。
そして、各属性が決定された歯車giが生成された歯車gi及び針hiの集合Gの要素とされ(ステップS44)、生成された歯車giの属性のデータが記憶領域6の歯車・針の位置・組合せデータ64として記憶される。
また、前後配置を示すZiは、生成された際の歯車giの集合Gの要素数(生成された歯車giの数と針hiの数の和)となる。すなわち、Zi生成順に0から連番で値が決定される。
また、基準時間tst iは、編集モードを開始した時刻tedとされる(ステップS43)。
また、歯車giの中心のxy座標も決定され、歯車giの各領域の色collar giもデフォルトの色が設定される。なお、歯車giの中心の座標位置は、予め、設定された座標位置とされるものとしても良いし、使用者に指定させるようにしても良いし、既に別の歯車gjが生成されている場合に、別の歯車gjに噛み合う位置、すなわち、別の歯車gjの中心と生成された歯車giの中心との距離がそれぞれのピッチ円8半径のほぼ和となる位置にしても良い。
なお、以上の歯車giの属性は、歯数毎に予め決め値が決められるか、生成時に自動的付与されるものであり、使用者が歯車生成時に歯数を選択することにより決定される。
そして、各属性が決定された歯車giが生成された歯車gi及び針hiの集合Gの要素とされ(ステップS44)、生成された歯車giの属性のデータが記憶領域6の歯車・針の位置・組合せデータ64として記憶される。
また、針hiの生成の場合は、図16のフローチャートに示すように、選択されたサイズである半径radmの長さの針hiを生成することになる。ここで、針hiは、そのサイズにほぼ等しい半径radmを有する歯車7(radmをピッチ円の半径とする歯車7)と同様に回転するものとして、歯車7と同様に歯数ciが、半径がradmの歯車の歯数cogmとされ、半径riがradmとされ、解像度rsiがresmとされる。
また、前後配置ziは、上述のように、生成された際の歯車7及び針9の集合Gの要素数となる。また、基準時間tst iは、編集モードを開始した時刻tedとされる。
また、前後配置ziは、上述のように、生成された際の歯車7及び針9の集合Gの要素数となる。また、基準時間tst iは、編集モードを開始した時刻tedとされる。
ここで、針hiの速度(回転速度の分子)siを、接続先の歯車gjの速度sjに針hiの長さに対応する歯車の歯数ciを乗算したものとし、通分用の値fiを、接続先歯車gjの通分用の値fjに接続先歯車gjの歯数cjを乗算したものとする。
さらに、生成される針hiの上述のように設定された速度siと、通分用の値fiとの最大公約数をnとした場合(公約数がある場合)に、si及びfiは、最大公約数で除算された値とする。すなわち、解像度rsiが乗算されることにより回転速度の分数の分母となるfiと、回転速度の分数の分子となるsiとの間で約分が行われる。
そして、針hiの半径に対応する歯車giの回転速度の分母biは、上述のように約分された値fiに解像度rsiを乗算したものとする。
ここで、針hiの速度si/biは、上述のように、si=sj×ci fi=fj×cj bi=fi×rsiとされることから、
si/bi=(sj×ci)/(fi×rsi)=(sj×ci)/(fj×cj×rsi)
となる。
また、上述の解像度rsの定義や速度の分母bの定義から
rsi=ci×phase
rsj=cj×phase
bj=fj×rsj
という関係がある。
従って、
si/bi
=(sj×ci)/(fj×cj×rsi)
=(sj×ci)/(fj×cj×ci×phase)
=sj/(fj×cj×phase)
=sj/(fj×rsj)
=sj/bj
となる。
ここで、sj/bjは、針hiの接続先歯車gjの回転速度であり、針hiの回転速度si/biと接続先歯車gjの回転速度sj/bjとが等しくなる。
なお、上述の処理により、針hiの回転速度と、接続先の歯車gjの回転速度とは等しくなるが、針hiの長さに対応する半径の歯車giと接続先歯車gjとで歯数が異なる場合に、画像データの切り替わるタイミングが異なる可能性がある。
さらに、生成される針hiの上述のように設定された速度siと、通分用の値fiとの最大公約数をnとした場合(公約数がある場合)に、si及びfiは、最大公約数で除算された値とする。すなわち、解像度rsiが乗算されることにより回転速度の分数の分母となるfiと、回転速度の分数の分子となるsiとの間で約分が行われる。
そして、針hiの半径に対応する歯車giの回転速度の分母biは、上述のように約分された値fiに解像度rsiを乗算したものとする。
ここで、針hiの速度si/biは、上述のように、si=sj×ci fi=fj×cj bi=fi×rsiとされることから、
si/bi=(sj×ci)/(fi×rsi)=(sj×ci)/(fj×cj×rsi)
となる。
また、上述の解像度rsの定義や速度の分母bの定義から
rsi=ci×phase
rsj=cj×phase
bj=fj×rsj
という関係がある。
従って、
si/bi
=(sj×ci)/(fj×cj×rsi)
=(sj×ci)/(fj×cj×ci×phase)
=sj/(fj×cj×phase)
=sj/(fj×rsj)
=sj/bj
となる。
ここで、sj/bjは、針hiの接続先歯車gjの回転速度であり、針hiの回転速度si/biと接続先歯車gjの回転速度sj/bjとが等しくなる。
なお、上述の処理により、針hiの回転速度と、接続先の歯車gjの回転速度とは等しくなるが、針hiの長さに対応する半径の歯車giと接続先歯車gjとで歯数が異なる場合に、画像データの切り替わるタイミングが異なる可能性がある。
そして、針hiの接続先となる歯車Pgiを歯車gjとし、接続先となる歯車gjに接続される歯車の集合CGjに針hiを含ませる(ステップS46)。なお、針hi及び歯車giにおいて、接続先、すなわち、駆動力の伝動元となる歯車gjは1つである。また、駆動力の伝動元となる歯車gjから駆動力が伝達される歯車gi、針hiは、1つに限られるものではなく複数の歯車gi等(集合CGjに属する歯車gi及び針hi)を接続することができる。
そして、生成されて属性が決定された針hiは、生成された歯車giと針hiの集合Gに追加される(ステップS47)。
そして、生成されて属性が決定された針hiは、生成された歯車giと針hiの集合Gに追加される(ステップS47)。
編集モードで上述のように歯車giの生成や針hiの生成を行った場合に、生成された歯車giや生成された針hiの基準時刻tst iが編集モードを開始した際の開始時刻tedとなり、基準時刻tst iに対応する基準角度ast iが設定された場合に、編集モードとなる前に既に生成されて異なる基準時刻tst iを有する歯車giや針hiが存在すると、これら既存の歯車giに生成された歯車giや針hiを接続するために角度や位相等を合わせる際に、既存の歯車giと生成された歯車giや針hiの基準時刻が異なることから既存の歯車giの基準角度ast iに対応して生成された歯車giの基準角度ast iを設定することができず、計算が煩雑になる。
そこで、編集モードの開始時には、既に生成された歯車gi及び針hiの基準時間tst iを編集モード開始時刻tedとし、基準角度ast iを開始時刻tedの角度aiとすることで、既存の歯車giと編集モード中に生成される歯車gi、針hiの基準時刻tst i及び基準角度ast iを合わせる処理を行う。
図17のフローチャートに示すように編集モード開始処理として、携帯端末の時計機能における編集モードを開始した時刻を、tedとして記憶領域に保存する(ステップS49)。
次ぎに、以下の処理を生成された歯車gi、針hiのセットの集合Gに含まれる要素である全ての歯車gi及び針hiに対して行う(ステップS50)。なお、集合Gに含まれる全ての歯車gi及び針hiに以下の処理を行った場合には、処理を終了する(ステップS51)。
編集モード開始時刻tedにおける角度aiを求める。まず、編集モード開始時刻tedから以前の基準時刻tst iを除算することにより経過時間を求め、経過時間を描画更新時間tfで除算することにより、現在までの描画更新回数を求め、描画更新回数に描画更新毎の回転角度を示す速度si(速度の分子)を乗算することで、基準時刻tst iから開始時刻tedまでの回転角度の変化量(回転角度の分子)を求める。この際に変化量は、上述のガウス関数により求められた変化量を越えない最大の整数となる。そして、回転角度の変化量に基準となる角度ast iを加算した後に、回転角度及び回転速度の分母biで除算して剰余を求めることにより、角度aiが歯車hiの一回転内での角度として求められる。
そして、求められた角度aiが基準角度ast iとされる。
また、回転角度aiが求められることにより基準時刻tst iにおける位相piを上述の場合と同様に求めることができる。
図17のフローチャートに示すように編集モード開始処理として、携帯端末の時計機能における編集モードを開始した時刻を、tedとして記憶領域に保存する(ステップS49)。
次ぎに、以下の処理を生成された歯車gi、針hiのセットの集合Gに含まれる要素である全ての歯車gi及び針hiに対して行う(ステップS50)。なお、集合Gに含まれる全ての歯車gi及び針hiに以下の処理を行った場合には、処理を終了する(ステップS51)。
編集モード開始時刻tedにおける角度aiを求める。まず、編集モード開始時刻tedから以前の基準時刻tst iを除算することにより経過時間を求め、経過時間を描画更新時間tfで除算することにより、現在までの描画更新回数を求め、描画更新回数に描画更新毎の回転角度を示す速度si(速度の分子)を乗算することで、基準時刻tst iから開始時刻tedまでの回転角度の変化量(回転角度の分子)を求める。この際に変化量は、上述のガウス関数により求められた変化量を越えない最大の整数となる。そして、回転角度の変化量に基準となる角度ast iを加算した後に、回転角度及び回転速度の分母biで除算して剰余を求めることにより、角度aiが歯車hiの一回転内での角度として求められる。
そして、求められた角度aiが基準角度ast iとされる。
また、回転角度aiが求められることにより基準時刻tst iにおける位相piを上述の場合と同様に求めることができる。
そして、編集モード開始時刻tedから元の基準時刻tst iを除算して経過時間を求め、これを描画更新時間tfで除算した剰余を求める。求められた値は、編集モード開始時刻tedより前で、開示時刻tedに最も近い描画開始時間毎の(フレームの0)描画開始時刻からのずれを示すものである。そして、開始時刻tedから求められた前記ずれ時間を除算することで、開示時刻tedの前で開示時刻tedに最も近い描画開始時刻が求められる。そして、求められた時刻が新しい基準時刻tst iとされる(ステップS52)。これにより、基準角度ast iが描画開始時刻のタイミングに合わされることになる。
また、上述の属性変更の処理において、歯車giを移動した場合に、移動した歯車giが他の歯車gjと接続可能か否かが判定され、他の歯車と接続可能となった場合には、接続可能であることが表示されるが、接続可能歯車の判定処理を図18のフローチャートを参照して説明する。
なお、この判定処理は、歯車7を編集中に移動する処理を行った場合に行われる。
また、上述の属性変更の処理において、歯車giを移動した場合に、移動した歯車giが他の歯車gjと接続可能か否かが判定され、他の歯車と接続可能となった場合には、接続可能であることが表示されるが、接続可能歯車の判定処理を図18のフローチャートを参照して説明する。
なお、この判定処理は、歯車7を編集中に移動する処理を行った場合に行われる。
すなわち、使用者の操作により、歯車7が移動する(ステップS54)。次ぎに、移動した位置での歯車7に、後述するように位置的に接続可能な歯車7があるか否かが判定され、判定結果が表示される(接続可能な場合だけ表示しても良い)(ステップS55)。
上述の処理は、歯車7が移動している間、位置が変更する度に行われることになる。そして、使用者は、歯車7が目的の位置(例えば、他の歯車と噛み合う位置)となった際に、歯車7の移動を停止し、これにより歯車7の位置が決定する(ステップS56)。
次ぎに、位置的に移動した歯車7に接続可能な歯車7の数が判定される(ステップS57)。接続可能な歯車7が0の場合に処理を終了し、1以上の場合には、使用者に移動した歯車7に接続する1つ以上の歯車7を選択させるか、もしくは、移動した歯車7を他の歯車7に接続しないものとすることを選択させる(ステップS58)。
上述の処理は、歯車7が移動している間、位置が変更する度に行われることになる。そして、使用者は、歯車7が目的の位置(例えば、他の歯車と噛み合う位置)となった際に、歯車7の移動を停止し、これにより歯車7の位置が決定する(ステップS56)。
次ぎに、位置的に移動した歯車7に接続可能な歯車7の数が判定される(ステップS57)。接続可能な歯車7が0の場合に処理を終了し、1以上の場合には、使用者に移動した歯車7に接続する1つ以上の歯車7を選択させるか、もしくは、移動した歯車7を他の歯車7に接続しないものとすることを選択させる(ステップS58)。
使用者の選択結果を判定し(ステップS59)、接続しないことが選択された場合には、処理を終了し、歯車が1つ選択された場合には、選択された歯車7と移動した歯車7とを接続するものとして、選択された歯車7の角度及び回転速度に応じて、移動した歯車の角度と回転速度を後述するように自動的に設定する(ステップS60)。
次ぎに、再び位置的に移動した歯車7に接続可能な歯車7の数が判定される(ステップS61)。
接続可能な歯車7が0の場合に処理を終了し、1以上の場合には、後述する接続トポロジ的に接続可能な歯車の判定と判定結果の表示を行う(ステップS62)。
次ぎに、位置的、かつ、接続トポロジ的に接続可能な歯車7の数を判定する(ステップS63)。
次ぎに、再び位置的に移動した歯車7に接続可能な歯車7の数が判定される(ステップS61)。
接続可能な歯車7が0の場合に処理を終了し、1以上の場合には、後述する接続トポロジ的に接続可能な歯車の判定と判定結果の表示を行う(ステップS62)。
次ぎに、位置的、かつ、接続トポロジ的に接続可能な歯車7の数を判定する(ステップS63)。
接続可能な歯車7が0の場合に処理を終了し、1以上の場合には、使用者に移動した歯車7に接続する1つ以上の歯車7を選択させるか、もしくは、移動した歯車7を他の歯車7に接続しないものとすることを選択させる(ステップS64)。使用者の選択結果を判定し(ステップS65)、接続しないことが選択された場合には、処理を終了し、歯車が1つ選択された場合には、選択された歯車7と移動した歯車7とを接続するものとして、移動した歯車の角度と回転速度を後述するように接続トポロジに応じて再帰的に自動的に設定する(ステップS60)。なお、1つの歯車7が二つ以上の歯車7と接続可能な場合には、少なくとも接続可能な歯車の一方は、原車を有する歯車列に接続されていないことになる。また、1つの歯車7を二つ以上の歯車7に接続可能な場合には、1つの歯車7の角度と回転速度を一方の接続可能な歯車7に合わせた場合に、他方の接続可能な歯車7の角度と回転速度を移動した1つの歯車7に合わせる必要が生じる。
従って、接続可能な二つ以上の歯車7が自由歯車か、もしくは原車を有する歯車列の歯車7か等を判定する必要がある。そして、原車を持たない歯車列の歯車7と、原車もしくは原車を有する歯車列7との両方に1つの歯車7を接続した場合には、原車を有する歯車列7の接続可能な歯車7側から移動した歯車7を経て原車を持たない歯車列の各歯車7において、歯車列の順に沿って、角度と回転速度とを再帰的に設定していく必要がある。
そして、移動した歯車7に接続可能な歯車7がなくなるまで、ステップS61〜ステップS66の処理を繰り返し行う。
そして、移動した歯車7に接続可能な歯車7がなくなるまで、ステップS61〜ステップS66の処理を繰り返し行う。
次ぎに、上述の処理における移動した歯車に対して位置的に接続可能な歯車があるかいなかの判定処理を図19のフローチャートを参照して説明する。
ここで、移動された歯車(編集中の歯車)をgiとし、歯車giとの接続の可能性を判定される歯車をgjとする。また、歯車giのピッチ円半径をri、歯車gjのピッチ円半径をrjとする。また、歯車giの回転中心(ピッチ円8の中心)の座標を(xi、yi)とし、歯車gjの回転中心(ピッチ円8の中心)の座標を(xj、yj)とする。
そして、歯車7同士が噛み合って接続される場合には、噛み合う歯車7同士のピッチ円8が接している必要がある。従って、この場合に、互いに噛み合う歯車7の中心間の距離は、二つの歯車7のそれぞれのピッチ円8の半径の和となる。
ここで、移動された歯車(編集中の歯車)をgiとし、歯車giとの接続の可能性を判定される歯車をgjとする。また、歯車giのピッチ円半径をri、歯車gjのピッチ円半径をrjとする。また、歯車giの回転中心(ピッチ円8の中心)の座標を(xi、yi)とし、歯車gjの回転中心(ピッチ円8の中心)の座標を(xj、yj)とする。
そして、歯車7同士が噛み合って接続される場合には、噛み合う歯車7同士のピッチ円8が接している必要がある。従って、この場合に、互いに噛み合う歯車7の中心間の距離は、二つの歯車7のそれぞれのピッチ円8の半径の和となる。
ここでは、キー入力部4の操作性等を考慮して、歯車giの中心と歯車gjの中心との距離が半径riと半径rjとの和と完全に一致しなくとも、ずれが許容範囲−d、+d内であれば接続可能としている。
従って、図19のフローチャートのステップS67に示すように、歯車giの中心と歯車gjの中心との距離が、二つの歯車の半径riと半径rjとの和から許容範囲dを除算した距離以上で、二つの歯車の半径riと半径rjとの和に許容範囲dを加算した距離より小さい場合に、歯車giと歯車gjとを接続可能と判定する。
また、歯車giと歯車gjの接続には、噛み合いの他に、同軸上で固着される歯車7があり、同軸の歯車7となるか否かは、歯車giと歯車gjの中心位置が一致、すなわち、歯車giの中心のxy座標と歯車gjの中心のxy座標とが一致した場合に接続可能と判定する(ステップS67)。
従って、図19のフローチャートのステップS67に示すように、歯車giの中心と歯車gjの中心との距離が、二つの歯車の半径riと半径rjとの和から許容範囲dを除算した距離以上で、二つの歯車の半径riと半径rjとの和に許容範囲dを加算した距離より小さい場合に、歯車giと歯車gjとを接続可能と判定する。
また、歯車giと歯車gjの接続には、噛み合いの他に、同軸上で固着される歯車7があり、同軸の歯車7となるか否かは、歯車giと歯車gjの中心位置が一致、すなわち、歯車giの中心のxy座標と歯車gjの中心のxy座標とが一致した場合に接続可能と判定する(ステップS67)。
なお、歯車giと接続可能な歯車は、複数あっても良いが、この場合に、複数の接続可能な歯車gjが両方とも原動歯車もしくは原動歯車を含む歯車列の歯車のいずれかの場合には、接続トポロジ的には両方同時に接続することはできない。また、歯車列が閉じた環状に接続されるような接続もできない。
そして、接合可能な歯車gjの判定が終了し、接続可能な歯車gjがある場合には、全ての接続可能な歯車gjに対して接続可能であることとを表示する(ステップS68)。なお、この際の表示は、例えば、図5(F)に示すように、編集中の歯車7と接続可能な歯車7を囲む枠と、編集中の歯車7の中心と接続可能な歯車7の中心とを結ぶ線分を表示しても良い。
そして、接合可能な歯車gjの判定が終了し、接続可能な歯車gjがある場合には、全ての接続可能な歯車gjに対して接続可能であることとを表示する(ステップS68)。なお、この際の表示は、例えば、図5(F)に示すように、編集中の歯車7と接続可能な歯車7を囲む枠と、編集中の歯車7の中心と接続可能な歯車7の中心とを結ぶ線分を表示しても良い。
また、二つ以上の歯車7を連続して生成した場合や、編集モードで歯車7の位置変更を行い、歯車7を他の歯車7と接続させるものとした場合には、接続される歯車7,7同士が同期して回転するように、接続先となる歯車に対して編集中の歯車7(生成もしくは位置変更された歯車7)の位相と角度と回転速度が自動で設定される。
図20のフローチャートに示すように、編集中の歯車をgi、接続相手となる歯車をgjとする(ステップS70)。
すなわち、歯車giの接続先歯車Pgiを歯車gjとし、接続先の歯車gjに接続される歯車の集合CGjに歯車giが含まれるものとする(ステップS71)。
図20のフローチャートに示すように、編集中の歯車をgi、接続相手となる歯車をgjとする(ステップS70)。
すなわち、歯車giの接続先歯車Pgiを歯車gjとし、接続先の歯車gjに接続される歯車の集合CGjに歯車giが含まれるものとする(ステップS71)。
そして、歯車giと歯車gjとの接続関係が噛み合いによる接続か、同軸による接続かを判定する。例えば、歯車giの中心座標と歯車gjの中心座標とが一致するか否かで、一致する場合に同軸による接続、一致しない場合に噛み合いによる接続と判定する(ステップS72)。
そして、噛み合いによる接続の場合には、後述するように歯車giの位相を歯車gjと噛み合うように設定し(ステップS73)、次いで、歯車giの速度と角度を歯車gjと噛み合うように設定する(ステップS74)。
また、歯車giと歯車gjとが同軸上の固着による接続の場合には、歯車giの速度と角度を歯車gjと重なるように設定する(ステップS75)。
そして、噛み合いによる接続の場合には、後述するように歯車giの位相を歯車gjと噛み合うように設定し(ステップS73)、次いで、歯車giの速度と角度を歯車gjと噛み合うように設定する(ステップS74)。
また、歯車giと歯車gjとが同軸上の固着による接続の場合には、歯車giの速度と角度を歯車gjと重なるように設定する(ステップS75)。
そして、歯車giの位相を歯車gjと噛み合うように設定する場合には、図21のフローチャートに示すように、ステップS77に示す式から最少となるkとlを求める。
ここで、Xci,kとは、歯車giの歯数をciとし、歯車giの中心のx座標を0とした場合に、歯数ciの歯車giのピッチ円8の円周上に上述のように等間隔に形成された仮想点Kのうちの基準点からk番目となる点のx座標もしくはその近似値を示し、Yci,kとは、歯車giの歯数をciとし、歯車giの中心のy座標を0とした場合に、歯数ciの歯車giのピッチ円8の円周上に上述のように等間隔に形成された仮想点Kのうちの基準点からk番目となる点のy座標もしくはその近似値を示す。また、Xcj,lとは、歯車gjの歯数をcjとし、歯車gjの中心のx座標を0とした場合に、歯数cjの歯車giのピッチ円8の円周上に上述のように等間隔に形成された仮想点Kのうちの基準点からl番目となる点のx座標もしくはその近似値を示し、Ycj,lとは、歯車gjの歯数をcjとし、歯車gjの中心のy座標を0とした場合に、歯数cjなる歯車gjのピッチ円8の円周上に上述のように等間隔に形成された仮想点Kのうちの基準点からl番目となる点のy座標もしくはその近似値を示す。
ここで、Xci,kとは、歯車giの歯数をciとし、歯車giの中心のx座標を0とした場合に、歯数ciの歯車giのピッチ円8の円周上に上述のように等間隔に形成された仮想点Kのうちの基準点からk番目となる点のx座標もしくはその近似値を示し、Yci,kとは、歯車giの歯数をciとし、歯車giの中心のy座標を0とした場合に、歯数ciの歯車giのピッチ円8の円周上に上述のように等間隔に形成された仮想点Kのうちの基準点からk番目となる点のy座標もしくはその近似値を示す。また、Xcj,lとは、歯車gjの歯数をcjとし、歯車gjの中心のx座標を0とした場合に、歯数cjの歯車giのピッチ円8の円周上に上述のように等間隔に形成された仮想点Kのうちの基準点からl番目となる点のx座標もしくはその近似値を示し、Ycj,lとは、歯車gjの歯数をcjとし、歯車gjの中心のy座標を0とした場合に、歯数cjなる歯車gjのピッチ円8の円周上に上述のように等間隔に形成された仮想点Kのうちの基準点からl番目となる点のy座標もしくはその近似値を示す。
なお、xy座標を(0,0)としたピッチ円8の円周上の各仮想点Kのxy座標は、予め設定された複数の歯数cogmの異なる歯車gm毎に求められて回転体画像表示プログラム用のデータとして記憶領域6に記憶されている。また、この例では、上述のように小数点以下の部分を含む数値は用いられず、整数、正の整数、自然数だけが用いられるので、予め設定された各点のxy座標は、実際の座標値が小数点以下の部分を含む場合に、例えば、整数となるように近似させられている。すなわち、小数点以下を切り捨てるか切り上げるかした状態となっている。
そして、歯車gi(歯車gj)と同じ歯数ci(歯数cj)の歯車gmのピッチ円8の中心のxy座標を0、0とした場合のピッチ円8の円周上の各仮想点Kのx座標に、歯車gi(歯車gj)のピッチ円8の中心のx座標を加算することで、歯車gi(歯車gj)のピッチ円8の円周上の各仮想点Kのx座標(近似値)を求めることができる。同様に、歯車gi(歯車gj)と同じ歯数ci(歯数cj)の歯車のピッチ円の中心のxy座標を0、0とした場合のピッチ円8の円周上の各仮想点Kのy座標に、歯車gi(歯車gj)のピッチ円の中心のy座標を加算することで、歯車gi(歯車gj)のピッチ円の円周上の各仮想点Kのy座標(近似値)を求めることができる。
そして、歯車gi(歯車gj)と同じ歯数ci(歯数cj)の歯車gmのピッチ円8の中心のxy座標を0、0とした場合のピッチ円8の円周上の各仮想点Kのx座標に、歯車gi(歯車gj)のピッチ円8の中心のx座標を加算することで、歯車gi(歯車gj)のピッチ円8の円周上の各仮想点Kのx座標(近似値)を求めることができる。同様に、歯車gi(歯車gj)と同じ歯数ci(歯数cj)の歯車のピッチ円の中心のxy座標を0、0とした場合のピッチ円8の円周上の各仮想点Kのy座標に、歯車gi(歯車gj)のピッチ円の中心のy座標を加算することで、歯車gi(歯車gj)のピッチ円の円周上の各仮想点Kのy座標(近似値)を求めることができる。
ここで、ステップS77の式は、歯車giのピッチ円8の円周上の基準となる仮想点Kからk番目の点と、歯車gjのピッチ円8の円周上の規準となる仮想点Kからl番目の点との距離を求めるものである。従って、歯車giのピッチ円8の円周上の複数の仮想点Kと、歯車gjのピッチ円8の円周上の複数の仮想点Kとの1対1の組合せの中で、互いに最も距離が短くなる仮想点Kの組合せを求めた場合に、kは求められた歯車giの仮想点Kの基準となる仮想点Kからの連番の番号となり、lは求められた歯車gjの仮想点Kの基準となる仮想点Kからの連番の番号となる。なお、歯車gi及び歯車gjは、互いに噛み合い可能な距離にあることから、歯車giのピッチ円8と歯車gjのピッチ円8とは接しており、上述のように求められた互いに最も近接する各歯車gi,gjの仮想点は、互いに接した状態の二つのピッチ円8の接点71に最も近い点となる。
そして、次ぎに編集モード開始時刻における位相がpjの歯車gjに噛み合わせるための歯車giの位相piをステップ78に示す式で求める。
なお、この際に、歯車giの1つの歯分の所定角度を回転する1周期における位相は、互いに噛み合う歯車gi,gjにおいて、一方の歯車giの歯同士の間の谷に、他方の歯車gjの歯が噛み合う状態(その逆も可)となるので互いに噛み合っている歯車gi,gjの場合に、位相が半周期分ずれるものとなる。
ここで、歯車xjの基準時刻tst iにおける位相(上述の編集モード開始時の処理に基づき、編集モード開始時の位相)をpjとし、上述のように求められた連番lの仮想点Kにおける位相を、連番lを位相数(1周期分の画像データの数)phaseで除算した際の剰余として求める。そして、基準時刻tst iの位相pjから連番lの仮想点の位相を除算することで、求められた仮想点Kに対する基準時刻tst iにおける位相のずれを求める。ここで、この位相のずれを歯車giの求められた連番kから減算するとともに、これを位相数phaseで除算して剰余を求めると、歯車giと歯車gjの位相が一致することになり、このままでは、歯車giの歯と歯車gjの歯とが重なった状態となる。そこで、位相数phaseで除算する前に、連番Kから上述の位相のずれ量を除算するとともに、解像度の1/2(剰余が出る場合には、上述のガウス関数として小数点以下を切り捨てた数値とする)を足すことで、位相を半周期分ずらした値を歯車giの基準時刻における位相piとする。
なお、この際に、歯車giの1つの歯分の所定角度を回転する1周期における位相は、互いに噛み合う歯車gi,gjにおいて、一方の歯車giの歯同士の間の谷に、他方の歯車gjの歯が噛み合う状態(その逆も可)となるので互いに噛み合っている歯車gi,gjの場合に、位相が半周期分ずれるものとなる。
ここで、歯車xjの基準時刻tst iにおける位相(上述の編集モード開始時の処理に基づき、編集モード開始時の位相)をpjとし、上述のように求められた連番lの仮想点Kにおける位相を、連番lを位相数(1周期分の画像データの数)phaseで除算した際の剰余として求める。そして、基準時刻tst iの位相pjから連番lの仮想点の位相を除算することで、求められた仮想点Kに対する基準時刻tst iにおける位相のずれを求める。ここで、この位相のずれを歯車giの求められた連番kから減算するとともに、これを位相数phaseで除算して剰余を求めると、歯車giと歯車gjの位相が一致することになり、このままでは、歯車giの歯と歯車gjの歯とが重なった状態となる。そこで、位相数phaseで除算する前に、連番Kから上述の位相のずれ量を除算するとともに、解像度の1/2(剰余が出る場合には、上述のガウス関数として小数点以下を切り捨てた数値とする)を足すことで、位相を半周期分ずらした値を歯車giの基準時刻における位相piとする。
これにより、歯車giと歯車gjとが噛み合うように、歯車gjの位相pjに対して歯車giの位相piが決定される。この状態で、歯車gi及び歯車gjのそれぞれの所定角度すなわち1周期分の回転移動が同じ時間で行われるものとすることで、噛み合った状態で回転しつづけることになる。
次ぎに、上述のように噛み合った歯車gi,gjが噛み合った状態を維持するように、図22のフローチャートに示すように、歯車giの速度と角度を歯車gjと噛み合うように設定する処理を行う。
まず、歯車giの上述の通分用の値fiを歯車gjの通分用の値fjと同じにする。
また、歯車giの回転速度の分子siを歯車gjの回転速度の分子sjと等しくするとともに回転方向を逆とするためいにマイナスの値とする。
次ぎに、上述のように噛み合った歯車gi,gjが噛み合った状態を維持するように、図22のフローチャートに示すように、歯車giの速度と角度を歯車gjと噛み合うように設定する処理を行う。
まず、歯車giの上述の通分用の値fiを歯車gjの通分用の値fjと同じにする。
また、歯車giの回転速度の分子siを歯車gjの回転速度の分子sjと等しくするとともに回転方向を逆とするためいにマイナスの値とする。
ここで歯車giと歯車gjの回転速度の分母bi、bjは、歯車gi,gjの歯数ci、cjに位相数phaseを乗算した値である仮想点Kの総数rsi、rsjに通分用の値fi、fjを乗算したものとなり、fi=fjとした場合に、歯車giの回転速度の分母biと歯車gjの回転速度の分母bjとの比は、歯車giの歯数ciと歯車gjの歯数cjの比、すなわち、変速比と等しくなる。
また、歯車giの回転速度の分子siと歯車gjの回転速度の分子sjとは等しい(方向は逆)ので、歯車giと歯車gjとは、回転の周速度が等しくなるとともに、1回転にかかる時間が変速比に応じて異なることになり、噛み合った歯車gi,gjに対応した回転速度で回転することになる。
また、ステップS80の角度aiを求める式に基づいて角度aiを求める。すなわち、上述のように求められた歯車gjと噛み合う歯車giの位相piに基づいて歯車giの角度aiを求めることになる。この際には、歯車giの回転速度及び回転角度を表す分数の分母biが上述のように変更されているので、それに対応して噛み合う前の角度を変更する(すなわち、元の角度aiに元の分母biを乗算して新たな分母biで除算する)とともに、角度を歯車giの位相phaseが0となるようする。そして、求められた位相0の角度に上述のように求められた位相piに通分用の値fiを乗算した値(位相piを分母biに対応させたもの)を加算することで、上述のように歯車giの角度aiを歯車gjと噛み合う位相とする。この段階では、位相phaseに対応する解像度レベル(resi)の位置合わせとなる。この段階までの調整では、噛み合った状態で、歯車giと歯車gjとが表示されるが、歯車giと歯車gjとで位相phaseに対応する画像データの切り替えタイミングにずれが生じ、同じフレームで同時に画像データが切り替えられる可能性が低い。
そこで、さらに、解像度レベル(resi)に通分用の数値fiを乗算した回転角度の分母biレベルとなる精度の角度合わせが必要であり、歯車giと噛み合う歯車gjの回転角度ajにおける分母biレベルの角度合わせとして、歯車gjの回転角度ajの現在の回転角度における解像度(位相)単位の回転角度からのずれ分を求め、それに対応して歯車giの角度aiをさらに微調整する。解像度単位の回転角度とは、回転角度を示す分子の分母biに対して分子がfiずつずれた角度である。従って、現在の歯車gjの回転角度を示す分数の分子ajをfjで除算して余りを求めることにより、歯車gjの回転角度ajの解像度(位相)単位の回転角度からのずれ分を求めることができる。なお、ここでは、上述のように噛み合う条件として、歯車giと歯車gjとは逆回転しているので、分母biに対して1つの解像度分(1つの位相分)の分子の値(すなわち、fi)から、歯車gjの角度ajを1つの解像度分の値fjで除算した余りの値を減算し、さらに1減算した値に基づいた微調整分を、上述のように位相0となる歯車giの回転角度の値に噛み合う位相分の値(pi×fi)を加算した値にさらに加算する。これにより、歯車gjに噛み合う歯車giの角度aiと速度siが決定され、歯車gjと歯車giとが噛み合うように表示されるとともに、表示に際して歯車gjの画像データと歯車giの画像データとの切り替えタイミングがほぼ同期した状態、すなわち、毎回、高い確率で同じフレームで歯車giと歯車gjの画像データが切り替えられる状態となる。
また、ステップS52の場合と同様に、開示時刻tedの前で開示時刻tedに最も近い描画開始時刻が求められ、求められた時刻が新しい基準時刻tst iとされる。そして、基準時刻tst iにおける基準角度ast iが求められた角度aiとされる(ステップS80)。
また、歯車giの回転速度の分子siと歯車gjの回転速度の分子sjとは等しい(方向は逆)ので、歯車giと歯車gjとは、回転の周速度が等しくなるとともに、1回転にかかる時間が変速比に応じて異なることになり、噛み合った歯車gi,gjに対応した回転速度で回転することになる。
また、ステップS80の角度aiを求める式に基づいて角度aiを求める。すなわち、上述のように求められた歯車gjと噛み合う歯車giの位相piに基づいて歯車giの角度aiを求めることになる。この際には、歯車giの回転速度及び回転角度を表す分数の分母biが上述のように変更されているので、それに対応して噛み合う前の角度を変更する(すなわち、元の角度aiに元の分母biを乗算して新たな分母biで除算する)とともに、角度を歯車giの位相phaseが0となるようする。そして、求められた位相0の角度に上述のように求められた位相piに通分用の値fiを乗算した値(位相piを分母biに対応させたもの)を加算することで、上述のように歯車giの角度aiを歯車gjと噛み合う位相とする。この段階では、位相phaseに対応する解像度レベル(resi)の位置合わせとなる。この段階までの調整では、噛み合った状態で、歯車giと歯車gjとが表示されるが、歯車giと歯車gjとで位相phaseに対応する画像データの切り替えタイミングにずれが生じ、同じフレームで同時に画像データが切り替えられる可能性が低い。
そこで、さらに、解像度レベル(resi)に通分用の数値fiを乗算した回転角度の分母biレベルとなる精度の角度合わせが必要であり、歯車giと噛み合う歯車gjの回転角度ajにおける分母biレベルの角度合わせとして、歯車gjの回転角度ajの現在の回転角度における解像度(位相)単位の回転角度からのずれ分を求め、それに対応して歯車giの角度aiをさらに微調整する。解像度単位の回転角度とは、回転角度を示す分子の分母biに対して分子がfiずつずれた角度である。従って、現在の歯車gjの回転角度を示す分数の分子ajをfjで除算して余りを求めることにより、歯車gjの回転角度ajの解像度(位相)単位の回転角度からのずれ分を求めることができる。なお、ここでは、上述のように噛み合う条件として、歯車giと歯車gjとは逆回転しているので、分母biに対して1つの解像度分(1つの位相分)の分子の値(すなわち、fi)から、歯車gjの角度ajを1つの解像度分の値fjで除算した余りの値を減算し、さらに1減算した値に基づいた微調整分を、上述のように位相0となる歯車giの回転角度の値に噛み合う位相分の値(pi×fi)を加算した値にさらに加算する。これにより、歯車gjに噛み合う歯車giの角度aiと速度siが決定され、歯車gjと歯車giとが噛み合うように表示されるとともに、表示に際して歯車gjの画像データと歯車giの画像データとの切り替えタイミングがほぼ同期した状態、すなわち、毎回、高い確率で同じフレームで歯車giと歯車gjの画像データが切り替えられる状態となる。
また、ステップS52の場合と同様に、開示時刻tedの前で開示時刻tedに最も近い描画開始時刻が求められ、求められた時刻が新しい基準時刻tst iとされる。そして、基準時刻tst iにおける基準角度ast iが求められた角度aiとされる(ステップS80)。
次ぎに、同軸上に固着されるように接続される歯車giの速度と角度を接続先の歯車gjと重なるように設定する処理を、図23のフローチャートを参照して説明する。
この場合は、基本的に歯車gjに針hiを取り付けた際とほぼ同様の処理が行われる。従って、歯車giは、接続された歯車gjの回転に対応して同じ時間で一周回転するので、歯車giの速度の分数si/biは、接続先の歯車gjの速度を表す分数sj/bjと等しくなる。すなわち、歯車giの速度の分数の分子siは、歯車gjの速度sjに歯車giの歯数ciを乗算したものとされ、歯車giの回転速度の分母biの通分用の値fiは、接続先歯車gjの通分用の値fjに接続先歯車gjの歯数cjを乗算したものとされる。
さらに、編集中の歯車giの速度siと、通分用の値fiとの最大公約数をnとした場合(公約数がある場合)に、si及びfiは、最大公約数で除算された値となる。すなわち、解像度rsiが乗算されることにより回転速度の分数の分母となるfiと、回転速度の分数の分子となるsiとの間で約分が行われる。
この場合は、基本的に歯車gjに針hiを取り付けた際とほぼ同様の処理が行われる。従って、歯車giは、接続された歯車gjの回転に対応して同じ時間で一周回転するので、歯車giの速度の分数si/biは、接続先の歯車gjの速度を表す分数sj/bjと等しくなる。すなわち、歯車giの速度の分数の分子siは、歯車gjの速度sjに歯車giの歯数ciを乗算したものとされ、歯車giの回転速度の分母biの通分用の値fiは、接続先歯車gjの通分用の値fjに接続先歯車gjの歯数cjを乗算したものとされる。
さらに、編集中の歯車giの速度siと、通分用の値fiとの最大公約数をnとした場合(公約数がある場合)に、si及びfiは、最大公約数で除算された値となる。すなわち、解像度rsiが乗算されることにより回転速度の分数の分母となるfiと、回転速度の分数の分子となるsiとの間で約分が行われる。
また、歯車giの回転速度の分母biは、上述のように変更された値fiに解像度rsiを乗算したものとされる。
なお、上述の処理により、針hiの場合と同様に、歯車giの回転速度と、接続先の歯車gjの回転速度とは等しくなるが、歯車giと接続先の歯車gjとで歯数ci,cjが異なる場合に、アニメーション用の画像データの切り替わるタイミングが異なるものとなる。
また、ステップS81の角度aiを求める式に基づいて角度aiを求める。この場合も、基本的には、上述の歯車に噛み合う歯車の角度を求めた場合と同様に、歯車giの回転速度及び回転角度を表す分数の分母biが上述のように変更されているので、それに対応して噛み合う前の角度を変更する(すなわち、元の角度aiに元の分母biを乗算して新たな分母biで除算する)とともに、角度を歯車giの位相phaseが0となるようする。そして、求められた位相0の角度に元の位相piに通分用の値fiを乗算した値(位相piを分母biに対応させたもの)を加算することで、位相レベルの角度が決定される。さらに、解像度レベル(resi)に通分用の数値fiを乗算した回転角度の分母biレベルとなる精度の角度合わせとして、歯車giの回転角度aiの現在の角度における解像度(位相)単位の回転角度からのずれ分を求め、求められたずれ分の値を上述の位相レベルの角度に加算する。なお、同軸で回転する二つの歯車は、回転速度さえ一致していれば良く、元々の角度aiを新しい分母bi(すなわちfi)に対応して変換して整数にしたものを用いれば良い。
また、ステップS52の場合と同様に、開示時刻tedの前で開示時刻tedに最も近い描画開始時刻が求められ、求められた時刻が新しい基準時刻tst iとされる。そして、基準時刻tst iにおける基準角度ast iが求められた角度aiとされる(ステップS81)。
なお、上述の処理により、針hiの場合と同様に、歯車giの回転速度と、接続先の歯車gjの回転速度とは等しくなるが、歯車giと接続先の歯車gjとで歯数ci,cjが異なる場合に、アニメーション用の画像データの切り替わるタイミングが異なるものとなる。
また、ステップS81の角度aiを求める式に基づいて角度aiを求める。この場合も、基本的には、上述の歯車に噛み合う歯車の角度を求めた場合と同様に、歯車giの回転速度及び回転角度を表す分数の分母biが上述のように変更されているので、それに対応して噛み合う前の角度を変更する(すなわち、元の角度aiに元の分母biを乗算して新たな分母biで除算する)とともに、角度を歯車giの位相phaseが0となるようする。そして、求められた位相0の角度に元の位相piに通分用の値fiを乗算した値(位相piを分母biに対応させたもの)を加算することで、位相レベルの角度が決定される。さらに、解像度レベル(resi)に通分用の数値fiを乗算した回転角度の分母biレベルとなる精度の角度合わせとして、歯車giの回転角度aiの現在の角度における解像度(位相)単位の回転角度からのずれ分を求め、求められたずれ分の値を上述の位相レベルの角度に加算する。なお、同軸で回転する二つの歯車は、回転速度さえ一致していれば良く、元々の角度aiを新しい分母bi(すなわちfi)に対応して変換して整数にしたものを用いれば良い。
また、ステップS52の場合と同様に、開示時刻tedの前で開示時刻tedに最も近い描画開始時刻が求められ、求められた時刻が新しい基準時刻tst iとされる。そして、基準時刻tst iにおける基準角度ast iが求められた角度aiとされる(ステップS81)。
また、上述の接続トポロジ的に接続可能な歯車の判定と表示の処理は、図24のフローチャートに示すように、歯車giに位置的に接続可能な歯車gjのうちのステップS82に示す条件を満たす歯車gjを除くことにより、位置的及び接続トポロジ的に接続可能な歯車hjを求めることができる(ステップS82)。なお、ここで、編集中の歯車giと、接続される歯車gjとは異なるものである。さらに、grootiは、編集中の歯車giが属する歯車列において、噛み合いの接続関係を歯車giから双方向に接続関係を辿れる全ての歯車(歯車と針の組合せを含む)のうち、接続先(駆動源に対して上流側となる歯車)が無い唯一の歯車を示すものである。
また、grootjは、編集中の歯車giに接続される歯車gjが属する歯車列において、噛み合いの接続関係を歯車gjから双方向に接続関係を辿れる全ての歯車(歯車と針の組合せを含む)のうち、接続先(駆動源に対して上流側となる歯車)が無い唯一の歯車を示すものである。
そして、接続トポロジ的に接続不可能な歯車と歯車とは、grootiとgrootjとが一致する場合と、歯車giの速度siと歯車gjの速度sjとが両方とも0以外である場合である。すなわち、1つの歯車に二つの歯車から駆動力が伝達されるような接続ができないとともに、歯車列を環状に閉じたい状態に接続することができない。
そして、歯車giに位置的に接続可能な全ての歯車gjにおいて、接続の可能性を表示する(ステップS83)。
また、grootjは、編集中の歯車giに接続される歯車gjが属する歯車列において、噛み合いの接続関係を歯車gjから双方向に接続関係を辿れる全ての歯車(歯車と針の組合せを含む)のうち、接続先(駆動源に対して上流側となる歯車)が無い唯一の歯車を示すものである。
そして、接続トポロジ的に接続不可能な歯車と歯車とは、grootiとgrootjとが一致する場合と、歯車giの速度siと歯車gjの速度sjとが両方とも0以外である場合である。すなわち、1つの歯車に二つの歯車から駆動力が伝達されるような接続ができないとともに、歯車列を環状に閉じたい状態に接続することができない。
そして、歯車giに位置的に接続可能な全ての歯車gjにおいて、接続の可能性を表示する(ステップS83)。
また、上述の接続トポロジに応じて歯車の角度と回転速度を再帰的に自動設定する処理は、図25のフローチャートに示すように、編集中の歯車をgi、接続相手の歯車をgjとする(ステップS85)。
次ぎに、接続先の歯車gjの速度sjが0か否かを判定する(ステップS86)。
ここでは、既に、図18のフローチャートに示すように、編集中の歯車giが他の歯車7と接続されているので、歯車giの速度siが0でない可能性があるが、歯車gjの速度sjが0でない場合に、接続トポロジ的に歯車giと歯車gjとが接続可能と判定されていることから、歯車giの速度siは0となる。従って、歯車giを歯車gjを接続元とする集合CGjの要素とする(ステップS87)。
そして、後述するように歯車giを歯車gjに再帰的に接続する(ステップS88)。
次ぎに、接続先の歯車gjの速度sjが0か否かを判定する(ステップS86)。
ここでは、既に、図18のフローチャートに示すように、編集中の歯車giが他の歯車7と接続されているので、歯車giの速度siが0でない可能性があるが、歯車gjの速度sjが0でない場合に、接続トポロジ的に歯車giと歯車gjとが接続可能と判定されていることから、歯車giの速度siは0となる。従って、歯車giを歯車gjを接続元とする集合CGjの要素とする(ステップS87)。
そして、後述するように歯車giを歯車gjに再帰的に接続する(ステップS88)。
また、歯車gjの速度sjが0の場合は、歯車gjを歯車giを接続元とする集合CGiの要素とする(ステップS89)。
そして、後述するように歯車gjを歯車giに再帰的に接続する(ステップS90)。
ここで、歯車giを歯車gjに再帰的に接続する方法と、歯車gjを歯車giに再帰的に接続する方法とは、基本的に同じなので、以下に、図26のフローチャートを参照して、歯車giを歯車gjに再帰的に接続する方法を説明する。
まず、歯車giの接続先が設定済みでかつ歯車giの接続先が歯車gjでないか否かを判定する(ステップS91)。
そして、後述するように歯車gjを歯車giに再帰的に接続する(ステップS90)。
ここで、歯車giを歯車gjに再帰的に接続する方法と、歯車gjを歯車giに再帰的に接続する方法とは、基本的に同じなので、以下に、図26のフローチャートを参照して、歯車giを歯車gjに再帰的に接続する方法を説明する。
まず、歯車giの接続先が設定済みでかつ歯車giの接続先が歯車gjでないか否かを判定する(ステップS91)。
歯車giの接続先が設定済みでかつ歯車giの接続先が歯車gjでないが真でない場合には、歯車giの接続先歯車Pgiを歯車gjとする(ステップS93)。
また、歯車giの接続先が設定済みでかつ歯車giの接続先が歯車gjでないが真の場合には、歯車gjを接続元とする集合CGjに、歯車giの接続先の歯車を設定する。すなわち、編集中の歯車giは、既に歯車gj以外の歯車gkと接続されており、歯車giに接続された歯車gkを歯車gjを接続元とする集合CGjの要素とする(ステップS92)。
この場合も、歯車giの接続先を歯車gjとする。
次ぎに、歯車giの回転中心と歯車gjの回転中心とが一致するか否かを判定する(ステップS94)。
また、歯車giの接続先が設定済みでかつ歯車giの接続先が歯車gjでないが真の場合には、歯車gjを接続元とする集合CGjに、歯車giの接続先の歯車を設定する。すなわち、編集中の歯車giは、既に歯車gj以外の歯車gkと接続されており、歯車giに接続された歯車gkを歯車gjを接続元とする集合CGjの要素とする(ステップS92)。
この場合も、歯車giの接続先を歯車gjとする。
次ぎに、歯車giの回転中心と歯車gjの回転中心とが一致するか否かを判定する(ステップS94)。
一致しない場合に噛み合いによる接続と判定し、噛み合いによる接続の場合には、上述のように歯車giの位相を歯車gjと噛み合うように設定し(ステップS95)、次いで、歯車giの速度と角度を歯車gjと噛み合うように設定する(ステップS96)。歯車giの回転中心と歯車gjの回転中心とが一致する場合には、歯車giと歯車gjとが同軸上の固着による接続と判定し、歯車giの速度と角度を歯車gjと重なるように設定する(ステップS97)。
次ぎに、歯車gjが歯車giを接続元とする集合CGiに属するか否かを判定する(ステップS98)。
次ぎに、歯車gjが歯車giを接続元とする集合CGiに属するか否かを判定する(ステップS98)。
そして、歯車gjが集合CGiに属さない場合に、集合CGiに属す全ての歯車gkについて以下の処理を実行し、歯車gjが集合CGiに属す場合に、歯車gjを集合CGiから削除し(ステップS99)、集合CGiに属す全ての歯車gkについて以下の処理を実行する(ステップS100)。なお、集合CGiに属す全ての歯車gkについて以下の処理を実行した場合には、処理を終了する(ステップS101)。
集合CGiに含まれる歯車gkを順次たどって再帰的に歯車giの歯車列として接続していく(ステップS102)。
以上のような処理によれば、例えば、先に歯車giを接続された歯車gkの歯車列には、原車がなく、歯車gkより後に歯車giを接続した歯車gjが属する歯車列には原車が配置されているような場合に、先に歯車giに接続された歯車gkの歯車列と歯車giを、原車がある歯車列の歯車gjから順次辿って、歯車gkの歯車列、歯車gi、歯車gjの歯車列を1つの歯車列として接続することが可能となる。
集合CGiに含まれる歯車gkを順次たどって再帰的に歯車giの歯車列として接続していく(ステップS102)。
以上のような処理によれば、例えば、先に歯車giを接続された歯車gkの歯車列には、原車がなく、歯車gkより後に歯車giを接続した歯車gjが属する歯車列には原車が配置されているような場合に、先に歯車giに接続された歯車gkの歯車列と歯車giを、原車がある歯車列の歯車gjから順次辿って、歯車gkの歯車列、歯車gi、歯車gjの歯車列を1つの歯車列として接続することが可能となる。
以上のような本実施形態の回転体画像表示装置及び回転体画像表示プログラムによれば、三角関数や浮動小数点演算等の演算処理が制限されるような携帯電話1等の携帯端末において、回転する歯車の画像を表示画面上に任意に配置して、複数の歯車を噛み合わせたり、同軸上に固着したりして、歯車列を構成して、回転する歯車による多彩の表現を可能とすることができる。すなわち、携帯電話1に優れたコンテンツを提供することができる。また、回転画像表示プログラムや、該プログラムで使用されるデータ等を最低限のものとして、携帯電話1の記憶容量に余裕を与えるとともに、回転画像表示プログラムをインターネット上のコンテンツとしてダウンロードする場合などの通信経費を削減することができる。
2 表示部
3 計算処理部(表示制御手段)
4 キー入力部
5 ネットワーク通信部
6 記憶領域(記憶手段、円周座標記憶手段)
7 歯車(回転体)
8 ピッチ円
K 仮想点
rad 半径
3 計算処理部(表示制御手段)
4 キー入力部
5 ネットワーク通信部
6 記憶領域(記憶手段、円周座標記憶手段)
7 歯車(回転体)
8 ピッチ円
K 仮想点
rad 半径
Claims (8)
- それぞれ互いに同期して回転可能で、それぞれ固有の所定角度を回転する毎に、回転前の形状と回転後の形状とが一致する回転対称の形状を有し、かつ、複数の回転体が互いに同期して回転する場合にそれぞれ固有の所定角度を回転する時間が略一致する複数の歯車等の回転体をアニメーション表示する回転体画像表示装置であって、
前記所定角度が互いに異なる複数の回転体のそれぞれのアニメーション用の画像データとして、各回転体のそれぞれ固有の所定角度をほぼ等間隔に各回転体で同じ分割数で分割した各回転角度位置での前記回転体の画像を示し、かつ、所定角度を各回転体で同じ分割数で分割することにより各回転体で同数にされた画像データを記憶する記憶手段と、
前記記憶手段に記憶された複数の回転体毎の複数の前記画像データを順次表示することで回転体をアニメーション表示するとともに、前記回転体の任意の回転速度に応じて前記記憶手段に記憶された前記画像データを順次切り替えて表示していく場合に、同期して回転した状態に表示される回転体同士の前記画像データを切り替えるタイミングをほぼ同期させる表示制御手段とを備えることを特徴とする回転体画像表示装置。 - 隣接して互いに同期して回転する各回転体にそれぞれ対応するとともに、互いに接触して同期して回転する仮想円の円周上に、各回転体の一回転に含まれる前記所定角度の数に、所定角度回転する回転体をアニメーション表示させるための前記画像データの数を乗算して得られた値となる数の仮想点をほぼ等間隔毎に設定しておくとともに、各仮想点がそれぞれアニメーション表示用の複数の前記画像データの1つに対応するものとし、各仮想点を個々に示す仮想点の座標データを記憶する円周座標記憶手段を備え、
前記表示制御手段は、前記画像データを順次表示することで回転体をアニメーション表示する場合に、前記画像データの表示時における前記回転体の回転速度に応じた回転角度に対応する前記仮想点を求め、複数の前記画像データのうちの求められた仮想点に対応する前記画像データを表示することを特徴とする請求項1記載の回転体画像表示装置。 - 隣接して互いに同期して回転する回転体同士の間では、それぞれの回転体が所定角度分だけ回転する時間が等しくされ、かつ、互いに所定角度回転する際の位相が所定角度回転する時間の半分の時間だけずれるという条件を有する場合に、
前記表示制御手段は、隣接して互いに同期して回転する回転体にそれぞれ対応するとともに、互いに接する仮想円同士の接点に最も近い前記仮想点を互いに接する仮想円毎に求め、
一方の仮想円に対して求められた仮想点と一方の仮想円に対応する回転体の回転角度に対応する前記位相との関係に基づくとともに、前記条件に基づいて、
他方の仮想円に対して求められた仮想点と他方の仮想円に対応する回転体の位相との関係を求めることにより前記条件に対応して互いに同期して回転する回転体を表示することを特徴とする請求項2記載の回転体画像表示装置。 - 前記記憶手段は、前記画像データを配色表と配色表式画像データとを有するインデックス画像として記憶し、
前記記憶手段に記憶されたインデックス画像の配色表上の色のデータを書き換えることにより、回転体の画像の色を変更する色変更手段を備えたことを特徴とする請求項1〜3のいずれか1項に記載の回転体画像表示装置。 - 表示装置を備えるコンピュータに、それぞれ互いに同期して回転可能で、それぞれ固有の所定角度を回転する毎に、回転前の形状と回転後の形状とが一致する回転対称の形状を有し、かつ、互いに同期して回転する場合にそれぞれ固有の所定角度を回転する時間が略一致する複数の歯車等の回転体をアニメーション表示させるプログラムであって、
前記所定角度が互いに異なる複数の回転体のそれぞれのアニメーション用の画像データとして、各回転体のそれぞれ固有の所定角度を互いにほぼ等間隔に同じ分割数で分割した各回転角度位置での前記回転体の画像を示し、かつ、所定角度を各回転体で同じ分割数で分割することにより各回転体で同数にされた画像データを順次表示することで回転体をアニメーション表示する機能と、
前記回転体の任意の回転速度に応じて前記画像データを順次切り替えて表示していく場合に、同期して回転した状態に表示される回転体同士の前記画像データを切り替えるタイミングをほぼ同期させる機能とをコンピュータに実現させることを特徴とする回転体画像表示プログラム。 - 隣接して互いに同期して回転する各回転体にそれぞれ対応するとともに、互いに接触して同期して回転する仮想円の円周上に、各回転体の一回転に含まれる前記所定角度の数に、所定角度回転する回転体をアニメーション表示させるための前記画像データの数を乗算して得られた値となる数の仮想点をほぼ等間隔毎に設定しておくとともに、各仮想点がそれぞれアニメーション表示用の複数の前記画像データの1つに対応するものとし、
前記画像データを順次表示することで回転体をアニメーション表示する場合に、前記画像データの表示時における前記回転体の回転速度に応じた回転角度に対応する前記仮想点を求め、複数の前記画像データのうちの求められた仮想点に対応する前記画像データを表示する機能を前記コンピュータに実現させることを特徴とする請求項5に記載の回転体画像表示プログラム。 - 隣接して互いに同期して回転する回転体同士の間では、それぞれの回転体が所定角度分だけ回転する時間が等しくされ、かつ、互いに所定角度回転する際の位相が所定角度回転する時間の半分の時間だけずれるという条件を有する場合に、
隣接して互いに同期して回転する回転体にそれぞれ対応するとともに互いに接する仮想円同士の接点に最も近い前記仮想点を互いに接する仮想円毎に求め、
一方の仮想円に対して求められた仮想点と一方の仮想円に対応する回転体の回転角度に対応する前記位相との関係に基づくとともに、前記条件に基づいて、
他方の仮想円に対して求められた仮想点と他方の仮想円に対応する回転体の位相との関係を求めることにより前記条件に対応して互いに同期する回転体を表示する機能を前記コンピュータに実現させることを特徴とする請求項6に記載の回転体画像表示プログラム。 - 前記画像データを配色表と配色表式画像データとを有するインデックス画像として前記コンピュータの記憶手段に記憶し、
前記記憶手段に記憶されたインデックス画像の配色表上の色のデータを書き換えることにより、回転体の画像の色を変更する機能を前記コンピュータに実現させることを特徴とする請求項5〜7のいずれか1項に記載の回転体画像表示プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004048028A JP2005242456A (ja) | 2004-02-24 | 2004-02-24 | 回転体画像表示装置及び回転体画像表示プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004048028A JP2005242456A (ja) | 2004-02-24 | 2004-02-24 | 回転体画像表示装置及び回転体画像表示プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005242456A true JP2005242456A (ja) | 2005-09-08 |
Family
ID=35024168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004048028A Pending JP2005242456A (ja) | 2004-02-24 | 2004-02-24 | 回転体画像表示装置及び回転体画像表示プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005242456A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013524189A (ja) * | 2010-03-30 | 2013-06-17 | コム・レ・タン・エスアー | 電子ディスプレイを有する腕時計 |
-
2004
- 2004-02-24 JP JP2004048028A patent/JP2005242456A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013524189A (ja) * | 2010-03-30 | 2013-06-17 | コム・レ・タン・エスアー | 電子ディスプレイを有する腕時計 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109939440B (zh) | 三维游戏地图的生成方法、装置、处理器及终端 | |
KR100606803B1 (ko) | 스크롤 휠 장치를 이용한 기능 수행 기능을 갖는 이동통신단말기 및 이를 이용한 기능 수행 방법 | |
RU2393525C2 (ru) | Усовершенствованные средства навигации на основе клавиш | |
CN112291484B (zh) | 视频合成方法、装置、电子设备及存储介质 | |
US20150309697A1 (en) | Methods and apparatus for rendering applications and widgets on a mobile device interface in a three-dimensional space | |
AU2006230233B2 (en) | System and method for transferring web page data | |
US9594493B2 (en) | Graphical user interface with dial control for a parameter | |
US10181208B2 (en) | Custom heatmaps | |
US20090167768A1 (en) | Selective frame rate display of a 3D object | |
WO2009045695A1 (en) | Navigation for a non-traditionally shaped liquid crystal display for mobile handset devices | |
US20230236547A1 (en) | User interfaces for indicating time | |
WO2006113002A1 (en) | Methods of visualizing graphs | |
Villar | Learning Blender | |
CN102428439A (zh) | 在幻灯片过渡期间显示过渡图像 | |
CN106371700A (zh) | 一种界面显示内容确定方法及移动终端 | |
CN112862927B (zh) | 用于发布视频的方法、装置、设备和介质 | |
CN103294345A (zh) | 一种界面显示方法、装置及移动终端 | |
JP2003121568A (ja) | 時間情報表示装置及び時間情報表示方法、並びに時間情報表示プログラム | |
JP2011164129A (ja) | 表示制御装置およびその制御方法 | |
Brito | Blender Quick Start Guide: 3D modeling, animation, and render with Eevee in Blender 2.8 | |
JP2005242456A (ja) | 回転体画像表示装置及び回転体画像表示プログラム | |
CN111414104B (zh) | 一种电子地图局部显示方法及装置 | |
US8140995B1 (en) | Method and apparatus indicating scroll position on a display | |
CN114299203A (zh) | 虚拟模型的处理方法和装置 | |
CN114241174A (zh) | 特效道具生成方法、装置、设备和介质 |