(57)【要約】【課題】過去の回転操作で実現した状態についての情報量を小さく抑えることができる分子構造表示装置および分子構造表示プログラムを提供する。【解決手段】原子の種類並びに原子の位置および原子間を結合する結合軸の方向を表す座標を定義した分子構造データにより表された分子構造モデルを表示画面上に表示する分子構造表示装置において、ユーザ操作を受けて、表示画面上に現在表示されている分子構造モデルの一部分を指定し該一部分の回転を指示する指示する指示部と、一部分に回転変換を行って該一部分の新たな座標を作成する回転実行部と、表示画面上に表示されている分子構造モデルの一部分を、該新たな座標に基づく表示に変更する表示制御部と、一部分の、回転実行部により新たな座標が作成される前の座標から該回転実行部により作成された新たな座標への変換パラメータの履歴を記憶しておく履歴記憶部とを備えた。【選択図】図５
2009230211.tif 000002
【特許請求の範囲】
【請求項１】
原子の種類並びに原子の位置および原子間を結合する結合軸の方向を表す座標を定義した分子構造データにより表された分子構造モデルを表示画面上に表示する分子構造表示装置において、
ユーザ操作を受けて、前記表示画面上に現在表示されている分子構造モデルの一部分を指定し該一部分の回転を指示する指示する指示部と、
前記指示部による回転の指示に基づいて、前記一部分に回転変換を行って該一部分の新たな座標を作成する回転実行部と、
前記回転実行部による新たな座標の作成を受けて、前記表示画面上に表示されている分子構造モデルの前記一部分を、該新たな座標に基づく表示に変更する表示制御部と、
前記一部分の、前記回転実行部により新たな座標が作成される前の座標から該回転実行部により作成された新たな座標への変換パラメータの履歴を記憶しておく履歴記憶部とを備えたことを特徴とする分子構造表示装置。
【請求項２】
前記指示部が、前記表示画面上に、前記回転実行部で作成された新たな座標に基づく表示に変更された後の分子構造モデルが表示されている状態における、ユーザによる回転取消しの操作を受けて、該回転の取消しを指示するものであって、
前記回転実行部は、前記指示部による回転取消しの指示に基づいて前記履歴記憶部に記憶されている今回の取消対象の回転の変換パラメータを参照し、該回転の逆変換を行って回転前の元の座標を作成するものであり、
前記表示制御部は、前記回転実行部による元の座標の作成を受けて、前記表示画面上に表示されている分子構造モデルの今回の取消対象の一部分を該元の座標に基づく表示に変更するものであることを特徴とする請求項１記載の分子構造表示装置。
【請求項３】
前記指示部が、前記表示画面上に、前記回転実行部で作成された元の座標に基づく表示に変更された後の分子構造モデルが表示されている状態における、ユーザによる、取り消した回転の再実行の操作を受けて、該再実行を指示するものであって、
前記回転実行部は、前記指示部による、取り消した回転の再実行の指示に基づいて前記履歴記憶部に記憶されている取り消した回転の変換パラメータを参照し、再度回転変換を行って回転後の新たな座標を作成するものであり、
前記表示制御部は、前記回転実行部による再度の新たな座標の作成を受けて、前記表示画面上に表示されている分子構造モデルの今回の回転対象の一部分を新たな座標に基づく表示に変更するものであることを特徴とする請求項２記載の分子構造表示装置。
【請求項４】
前記指示部による回転の指示を受けて、今回の回転対象の一部分を構成する原子が回転可能な原子であるか否かを判定する判定部とを備え、
前記回転実行部は、前記判定部による判定結果を受けて、前記前記一部分を構成する原子が回転可能な原子である場合にのみ、該一部分に回転変換を行うものであることを特徴とする請求項１から３のうちいずれか一項記載の分子構造表示装置。
【請求項５】
前記判定部は、今回の回転対象の一部分を構成する原子が、環状構造を形成している原子群の中のいずれかの原子であるか否かに応じて、環状構造を形成している原子群の中のいずれかの原子である場合には回転不能と判定し、環状構造を形成している原子群の中のいずれかの原子ではない場合には回転可能と判定するものであることを特徴とする請求項４記載の分子構造表示装置。
【請求項６】
コンピュータシステム内で実行され、該コンピュータシステムに、原子の種類並びに原子の位置および原子間を結合する結合軸の方向を表す座標を定義した分子構造データにより表された分子構造モデルを表示画面上に表示させる分子構造表示装置プログラムにおいて、そのコンピュータシステム上に、
ユーザ操作を受けて、前記表示画面上に現在表示されている分子構造モデルの一部分を指定し該一部分の回転を指示する指示する指示部と、
前記指示部による回転の指示に基づいて、前記一部分に回転変換を行って該一部分の新たな座標を作成する回転実行部と、
前記回転実行部による新たな座標の作成を受けて、前記表示画面上に表示されている分子構造モデルの前記一部分を、該新たな座標に基づく表示に変更する表示制御部と、
前記一部分の、前記回転実行部により新たな座標が作成される前の座標から該回転実行部により作成された新たな座標への変換パラメータの履歴を記憶しておく履歴記憶部とを構築することを特徴とする分子構造表示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、原子の種類並びに原子の位置および原子間を結合する結合軸の方向を表す座標を定義した分子構造データにより表された分子構造モデルを表示画面上に表示するための分子構造表示装置および分子構造表示プログラムに関する。
【背景技術】
【０００２】
近年、様々な学術分野や産業分野において、新たな材料や製品の研究開発にあたり、コンピュータ上でシミュレーションを行ってその材料や製品の効果や性質を確認したり、その材料や製品のさらなる改良を模索するといったことが頻繁に行われている。
【０００３】
例えば、化学産業や製薬産業では、２原子間が仮想的な結合軸によって結合された複数の原子の連なりとして分子構造を表現した分子構造モデルを、コンピュータの表示画面上にグラフィック表示し、その分子構造モデルの一部分に変形を加えたときの分子のエネルギーの変化や安定性を分子軌道計算等の種々の計算方法を用いて調べることがよく行われている。このようにコンピュータ上で分子構造を変形させることにより、実験室で実際の材料の作成を行わなくとも、望ましい性質を持つ新たな材料を模索することが可能となる。また、この方式では、分子構造の変化を視覚的に把握しながら分子の性質の変化を定量的に求めることできるので、望ましい性質を持つ材料の研究開発にとって大きな助けとなる。分子構造モデルの変形の中でも、分子構造モデルの一部分を回転させる回転変形の需要が多く、最近では、ユーザが、コンピュータの表示画面上に表示された分子構造モデルの画像を見ながらその分子構造モデルに所望の回転変形を施しその回転変形の様子を表示画面上で確認することができる分子構造表示装置が提案されている（例えば、特許文献１参照）。
【０００４】
特許文献１をはじめ従来の分子構造表示装置では、原子の種類や、原子の位置および原子間を結合する結合軸の方向を表す座標を定義した分子構造データに基づき分子構造モデルの画像がコンピュータの表示画面上に表示される。そして、上記の回転変形の際には、その分子構造データ中における、回転対象の原子や結合軸を表す座標に対してユーザの回転指示に応じた回転変換が施されて各座標が書き換えられ、その書き換え後の分子構造データに基づき新たな分子構造モデルの画像がコンピュータの表示画面上に表示される。ここで、従来の分子構造表示装置で用いられる分子構造データのデータ構成について説明する。
【０００５】
図１は、従来の分子構造表示装置で用いられる分子構造データのデータ構成を表した図である。
【０００６】
従来の分子構造表示装置で用いられる分子構造データは、大きく分けて、ＧＵＩ用データ３０Ｇ、イベントデータ３０Ｅ、分子データ３０Ｍ、原子データ３０Ａ、および、結合軸データ３０Ｂで構成されている。図１のパート（ａ）では、ＧＵＩ用データ３０Ｇ、イベントデータ３０Ｅ、分子データ３０Ｍの構成が表されており、図１のパート（ｂ）では、原子データ３０Ａ、および、結合軸データ３０Ｂの構成が表されている。
【０００７】
ＧＵＩ用データ３０Ｇは、分子を構成する原子や結合軸についての形、色、大きさ、分子構造モデルの背景の色などといったグラフィック表示用の表現形式を規定するデータである。
【０００８】
イベントデータ３０Ｅは、変換操作数情報部３０１Ｅ、ＵＮＤＯ操作数情報部３０２Ｅ、および分子データアドレス情報部３０３Ｅを備えている。ここで、変換操作数情報部３０１Ｅは、分子構造モデルの一部についてのユーザによる回転操作の回数の情報が記録されており、ＵＮＤＯ操作数情報部３０２Ｅには、分子構造モデルの一部分の回転後にユーザが回転前の状態に戻す（ＵＮＤＯ）ことを指示する操作をしたときの、そのＵＮＤＯ操作の累積的な回数の情報が記録されている。また、分子データアドレス情報部３０３には、分子データ３０Ｍがどこに格納されているかを表す分子データ３０Ｍのアドレス情報が記録されている。
【０００９】
分子データ３０Ｍは、総原子数情報部３０１Ｍ、総結合軸数情報部３０２Ｍ、原子データアドレス情報部３０３Ｍ、および、結合軸データアドレス情報部３０４Ｍを備えている。ここで、総原子数情報部３０１Ｍは、分子中の総原子数の情報が記録されており、総結合軸数情報部３０２Ｍには、分子中の総結合軸数の情報が記録されている。また、原子データアドレス情報部３０３Ｍ、および、結合軸データアドレス情報部３０４Ｍには、それぞれ、原子データ３０Ａがどこに格納されているかを表す原子データ３０Ａのアドレス情報、および結合軸データ３０Ｂがどこに格納されているかを表す結合軸データ３０Ｂのアドレス情報が記録されている。
【００１０】
原子データ３０Ａは、分子を構成する個々の原子の情報を有する個別原子データ３００Ａによって構成されており、原子データ３０Ａには、この個別原子データ３００Ａが、分子を構成する原子それぞれに対して１つずつ備えられている。個別原子データ３００Ａは、原子識別番号情報部３０１Ａ、原子番号情報部３０２Ａ、結合軸数情報部３０３Ａ、原子用結合情報部３０４Ａ、および原子座標情報部３０５Ａから構成されている。ここで、原子識別番号情報部３０１Ａには個々の原子を識別する番号の情報が記録されており、原子番号情報部３０２Ａには原子番号を表す情報が記録されている。また、結合軸数情報部３０３Ａには、原子が有する結合軸の数を表す情報が記録されており、原子用結合情報部３０４Ａには、その結合軸を識別する結合軸識別番号の情報が記録されている。また、原子座標情報部３０５Ａには、原子の位置を表す座標の情報が記録されている。
【００１１】
結合軸データ３０Ｂは、分子中の個々の結合軸の情報を有する個別結合軸データ３００Ｂによって構成されており、結合軸データ３０Ｂには、この個別結合軸データ３００Ｂが、分子中の結合軸それぞれに対して１つずつ備えられている。この個別結合軸データ３００Ｂは、結合軸識別番号情報部３０１Ｂ、結合軸用結合情報部３０２Ｂ、および、結合軸ベクトル情報部３０３Ｂから構成されている。ここで、結合軸識別番号情報部３０１Ｂには個々の結合軸を識別する番号の情報が記録されており、結合軸用結合情報部３０２Ｂには、その結合軸の端の原子を識別する原子識別番号の情報が記録されている。また、結合軸ベクトル情報部３０３Ｂには、結合軸の長さと方向を表すベクトルの座標成分の情報が記録されている。
【００１２】
図１に示すデータ構成では、ユーザの回転操作が行われる度に、原子座標情報部３０５Ａに記録されている原子座標や、結合軸ベクトル情報部３０３Ｂに記録されている結合軸ベクトルが書き換えられた原子データと結合軸データの組が累積的に生成されていく。そして、その新たに生成された原子データと結合軸データに基づいて、ユーザの回転操作に対応した新たな分子構造モデルの画像が表示画面上に表示される。
【特許文献１】特開平５−１７４１１０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述した、分子構造表示装置の表示画面上での分子構造の変形操作は、望ましい分子構造を見つけるためにユーザが試行錯誤で行うことが多い。そこで、一旦、回転操作を行った後で回転前の状態に戻す（ＵＮＤＯ）機能が分子構造表示装置に備えられているとユーザにとって便利である。また、ＵＮＤＯ機能としては、１回前の状態に戻る機能だけでなく、２回前、３回前など複数回前の状態にまで後戻りできるとさらに便利である。
【００１４】
このように過去の状態にＵＮＤＯで戻る機能を備えるには、各回転操作で実現した状態の情報をあらかじめ保持しておくことが必要となる。例えば、図１に示すデータ構成では、ユーザの回転操作が行われる度に、原子座標情報部３０５Ａに記録されている原子座標や、結合軸ベクトル情報部３０３Ｂに記録されている結合軸ベクトルが書き換えられた原子データと結合軸データの組を新たに生成し、そのデータの組を回転操作に対応付けて、その都度、記録することが必要となる。しかしながら、この方式では、操作数とともに、原子データと結合軸データの組が増加していくこととなり、このような情報量の大きいデータを記録するために大きな記憶領域を確保しなければならないという欠点がある。
【００１５】
上記事情に鑑み、過去の回転操作で実現した状態についての情報量を小さく抑えることができる分子構造表示装置および分子構造表示プログラムを提供する。
【課題を解決するための手段】
【００１６】
上記目的を達成する分子構造表示装置の基本形態は、
原子の種類並びに原子の位置および原子間を結合する結合軸の方向を表す座標を定義した分子構造データにより表された分子構造モデルを表示画面上に表示する分子構造表示装置において、
ユーザ操作を受けて、上記表示画面上に現在表示されている分子構造モデルの一部分を指定し該一部分の回転を指示する指示する指示部と、
上記指示部による回転の指示に基づいて、上記一部分に回転変換を行って該一部分の新たな座標を作成する回転実行部と、
上記回転実行部による新たな座標の作成を受けて、上記表示画面上に表示されている分子構造モデルの上記一部分を、該新たな座標に基づく表示に変更する表示制御部と、
上記一部分の、上記回転実行部により新たな座標が作成される前の座標から該回転実行部により作成された新たな座標への変換パラメータの履歴を記憶しておく履歴記憶部とを備えている。
【００１７】
この基本形態によれば、変換パラメータの形式で回転変換の履歴が記憶される。このため、分子構造モデル全体のデータを、回転変換を行うごとに保持する必要がない。この結果、この分子構造表示装置の基本形態では、過去の回転操作で実現した状態についての情報量を小さく抑えることができる。
【発明の効果】
【００１８】
以上説明したように、過去の回転操作で実現した状態についての情報量を小さく抑えることができる。
【発明を実施するための最良の形態】
【００１９】
分子構造表示装置および分子構造表示プログラムに対する具体的な実施形態を、以下図面を参照して説明する。
【００２０】
図２は、分子構造表示装置の一実施形態として動作するパーソナルコンピュータ１００の外観斜視図、図３は、そのハードウェア構成図である。
【００２１】
このパーソナルコンピュータ１００は、後述するＣＰＵ、ＲＡＭメモリ、ハードディスク等を内蔵した本体部１１０、本体部１１０からの指示により表示画面１２１に画面表示を行なう画像表示装置１２０、このパーソナルコンピュータ１００内にユーザの指示や文字情報を入力するためのキーボード１３０、表示画面１２１上の任意の位置を指定することによりその位置に応じた指示を入力するマウス１４０を備えている。
【００２２】
本体部１１０は、さらにフレキシブルディスク（以下ＦＤと略す）が装填されるＦＤ装填口１１１、ＣＤ−ＲＯＭが装填されるＣＤ−ＲＯＭ装填口１１２を有しており、その内部には、装填されたＦＤやＣＤ−ＲＯＭをドライブする、後述するＦＤドライブ、ＣＤ−ＲＯＭドライブも内蔵されている。
【００２３】
本体部１１０の内部には、図３に示すように、各種プログラムを実行するＣＰＵ２１１、ハードディスク装置２１３に格納されたプログラムが読み出されＣＰＵ２１１での実行のために展開される主メモリ２１２、各種プログラムやデータ等が保存されたハードディスク装置２１３、ＦＤ２１４０が装填され、その装填されたＦＤ２１４０にアクセスするＦＤドライブ２１４、ＣＤ−ＲＯＭ２１５０が装填され、その装填されたＣＤ−ＲＯＭ２１５０にアクセスするＣＤ−ＲＯＭドライブ２１５が内蔵されている。これらの各種要素と、さらに、図２にも示す画像表示装置１２０、キーボード１３０、マウス１４０は、バス１２００を介して相互に接続されている。また、パーソナルコンピュータ１００には、パーソナルコンピュータ１００が外部機器と間でデータのやりとりを行うための入出力インタフェース２１６が内蔵されている。この入出力インタフェース２１６も、パーソナルコンピュータ１００内部のハードウェアを構成する上述の各種要素と、バス１２００を介して相互に接続されている。
【００２４】
次に、分子構造表示プログラムの一実施形態について説明する。
【００２５】
この分子構造表示プログラムの一実施形態が、例えばＣＤ−ＲＯＭ２１５０に記憶されている場合には、このＣＤ−ＲＯＭ２１５０がＣＤ−ＲＯＭ装填口１１２から本体１１０内に装填されると、そのＣＤ−ＲＯＭ２１５０に記憶された分子構造表示プログラムがＣＤ−ＲＯＭドライブ２１５によりこのパーソナルコンピュータ１００のハードディスク装置２１３内にインストールされる。そして、このハードディスク装置２１３内にインストールされた分子構造表示プログラムが起動されると、このパーソナルコンピュータ１００は、分子構造表示装置の一実施形態として動作する。
【００２６】
図４は、分子構造表示プログラムの一実施形態を示す図である。
【００２７】
ここでは、この分子構造表示プログラム９００は、ＣＤ−ＲＯＭ２１５０に記憶されている。なお、分子構造表示プログラム９００が記憶される記憶媒体としては、図４に示すＣＤ−ＲＯＭ２１５０のみならず、図３に示すハードディスク装置２１３やＦＤ２１４０、図２および図３には不図示のＤＶＤやＭＯ等といった種々の記憶媒体が採用されうる。
【００２８】
この分子構造表示プログラム９００は、図２および図３に示すパーソナルコンピュータ１００内で実行され、上述したように、そのパーソナルコンピュータ１００を分子構造表示装置の一実施形態として動作させるものであり、回転指定情報取得部２１、初期データ構成部２２、回転可能性判定部２３、回転準備部２４、回転実行部２５、ＵＮＤＯ準備部２６、ＲＥＤＯ準備部２７、および表示制御部２８を有している。
【００２９】
この分子構造表示プログラム９００の各要素の詳細な内容については、後で、パーソナルコンピュータ１００内の各部の作用と一緒に説明する。
【００３０】
図５は、図２および図３に示すパーソナルコンピュータ１００を分子構造表示装置の一実施形態として動作させるためにこのパーソナルコンピュータ１００上に構築される要素と、それらの要素による作用の概略を表す図である。
【００３１】
図４に示す分子構造表示プログラム９００が図２および図３に示すパーソナルコンピュータ１００にインストールされると、回転指定情報取得部１１、初期データ構成部１２、回転可能性判定部１３、回転準備部１４、回転実行部１５、ＵＮＤＯ準備部１６、ＲＥＤＯ準備部１７、および表示制御部１８の各要素がパーソナルコンピュータ１００上に構築され、このパーソナルコンピュータ１００が、基本形態について上述した分子構造表示装置の一実施形態として動作する。具体的には、パーソナルコンピュータ１００内のＣＰＵ２１１が上記の各要素として機能することで、分子構造表示装置の一実施形態としての動作が実現される。回転指定情報取得部１１、初期データ構成部１２、回転可能性判定部１３、回転準備部１４、回転実行部１５、ＵＮＤＯ準備部１６、ＲＥＤＯ準備部１７、および表示制御部１８は、図４に示す分子構造表示プログラム９００における、回転指定情報取得部２１、初期データ構成部２２、回転可能性判定部２３、回転準備部２４、回転実行部２５、ＵＮＤＯ準備部２６、ＲＥＤＯ準備部２７、および表示制御部２８それぞれによってパーソナルコンピュータ１００上に構築されるものである。従って図４の各要素は図５の各要素に対応するが、この図５の各要素は、図２および図３に示すパーソナルコンピュータ１００のハードウェアとそのパーソナルコンピュータ１００で実行されるＯＳやアプリケーションプログラムとの組合せで構成されているのに対し、図４に示す分子構造表示プログラム９００の各要素はそれらのうちのアプリケーションプログラムのみにより構成されている点が異なる。
【００３２】
以下では、図５に示す各要素と、各要素による作用の概略について説明する。
【００３３】
初期データ構成部１２により、分子の詳細を表す分子情報が取得され、その分子情報に基づき、分子構造データの初期データが構成される。ここで、この分子情報は、ユーザによりパーソナルコンピュータ１００にあらかじめ入力されている情報である。また、上記の分子構造データは、２原子間が仮想的な結合軸によって結合された複数の原子の連なりとして分子構造を表現した分子構造モデルを、パーソナルコンピュータ１００の表示画面１２１上にグラフィック表示するための基になるデータであり、そのデータ中では、原子の種類や、原子の位置を表す３次元座標や、原子間を結合する結合軸の方向や長さを表すベクトルが定義されている。また、上記の初期データは、分子中の原子が所定位置に配置されている分子構造モデル（例えば、分子のエネルギー的に最も安定した状態にあるときの原子の配置に対応した分子構造モデル）を表すデータである。初期データ構成部１２により構成された初期データは、主メモリ２１２に記録されるとともに、表示制御部１８に渡され、表示制御部１８による画像表示装置１２０の制御により、図２の表示画面１２１上に表示される。
【００３４】
回転指定情報取得部１１には、実行すべき回転を指定する回転指定情報を取得する。この回転指定情報は、ユーザが、図２の表示画面１２１上に表示される分子構造モデルの画像を見ながら指定した、分子構造モデルの一部分に対する回転の内容を表す情報である。具体的には、回転の種類（例えば、結合軸を回転軸とする回転）の指定、その回転の種類に対応した原子や結合軸（例えば、回転軸となる結合軸）の指定、回転角度の指定、といった情報である。また、回転指定情報取得部１１は、回転可能性判定部１３に、回転指定情報に基づく回転が実行可能であるか否かの判定を指示する。
【００３５】
回転可能性判定部１３は、回転指定情報取得部１１の指示を受けて、現在、主メモリ２１２中に記録されている分子構造データを解析して回転指定情報に基づく回転が実行可能であるか否かを判定する。回転可能性判定部１３は、回転可能であると判定した場合は、回転準備部１４に、回転指定情報で指定された回転の準備を指示し、回転不可能であると判定した場合は、回転準備部１４に、回転指定情報で指定された回転の準備の中止を指示する。
【００３６】
回転準備部１４は、回転の準備が指示されると、回転指定情報に基づき、回転変換を行うのに必要な回転行例を求め、さらに、回転対象となる原子の座標や結合軸のベクトルを把握する。そして、回転準備部１４は、回転実行部１５に、その回転行列を用いて回転対象となる原子の座標や結合軸のベクトルを変換することを指示する。ここで、回転行例などの回転変換に関する情報は、回転の準備が指示されるたびに累積的に、主メモリ２１２中の分子構造データに書き加えられていく。
【００３７】
回転実行部１５は、回転準備部１４の指示を受けて、回転準備部１４が求めた回転行例を、分子構造データ中における、回転対象の結合軸のベクトルに作用させてこれらのベクトルを書き換える。さらにこのベクトルを書き換えに対応して、回転対象の原子の座標の書き換えも実行する。また、回転実行部１５は、後述するように、ＵＮＤＯ準備部１６やＲＥＤＯ準備部１７の指示を受けて、これらの各部で求められた行列を用いた、結合軸のベクトルや原子の座標の書き換えも実行する。
【００３８】
表示制御部１８は、回転実行部１５により書き換えが行われた分子構造データに基づく新たな分子構造モデルの画像を、書き換えが行われる前の分子構造データに基づく分子構造モデルの画像に代えて表示する。このような分子構造モデルの表示は、ユーザによる回転の指定と、それに伴って回転実行部１５により行われる分子構造データの書き換えとが行われるごとに実行される。
【００３９】
ＵＮＤＯ準備部１６は、ユーザによる回転取消しの操作（ＵＮＤＯ指示）を受けて、先に行われた回転についての情報を主メモリ２１２中の分子構造データから読み取り、その回転の逆変換を与える逆行列を求め、さらに、先の回転で回転対象となった原子の座標や結合軸のベクトルを把握する。そして、ＵＮＤＯ準備部１６は、回転実行部１５に、その逆行列を用いて回転対象となる原子の座標や結合軸のベクトルを変換することを指示する。
【００４０】
ＲＥＤＯ準備部１７は、ユーザによる、先に取り消した回転の再実行の操作（ＲＥＤＯ指示）を受けて、その回転についての情報を主メモリ２１２中の分子構造データから読み取り、その回転に対応する行列と、その回転で回転対象となった原子の座標や結合軸のベクトルとを把握する。そして、ＲＥＤＯ準備部１７は、回転実行部１５に、その把握された行列を用いて回転対象となる原子の座標や結合軸のベクトルを変換することを指示する。
【００４１】
ここで、回転指定情報取得部１１と、回転可能性判定部１３と、回転準備部１４と、ＵＮＤＯ準備部１６と、ＲＥＤＯ準備部１７とを合わせたものが、上述した分子構造表示装置の基本形態における指示部の一例に相当する。また、回転行例などの回転変換に関する情報を累積的に主メモリ２１２中の分子構造データに書き加えられていくときの回転準備部１４と、主メモリ２１２とを合わせたものが、上述した分子構造表示装置の基本形態における履歴記憶部の一例に相当する。また、回転実行部１５が、上述した分子構造表示装置の基本形態における回転実行部の一例に相当し、表示制御部１８が、上述した分子構造表示装置の基本形態における表示制御部の一例に相当する。
【００４２】
次に、図２および図３に示すパーソナルコンピュータ１００で処理される分子構造データの構成について説明する。
【００４３】
図６は、図２および図３に示すパーソナルコンピュータ１００で処理される分子構造データのデータ構成を表した図である。
【００４４】
パーソナルコンピュータ１００で処理される分子構造データは、大きく分けて、ＧＵＩ用データ４０Ｇ、テンポラリデータ４０Ｔ、イベントデータ４０Ｅ、分子データ４０Ｍ、原子データ４０Ａ、結合軸データ４０Ｂ、および回転軸データ４０Ｒで構成されている。図６のパート（ａ）では、ＧＵＩ用データ４０Ｇ、テンポラリデータ４０Ｔ、イベントデータ４０Ｅ、分子データ４０Ｍの構成が表されており、図６のパート（ｂ）では、原子データ４０Ａ、結合軸データ４０Ｂ、および回転軸データ４０Ｒの構成が表されている。
【００４５】
ＧＵＩ用データ４０Ｇは、分子を構成する原子や結合軸についての形、色、大きさ、分子構造モデルの背景の色などといったグラフィック表示用の表現形式を規定するデータである。このＧＵＩ用データ４０Ｇは、図１の従来の分子構造データにおけるＧＵＩ用データ３０Ｇと同じものである。
【００４６】
テンポラリデータ４０Ｔは、補助フラグ情報部４０１Ｔ、ベクトル情報部４０２Ｔ、および回転行列情報部４０３Ｔを備えている。ここで、補助フラグ情報部４０１Ｔには、ユーザにより指定された回転の種類の情報が一時的に記録され、ベクトル情報部４０２Ｔには、回転軸について、その長さと方向を表すベクトルの座標成分の情報が一時的に記録される。また、回転行列情報部４０３Ｔには、回転行列の行列成分の情報が一時的に記録される。
【００４７】
イベントデータ４０Ｅは、チェックフラグ情報部４０１Ｅ、識別情報部４０２Ｅ、回転軸データアドレス情報部４０３Ｅ、および回転行列情報部４０４Ｅを備えている。ここで、チェックフラグ情報部４０１Ｅは、ユーザにより指定された回転の種類の情報が記録されており、識別情報部４０２Ｅには、ユーザにより指定された回転角度の情報が記録されている。また、回転軸データアドレス情報部４０３Ｅには、回転軸データ４０Ｒがどこに格納されているかを表す分子データ４０Ｍのアドレス情報が記録されており、回転行列情報部４０４Ｅには、回転行列の行列成分の情報が記録されている。
【００４８】
分子データ４０Ｍは、総原子数情報部４０１Ｍ、総結合軸数情報部４０２Ｍ、変換操作数情報部４０３Ｍ、ＵＮＤＯ操作数情報部４０４Ｍ，原子データアドレス情報部４０５Ｍ、結合軸データアドレス情報部４０６Ｍ、および、回転行列情報部４０７Ｍを備えている。ここで、総原子数情報部４０１Ｍは、分子中の総原子数の情報が記録されており、総結合軸数情報部４０２Ｍには、分子中の総結合軸数の情報が記録されている。また、変換操作数情報部４０３Ｍには、分子構造モデルの一部についてのユーザによる回転操作の回数の情報が記録されており、ＵＮＤＯ操作数情報部４０４Ｍには、ユーザがＵＮＤＯを指示する操作（ＵＮＤＯ操作）をしたときの、そのＵＮＤＯ操作の累積的な回数の情報が記録されている。また、原子データアドレス情報部４０５Ｍ、および、結合軸データアドレス情報部４０６Ｍには、それぞれ、原子データ４０Ａがどこに格納されているかを表す原子データ４０Ａのアドレス情報、および結合軸データ４０Ｂがどこに格納されているかを表す結合軸データ４０Ｂのアドレス情報が記録されている。また、回転行列情報部４０４Ｅには、回転行列の行列成分の情報が記録されている。。
【００４９】
原子データ４０Ａは、分子を構成する個々の原子の情報を有する個別原子データ４００Ａによって構成されており、原子データ４０Ａには、この個別原子データ４００Ａが、分子を構成する原子それぞれに対して１つずつ備えられている。個別原子データ４００Ａは、チェックフラグ情報部４０１Ａ、判定フラグ情報部４０２Ａ、原子識別番号情報部４０３Ａ、原子番号情報部４０４Ａ、結合軸数情報部４０５Ａ、原子用結合情報部４０６Ａ、および原子座標情報部４０７Ａから構成されている。ここで、チェックフラグ情報部４０１Ａには、ユーザにより指定された原子であるか否かといった情報が記録されており、判定フラグ情報部４０２Ａには、種々の処理の対象（例えば、回転の対象）となっている原子であるか否かといった情報が記録されている。また、原子識別番号情報部４０３Ａには個々の原子を識別する番号の情報が記録されており、原子番号情報部４０４Ａには原子番号を表す情報が記録されている。また、結合軸数情報部４０５Ａには、原子が有する結合軸の数を表す情報が記録されており、原子用結合情報部４０６Ａには、その結合軸を識別する結合軸識別番号の情報が記録されている。また、原子座標情報部４０７Ａには、原子の位置を表す座標の情報が記録されている。
【００５０】
結合軸データ４０Ｂは、分子中の個々の結合軸の情報を有する個別結合軸データ４００Ｂによって構成されており、結合軸データ４０Ｂには、この個別結合軸データ４００Ｂが、分子中の結合軸それぞれに対して１つずつ備えられている。この個別結合軸データ４００Ｂは、チェックフラグ情報部４０１Ｂ、判定フラグ情報部４０２Ｂ、結合軸識別番号情報部４０３Ｂ、結合軸用結合情報部４０４Ｂ、および、結合軸ベクトル情報部４０５Ｂから構成されている。ここで、チェックフラグ情報部４０１Ｂには、ユーザにより指定された結合軸であるか否かといった情報が記録されており、判定フラグ情報部４０２Ａには、種々の処理の対象（例えば、回転の対象）となっている結合軸であるか否かといった情報が記録されている。また、結合軸識別番号情報部４０３Ｂには個々の結合軸を識別する番号の情報が記録されており、結合軸用結合情報部４０４Ｂには、その結合軸の端の原子を識別する原子識別番号の情報が記録されている。また、結合軸ベクトル情報部４０５Ｂには、結合軸の長さと方向を表すベクトルの座標成分の情報が記録されている。なお、図６では省略したが、２重結合や３重結合といった結合のタイプに関する情報が記録されたタイプ情報領域が、個別結合軸データ４００Ｂ内に設けられていてもよい。
【００５１】
回転軸データ４０Ｒは、チェックフラグ情報部４０１Ｒ、判定フラグ情報部４０２Ｒ、回転軸識別番号情報部４０３Ｒ、回転軸用結合情報部４０４Ｒ、および、回転軸ベクトル情報部４０５Ｒから構成されている。後述するように、このパーソナルコンピュータ１００では、上述した回転の種類としてユーザは、原子を中心とする回転や、結合軸を回転軸とする回転を指定できる。上記の回転軸データ４０Ｒ中の各部には、ユーザが結合軸を回転軸とする回転を指定したときに、その回転軸となる結合軸について、個別結合軸データ４００Ｂ内のチェックフラグ情報部４０１Ｂ、判定フラグ情報部４０２Ｂ、結合軸識別番号情報部４０３Ｂ、結合軸用結合情報部４０４Ｂの各情報部に記録されている情報が、そのまま記録される。
【００５２】
なお、図６のパート（ｂ）では、簡単のために原子データ４０Ａと結合軸データ４０Ｂと回転軸データ４０Ｒとが隣接して全体として一体のデータとなっているが、例えば、原子データ４０Ａが記録されているメモリとは別のメモリに結合軸データ４０Ｂや回転軸データ４０Ｒが記録されている記録形式のように、これらのデータが一体となっていない記録形式でもよい。
【００５３】
図６に示すデータ構成では、ユーザの回転操作が行われる度に、原子座標情報部４０５Ａに記録されている原子座標や、結合軸ベクトル情報部４０３Ｂに記録されている結合軸ベクトルが書き換えられる。そして、その新たに生成された原子データと結合軸データに基づいて、ユーザの回転操作に対応した新たな分子構造モデルの画像が表示画面上に表示される。このとき、回転の情報（回転行列など）がイベントデータ４０Ｅに累積的に記録され、回転軸の情報が回転軸データ４０Ｒに累積的に記録される。従って、図６に示すデータ構成では、ユーザの回転操作が行われる度に増加するのは、イベントデータ４０Ｅや回転軸データ４０Ｒであって、原子データ４０Ａや結合軸データ４０Ｂではない。この点が、図１に示すデータ構成とは大きく異なる点である。
【００５４】
一般に、分子中の原子数が多いと結合軸数も多く、このため、個別原子データ４００Ａや個別結合軸データ４００Ｂの数も多くなる。このような個別原子データ４００Ａや個別結合軸データ４００Ｂがユーザの回転操作が行われる度に増加すると、そのデータ量を保持するために非常に大きな記憶容量が必要となる。一方、パーソナルコンピュータ１００で処理される分子構造データでは、回転の履歴だけが、イベントデータ４０Ｅや回転軸データ４０Ｒとして増加するのでそれほど大きな記憶容量が必要ではない。そこで、パーソナルコンピュータ１００では、過去の回転操作で実現した状態についての情報量を小さく抑えることが可能となっている。なお、上述した分子構造表示装置の基本形態では、回転操作が繰り返されることで分子構造データの情報量が図５の主メモリ２１２の記憶容量を超えてしまうことを防ぐために、回転操作の回数の上限値が設定されていてもよい。
【００５５】
次に、図５の初期データ構成部１２で行われる初期データの構成の手順について説明する。
【００５６】
図７は、初期データの構成の手順を示すフローチャートである。
【００５７】
まず、初期データ構成部１２は、図６で説明した、ＧＵＩ用データ４０Ｇ、テンポラリデータ４０Ｔ、イベントデータ４０Ｅ、分子データ４０Ｍ、原子データ４０Ａ、結合軸データ４０Ｂ、および回転軸データ４０Ｒの各種のデータ用の領域を、データ中に確保（宣言）し、さらに、各データを上述したような各情報部に区分する（図７のステップＳ１１）。次に、初期データ構成部１２は、各データ中の各種のフラグ情報部での初期値や、各種の操作数情報部での初期値を設定する（図７のステップＳ１２）。具体的には、各種のフラグ情報部での初期値としては、設定値が与えられていないことを意味する「Ｎｕｌｌ」が書き込まれ、各種の操作数情報部には、初期値として「０」が書き込まれる。また、テンポラリデータ４０Ｔ内のベクトル情報部４０２Ｔには、初期値として「Ｎｕｌｌ」が書き込まれ、各データ中の回転行列情報部には、初期値として、単位行列を表す「Ｉ」が書き込まれる。
【００５８】
パーソナルコンピュータ１００には、ユーザにより、分子の詳細を表す分子情報があらかじめ入力されており、具体的には、この分子情報には、分子を構成する原子の原子番号の情報や、各原子を座標で表現したときの各原子の座標の情報が含まれている。初期データ構成部１２は、その分子情報から、分子を構成する原子の原子番号の情報や、各原子を座標で表現したときの各原子の座標を取得し、上記のデータ中の原子番号情報部４０４Ａや、原子座標情報部４０７Ａに書き込む（図７のステップＳ１３）。
【００５９】
次に、初期データ構成部１２は、分子を構成する各原子に識別番号を割り当て、総原子数を算出する（図７のステップＳ１４）。この識別番号は原子番号識別情報部４０３Ａに書き込まれ、総原子数は、総原子数情報部４０１Ｍに書き込まれる。そして、初期データ構成部１２は、分子を構成する全ての原子について原子間の距離を計算し、原子間の距離が所定距離以下の２つの原子間について結合軸を設定する（図７のステップＳ１５）。さらに初期データ構成部１２は、結合軸に結合軸識別番号を割り当てを行うとともに、その結合軸の長さと方向を表すベクトル（結合軸ベクトル）と、分子中の総結合軸数を算出する（図７のステップＳ１６）。割り当てられた結合軸識別番号は、結合軸識別番号情報部４０３Ｂに書き込まれ、結合軸ベクトルは、結合軸ベクトル情報部４０５Ｂに書き込まれる。また、総結合軸数は、総結合軸数情報部４０３Ｍに書き込まれる。
【００６０】
次に、初期データ構成部１２は、分子中の各原子について、各原子が有する結合軸とその数とを求め、求められた結合軸の識別番号を原子用結合情報部４０６Ａに書き込み、各原子が有する結合軸の数を結合軸数情報部４０５Ａに書き込む。また、初期データ構成部１２は、分子中の各結合軸について、各結合軸につながっている原子を求め、求められた原子の識別番号を結合軸用結合情報部４０３Ｂに書き込む（図７のステップＳ１７）。
【００６１】
以上の過程が踏まれることで、初期データが完成し、この初期データに基づき、分子構造モデルの画像が、図５の表示制御部１８による画像表示装置１２０の制御により、図２の表示画面１２１上に表示される（図７のステップＳ１８）。
【００６２】
次に、このパーソナルコンピュータ１００で行われる、分子構造モデルの一部分を回転変形について、蟻酸（元素記号はＨＣＯＯＨ）を例にとって説明する。
【００６３】
図８は、図２の表示画面１２１上に表示される分子構造モデルを示した図である。
【００６４】
この図には、蟻酸（ＨＣＯＯＨ）について、図７の過程で完成した、分子構造データの初期データに基づき、ウィンドウ１２００Ａの分子構造モデル表示窓１２０１に、蟻酸（ＨＣＯＯＨ）の分子構造モデルの画像が表示されている様子が示されている。
【００６５】
図８のウィンドウ１２００Ａは、図に示すように分子構造モデルの画像を表示する画面であるとともに、ユーザによる回転操作を受ける入力画面となっており、ユーザは、回転指定欄１２０２中に記載された４種類の回転と、その回転の際の回転角度とを指定することができる。具体的には、このパーソナルコンピュータ１００では、原子周りの自由回転（Ｒｏｔａｔｅ１）と、結合軸周りの回転（Ｒｏｔａｔｅ２）と、２つの結合軸の間の角度変更（Ｒｏｔａｔｅ３）と、１つの結合軸を交線とする２つの平面の法線ベクトルのなす角（２面角）の変更（Ｒｏｔａｔｅ４）との４種類の回転の中から所望の回転をユーザは指定できる。これらの回転の詳細については後で具体的に説明する。ユーザは、実行ボタン１２０８を、マウス１４０を使ってクリックすることで、指定した回転を実行させて回転後の分子構造モデルの画像を、回転前の分子構造モデルの画像に代えて表示させることができる。このような操作を繰り返すことで、ユーザは、様々な回転変形が施された分子構造モデルを視覚的に確認できる。また、回転後に、ユーザは、ＵＮＤＯボタン１２０９を、マウス１４０を使ってクリックすることで、分子構造モデル表示窓１２０１に表示される分子構造モデルを回転前の状態に戻すこともできる。さらには、分子構造モデルを回転前の状態に戻した後に、ＲＥＤＯボタン１２１０をマウス１４０を使ってクリックすることで、再度同じ回転を施して分子構造モデル表示窓１２０１に表示させることもできる。
【００６６】
以下では、蟻酸（ＨＣＯＯＨ）について、まず、分子構造データの初期データについて説明し、その次に、上記の４種類の回転が施された分子構造データ、および、ＵＮＤＯやＲＥＤＯが行われた際の分子構造データについて説明する。
【００６７】
図９は、初期データで表される分子構造モデルの状態（初期状態）を表す図である。
【００６８】
図９のパート（ａ）には、この蟻酸（ＨＣＯＯＨ）の具体例について、初期データで表される分子構造モデルの状態（初期状態）が、原子や結合軸の識別番号とともに示されている。なお、このような識別番号の表示は、説明の便宜上のためのものであり、実際には、図８に示されている分子構造モデルのように原子や結合軸の識別番号は表示されない。この図９のパート（ａ）に示すように、蟻酸（ＨＣＯＯＨ）中の炭素原子（Ｃ）、図９のパート（ａ）の左側の酸素原子（Ｏ）、図９のパート（ａ）の右側の酸素原子（Ｏ）、図９のパート（ａ）の上側の水素原子（Ｈ）、図９のパート（ａ）の下側の水素原子（Ｈ）に、原子の識別番号として１〜５までの数値が割り当てられており、それぞれの原子は、分子構造データ上ではＡ［１］〜Ａ［５］の原子として扱われる。また、炭素原子（Ｃ）と図９のパート（ａ）の左側の酸素原子（Ｏ）との間の結合軸、炭素原子（Ｃ）と図９のパート（ａ）の右側の酸素原子（Ｏ）との間の結合軸、炭素原子（Ｃ）と図９のパート（ａ）の上側の水素原子（Ｈ）との間の結合軸、炭素原子（Ｃ）と図９のパート（ａ）の下側の水素原子（Ｈ）との間の結合軸には、結合軸の識別番号として１〜４までの数値が割り当てられており、それぞれの結合軸は、分子構造データ上ではＢ［１］〜Ｂ［４］の結合軸として扱われる。
【００６９】
図９のパート（ｂ）には、初期状態のデータ（初期データ）のうち、テンポラリデータ４０Ｔ、イベントデータ４０Ｅ、分子データ４０Ｍ、原子データ４０Ａ、結合軸データ４０Ｂが示されており、ＧＵＩ用データ４０Ｇと回転軸データ４０Ｒとについては図示が省略されている。この点については、以下に説明する、回転後の分子構造データ、ＵＮＤＯ後の分子構造データ、ＲＥＤＯ後の分子構造データについても同様である。
【００７０】
初期状態のデータ（初期データ）のテンポラリデータ４０Ｔ内には、図９のパート（ｂ）に示すように、図６の補助フラグ情報部４０１Ｔおよびベクトル情報部４０２Ｔの各初期値として、設定値が与えられていないことを意味する「Ｎｕｌｌ」が記録されており、図６の回転行列情報部４０３Ｔの初期値として、単位行列を表す「Ｉ」が記録されている。これらについては、図７のステップＳ１２で説明した通りである。
【００７１】
また、初期状態のデータ（初期データ）のイベントデータ４０Ｅ内には、図６のチェックフラグ情報部４０１Ｅ、識別情報部４０２Ｅ、回転軸データアドレス情報部４０３Ｅの各初期値として「Ｎｕｌｌ」が記録されており、回転行列情報部４０３Ｔの初期値として単位行列を表す「Ｉ」が記録されている。ここで、図９のパート（ｂ）に示すイベントデータ４０Ｅを表す「Ｅ［０］」の「０」という数値は、イベント番号が０（ゼロ）であることを表している。このイベント番号とは、現在、図６の分子データ４０Ｍ中の変換操作数情報部に記録されている変換操作数から、ＵＮＤＯ操作数情報部に記録されているＵＮＤＯ操作数を引いて得られる整数値である。上述したように、初期状態のデータ（初期データ）では、図６の変換操作数情報部４０３Ｍ、およびＵＮＤＯ操作数情報部４０４Ｍの各初期値は０（ゼロ）であり、このため、初期状態のデータ（初期データ）では、イベント番号は０（ゼロ）となる。
【００７２】
また、初期状態のデータ（初期データ）の分子データ４０Ｍ内には、図６の総原子数情報部４０１Ｍの値として、蟻酸（ＨＣＯＯＨ）の総原子数である「５」が記録されており、図６の総原子数情報部４０１Ｍの値として、蟻酸（ＨＣＯＯＨ）の総結合軸数である「４」が記録されている。また、図６の変換操作数情報部４０３Ｍ、およびＵＮＤＯ操作数情報部４０４Ｍの各初期値として「０」がそれぞれ記載されている。また、原子データアドレス情報部４０５Ｍについては、図９のパート（ｂ）では省略して「｛Ａ［５］｝」と記載されており、この「｛Ａ［５］｝」は、Ａ［１］〜Ａ［５］の５つの個別原子データが存在することに対応した表現である。また、結合軸データアドレス情報部４０６Ｍについては、図９のパート（ｂ）では省略して「｛Ｂ［４］｝」と記載されており、この「｛Ｂ［４］｝」は、Ｂ［１］〜Ｂ［４］の４つの個別結合軸データが存在することに対応した表現である。また、分子データ４０Ｍには、図６の回転行列情報部４０７Ｍの初期値として「Ｉ」が記録されている。なお、図９のパート（ｂ）では、分子データ４０Ｍを表すために、「Ｍ［１］」という記号が用いられているが、この記号中の［  ］内の「１」は、１番目の分子データ４０Ｍという意味である。「Ｍ［１］」で表される分子データ４０Ｍは、上述したように、ユーザの回転操作のたびに書き換えられていくものであり、ユーザの回転操作とともに増えていくことはないが、ユーザが、ある時点での分子データ４０Ｍのバックアップを作成したい場合には、同一の分子データ４０Ｍに対し、「Ｍ［２］」といった別の名前を付けて分子構造データ中に記録しておくことも可能である。以下では、ユーザの回転操作のたびに書き換えられていく「Ｍ［１］」で表される分子データ４０Ｍだけを用い、分子データ４０Ｍのバックアップは作成しないものとして説明を行う。
【００７３】
また、初期状態のデータ（初期データ）の原子データ４０Ａ内には、蟻酸（ＨＣＯＯＨ）のＡ［１］〜Ａ［５］の５つの個別原子データ４００Ａとして、Ｍ［１］→Ａ［１］、Ｍ［１］→Ａ［２］、Ｍ［１］→Ａ［３］、Ｍ［１］→Ａ［４］、Ｍ［１］→Ａ［５］が記録されている。これら５つの個別原子データ４００Ａでは、図６のチェックフラグ情報部４０１Ａおよび判定フラグ情報部４０２Ａの各初期値としてそれぞれ「Ｎｕｌｌ」が記録されている。また、これら５つの個別原子データ４００Ａでは、「Ｎｕｌｌ」が記録されているチェックフラグ情報部４０１Ａおよび判定フラグ情報部４０２Ａの後に続いて、図６の原子識別番号情報部４０３Ａに記録される情報として、それぞれの原子の識別番号が１〜５までの数値が記録されている。また、これら５つの個別原子データ４００Ａでは、それぞれの原子の識別番号が記録された原子識別番号情報部４０３Ａの後に続いて、図６の原子番号情報部４０４Ａに記録される情報として、それぞれの原子の原子番号が記録されている。例えば、炭素原子に対応するＭ［１］→Ａ［１］の個別原子データ４００Ａには、炭素原子の原子番号である「６」が記載されている。また、これら５つの個別原子データ４００Ａでは、それぞれの原子の原子番号が記録された原子番号情報部４０４Ａの後に続いて、図６の結合軸数情報部４０５Ａに記録される情報として、それぞれの原子が有する結合軸の数が記録されている。例えば、炭素原子が有する結合軸は３本であるので、炭素原子に対応するＭ［１］→Ａ［１］の個別原子データ４００Ａには、「３」が記録される。また、これら５つの個別原子データ４００Ａでは、それぞれの原子が有する結合軸の数が記録された結合軸数情報部４０５Ａの後に続いて、図６の原子用結合情報部４０６Ａに記録される情報として、それぞれの原子が有する結合軸の識別番号が記録されている。例えば、図９のパート（ａ）に示すように、炭素原子に対応するＡ［１］は、Ｂ［１］の結合軸、Ｂ［２］の結合軸、Ｂ［３］の結合軸の３本の結合軸を有しているので、炭素原子に対応するＭ［１］→Ａ［１］の個別原子データ４００Ａの原子用結合情報部４０６Ａには、「｛１，２，３｝」が記録されている。また、これら５つの個別原子データ４００Ａでは、それぞれの原子が有する結合軸の識別番号が記録された原子用結合情報部４０６Ａの後に続いて、図６の原子座標情報部４０７Ａに記録される情報として、それぞれの原子の座標が記録されている。ここでは、それぞれの原子の座標が、「ｃ［３］」の記号に、Ａ［１］〜Ａ［５］それぞれの下付き添え字をつけて表現されている。なお、この表現で数値の３は、３次元の座標であることを示すものである。
【００７４】
また、初期状態のデータ（初期データ）の結合軸データ４０Ｂ内には、蟻酸（ＨＣＯＯＨ）のＢ［１］〜Ｂ［４］の４つの結合軸の個別結合軸データ４００Ｂとして、Ｍ［１］→Ｂ［１］、Ｍ［１］→Ｂ［２］、Ｍ［１］→Ｂ［３］、Ｍ［１］→Ｂ［４］が記録されている。これら４つの個別結合軸データ４００Ｂでは、図６のチェックフラグ情報部４０１Ｂおよび判定フラグ情報部４０２Ｂの各初期値としてそれぞれ「Ｎｕｌｌ」が記録されている。また、これら５つの個別結合軸データ４００Ｂでは、「Ｎｕｌｌ」が記録されているチェックフラグ情報部４０１Ｂおよび判定フラグ情報部４０２Ｂの後に続いて、図６の結合軸識別番号情報部４０３Ｂに記録される情報として、それぞれの結合軸の識別番号が１〜４までの数値が記録されている。また、これら４つの個別結合軸データ４００Ｂでは、それぞれの結合軸の識別番号が記録された結合軸識別番号情報部４０３Ｂの後に続いて、図６の結合軸用結合情報部４０４Ｂに記録される情報として、それぞれの結合軸が有する原子の識別番号が記録されている。例えば、図９のパート（ａ）に示すように、炭素原子（Ａ［１］）と左側の酸素原子（Ａ［２］）との間の結合軸に対応するＢ［１］は、Ａ［１］とＡ［２］の２つの原子を有しているので、Ｂ［１］の結合軸に対応するＭ［１］→Ｂ［１］の個別原子データ４００Ｂの結合軸用結合情報部４０４Ｂには、「｛１，２｝」が記録されている。また、これら４つの個別結合軸データ４００Ｂでは、それぞれの結合軸が有する原子の識別番号が記録された結合軸用結合情報部４０４Ｂの後に続いて、図６の結合軸ベクトル情報部４０５Ｂに記録される情報として、それぞれの結合軸のベクトル座標が記録されている。ここでは、それぞれの原子の座標が、「ｖ［３］」の記号に、Ｂ［１］〜Ｂ［４］それぞれの下付き添え字をつけて表現されている。なお、この表現で数値の３は、３次元のベクトルであることを示すものである。
【００７５】
次に、上記の４種類の回転のうち、図８のＲｏｔａｔｅ１の回転について詳しく説明する。
【００７６】
ユーザが原子周りの自由回転（Ｒｏｔａｔｅ１）を選択する場合には、ユーザは、図８の回転指定欄１２０２中の４つのチェック欄１２０３のうち、上から１番目のチェック欄１２０３に、図２のマウス１４０のクリックでチェックを記入する。図８では、Ｒｏｔａｔｅ１のチェック欄１２０３にチェックが入っている様子が例として示されている。また、ユーザは、回転中心となる原子を、マウス１４０を使って分子構造モデル表示窓１２０１中でクリックすることで指定する。さらに、ユーザは、その原子から延びる結合軸のうち、分子構造モデル中の、ユーザが回転させたい部分とつながっている結合軸を、マウス１４０を使って分子構造モデル表示窓１２０１中でクリックすることで指定する。さらに、ユーザは、その部分の回転方向を指定するため、その指定された結合軸が、分子構造モデル表示窓１２０１の上下方向に垂直な面内で回転すべき回転角度φと、その指定された結合軸が、分子構造モデル表示窓１２０１の上方向となすべき回転角度θとを、回転角度φ指定欄１２０４および回転角度θ指定欄１２０５に書き込む。
【００７７】
以下では、回転中心の原子として図９のＡ［３］が指定され、回転させたい部分とつながっている結合軸として図９のＢ［２］が指定されたものとしてＲｏｔａｔｅ１の説明を行う。
【００７８】
図１０は、Ｒｏｔａｔｅ１の回転が行われる際に、図５の各部で行われる動作の流れを表したフローチャート、図１１および図１２は、Ｒｏｔａｔｅ１の回転前後の分子構造モデルと分子構造データとを表した図である。
【００７９】
ユーザにより、上述したようなＲｏｔａｔｅ１の指定、原子および結合軸の指定、２種類の回転角度の指定がなされると、図５の回転指定情報取得部１１が、それらの指定の内容を表した回転指定情報を取得する（図１０のステップＳ１００１）。図１１のパート（ａ）では、指定された原子および結合軸が、Ａ［３］およびＢ［２］であることが、Ａ［３］とＢ［２］それぞれに対応する原子と結合軸が点線で表現されることで表されており、このように指定されたＲｏｔａｔｅ１では、図の矢印で示す方向に、Ａ［３］を中心として原子Ａ［１］、Ａ［２］、Ａ［４］（および、これらの原子の間の結合軸）が回転する。ここでは、この指定を明示的に示すためにＡ［３］とＢ［２］とは四角で囲まれて表されている。なお、ここでは、図８や図９のような各原子の元素記号（「Ｃ」や「Ｏ」など）は図示が省略されている。また、識別番号の表示は、説明の便宜上のためのものであり、実際には、図８に示されている分子構造モデルのように原子や結合軸の識別番号は表示されない。これらの点は、以下も同様である。
【００８０】
次に、図５の回転指定情報取得部１１は、テンポラリデータ４０Ｔ中の補助フラグを「Ｒｏｔａｔｅ１」に設定し、指定された原子であるＡ［３］の図６の個別原子データ４００Ａ中のチェックフラグ情報部４０１Ａ、指定された結合軸であるＢ［２］の個別結合軸データ４００Ｂ中のチェックフラグ情報部４０１Ｂをそれぞれ「Ｓｅｌｅｃｔ」に設定する（図１０のステップＳ１００２）。図１１のパート（ｂ）には、このステップＳ１００２の時点での分子構造データの様子が示されており、Ａ［３］の個別原子データ４００Ａを表すＭ［１］→Ａ［３］、および、Ｂ［２］の個別結合軸データ４００Ｂを表すＭ［１］→Ｂ［２］において、それぞれ、左から１番目のチェックフラグ情報部に「Ｓｅｌｅｃｔ」が記録されている様子が示されている。なお、ここでは、各原子の座標および各結合軸のベクトルは、すべて「ｖ」「ｃ」として表されており、図９のパート（ｂ）のような添え字の図示は、省略されている。この点は、以下も同様である。
【００８１】
一方、図５の回転可能性判定部１３は、指定された結合軸とつながっている、指定された原子以外の新たな原子を把握する（図１０のステップＳ１００３）。ここでは、指定された結合軸Ｂ［２］とつながっている、指定された原子Ａ［３］以外の新たな原子は、Ａ［１］であることが把握される。次に、回転可能性判定部１３は、その新たな原子につながっている新たな結合軸が存在するか否かを判定する（図１０のステップＳ１００４）。Ａ［１］につながっている新たな結合軸として結合軸Ｂ［１］、Ｂ［３］が存在するので、ここでは、ステップＳ１００４でＹｅｓが選択される。次に、回転可能性判定部１３は、存在が確認された結合軸の個別結合軸データ４００Ｂ中の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」を設定し、さらにその結合軸とつながっている別の新たな原子を把握する（図１０のステップＳ１００５）。ここでは、結合軸Ｂ［１］、Ｂ［３］の個別結合軸データ４００Ｂ中の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」が設定され、これらにつながっている別の新たな原子としてＡ［２］、Ａ［４］が把握される。次に、回転可能性判定部１３は、ステップＳ１００５で把握された別の新たな原子の個別原子データのチェックフラグ情報部４０１Ａで「Ｓｅｌｅｃｔ」が設定されているか否かを判定する（図１０のステップＳ１００６）。すなわち、その別の新たな原子が、ユーザにより指定された原子であるか否かが判定される。ここでは、Ａ［２］、Ａ［４］は、指定された原子ではないのでＮｏが選択される。
【００８２】
なお、仮に、ステップＳ１００５で把握された別の新たな原子が、指定された原子であった場合には（図１０のステップＳ１００６；Ｙｅｓ）、回転可能性判定部１３は、その指定された原子（チェックフラグが「Ｓｅｌｅｃｔ」に設定されている原子）の個別原子データ４００Ａの判定フラグ情報領域に「Ｃｈａｉｎ」を設定し、データの変換作業の中止を図５の回転準備部１４に伝え、図５の回転準備部１４は回転の準備を中止する（図１０のステップＳ１００７）。こうすることで、分子構造モデル中で回転対象の部分が環状の構造をしており、回転対象の部分だけを回転することが困難な場合には、回転が中止されることとなる。
【００８３】
ステップＳ１００６でＮｏが選択されると、再び上述したステップＳ１００４以降の過程が繰り返し実行される。ここでは、Ａ［２］には結合軸Ｂ［１］以外に新たな結合軸は存在せず、またＡ［４］には結合軸Ｂ［３］以外に新たな結合軸は存在しないので、ステップＳ１００４に２回目に達した時にＮｏが選択される。ステップＳ１００４でＮｏが選択されると、次に、回転可能性判定部１３は、個別結合軸データ４００Ｂのチェックフラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」に設定されている結合軸（すなわち、ユーザにより指定された結合軸）の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」を設定する（図１０のステップＳ１００８）。ここでは、指定された結合軸Ｂ［２］の個別結合軸データ４００Ｂの判定フラグ情報部４０２Ｂが「Ｓｅｌｅｃｔ」に設定される。
【００８４】
ステップＳ１００３〜ステップＳ１００８までの過程が、指定された種類の回転（つまりＲｏｔａｔｅ１）が実行可能であるか否かの判定を行う過程であり、指定された原子の個別原子データ４００Ａの判定フラグ情報領域に「Ｃｈａｉｎ」を設定されることなくステップＳ１００８の過程に到達する場合が、指定された回転が実行可能であると判定される場合である。さらに、このとき、回転対象の結合軸は、すべて、個別結合軸データ４００Ｂのチェックフラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」に設定されており、これにより、回転対象の結合軸が特定されることとなる。
【００８５】
ステップＳ１００８の後、図５の回転準備部１４は、この回転に対応したイベント番号を決定し、そのイベント番号を有するイベントデータ４０Ｅを、上記の指定された回転用のイベントデータ４０Ｅとして割り当てる（図１０のステップＳ１００９）。ここでは、図６の変換操作数情報部４０３Ｍ、およびＵＮＤＯ操作数情報部４０４Ｍには、図１１のパート（ｂ）に示すように０（ゼロ）が設定されているので、イベント番号は０（ゼロ）となり、ここで、割り当てられるイベントデータ４０Ｅは、図１１のパート（ｂ）のイベントデータ４０Ｅに示す「Ｅ［０］」となる。なお、ここでの説明では、このＥ［０］は、図９のパート（ｂ）に示す初期状態のデータ中のＥ［０］と同じなので、Ｅ［０］中には「Ｎｕｌｌ」や「Ｉ」しか記録されていないが、もし、ステップＳ１００９の時点で、すでに、同じイベント番号を有するイベントデータ４０Ｅが存在している場合には、そのイベントデータ４０Ｅの各情報部を、図９のパート（ｂ）に示す初期状態のデータと同じ状態に戻す。（すなわち、古いデータを消去して、イベントデータ４０Ｅの各情報部を「Ｎｕｌｌ」や「Ｉ」に戻す）。イベント番号の決定後、回転準備部１４は、分子データ４０Ｍ中の変換操作数情報部４０３Ｍに現在記録されている変換操作数の値に１を加える。図１２のパート（ｂ）には、分子データ４０Ｍ中の変換操作数情報部４０３Ｍの数値（左から３番目の数値）が「１」となっている様子が示されている。
【００８６】
次に、回転準備部１４は、ステップＳ１００２で補助フラグ情報部４０１Ｔに記録されている内容（ここでは「Ｒｏｔａｔｅ１」）を、そのまま、ステップＳ１００９で決定されたイベント番号を有するイベントデータ４０Ｅ中のチェックフラグ４０１Ｅに書き込む（図１０のステップＳ１０１０）。そして、回転準備部１４は、チェックフラグが「Ｓｅｌｅｃｔ」に設定されている原子および結合軸（つまり指定された原子および結合軸）の識別番号をイベントデータ４０Ｅ中の識別情報４０２Ｅに書き込む（図１０のステップＳ１０１１）。
【００８７】
図１２のパート（ｂ）には、Ｅ［０］のイベントデータ４０Ｅ中のチェックフラグ４０１Ｅに「Ｒｏｔａｔｅ１」が書き込まれ、その後に続く図６の識別情報部４０２Ｅに対応する［  ］内に、指定された原子Ａ［３］を表す数値「３」と、指定された結合軸Ｂ［２］を表す数値「２」とが書き込まれている様子が示されている。なお、識別情報部４０２Ｅの［  ］内には、「３」や「２」の他にも、３つの「０」が存在しており、識別情報部４０２Ｅの［  ］内には、全部で５つの数値が書き込めるようになっている。これらは、回転を特徴づける原子や結合軸の識別番号といったデータが書き込まれる箇所であり、Ｒｏｔａｔｅ１では、最初の２つだけが用いられる。ここで、識別情報部４０２Ｅの［  ］内の５つのいずれに、原子の識別番号や結合軸の識別番号を書き込むかは、回転の種類によって決まっており、Ｒｏｔａｔｅ１では、１番目が指定された原子の識別番号であり、２番目が指定された結合軸の識別番号である。
【００８８】
次に、回転準備部１４は、指定された原子であるＡ［３］を中心として角度方向の設定を行い（図１０のステップＳ１０１２）、指定された２種類の回転角度（図８の回転角度φ指定欄１２０４および回転角度θ指定欄１２０５に書き込まれた回転角度）に応じた回転行列を算出する。そして、その算出した回転行列を、テンポラリデータ４０Ｔ中の回転行列情報部４０３Ｔに書き込み、さらに、テンポラリデータ４０Ｔ中の回転行列情報部４０３Ｔの情報を、イベントデータ４０Ｅ中の回転行列情報部４０３Ｅにそのまま書き込む。図１２のパート（ｂ）では、テンポラリデータ４０Ｔ中の左から３つ目の回転行列情報部４０３Ｔに、回転行列「Ｒ」が書き込まれている様子が示されている。また、イベントデータ４０Ｅ中のから右から１つ目の回転行列情報部４０４Ｅに、回転行列が、ここでは、「Ｔ→Ｒ」の記号で示されている。回転行列「Ｔ→Ｒ」と回転行列「Ｒ」とは同じものであるが、ここでは、テンポラリデータ４０Ｔ中の回転行列情報部４０３Ｔからコピーしたものであることを示すために、「Ｔ→Ｒ」という記号が用いられている。次に、回転準備部１４は、回転実行部１５に回転実行の指示を与える。
【００８９】
回転実行の指示を受けた回転実行部１５は、判定フラグ情報部が「Ｓｅｌｅｃｔ」に設定されている、回転対象の結合軸それぞれに対応した図６の結合軸ベクトル情報部４０５Ｂ中の結合軸ベクトルに、上記の回転行列を作用させる。さらに、回転実行部１５は、結合軸ベクトルの回転に合わせて、これら回転対象の結合軸につながっている回転対象の原子それぞれに対応した図６の原子座標情報部４０７Ａ中の座標を変換する（図１０のステップＳ１０１４）。
【００９０】
図１２のパート（ｂ）には、回転対象の３つの結合軸Ｂ［１］、Ｂ［２］、Ｂ［３］の個別結合軸データ４００Ｂである、Ｍ［１］→Ｂ［１］、Ｍ［１］→Ｂ［２］、Ｍ［１］→Ｂ［３］において、１番右側にある結合軸ベクトル情報部４０５Ｂに（図６参照）、回転前の結合軸ベクトルを表す、Ｍ［１］→Ｂ［１］→ｖ、Ｍ［１］→Ｂ［２］→ｖ、Ｍ［１］→Ｂ［３］→ｖに対して、回転行列「Ｔ→Ｒ」が作用してそれぞれｖ’、ｖ’’、ｖ’’’に変換された様子が示されている。
【００９１】
また、図１２のパート（ｂ）には、回転対象の３つの原子Ａ［１］、Ａ［２］、Ａ［４］のうち、Ａ［１］については、その個別原子データ４００ＡであるＭ［１］→Ａ［１］の１番右側の原子座標情報部４０７Ａにおいて、Ａ［１］の原子座標が、Ｒｏｔａｔｅ１の回転では固定されているＡ［３］の原子座標を表す、Ｍ［１］→Ａ［３］→ｃに、上記の変換後のＢ［２］の結合ベクトルｖ’’を加えた座標ｃ’に変換された様子が示されている。また、Ａ［２］については、その個別原子データ４００ＡであるＭ［１］→Ａ［２］の１番右側の原子座標情報部４０７Ａにおいて、Ａ［２］の原子座標が、変換後のＡ［１］の座標ｃ’に、上記の変換後のＢ［１］の結合ベクトルｖ’を加えた座標に変換された様子が示されている。また、Ａ［４］については、その個別原子データ４００ＡであるＭ［１］→Ａ［４］の１番右側の原子座標情報部４０７Ａにおいて、Ａ［４］の原子座標が、変換後のＡ［１］の座標ｃ’に、上記の変換後のＢ［３］の結合ベクトルｖ’’’を加えた座標に変換された様子が示されている。
【００９２】
図６の表示制御部１８は、回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、図１２のパート（ａ）に示すように、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図１０のステップＳ１０１５）。そして、回転準備部１４は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図１０のステップＳ１０１６）。図１２のパート（ｂ）には、ステップＳ１０１６の時点での分子構造データの様子が示されている。
【００９３】
次に、Ｒｏｔａｔｅ１の回転後にＵＮＤＯが行われたときの様子について説明する。
【００９４】
図１３は、Ｒｏｔａｔｅ１の回転後にユーザがＵＮＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャート、図１４は、ＵＮＤＯ実行後の分子構造データを表した図である。
【００９５】
図１０で説明したＲｏｔａｔｅ１の回転後に、ユーザにより図８のＵＮＤＯボタン１２０９がマウス１４０でクリックされると、図５のＵＮＤＯ準備部１６が、そのＵＮＤＯ指示を取得する（図１３のステップＳ１１０１）。次に、ＵＮＤＯ準備部１６は、図１４に示すように、テンポラリデータ４０Ｔの左から１番目の補助フラグ情報部４０１Ｔに「Ｕｎｄｏ」を設定する（図１３のステップＳ１１０２）。次に、ＵＮＤＯ準備部１６は、分子データ４０ＭのＵＮＤＯ操作数情報部４０４Ｍに現在設定されているＵＮＤＯ操作数に、１を加える。図１２のパート（ｂ）に示すように、Ｒｏｔａｔｅ１の回転後には、分子データ４０Ｍの左から４番目のＵＮＤＯ操作数は「０」となっていたので、上記のＵＮＤＯ準備部１６の動作により、分子データ４０Ｍの左から４番目のＵＮＤＯ操作数は、図１４に示すように「１」となる。次に、ＵＮＤＯ準備部１６は、イベント番号を設定する（図１３のステップＳ１１０３）。図１４に示すように、この時点では、分子データ４０Ｍの左から３番目の変換操作数は「１」であり、左から４番目のＵＮＤＯ操作数は「１」であるので、その差であるイベント番号は０となる。このため、先のＲｏｔａｔｅ１のイベントデータ４０Ｅを表すＥ［０］とイベント番号が同じとなり、ＵＮＤＯに伴う変換では、先のＲｏｔａｔｅ１のイベントデータ４０Ｅを表すＥ［０］がそのまま利用される（上書きされる）。次に、ＵＮＤＯ準備部１６は、イベントデータ４０Ｅのチェックフラグ情報部４０１Ｅ（図１４のイベントデータ４０Ｅの左から１番目）の設定値が「Ｒｏｔａｔｅ１」となっていることから、ユーザにより先に指定された回転であって現在の取消し対象となっている回転の種類がＲｏｔａｔｅ１であることを把握する（図１３のステップＳ１１０４）。次に、ＵＮＤＯ準備部１６は、イベントデータ４０Ｅの識別情報部４０２Ｅ（図１４のイベントデータ４０Ｅの左から２番目）の設定値が「［３，２，０，０，０］」となっていることから、指定された原子がＡ［３］であって、指定された結合軸がＢ［２］であることを把握し、Ａ［３］の個別原子データ中のチェックフラグ情報部４０１Ａ、および、Ｂ［２］の個別結合軸データ中のチェックフラグ情報部４０１Ｂに、「Ｓｅｌｅｃｔ」を設定する（図１３のステップＳ１１０５）。次に、ＵＮＤＯ準備部１６は、ステップＳ１１０４およびステップＳ１１０５で得られた、先に指定された回転であって現在の取消し対象となっている回転の種類、指定された原子および結合軸の情報に基づき、図１０のステップＳ１００３〜ステップＳ１００８までの過程と同様にして、回転を取り消すための逆回転の対象となる結合軸を特定し、それらの個別結合軸データ４００Ｂの判定フラグ情報部４０１Ｂを「Ｓｅｌｅｃｔ」に設定する（図１３のステップＳ１１０６）。次に、ＵＮＤＯ準備部１６は、イベントデータ４０Ｅの回転行列情報部４０４Ｅ（図１４のイベントデータ４０Ｅの右から１番目）に記録されている回転行列について、その逆行列を算出する（図１３のステップＳ１１０７）。次に、ＵＮＤＯ準備部１６は、回転実行部１５にその逆行列による回転実行の指示を与え、回転実行部１５は、現在、個別結合軸データ４００Ｂ中で判定フラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」が設定されている結合軸（すなわち、Ｂ［１］、Ｂ［２］、Ｂ［３］）の結合軸ベクトル（すなわち、図１２のパート（ｂ）のｖ’、ｖ’’、ｖ’’’）に、上記の逆行列を作用させる。さらに、回転実行部１５は、原子座標も結合軸ベクトルの回転に合わせて変換する（図１３のステップＳ１１０８）。このような結合軸ベクトルの回転や原子座標の変換は、ステップＳ１１０８で用いられる回転行列が逆行列であって、回転対象の結合軸ベクトルや原子座標が、図１２のパート（ｂ）のＲｏｔａｔｅ１の回転後の結合軸ベクトルや原子座標である点を除き、図１０のステップＳ１０１４の過程と同様にして実行される。
【００９６】
図６の表示制御部１８は、ステップＳ１１０８で回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図１３のステップＳ１１０９）。このとき表示される分子構造モデルの画像は、図１１のパート（ａ）に示すものと同じものとなる。そして、ＵＮＤＯ準備部１６は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図１３のステップＳ１１１０）。図１４には、ステップＳ１１１０の時点での分子構造データの様子が示されている。
【００９７】
次に、上記のようにＵＮＤＯが行われた後で、ＲＥＤＯが行われたときの様子について説明する。
【００９８】
図１５は、Ｒｏｔａｔｅ１の回転後にＵＮＤＯが行われ、その後でユーザがＲＥＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャート、図１６は、ＲＥＤＯ実行後の分子構造データを表した図である。
【００９９】
図１５で説明したＵＮＤＯの実行後に、ユーザにより図８のＲＥＤＯボタン１２１０がマウス１４０でクリックされると、図５のＲＥＤＯ準備部１７が、そのＲＥＤＯ指示を取得する（図１５のステップＳ１２０１）。次に、ＲＥＤＯ準備部１７は、図１６に示すように、テンポラリデータ４０Ｔの左から１番目の補助フラグ情報部４０１Ｔに「Ｒｅｄｏ」を設定する（図１５のステップＳ１２０２）。次に、ＲＥＤＯ準備部１７は、イベント番号を設定する。ＵＮＤＯ後は、図１４に示すように、分子データ４０Ｍの左から３番目の変換操作数は「１」であり、左から４番目のＵＮＤＯ操作数は「１」であるので、その差であるイベント番号は０となる。このため、先のＵＮＤＯのイベントデータ４０Ｅを表すＥ［０］とイベント番号が同じとなり、ＲＥＤＯに伴う変換では、先のＲｏｔａｔｅ１のイベントデータ４０Ｅを表すＥ［０］がそのまま利用される（上書きされる）。そして、ＲＥＤＯ準備部１７は、分子データ４０ＭのＵＮＤＯ操作数情報部４０４Ｍに現在設定されているＵＮＤＯ操作数から１を引く（図１５のステップＳ１２０３）。次に、ＲＥＤＯ準備部１７は、イベントデータ４０Ｅのチェックフラグ情報部４０１Ｅ（図１４のイベントデータ４０Ｅの左から１番目）の設定値が「Ｒｏｔａｔｅ１」となっていることから、ユーザにより先のＵＮＤＯで取消し対象となっていた回転の種類がＲｏｔａｔｅ１であることを把握する（図１５のステップＳ１２０４）。次に、ＲＥＤＯ準備部１７は、イベントデータ４０Ｅの識別情報部４０２Ｅ（図１４のイベントデータ４０Ｅの左から２番目）の設定値が「［３，２，０，０，０］」となっていることから、取消し前の回転で指定されていた原子がＡ［３］であって、取消し前の回転で指定されていた結合軸がＢ［２］であることを把握する。そして、ＲＥＤＯ準備部１７は、Ａ［３］の個別原子データ中のチェックフラグ情報部４０１Ａ、および、Ｂ［２］の個別結合軸データ中のチェックフラグ情報部４０１Ｂに、「Ｓｅｌｅｃｔ」を設定する（図１５のステップＳ１２０５）。次に、ＲＥＤＯ準備部１７は、ステップＳ１２０４およびステップＳ１２０５で得られた、取消し対象となっていた回転の種類、取消し前の回転で指定されていた原子および結合軸の情報に基づき、図１０のステップＳ１００３〜ステップＳ１００８までの過程と同様にして、再度の回転の対象となる結合軸を特定し、それらの個別結合軸データ４００Ｂの判定フラグ情報部４０１Ｂを「Ｓｅｌｅｃｔ」に設定する（図１５のステップＳ１２０６）。次に、ＲＥＤＯ準備部１７は、イベントデータ４０Ｅの回転行列情報部４０４Ｅ（図１４のイベントデータ４０Ｅの右から１番目）に記録されている回転行列を把握する（図１５のステップＳ１２０７）。次に、ＲＥＤＯ準備部１７は、回転実行部１５に、その把握された行列による回転実行の指示を与え、回転実行部１５は、現在、個別結合軸データ４００Ｂ中で判定フラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」が設定されている結合軸（すなわち、Ｂ［１］、Ｂ［２］、Ｂ［３］）の結合軸ベクトル（すなわち、図１４のＭ［１］→Ｂ［１］、Ｍ［１］→Ｂ［２］、Ｍ［１］→Ｂ［３］の各個別結合軸情報データ４００Ｂ中のｖ）に、ステップＳ１２０７で把握された行列を作用させる。さらに、回転実行部１５は、原子座標も結合軸ベクトルの回転に合わせて変換する（図１５のステップＳ１２０８）。このような結合軸ベクトルの回転や原子座標の変換は、図１０のステップＳ１０１４の過程と同様にして実行される。
【０１００】
図６の表示制御部１８は、ステップＳ１２０８で回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図１５のステップＳ１２０９）。このとき表示される分子構造モデルの画像は、図１２のパート（ａ）に示すものと同じものとなる。そして、ＲＥＤＯ準備部１７は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図１５のステップＳ１２１０）。図１６には、ステップＳ１２１０の時点での分子構造データの様子が示されている。
【０１０１】
以上が、Ｒｏｔａｔｅ１の回転と、この回転についてのＵＮＤＯおよびＲＥＤＯとについての説明である。
【０１０２】
次に、図８のＲｏｔａｔｅ２の回転と、この回転についてのＵＮＤＯおよびＲＥＤＯとについて説明する。。
【０１０３】
ユーザが結合軸周りの回転（Ｒｏｔａｔｅ２）を選択する場合には、ユーザは、図８の回転指定欄１２０２中の４つのチェック欄１２０３のうち、上から２番目のチェック欄１２０３に、図２のマウス１４０のクリックでチェックを記入する。また、ユーザは、回転軸となる結合軸を、マウス１４０を使って分子構造モデル表示窓１２０１中でクリックすることで指定する。さらに、ユーザは、その結合軸がつながっている原子のうち、分子構造モデル中で回転させずに固定しておきたい部分に含まれる原子を、マウス１４０を使って分子構造モデル表示窓１２０１中でクリックすることで指定する。さらに、ユーザは、回転軸周りの回転角度を、Ｒｏｔａｔｅ２の回転角度指定欄１２０６に書き込む。
【０１０４】
以下では、回転軸としてＢ［２］が指定され、固定しておきたい部分に含まれる原子として図９のＡ［３］が指定されたものとしてＲｏｔａｔｅ２の説明を行う。ここでは、図９に示す初期状態の分子構造モデルにＲｏｔａｔｅ２の回転が施されるものとして説明を行う。
【０１０５】
図１７は、Ｒｏｔａｔｅ２の回転が行われる際に、図５の各部で行われる動作の流れを表したフローチャート、図１８および図１９は、Ｒｏｔａｔｅ２の回転前後の分子構造モデルと分子構造データとを表した図である。
【０１０６】
ユーザにより、上述したようなＲｏｔａｔｅ２の指定、原子および結合軸の指定、回転角度の指定がなされると、図５の回転指定情報取得部１１が、それらの指定の内容を表した回転指定情報を取得する（図１７のステップＳ２００１）。図１８のパート（ａ）では、指定された原子および結合軸が、Ａ［３］およびＢ［２］であることが、Ａ［３］とＢ［２］それぞれに対応する原子と結合軸が点線で表現されることで表されており、このように指定されたＲｏｔａｔｅ２では、図の矢印で示す方向に、Ｂ［２］を回転軸として原子Ａ［１］、Ａ［２］、Ａ［４］（および、これらの原子の間の結合軸）が回転する。ここでは、この指定を明示的に示すためにＡ［３］とＢ［２］とは四角で囲まれて表されている。
【０１０７】
次に、図５の回転指定情報取得部１１は、テンポラリデータ４０Ｔ中の補助フラグを「Ｒｏｔａｔｅ２」に設定し、指定された原子であるＡ［３］の図６の個別原子データ４００Ａ中のチェックフラグ情報部４０１Ａ、指定された結合軸であるＢ［２］の個別結合軸データ４００Ｂ中のチェックフラグ情報部４０１Ｂをそれぞれ「Ｓｅｌｅｃｔ」に設定する（図１７のステップＳ２００２）。図１８のパート（ｂ）には、このステップＳ１００２の時点での分子構造データの様子が示されており、Ａ［３］の個別原子データ４００Ａを表すＭ［１］→Ａ［３］、および、Ｂ［２］の個別結合軸データ４００Ｂを表すＭ［１］→Ｂ［２］において、それぞれ、左から１番目のチェックフラグ情報部に「Ｓｅｌｅｃｔ」が記録されている様子が示されている。
【０１０８】
一方、図５の回転可能性判定部１３は、指定された結合軸とつながっている、指定された原子以外の新たな原子を把握する（図１７のステップＳ２００３）。ここでは、指定された結合軸Ｂ［２］とつながっている、指定された原子Ａ［３］以外の新たな原子は、Ａ［１］であることが把握される。次に、回転可能性判定部１３は、その新たな原子につながっている新たな結合軸が存在するか否かを判定する（図１７のステップＳ２００４）。Ａ［１］につながっている新たな結合軸として結合軸Ｂ［１］、Ｂ［３］が存在するので、ここでは、ステップＳ２００４でＹｅｓが選択される。次に、回転可能性判定部１３は、存在が確認された結合軸の個別結合軸データ４００Ｂ中の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」を設定し、さらにその結合軸とつながっている別の新たな原子を把握する（図１７のステップＳ２００５）。ここでは、結合軸Ｂ［１］、Ｂ［３］の個別結合軸データ４００Ｂ中の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」が設定され、これらにつながっている別の新たな原子としてＡ［２］、Ａ［４］が把握される。次に、回転可能性判定部１３は、ステップＳ２００５で把握された別の新たな原子の個別原子データのチェックフラグ情報部４０１Ａで「Ｓｅｌｅｃｔ」が設定されているか否かを判定する（図１７のステップＳ２００６）。すなわち、その別の新たな原子が、ユーザにより指定された原子であるか否かが判定される。ここでは、Ａ［２］、Ａ［４］は、指定された原子ではないのでＮｏが選択される。
【０１０９】
なお、仮に、ステップＳ２００５で把握された別の新たな原子が、指定された原子であった場合には（図１７のステップＳ２００６；Ｙｅｓ）、回転可能性判定部１３は、その指定された原子（チェックフラグが「Ｓｅｌｅｃｔ」に設定されている原子）の個別原子データ４００Ａの判定フラグ情報領域に「Ｃｈａｉｎ」を設定し、データの変換作業の中止を図５の回転準備部１４に伝え、図５の回転準備部１４は回転の準備を中止する（図１７のステップＳ２００７）。こうすることで、分子構造モデル中で回転対象の部分が環状の構造をしており、回転対象の部分だけを回転することが困難な場合には、回転が中止されることとなる。
【０１１０】
ステップＳ２００６でＮｏが選択されると、再び上述したステップＳ２００４以降の過程が繰り返し実行される。ここでは、Ａ［２］には結合軸Ｂ［１］以外に新たな結合軸は存在せず、またＡ［４］には結合軸Ｂ［３］以外に新たな結合軸は存在しないので、ステップＳ２００４に２回目に達した時にＮｏが選択される。ステップＳ２００４でＮｏが選択されると、次に、回転可能性判定部１３は、個別結合軸データ４００Ｂのチェックフラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」に設定されている結合軸（すなわち、ユーザにより指定された結合軸）の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」を設定する（図１７のステップＳ２００８）。ここでは、指定された結合軸Ｂ［２］の個別結合軸データ４００Ｂの判定フラグ情報部４０２Ｂが「Ｓｅｌｅｃｔ」に設定される。
【０１１１】
ステップＳ２００３〜ステップＳ２００８までの過程が、指定された種類の回転（つまりＲｏｔａｔｅ２）が実行可能であるか否かの判定を行う過程であり、指定された原子の個別原子データ４００Ａの判定フラグ情報領域に「Ｃｈａｉｎ」を設定されることなくステップＳ２００８の過程に到達する場合が、指定された回転が実行可能であると判定される場合である。さらに、このとき、回転対象の結合軸は、すべて、個別結合軸データ４００Ｂのチェックフラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」に設定されており、これにより、回転対象の結合軸が特定されることとなる。ただし、結合軸Ｂ［２］は、回転軸であるので、チェックフラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」に設定されても実際には変換はされない。
【０１１２】
ステップＳ２００８の後、図５の回転準備部１４は、この回転に対応したイベント番号を決定し、そのイベント番号を有するイベントデータ４０Ｅを、上記の指定された回転用のイベントデータ４０Ｅとして割り当てる（図１７のステップＳ２００９）。ここでは、図６の変換操作数情報部４０３Ｍ、およびＵＮＤＯ操作数情報部４０４Ｍには、図１８のパート（ｂ）に示すように０（ゼロ）が設定されているので、イベント番号は０（ゼロ）となり、ここで、割り当てられるイベントデータ４０Ｅは、図１８のパート（ｂ）のイベントデータ４０Ｅに示す「Ｅ［０］」となる。なお、ここでの説明では、このＥ［０］は、図９のパート（ｂ）に示す初期状態のデータ中のＥ［０］と同じなので、Ｅ［０］中には「Ｎｕｌｌ」や「Ｉ」しか記録されていないが、もし、ステップＳ２００９の時点で、すでに、同じイベント番号を有するイベントデータ４０Ｅが存在している場合には、そのイベントデータ４０Ｅの各情報部を、図９のパート（ｂ）に示す初期状態のデータと同じ状態に戻す。（すなわち、古いデータを消去して、イベントデータ４０Ｅの各情報部を「Ｎｕｌｌ」や「Ｉ」に戻す）。イベント番号の決定後、回転準備部１４は、分子データ４０Ｍ中の変換操作数情報部４０３Ｍに現在記録されている変換操作数の値に１を加える。図１９のパート（ｂ）には、分子データ４０Ｍ中の変換操作数情報部４０３Ｍの数値（左から３番目の数値）が「１」となっている様子が示されている。
【０１１３】
次に、回転準備部１４は、ステップＳ２００２で補助フラグ情報部４０１Ｔに記録されている内容（ここでは「Ｒｏｔａｔｅ２」）を、そのまま、ステップＳ２００９で決定されたイベント番号を有するイベントデータ４０Ｅ中のチェックフラグ４０１Ｅに書き込む（図１７のステップＳ２０１０）。そして、回転準備部１４は、チェックフラグが「Ｓｅｌｅｃｔ」に設定されている原子および結合軸（つまり指定された原子および結合軸）の識別番号をイベントデータ４０Ｅ中の識別情報４０２Ｅに書き込む（図１７のステップＳ２０１１）。
【０１１４】
図１９のパート（ｂ）には、Ｅ［０］のイベントデータ４０Ｅ中のチェックフラグ４０１Ｅに「Ｒｏｔａｔｅ２」が書き込まれ、その後に続く識別情報４０２Ｅの［  ］内の左から１番目に、指定された原子Ａ［３］を表す数値「３」が書き込まれ、［  ］内の、左から３番目に、指定された結合軸Ｂ［２］を表す数値「２」とが書き込まれている様子が示されている。
【０１１５】
次に、回転準備部１４は、指定された回転角度をイベントデータ４０Ｅの識別情報４０２Ｅに書き込み、指定された結合軸のベクトルを、図６のテンポラリデータ４０Ｔ中のベクトル情報部４０２Ｔに書き込む。さらに、回転準備部１４は、ベクトル情報部４０２Ｔに書き込まれたベクトルを、図６の回転軸データＲ中の回転軸ベクトル情報部４０５Ｒに書き込む（図１７のステップＳ２０１２）。図１９のパート（ｂ）には、Ｅ［０］のイベントデータ４０Ｅにおいて、識別情報４０２Ｅに対応した［  ］内の左から２番目に「ａｎｇｌｅ」が書き込まれており、これが上記の回転角度を表している。上述したように、識別情報４０２Ｅの［  ］内の５つのいずれに、原子の識別番号や結合軸の識別番号を書き込むは、回転の種類によって決まっており、Ｒｏｔａｔｅ２では、１番目が指定された原子の識別番号であり、２番目が指定された回転角度であり、３番目が指定された結合軸の識別番号である。また、図１９のパート（ｂ）には、テンポラリデータ４０Ｔ中の左から２番目に、「ｖ＝（Ｍ［１］−Ａ［１］→ｖ  −  Ｍ［１］−Ａ［３］→ｖ）が記録されており、Ａ［１］の原子の座標とＡ［３］の原子の座標との差からなるベクトルが、ベクトル情報部４０２Ｔに書き込まれたベクトルであることを表している。また、Ｅ［０］のイベントデータ４０Ｅにおいては、左から３番目の、図６の回転軸データアドレス情報部４０３Ｅに対応する箇所に、「Ｂ１→ｖ＝Ｔ→ｖ」が記録されている。実際には、回転軸データアドレス情報部４０３Ｅには、図６の回転軸データ４０Ｒのアドレス情報が記録されるが、図１９のパート（ｂ）では、説明をわかりやすくするために、アドレス情報に代えて、図６の回転軸データＲ中の回転軸ベクトル情報部４０５Ｒに書き込まれるべき回転軸のベクトル「Ｂ１→ｖ」が示されている。なお、「Ｂ１→ｖ＝Ｔ→ｖ」は、テンポラリデータ４０Ｔ中のベクトル情報部４０２Ｔに記録されたベクトルと同じベクトルが記録されていることを示している。。
【０１１６】
次に、回転準備部１４は、指定された回転角度で、指定された結合軸の周りを回転させる回転行列を算出する。そして、回転準備部１４は、その算出した回転行列を、テンポラリデータ４０Ｔ中の回転行列情報部４０３Ｔに書き込む（図１７のステップＳ２０１３）。図１９のパート（ｂ）では、テンポラリデータ４０Ｔ中の左から３つ目の回転行列情報部４０３Ｔに、回転行列「Ｒ」が書き込まれている様子が示されている。次に、回転準備部１４は、回転実行部１５に回転実行の指示を与える。
【０１１７】
回転実行の指示を受けた回転実行部１５は、判定フラグ情報部が「Ｓｅｌｅｃｔ」に設定されている、回転対象の結合軸それぞれに対応した図６の結合軸ベクトル情報部４０５Ｂ中の結合軸ベクトルに、上記の回転行列を作用させる。さらに、回転実行部１５は、結合軸ベクトルの回転に合わせて、これら回転対象の結合軸につながっている回転対象の原子それぞれに対応した図６の原子座標情報部４０７Ａ中の座標を変換する（図１７のステップＳ２０１４）。
【０１１８】
図１９のパート（ｂ）には、結合軸Ｂ［１］、Ｂ［３］の個別結合軸データ４００Ｂである、Ｍ［１］→Ｂ［１］、Ｍ［１］→Ｂ［３］において、１番右側にある結合軸ベクトル情報部４０５Ｂに（図６参照）、回転前の結合軸ベクトルを表す、Ｍ［１］→Ｂ［１］→ｖ、Ｍ［１］→Ｂ［３］→ｖに対して、回転行列「Ｔ→Ｒ」（テンポラリデータ４０Ｔ中の回転行列情報部４０３Ｔに書き込まれた回転行列Ｒ）が作用してそれぞれｖ’、ｖ’’に変換された様子が示されている。
【０１１９】
また、図１９のパート（ｂ）には、Ａ［２］の個別原子データ４００ＡであるＭ［１］→Ａ［２］の１番右側の原子座標情報部４０７Ａにおいて、Ａ［２］の原子座標が、Ｒｏｔａｔｅ２の回転では固定されているＡ［１］の原子座標を表す、Ｍ［１］→Ａ［１］→ｃに、上記の変換後のＢ［１］の結合ベクトルｖ’を加えた座標ｃ’に変換された様子が示されている。また、Ａ［４］の個別原子データ４００ＡであるＭ［１］→Ａ［４］の１番右側の原子座標情報部４０７Ａにおいて、Ａ［４］の原子座標が、Ｒｏｔａｔｅ２の回転では固定されているＡ［１］の原子座標を表す、Ｍ［１］→Ａ［１］→ｃに、上記の変換後のＢ［４］の結合ベクトルｖ’’を加えた座標に変換された様子が示されている。
【０１２０】
図６の表示制御部１８は、回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、図１９のパート（ａ）に示すように、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図１７のステップＳ２０１５）。そして、回転準備部１４は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図１７のステップＳ２０１６）。図１９のパート（ｂ）には、ステップＳ２０１５の時点での分子構造データの様子が示されている。
【０１２１】
次に、Ｒｏｔａｔｅ２の回転後にＵＮＤＯが行われたときの様子について説明する。
【０１２２】
図２０は、Ｒｏｔａｔｅ２の回転後にユーザがＵＮＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャート、図２１は、ＵＮＤＯ実行後の分子構造データを表した図である。
【０１２３】
図１７で説明したＲｏｔａｔｅ２の回転後に、ユーザにより図８のＵＮＤＯボタン１２０９がマウス１４０でクリックされると、図５のＵＮＤＯ準備部１６が、そのＵＮＤＯ指示を取得する（図２０のステップＳ２１０１）。次に、ＵＮＤＯ準備部１６は、図２１に示すように、テンポラリデータ４０Ｔの左から１番目の補助フラグ情報部４０１Ｔに「Ｕｎｄｏ」を設定する（図２０のステップＳ２１０２）。次に、ＵＮＤＯ準備部１６は、分子データ４０ＭのＵＮＤＯ操作数情報部４０４Ｍに現在設定されているＵＮＤＯ操作数に、１を加える。図１９のパート（ｂ）に示すように、Ｒｏｔａｔｅ２の回転後には、分子データ４０Ｍの左から４番目のＵＮＤＯ操作数は「０」となっていたので、上記のＵＮＤＯ準備部１６の動作により、分子データ４０Ｍの左から４番目のＵＮＤＯ操作数は、図２１に示すように「１」となる。次に、ＵＮＤＯ準備部１６は、イベント番号を設定する（図２０のステップＳ２１０３）。図２１に示すように、この時点では、分子データ４０Ｍの左から３番目の変換操作数は「１」であり、左から４番目のＵＮＤＯ操作数は「１」であるので、その差であるイベント番号は０となる。このため、先のＲｏｔａｔｅ２のイベントデータ４０Ｅを表すＥ［０］とイベント番号が同じとなり、ＵＮＤＯに伴う変換では、先のＲｏｔａｔｅ２のイベントデータ４０Ｅを表すＥ［０］がそのまま利用される（上書きされる）。次に、ＵＮＤＯ準備部１６は、イベントデータ４０Ｅのチェックフラグ情報部４０１Ｅ（図２１のイベントデータ４０Ｅの左から１番目）の設定値が「Ｒｏｔａｔｅ２」となっていることから、ユーザにより先に指定された回転であって現在の取消し対象となっている回転の種類がＲｏｔａｔｅ２であることを把握する（図２０のステップＳ２１０４）。次に、ＵＮＤＯ準備部１６は、イベントデータ４０Ｅの識別情報部４０２Ｅ（図２１のイベントデータ４０Ｅの左から２番目）の設定値が「［３，ａｎｇｌｅ，２，０，０］」となっていることから、指定された原子がＡ［３］であって、指定された結合軸がＢ［２］であることを把握し、Ａ［３］の個別原子データ中のチェックフラグ情報部４０１Ａ、および、Ｂ［２］の個別結合軸データ中のチェックフラグ情報部４０１Ｂに、「Ｓｅｌｅｃｔ」を設定する（図２０のステップＳ２１０５）。次に、ＵＮＤＯ準備部１６は、ステップＳ２１０４およびステップＳ２１０５で得られた、先に指定された回転であって現在の取消し対象となっている回転の種類、指定された原子および結合軸の情報に基づき、図１７のステップＳ２００３〜ステップＳ２００８までの過程と同様にして、回転を取り消すための逆回転の対象となる結合軸を特定し、それらの個別結合軸データ４００Ｂの判定フラグ情報部４０１Ｂを「Ｓｅｌｅｃｔ」に設定する（図２０のステップＳ２１０６）。次に、ＵＮＤＯ準備部１６は、図６のイベントデータ４０Ｅの識別情報部４０２Ｅ（図２１のイベントデータ４０Ｅの左から２番目）に記録されている回転角度「ａｎｇｌｅ」の情報と、図６の回転軸データ４０Ｒの回転軸ベクトル情報部４０５Ｒに記録されている回転軸ベクトル（図２１では、イベントデータ４０Ｅの左から３番目の「Ｂ１」と略して示されている、図１９のパート（ｂ）の「Ｂ１→ｖ」のベクトル）の情報とに基づき、取消し対象の回転の行列の逆行列を算出する（図２０のステップＳ２１０７）。次に、ＵＮＤＯ準備部１６は、回転実行部１５にその逆行列による回転実行の指示を与え、回転実行部１５は、現在、個別結合軸データ４００Ｂ中で判定フラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」が設定されている結合軸（すなわち、Ｂ［１］、Ｂ［２］、Ｂ［３］）の結合軸ベクトルに、上記の逆行列を作用させる。ただし、Ｂ［２］は回転軸となっているのでこの作用で変化せず、Ｂ［１］、Ｂ［３］の結合軸ベクトルである、図１９のパート（ｂ）のｖ’、ｖ’’が、上記の逆行列で変化する。さらに、回転実行部１５は、原子座標も結合軸ベクトルの回転に合わせて変換する（図２０のステップＳ２１０８）。このような結合軸ベクトルの回転や原子座標の変換は、ステップＳ２１０８で用いられる回転行列が逆行列であって、回転対象の結合軸ベクトルや原子座標が、図１９のパート（ｂ）のＲｏｔａｔｅ２の回転後の結合軸ベクトルや原子座標である点を除き、図１７のステップＳ２０１４の過程と同様にして実行される。
【０１２４】
図６の表示制御部１８は、ステップＳ２１０８で回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図２０のステップＳ２１０９）。このとき表示される分子構造モデルの画像は、図１８のパート（ａ）に示すものと同じものとなる。そして、ＵＮＤＯ準備部１６は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図２０のステップＳ２１１０）。図２１には、ステップＳ２１１０の時点での分子構造データが示されている。
【０１２５】
次に、上記のようにＵＮＤＯが行われた後で、ＲＥＤＯが行われたときの様子について説明する。
【０１２６】
図２２は、Ｒｏｔａｔｅ２の回転後にＵＮＤＯが行われ、その後でユーザがＲＥＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャート、図２３は、ＲＥＤＯ実行後の分子構造データを表した図である。
【０１２７】
図２２で説明したＵＮＤＯの実行後に、ユーザにより図８のＲＥＤＯボタン１２１０がマウス１４０でクリックされると、図５のＲＥＤＯ準備部１７が、そのＲＥＤＯ指示を取得する（図２２のステップＳ２２０１）。次に、ＲＥＤＯ準備部１７は、図２３に示すように、テンポラリデータ４０Ｔの左から１番目の補助フラグ情報部４０１Ｔに「Ｒｅｄｏ」を設定する（図２２のステップＳ２２０２）。次に、ＲＥＤＯ準備部１７は、イベント番号を設定する。ＵＮＤＯ後は、図２１に示すように、分子データ４０Ｍの左から３番目の変換操作数は「１」であり、左から４番目のＵＮＤＯ操作数は「１」であるので、その差であるイベント番号は０となる。このため、先のＵＮＤＯのイベントデータ４０Ｅを表すＥ［０］とイベント番号が同じとなり、ＲＥＤＯに伴う変換では、先のＲｏｔａｔｅ２のイベントデータ４０Ｅを表すＥ［０］がそのまま利用される（上書きされる）。そして、ＲＥＤＯ準備部１７は、分子データ４０ＭのＵＮＤＯ操作数情報部４０４Ｍに現在設定されているＵＮＤＯ操作数から１を引く（図２２のステップＳ２２０３）。次に、ＲＥＤＯ準備部１７は、イベントデータ４０Ｅのチェックフラグ情報部４０１Ｅ（図２１のイベントデータ４０Ｅの左から１番目）の設定値が「Ｒｏｔａｔｅ２」となっていることから、ユーザにより先のＵＮＤＯで取消し対象となっていた回転の種類がＲｏｔａｔｅ２であることを把握する（図２２のステップＳ２２０４）。次に、ＲＥＤＯ準備部１７は、イベントデータ４０Ｅの識別情報部４０２Ｅ（図２１のイベントデータ４０Ｅの左から２番目）の設定値が「［３，ａｎｇｌｅ，２，０，０］」となっていることから、取消し前の回転で指定されていた原子がＡ［３］であって、取消し前の回転で指定されていた結合軸がＢ［２］であることを把握する。そして、ＲＥＤＯ準備部１７は、Ａ［３］の個別原子データ中のチェックフラグ情報部４０１Ａ、および、Ｂ［２］の個別結合軸データ中のチェックフラグ情報部４０１Ｂに、「Ｓｅｌｅｃｔ」を設定する（図２２のステップＳ２２０５）。次に、ＲＥＤＯ準備部１７は、ステップＳ２２０４およびステップＳ２２０５で得られた、取消し対象となっていた回転の種類、取消し前の回転で指定されていた原子および結合軸の情報に基づき、図１７のステップＳ２００３〜ステップＳ２００８までの過程と同様にして、再度の回転の対象となる結合軸を特定し、それらの個別結合軸データ４００Ｂの判定フラグ情報部４０１Ｂを「Ｓｅｌｅｃｔ」に設定する（図２２のステップＳ２２０６）。次に、ＲＥＤＯ準備部１７は、図６のイベントデータ４０Ｅの識別情報部４０２Ｅ（図２３のイベントデータ４０Ｅの左から２番目）に記録されている回転角度「ａｎｇｌｅ」の情報と、図６の回転軸データ４０Ｒの回転軸ベクトル情報部４０５Ｒに記録されている回転軸ベクトル（図２３では、イベントデータ４０Ｅの左から３番目の「Ｂ１」と略して示されている、図１９のパート（ｂ）の「Ｂ１→ｖ」のベクトル）の情報とに基づき、ＵＮＤＯで取消された回転の回転行列を算出する（図２２のステップＳ２２０７）。次に、ＲＥＤＯ準備部１７は、回転実行部１５に、その把握された行列による回転実行の指示を与え、回転実行部１５は、現在、個別結合軸データ４００Ｂ中で判定フラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」が設定されている結合軸（すなわち、Ｂ［１］、Ｂ［２］、Ｂ［３］）の結合軸ベクトル（すなわち、図２１のＭ［１］→Ｂ［１］、Ｍ［１］→Ｂ［２］、Ｍ［１］→Ｂ［３］の各個別結合軸情報データ４００Ｂ中のｖ）に、ステップＳ２２０７で把握された行列を作用させる。さらに、回転実行部１５は、原子座標も結合軸ベクトルの回転に合わせて変換する（図２２のステップＳ２２０８）。このような結合軸ベクトルの回転や原子座標の変換は、図１７のステップＳ２０１４の過程と同様にして実行される。
【０１２８】
図６の表示制御部１８は、ステップＳ２２０８で回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図２２のステップＳ２２０９）。このとき表示される分子構造モデルの画像は、図１９のパート（ａ）に示すものと同じものとなる。そして、ＲＥＤＯ準備部１７は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図２２のステップＳ２２１０）。図２３には、ステップＳ２２１０の時点での分子構造データが示されている。
【０１２９】
次に、図８のＲｏｔａｔｅ３の回転と、この回転についてのＵＮＤＯおよびＲＥＤＯとについて説明する。。
【０１３０】
ユーザが結合軸周りの回転（Ｒｏｔａｔｅ３）を選択する場合には、ユーザは、図８の回転指定欄１２０２中の４つのチェック欄１２０３のうち、上から３番目のチェック欄１２０３に、図２のマウス１４０のクリックでチェックを記入する。Ｒｏｔａｔｅ３は、２つの結合軸の間の角度変更に対応する回転であり、Ｒｏｔａｔｅ３の回転を実行するためには、ユーザは、同一の原子とつながっている２本の結合軸を指定するとともに、その２つの結合軸のうち、固定しておきたい方の結合軸とつながっている、上記の同一の原子とは異なる別の原子を指定する。従って、この別の原子は、分子構造モデル中で、ユーザが固定しておきたい部分に属する原子である。これらの指定は、ユーザが、結合軸や原子をマウス１４０を使って分子構造モデル表示窓１２０１中でクリックすることで行われる。Ｒｏｔａｔｅ３は、２つの結合軸の間の角度変更に対応する回転であるので、回転軸は、２つの結合軸のベクトルのベクトル積（ベクトルの外積）で表される。ユーザは、この回転軸周りの回転角度を、Ｒｏｔａｔｅ３の回転角度指定欄１２０７に書き込む。
【０１３１】
以下では、上記の２本の軸としてＢ［２］およびＢ［３］が指定され、固定しておきたい部分に含まれる原子として図９のＡ［４］が指定されたものとしてＲｏｔａｔｅ３の説明を行う。ここでは、図９に示す初期状態の分子構造モデルにＲｏｔａｔｅ３の回転が施されるものとして説明を行う。
【０１３２】
図２４は、Ｒｏｔａｔｅ３の回転が行われる際に、図５の各部で行われる動作の流れを表したフローチャート、図２５および図２６は、Ｒｏｔａｔｅ３の回転前後の分子構造モデルと分子構造データとを表した図である。
【０１３３】
ユーザにより、上述したようなＲｏｔａｔｅ３の指定、原子および結合軸の指定、回転角度の指定がなされると、図５の回転指定情報取得部１１が、それらの指定の内容を表した回転指定情報を取得する（図２４のステップＳ３００１）。図２５のパート（ａ）では、指定された原子および結合軸が、Ａ［４］、Ｂ［２］、Ｂ［３］であることが、Ａ［４］、Ｂ［２］、Ｂ［３］それぞれに対応する原子や結合軸が点線で表現されることで表されており、また、ここでは、上記のの指定を明示的に示すためにＡ［４］、Ｂ［２］、Ｂ［３］とは四角で囲まれて表されている。このように指定されたＲｏｔａｔｅ３では、Ｂ［２］とＢ［３］との両方につながっている原子Ａ［１］から延びる軸であって、Ｂ［２］の結合軸ベクトルとＢ［３］の結合軸ベクトルのベクトル積で表される方向に延びる軸を回転軸として、Ｂ［２］やＢ［３］が属する平面内で、原子Ａ［３］、Ａ［５］（および、結合軸Ｂ［２］、Ｂ［４］）が、図の矢印で示す方向に回転する。
【０１３４】
次に、図５の回転指定情報取得部１１は、テンポラリデータ４０Ｔ中の補助フラグを「Ｒｏｔａｔｅ３」に設定し、指定された原子であるＡ［４］の図６の個別原子データ４００Ａ中のチェックフラグ情報部４０１Ａ、指定された結合軸であるＢ［２］、Ｂ［３］の個別結合軸データ４００Ｂ中のチェックフラグ情報部４０１Ｂをそれぞれ「Ｓｅｌｅｃｔ」に設定する（図１０のステップＳ３００２）。図２５のパート（ｂ）には、このステップＳ３００２の時点での分子構造データの様子が示されており、Ａ［４］の個別原子データ４００Ａを表すＭ［１］→Ａ［４］、および、Ｂ［２］、Ｂ［３］の個別結合軸データ４００Ｂを表すＭ［１］→Ｂ［２］、Ｍ［１］→Ｂ［３］において、それぞれ、左から１番目のチェックフラグ情報部に「Ｓｅｌｅｃｔ」が記録されている様子が示されている。
【０１３５】
一方、図５の回転可能性判定部１３は、指定された２本の結合軸のうち、指定された原子とつながっている結合軸について、その結合軸とつながっている、指定された原子以外の原子を把握し、その原子が、指定された別の結合軸を介してつながっている新たな原子を把握する。そして、図５の回転可能性判定部１３は、その別の結合軸の個別結合軸データ４００Ｂ中の判定フラグ情報部４０１Ｂを「Ｓｅｌｅｃｔ」に設定する（図２４のステップＳ３００３）。ここでは、指定された結合軸Ｂ［３］とつながっている、指定された原子Ａ［４］以外の新たな原子は、Ａ［１］であることが把握される。さらに、そのＡ［１］が、指定された別の結合軸であるＢ［２］を介してつながっている別の新たな原子としてＡ［３］が把握され、その指定された別の結合軸であるＢ［２］について、個別結合軸データ４００Ｂ中の判定フラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」に設定される。次に、回転可能性判定部１３は、その新たな原子につながっている新たな結合軸が存在するか否かを判定する（図２４のステップＳ３００４）。Ａ［３］につながっている新たな結合軸として結合軸Ｂ［４］が存在するので、ここでは、ステップＳ３００４でＹｅｓが選択される。次に、回転可能性判定部１３は、存在が確認された結合軸の個別結合軸データ４００Ｂ中の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」を設定し、さらにその結合軸とつながっている別の新たな原子を把握する（図２４のステップＳ３００５）。ここでは、結合軸Ｂ［４］の個別結合軸データ４００Ｂ中の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」が設定され、これらにつながっている別の新たな原子としてＡ［５］が把握される。次に、回転可能性判定部１３は、ステップＳ３００５で把握された別の新たな原子の個別原子データのチェックフラグ情報部４０１Ａで「Ｓｅｌｅｃｔ」が設定されているか否かを判定する（図２４のステップＳ３００６）。すなわち、その別の新たな原子が、ユーザにより指定された原子であるか否かが判定される。ここでは、Ａ［５］は指定された原子ではないのでＮｏが選択される。
【０１３６】
なお、仮に、ステップＳ３００５で把握された別の新たな原子が、指定された原子であった場合には（図２４のステップＳ３００６；Ｙｅｓ）、回転可能性判定部１３は、その指定された原子（チェックフラグが「Ｓｅｌｅｃｔ」に設定されている原子）の個別原子データ４００Ａの判定フラグ情報領域に「Ｃｈａｉｎ」を設定し、データの変換作業の中止を図５の回転準備部１４に伝え、図５の回転準備部１４は回転の準備を中止する（図２４のステップＳ３００７）。こうすることで、分子構造モデル中で回転対象の部分が環状の構造をしており、回転対象の部分だけを回転することが困難な場合には、回転が中止されることとなる。
【０１３７】
ステップＳ３００６でＮｏが選択されると、再び上述したステップＳ３００４以降の過程が繰り返し実行される。ここでは、Ａ［５］には結合軸Ｂ［２］以外に新たな結合軸は存在しないのでステップＳ３００４に２回目に達した時にＮｏが選択されることとなる。
【０１３８】
ステップＳ３００３〜ステップＳ３００７までの過程が、指定された種類の回転（つまりＲｏｔａｔｅ３）が実行可能であるか否かの判定を行う過程であり、指定された原子の個別原子データ４００Ａの判定フラグ情報領域に「Ｃｈａｉｎ」を設定されることなくステップＳ３００４でＮｏと判定される場合が、指定された回転が実行可能であると判定される場合である。さらに、このとき、回転対象の結合軸は、すべて、個別結合軸データ４００Ｂのチェックフラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」に設定されており、これにより、回転対象の結合軸が特定されることとなる。
【０１３９】
ステップＳ３００４でＮｏと判定された後、図５の回転準備部１４は、この回転に対応したイベント番号を決定し、そのイベント番号を有するイベントデータ４０Ｅを、上記の指定された回転用のイベントデータ４０Ｅとして割り当てる（図２４のステップＳ３００８）。ここでは、図６の変換操作数情報部４０３Ｍ、およびＵＮＤＯ操作数情報部４０４Ｍには、図２５のパート（ｂ）に示すように０（ゼロ）が設定されているので、イベント番号は０（ゼロ）となり、ここで、割り当てられるイベントデータ４０Ｅは、図２５のパート（ｂ）のイベントデータ４０Ｅに示す「Ｅ［０］」となる。なお、ここでの説明では、このＥ［０］は、図９のパート（ｂ）に示す初期状態のデータ中のＥ［０］と同じなので、Ｅ［０］中には「Ｎｕｌｌ」や「Ｉ」しか記録されていないが、もし、ステップＳ３００８の時点で、すでに、同じイベント番号を有するイベントデータ４０Ｅが存在している場合には、そのイベントデータ４０Ｅの各情報部を、図９のパート（ｂ）に示す初期状態のデータと同じ状態に戻す。（すなわち、古いデータを消去して、イベントデータ４０Ｅの各情報部を「Ｎｕｌｌ」や「Ｉ」に戻す）。イベント番号の決定後、回転準備部１４は、分子データ４０Ｍ中の変換操作数情報部４０３Ｍに現在記録されている変換操作数の値に１を加える。図２６のパート（ｂ）には、分子データ４０Ｍ中の変換操作数情報部４０３Ｍの数値（左から３番目の数値）が「１」となっている様子が示されている。
【０１４０】
次に、回転準備部１４は、ステップＳ３００２で補助フラグ情報部４０１Ｔに記録されている内容（ここでは「Ｒｏｔａｔｅ３」）を、そのまま、ステップＳ３００８で決定されたイベント番号を有するイベントデータ４０Ｅ中のチェックフラグ４０１Ｅに書き込む（図２４のステップＳ３００９）。そして、回転準備部１４は、チェックフラグが「Ｓｅｌｅｃｔ」に設定されている原子および結合軸（つまり指定された原子および結合軸）の識別番号をイベントデータ４０Ｅ中の識別情報４０２Ｅに書き込む（図２４のステップＳ３０１０）。
【０１４１】
図２６のパート（ｂ）には、Ｅ［０］のイベントデータ４０Ｅ中のチェックフラグ４０１Ｅに「Ｒｏｔａｔｅ３」が書き込まれている様子が示されている。また、図２６のパート（ｂ）には、その後に続く識別情報４０２Ｅの［  ］内において、左から１番目に、指定された原子Ａ［４］を表す数値「４」が書き込まれ、左から３番目に、指定された結合軸Ｂ［２］を表す数値「２」が書き込まれ、左から４番目に、指定された結合軸Ｂ［３］を表す数値「３」が書き込まれている様子が示されている。
【０１４２】
次に、回転準備部１４は、指定された回転角度をイベントデータ４０Ｅの識別情報４０２Ｅに書き込み、指定された２本の結合軸の結合軸ベクトルのベクトル積を、図６のテンポラリデータ４０Ｔ中のベクトル情報部４０２Ｔに書き込む。さらに、回転準備部１４は、ベクトル情報部４０２Ｔに書き込まれたベクトルを、図６の回転軸データＲ中の回転軸ベクトル情報部４０５Ｒに書き込む（図２４のステップＳ３０１１）。図２６のパート（ｂ）には、Ｅ［０］のイベントデータ４０Ｅにおいて、識別情報４０２Ｅに対応した［  ］内の左から２番目に「ａｎｇｌｅ」が書き込まれており、これが上記の回転角度を表している。上述したように、識別情報４０２Ｅの［  ］内の５つのいずれに、原子の識別番号や結合軸の識別番号を書き込むは、回転の種類によって決まっており、Ｒｏｔａｔｅ３では、１番目が指定された原子の識別番号であり、２番目が指定された回転角度であり、３番目および４番目が指定された結合軸の識別番号である。また、図２６のパート（ｂ）には、テンポラリデータ４０Ｔ中の左から２番目に、「ｖ＝（Ｍ［１］−Ｂ［２］→ｖ  ×  Ｍ［１］−Ｂ［３］→ｖ）」が記録されており、Ｂ［２］、Ｂ［３］の結合軸ベクトルのベクトル積が、ベクトル情報部４０２Ｔに書き込まれたベクトルであることを表している。また、Ｅ［０］のイベントデータ４０Ｅにおいては、左から３番目の、図６の回転軸データアドレス情報部４０３Ｅに対応する箇所に、「Ｂ１→ｖ＝Ｔ→ｖ」が記録されている。実際には、回転軸データアドレス情報部４０３Ｅには、図６の回転軸データ４０Ｒのアドレス情報が記録されるが、図２６のパート（ｂ）では、説明をわかりやすくするために、アドレス情報に代えて、図６の回転軸データＲ中の回転軸ベクトル情報部４０５Ｒに書き込まれるべき回転軸のベクトル「Ｂ１→ｖ」が示されている。なお、「Ｂ１→ｖ＝Ｔ→ｖ」は、テンポラリデータ４０Ｔ中のベクトル情報部４０２Ｔに記録されたベクトルと同じベクトルが記録されていることを示している。。
【０１４３】
次に、回転準備部１４は、指定された回転角度で、上記の回転軸の周りを回転させる回転行列を算出する。そして、回転準備部１４は、その算出した回転行列を、テンポラリデータ４０Ｔ中の回転行列情報部４０３Ｔに書き込む（図２４のステップＳ３０１２）。図２６のパート（ｂ）では、テンポラリデータ４０Ｔ中の左から３つ目の回転行列情報部４０３Ｔに、回転行列「Ｒ」が書き込まれている様子が示されている。次に、回転準備部１４は、回転実行部１５に回転実行の指示を与える。
【０１４４】
回転実行の指示を受けた回転実行部１５は、判定フラグ情報部が「Ｓｅｌｅｃｔ」に設定されている、回転対象の結合軸それぞれに対応した図６の結合軸ベクトル情報部４０５Ｂ中の結合軸ベクトルに、上記の回転行列を作用させる。さらに、回転実行部１５は、結合軸ベクトルの回転に合わせて、これら回転対象の結合軸につながっている回転対象の原子それぞれに対応した図６の原子座標情報部４０７Ａ中の座標を変換する（図２４のステップＳ３０１３）。
【０１４５】
図２６のパート（ｂ）には、結合軸Ｂ［２］、Ｂ［４］の個別結合軸データ４００Ｂである、Ｍ［１］→Ｂ［２］、Ｍ［１］→Ｂ［４］において、１番右側にある結合軸ベクトル情報部４０５Ｂに（図６参照）、回転前の結合軸ベクトルを表す、Ｍ［１］→Ｂ［２］→ｖ、Ｍ［１］→Ｂ［４］→ｖに対して、回転行列「Ｔ→Ｒ」（テンポラリデータ４０Ｔ中の回転行列情報部４０３Ｔに書き込まれた回転行列Ｒ）が作用してそれぞれｖ’、ｖ’’に変換された様子が示されている。
【０１４６】
また、図２６のパート（ｂ）には、Ａ［３］の個別原子データ４００ＡであるＭ［１］→Ａ［３］の１番右側の原子座標情報部４０７Ａにおいて、Ａ［３］の原子座標が、Ｒｏｔａｔｅ３の回転では固定されているＡ［１］の原子座標を表す、Ｍ［１］→Ａ［１］→ｃに、上記の変換後のＢ［２］の結合ベクトルｖ’を加えた座標ｃ’に変換された様子が示されている。また、Ａ［５］の個別原子データ４００ＡであるＭ［１］→Ａ［５］の１番右側の原子座標情報部４０７Ａにおいて、Ａ［５］の原子座標が、上記のＲｏｔａｔｅ３の回転後のＡ［１］の原子座標ｃ’に、上記の変換後のＢ［４］の結合ベクトルｖ’’を加えた座標に変換された様子が示されている。
【０１４７】
図６の表示制御部１８は、回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、図２６のパート（ａ）に示すように、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図２４のステップＳ３０１４）。そして、回転準備部１４は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図２４のステップＳ３０１５）。図２６のパート（ｂ）には、ステップＳ３０１５の時点での分子構造データの様子が示されている。
【０１４８】
次に、Ｒｏｔａｔｅ３の回転後にＵＮＤＯが行われたときの様子について説明する。
【０１４９】
図２７は、Ｒｏｔａｔｅ３の回転後にユーザがＵＮＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャート、図２８は、ＵＮＤＯ実行後の分子構造データを表した図である。
【０１５０】
図２４で説明したＲｏｔａｔｅ３の回転後に、ユーザにより図８のＵＮＤＯボタン１２０９がマウス１４０でクリックされると、図５のＵＮＤＯ準備部１６が、そのＵＮＤＯ指示を取得する（図２７のステップＳ３１０１）。次に、ＵＮＤＯ準備部１６は、図２８に示すように、テンポラリデータ４０Ｔの左から１番目の補助フラグ情報部４０１Ｔに「Ｕｎｄｏ」を設定する（図２７のステップＳ３１０２）。次に、ＵＮＤＯ準備部１６は、分子データ４０ＭのＵＮＤＯ操作数情報部４０４Ｍに現在設定されているＵＮＤＯ操作数に、１を加える。図２６のパート（ｂ）に示すように、Ｒｏｔａｔｅ３の回転後には、分子データ４０Ｍの左から４番目のＵＮＤＯ操作数は「０」となっていたので、上記のＵＮＤＯ準備部１６の動作により、分子データ４０Ｍの左から４番目のＵＮＤＯ操作数は、図２８に示すように「１」となる。次に、ＵＮＤＯ準備部１６は、イベント番号を設定する（図２７のステップＳ３１０３）。図２８に示すように、この時点では、分子データ４０Ｍの左から３番目の変換操作数は「１」であり、左から４番目のＵＮＤＯ操作数は「１」であるので、その差であるイベント番号は０となる。このため、先のＲｏｔａｔｅ３のイベントデータ４０Ｅを表すＥ［０］とイベント番号が同じとなり、ＵＮＤＯに伴う変換では、先のＲｏｔａｔｅ３のイベントデータ４０Ｅを表すＥ［０］がそのまま利用される（上書きされる）。次に、ＵＮＤＯ準備部１６は、イベントデータ４０Ｅのチェックフラグ情報部４０１Ｅ（図２８のイベントデータ４０Ｅの左から１番目）の設定値が「Ｒｏｔａｔｅ３」となっていることから、ユーザにより先に指定された回転であって現在の取消し対象となっている回転の種類がＲｏｔａｔｅ３であることを把握する（図２７のステップＳ３１０４）。次に、ＵＮＤＯ準備部１６は、イベントデータ４０Ｅの識別情報部４０２Ｅ（図２８のイベントデータ４０Ｅの左から２番目）の設定値が「［４，ａｎｇｌｅ，２，３，０］」となっていることから、指定された原子がＡ［４］であって、指定された結合軸がＢ［２］、Ｂ［３］であることを把握し、Ａ［４］の個別原子データ中のチェックフラグ情報部４０１Ａ、および、Ｂ［２］、Ｂ［３］の個別結合軸データ中のチェックフラグ情報部４０１Ｂに、「Ｓｅｌｅｃｔ」を設定する（図２７のステップＳ３１０５）。次に、ＵＮＤＯ準備部１６は、ステップＳ３１０４およびステップＳ３１０５で得られた、先に指定された回転であって現在の取消し対象となっている回転の種類、指定された原子および結合軸の情報に基づき、図２４のステップＳ３００３〜ステップＳ３００７までの過程と同様にして、回転を取り消すための逆回転の対象となる結合軸を特定し、それらの個別結合軸データ４００Ｂの判定フラグ情報部４０１Ｂを「Ｓｅｌｅｃｔ」に設定する（図２７のステップＳ３１０６）。次に、ＵＮＤＯ準備部１６は、図６のイベントデータ４０Ｅの識別情報部４０２Ｅ（図２８のイベントデータ４０Ｅの左から２番目）に記録されている回転角度「ａｎｇｌｅ」の情報と、図６の回転軸データ４０Ｒの回転軸ベクトル情報部４０５Ｒに記録されている回転軸ベクトル（図２８では、イベントデータ４０Ｅの左から３番目の「Ｂ１」と略して示されている、図２６のパート（ｂ）の「Ｂ１→ｖ」のベクトル）の情報とに基づき、取消し対象の回転の行列の逆行列を算出する（図２７のステップＳ３１０７）。次に、ＵＮＤＯ準備部１６は、回転実行部１５にその逆行列による回転実行の指示を与え、回転実行部１５は、現在、個別結合軸データ４００Ｂ中で判定フラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」が設定されている結合軸の結合軸ベクトル（すなわち、図２６のパート（ｂ）に示す、Ｂ［２］、Ｂ［４］の結合軸ベクトルｖ’、ｖ’’）に、上記の逆行列を作用させる。さらに、回転実行部１５は、原子座標も結合軸ベクトルの回転に合わせて変換する（図２７のステップＳ３１０８）。このような結合軸ベクトルの回転や原子座標の変換は、ステップＳ３１０８で用いられる回転行列が逆行列であって、回転対象の結合軸ベクトルや原子座標が、図２６のパート（ｂ）のＲｏｔａｔｅ３の回転後の結合軸ベクトルや原子座標である点を除き、図２４のステップＳ３０１３の過程と同様にして実行される。
【０１５１】
図６の表示制御部１８は、ステップＳ３１０８で回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図２７のステップＳ３１０９）。このとき表示される分子構造モデルの画像は、図２５のパート（ａ）に示すものと同じものとなる。そして、ＵＮＤＯ準備部１６は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図２７のステップＳ３１１０）。図２８には、ステップＳ３１１０の時点での分子構造データが示されている。
【０１５２】
次に、上記のようにＵＮＤＯが行われた後で、ＲＥＤＯが行われたときの様子について説明する。
【０１５３】
図２９は、Ｒｏｔａｔｅ３の回転後にＵＮＤＯが行われ、その後でユーザがＲＥＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャート、図３０は、ＲＥＤＯ実行後の分子構造データを表した図である。
【０１５４】
図２９で説明したＵＮＤＯの実行後に、ユーザにより図８のＲＥＤＯボタン１２１０がマウス１４０でクリックされると、図５のＲＥＤＯ準備部１７が、そのＲＥＤＯ指示を取得する（図２９のステップＳ３２０１）。次に、ＲＥＤＯ準備部１７は、図３０に示すように、テンポラリデータ４０Ｔの左から１番目の補助フラグ情報部４０１Ｔに「Ｒｅｄｏ」を設定する（図２９のステップＳ３２０２）。次に、ＲＥＤＯ準備部１７は、イベント番号を設定する。ＵＮＤＯ後は、図２８に示すように、分子データ４０Ｍの左から３番目の変換操作数は「１」であり、左から４番目のＵＮＤＯ操作数は「１」であるので、その差であるイベント番号は０となる。このため、先のＵＮＤＯのイベントデータ４０Ｅを表すＥ［０］とイベント番号が同じとなり、ＲＥＤＯに伴う変換では、先のＲｏｔａｔｅ３のイベントデータ４０Ｅを表すＥ［０］がそのまま利用される（上書きされる）。そして、ＲＥＤＯ準備部１７は、分子データ４０ＭのＵＮＤＯ操作数情報部４０４Ｍに現在設定されているＵＮＤＯ操作数から１を引く（図２９のステップＳ３２０３）。次に、ＲＥＤＯ準備部１７は、イベントデータ４０Ｅのチェックフラグ情報部４０１Ｅ（図２８のイベントデータ４０Ｅの左から１番目）の設定値が「Ｒｏｔａｔｅ３」となっていることから、ユーザにより先のＵＮＤＯで取消し対象となっていた回転の種類がＲｏｔａｔｅ３であることを把握する（図２９のステップＳ３２０４）。次に、ＲＥＤＯ準備部１７は、イベントデータ４０Ｅの識別情報部４０２Ｅ（図２８のイベントデータ４０Ｅの左から２番目）の設定値が「［４，ａｎｇｌｅ，２，３，０］」となっていることから、取消し前の回転で指定されていた原子がＡ［４］であって、取消し前の回転で指定されていた結合軸がＢ［２］、Ｂ［３］であることを把握する。そして、ＲＥＤＯ準備部１７は、Ａ［４］の個別原子データ中のチェックフラグ情報部４０１Ａ、および、Ｂ［２］、Ｂ［３］の個別結合軸データ中のチェックフラグ情報部４０１Ｂに、「Ｓｅｌｅｃｔ」を設定する（図２９のステップＳ３２０５）。次に、ＲＥＤＯ準備部１７は、ステップＳ３２０４およびステップＳ３２０５で得られた、取消し対象となっていた回転の種類、取消し前の回転で指定されていた原子および結合軸の情報に基づき、図２４のステップＳ３００３〜ステップＳ３００７までの過程と同様にして、再度の回転の対象となる結合軸を特定し、それらの個別結合軸データ４００Ｂの判定フラグ情報部４０１Ｂを「Ｓｅｌｅｃｔ」に設定する（図２９のステップＳ３２０６）。次に、ＲＥＤＯ準備部１７は、図６のイベントデータ４０Ｅの識別情報部４０２Ｅ（図３０のイベントデータ４０Ｅの左から２番目）に記録されている回転角度「ａｎｇｌｅ」の情報と、図６の回転軸データ４０Ｒの回転軸ベクトル情報部４０５Ｒに記録されている回転軸ベクトル（図３０では、イベントデータ４０Ｅの左から３番目の「Ｂ１」と略して示されている、図２６のパート（ｂ）の「Ｂ１→ｖ」のベクトル）の情報とに基づき、ＵＮＤＯで取消された回転の回転行列を算出する（図２９のステップＳ３２０７）。次に、ＲＥＤＯ準備部１７は、回転実行部１５に、その把握された行列による回転実行の指示を与え、回転実行部１５は、現在、個別結合軸データ４００Ｂ中で判定フラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」が設定されている結合軸（すなわち、Ｂ［２］、Ｂ［４］）の結合軸ベクトル（すなわち、図２８のＭ［１］→Ｂ［２］、Ｍ［１］→Ｂ［４］各個別結合軸情報データ４００Ｂ中のｖ）に、ステップＳ３２０７で把握された行列を作用させる。さらに、回転実行部１５は、原子座標も結合軸ベクトルの回転に合わせて変換する（図２９のステップＳ３２０８）。このような結合軸ベクトルの回転や原子座標の変換は、図２４のステップＳ３０１３の過程と同様にして実行される。
【０１５５】
図６の表示制御部１８は、ステップＳ３２０８で回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図２９のステップＳ３２０９）。このとき表示される分子構造モデルの画像は、図２６のパート（ａ）に示すものと同じものとなる。そして、ＲＥＤＯ準備部１７は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図２９のステップＳ３２１０）。図３０には、ステップＳ３２１０の時点での分子構造データが示されている。
【０１５６】
次に、図８のＲｏｔａｔｅ４の回転と、この回転についてのＵＮＤＯおよびＲＥＤＯとについて説明する。。
【０１５７】
ユーザが結合軸周りの回転（Ｒｏｔａｔｅ４）を選択する場合には、ユーザは、図８の回転指定欄１２０２中の４つのチェック欄１２０３のうち、上から４番目のチェック欄１２０３に、図２のマウス１４０のクリックでチェックを記入する。Ｒｏｔａｔｅ４は、１つの結合軸を交線とする２つの平面の法線ベクトルのなす角（２面角）の変更を行う回転であり、交線となる結合軸を指定するとともに、その交線となる結合軸の一方の端の原子に結合する結合軸と、その交線となる結合軸の他方の端の原子に結合する結合軸との２本の結合軸を指定する。ここで、交線となる結合軸と、その交線となる結合軸の一方の端の原子に結合する結合軸とを含む平面が、上述した２つの平面のうちの１つの平面である。また、交線となる結合軸と、その交線となる結合軸の他方の端の原子に結合する結合軸とを含む平面が、上述した２つの平面のうちのもう１つの平面である。ここで、Ｒｏｔａｔｅ４の回転では、一方の平面が、他方の平面を固定したまま、交線となる結合軸を回転軸として回転することで、２面角の変更が行われる。ユーザは、Ｒｏｔａｔｅ４の回転で固定しておきたい方の平面を指定するために、交線となる結合軸の端の原子に結合する上述の２本の結合軸のうち、その固定しておきたい方の平面に属する結合軸とつながっている、その端の原子とは異なる別の原子を指定する。これらの指定は、ユーザが、結合軸や原子をマウス１４０を使って分子構造モデル表示窓１２０１中でクリックすることで行われる。さらにユーザは、交線となる結合軸周りの回転角度を、Ｒｏｔａｔｅ４の回転角度指定欄１２０７に書き込む。
【０１５８】
以下では、交線となる結合軸としてＢ［２］が指定され、Ｂ［２］の端の原子に結合する２本の結合軸としてＢ［３］およびＢ［４］が指定され、さらに、固定しておきたい方の平面に属する結合軸がＢ［３］であってこのＢ［３］とつながるＡ［４］が指定されたものとしてＲｏｔａｔｅ４の説明を行う。ここでは、図９に示す初期状態の分子構造モデルにＲｏｔａｔｅ４の回転が施されるものとして説明を行う。
【０１５９】
図３１は、Ｒｏｔａｔｅ４の回転が行われる際に、図５の各部で行われる動作の流れを表したフローチャート、図３２および図３３は、Ｒｏｔａｔｅ４の回転前後の分子構造モデルと分子構造データとを表した図である。
【０１６０】
ユーザにより、上述したようなＲｏｔａｔｅ４の指定、原子および結合軸の指定、回転角度の指定がなされると、図５の回転指定情報取得部１１が、それらの指定の内容を表した回転指定情報を取得する（図３１のステップＳ４００１）。図３２のパート（ａ）では、指定された原子および結合軸が、Ａ［４］、Ｂ［２］、Ｂ［３］、Ｂ［４］であることが、Ａ［４］、Ｂ［２］、Ｂ［３］、Ｂ［４］それぞれに対応する原子や結合軸が点線で表現されることで表されており、また、ここでは、上記のの指定を明示的に示すためにＡ［４］、Ｂ［２］、Ｂ［３］、Ｂ［４］とは四角で囲まれて表されている。このように指定されたＲｏｔａｔｅ４では、Ｂ［２］を回転軸として、原子Ａ［５］（および、結合軸Ｂ［４］）が、図の矢印で示す方向に回転する。
【０１６１】
次に、図５の回転指定情報取得部１１は、テンポラリデータ４０Ｔ中の補助フラグを「Ｒｏｔａｔｅ４」に設定し、指定された原子であるＡ［４］の図６の個別原子データ４００Ａ中のチェックフラグ情報部４０１Ａ、指定された結合軸であるＢ［２］、Ｂ［３］、Ｂ［４］の個別結合軸データ４００Ｂ中のチェックフラグ情報部４０１Ｂをそれぞれ「Ｓｅｌｅｃｔ」に設定する（図１０のステップＳ４００２）。図３２のパート（ｂ）には、このステップＳ４００２の時点での分子構造データの様子が示されており、Ａ［４］の個別原子データ４００Ａを表すＭ［１］→Ａ［４］、および、Ｂ［２］、Ｂ［３］、Ｂ［４］の個別結合軸データ４００Ｂを表すＭ［１］→Ｂ［２］、Ｍ［１］→Ｂ［３］、Ｍ［１］→Ｂ［４］において、それぞれ、左から１番目のチェックフラグ情報部に「Ｓｅｌｅｃｔ」が記録されている様子が示されている。
【０１６２】
一方、図５の回転可能性判定部１３は、指定された３本の結合軸のうち、指定された原子とつながっている結合軸について、その結合軸とつながっている、指定された原子以外の原子を把握し、その原子が、指定された別の結合軸を介してつながっている新たな原子を把握する（図３１のステップＳ４００３）。ここでは、指定された結合軸Ｂ［３］とつながっている、指定された原子Ａ［４］以外の原子は、Ａ［１］であることが把握される。さらに、そのＡ［１］が、指定された別の結合軸であるＢ［２］を介してつながっている新たな原子としてＡ［３］が把握される。次に、回転可能性判定部１３は、その新たな原子につながっている新たな結合軸が存在するか否かを判定する（図３１のステップＳ４００４）。Ａ［３］につながっている新たな結合軸として結合軸Ｂ［４］が存在するので、ここでは、ステップＳ４００４でＹｅｓが選択される。次に、回転可能性判定部１３は、存在が確認された結合軸の個別結合軸データ４００Ｂ中の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」を設定し、さらにその結合軸とつながっている別の新たな原子を把握する（図３１のステップＳ４００５）。ここでは、結合軸Ｂ［４］の個別結合軸データ４００Ｂ中の判定フラグ情報部４０２Ｂに「Ｓｅｌｅｃｔ」が設定され、これらにつながっている別の新たな原子としてＡ［５］が把握される。次に、回転可能性判定部１３は、ステップＳ４００５で把握された別の新たな原子の個別原子データのチェックフラグ情報部４０１Ａで「Ｓｅｌｅｃｔ」が設定されているか否かを判定する（図３１のステップＳ４００６）。すなわち、その別の新たな原子が、ユーザにより指定された原子であるか否かが判定される。ここでは、Ａ［５］は指定された原子ではないのでＮｏが選択される。
【０１６３】
なお、仮に、ステップＳ４００５で把握された別の新たな原子が、指定された原子であった場合には（図３１のステップＳ４００６；Ｙｅｓ）、回転可能性判定部１３は、その指定された原子（チェックフラグが「Ｓｅｌｅｃｔ」に設定されている原子）の個別原子データ４００Ａの判定フラグ情報領域に「Ｃｈａｉｎ」を設定し、データの変換作業の中止を図５の回転準備部１４に伝え、図５の回転準備部１４は回転の準備を中止する（図３１のステップＳ４００７）。こうすることで、分子構造モデル中で回転対象の部分が環状の構造をしており、回転対象の部分だけを回転することが困難な場合には、回転が中止されることとなる。
【０１６４】
ステップＳ４００６でＮｏが選択されると、再び上述したステップＳ４００４以降の過程が繰り返し実行される。ここでは、Ａ［５］には結合軸Ｂ［４］以外に新たな結合軸は存在しないのでステップＳ４００４に２回目に達した時にＮｏが選択されることとなる。
【０１６５】
ステップＳ４００３〜ステップＳ４００７までの過程が、指定された種類の回転（つまりＲｏｔａｔｅ４）が実行可能であるか否かの判定を行う過程であり、指定された原子の個別原子データ４００Ａの判定フラグ情報領域に「Ｃｈａｉｎ」を設定されることなくステップＳ４００４でＮｏと判定される場合が、指定された回転が実行可能であると判定される場合である。さらに、このとき、回転対象の結合軸は、すべて、個別結合軸データ４００Ｂのチェックフラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」に設定されており、これにより、回転対象の結合軸が特定されることとなる。
【０１６６】
ステップＳ４００４でＮｏと判定された後、図５の回転準備部１４は、この回転に対応したイベント番号を決定し、そのイベント番号を有するイベントデータ４０Ｅを、上記の指定された回転用のイベントデータ４０Ｅとして割り当てる（図３１のステップＳ４００８）。ここでは、図６の変換操作数情報部４０３Ｍ、およびＵＮＤＯ操作数情報部４０４Ｍには、図３２のパート（ｂ）に示すように０（ゼロ）が設定されているので、イベント番号は０（ゼロ）となり、ここで、割り当てられるイベントデータ４０Ｅは、図３２のパート（ｂ）のイベントデータ４０Ｅに示す「Ｅ［０］」となる。なお、ここでの説明では、このＥ［０］は、図９のパート（ｂ）に示す初期状態のデータ中のＥ［０］と同じなので、Ｅ［０］中には「Ｎｕｌｌ」や「Ｉ」しか記録されていないが、もし、ステップＳ４００８の時点で、すでに、同じイベント番号を有するイベントデータ４０Ｅが存在している場合には、そのイベントデータ４０Ｅの各情報部を、図９のパート（ｂ）に示す初期状態のデータと同じ状態に戻す。（すなわち、古いデータを消去して、イベントデータ４０Ｅの各情報部を「Ｎｕｌｌ」や「Ｉ」に戻す）。イベント番号の決定後、回転準備部１４は、分子データ４０Ｍ中の変換操作数情報部４０３Ｍに現在記録されている変換操作数の値に１を加える。図３３のパート（ｂ）には、分子データ４０Ｍ中の変換操作数情報部４０３Ｍの数値（左から３番目の数値）が「１」となっている様子が示されている。
【０１６７】
次に、回転準備部１４は、ステップＳ４００２で補助フラグ情報部４０１Ｔに記録されている内容（ここでは「Ｒｏｔａｔｅ４」）を、そのまま、ステップＳ４００８で決定されたイベント番号を有するイベントデータ４０Ｅ中のチェックフラグ４０１Ｅに書き込む（図３１のステップＳ４００９）。そして、回転準備部１４は、チェックフラグが「Ｓｅｌｅｃｔ」に設定されている原子および結合軸（つまり指定された原子および結合軸）の識別番号をイベントデータ４０Ｅ中の識別情報４０２Ｅに書き込む（図３１のステップＳ４０１０）。
【０１６８】
図３３のパート（ｂ）には、Ｅ［０］のイベントデータ４０Ｅ中のチェックフラグ４０１Ｅに「Ｒｏｔａｔｅ４」が書き込まれている様子が示されている。また、図３３のパート（ｂ）には、その後に続く識別情報４０２Ｅの［  ］内において、左から１番目に、指定された原子Ａ［４］を表す数値「４」が書き込まれ、左から３番目に、指定された結合軸Ｂ［２］を表す数値「２」が書き込まれ、左から４番目に、指定された結合軸Ｂ［３］を表す数値「３」が書き込まれ、左から５番目に、指定された結合軸Ｂ［４］を表す数値「４」が書き込まれている様子が示されている。
【０１６９】
次に、回転準備部１４は、指定された回転角度をイベントデータ４０Ｅの識別情報４０２Ｅに書き込み、指定された３本の結合軸のうち、回転軸となる結合軸の結合軸ベクトルを規格化したものを、図６のテンポラリデータ４０Ｔ中のベクトル情報部４０２Ｔに書き込む。さらに、回転準備部１４は、ベクトル情報部４０２Ｔに書き込まれたベクトルを、図６の回転軸データＲ中の回転軸ベクトル情報部４０５Ｒに書き込む（図３１のステップＳ４０１１）。ここで、指定された３本の結合軸は、間に原子を介して１次元的につながっており（例えば、図３２のパート（ａ）ではＢ［３］、Ｂ［２］、Ｂ［４］の順につながっている）、ステップＳ４０１１では、回転準備部１４は、この１次元的なつながりの真中に位置する結合軸を、回転軸となる結合軸として把握し、その結合軸の結合軸ベクトルを規格化したものを、ベクトル情報部４０２Ｔに書き込む。
【０１７０】
図３３のパート（ｂ）には、Ｅ［０］のイベントデータ４０Ｅにおいて、識別情報４０２Ｅに対応した［  ］内の左から２番目に「ａｎｇｌｅ」が書き込まれており、これが上記の回転角度を表している。上述したように、識別情報４０２Ｅの［  ］内の５つのいずれに、原子の識別番号や結合軸の識別番号を書き込むは、回転の種類によって決まっており、Ｒｏｔａｔｅ４では、１番目が指定された原子の識別番号であり、２番目が指定された回転角度であり、３番目、４番目、および５番目が指定された結合軸の識別番号である。また、図３３のパート（ｂ）には、テンポラリデータ４０Ｔ中の左から２番目に、「ｖ  ／／  Ｍ［１］−Ｂ［２］→ｖ」が記録されており、これは、Ｂ［２］の結合軸ベクトルに平行なベクトルｖが書き込まれていることを表している。また、Ｅ［０］のイベントデータ４０Ｅにおいては、左から３番目の、図６の回転軸データアドレス情報部４０３Ｅに対応する箇所に、「Ｂ１→ｖ＝Ｔ→ｖ」が記録されている。実際には、回転軸データアドレス情報部４０３Ｅには、図６の回転軸データ４０Ｒのアドレス情報が記録されるが、図３３のパート（ｂ）では、説明をわかりやすくするために、アドレス情報に代えて、図６の回転軸データＲ中の回転軸ベクトル情報部４０５Ｒに書き込まれるべき回転軸のベクトル「Ｂ１→ｖ」が示されている。なお、「Ｂ１→ｖ＝Ｔ→ｖ」は、テンポラリデータ４０Ｔ中のベクトル情報部４０２Ｔに記録されたベクトルと同じベクトルが記録されていることを示している。。
【０１７１】
次に、回転準備部１４は、指定された回転角度で、上記の回転軸の周りを回転させる回転行列を算出する。そして、回転準備部１４は、その算出した回転行列を、テンポラリデータ４０Ｔ中の回転行列情報部４０３Ｔに書き込む（図３１のステップＳ４０１２）。図３３のパート（ｂ）では、テンポラリデータ４０Ｔ中の左から３つ目の回転行列情報部４０３Ｔに、回転行列「Ｒ」が書き込まれている様子が示されている。次に、回転準備部１４は、回転実行部１５に回転実行の指示を与える。
【０１７２】
回転実行の指示を受けた回転実行部１５は、判定フラグ情報部が「Ｓｅｌｅｃｔ」に設定されている、回転対象の結合軸それぞれに対応した図６の結合軸ベクトル情報部４０５Ｂ中の結合軸ベクトルに、上記の回転行列を作用させる。さらに、回転実行部１５は、結合軸ベクトルの回転に合わせて、これら回転対象の結合軸につながっている回転対象の原子それぞれに対応した図６の原子座標情報部４０７Ａ中の座標を変換する（図３１のステップＳ４０１３）。
【０１７３】
図３３のパート（ｂ）には、結合軸Ｂ［４］の個別結合軸データ４００Ｂである、Ｍ［１］→Ｂ［４］において、１番右側にある結合軸ベクトル情報部４０５Ｂに（図６参照）、回転前の結合軸ベクトルを表す、Ｍ［１］→Ｂ［４］→ｖに対して、回転行列「Ｔ→Ｒ」（テンポラリデータ４０Ｔ中の回転行列情報部４０３Ｔに書き込まれた回転行列Ｒ）が作用してそれぞれｖ’に変換された様子が示されている。
【０１７４】
また、図３３のパート（ｂ）には、Ａ［５］の個別原子データ４００ＡであるＭ［１］→Ａ［５］の１番右側の原子座標情報部４０７Ａにおいて、Ａ［５］の原子座標が、Ｒｏｔａｔｅ４の回転では固定されているＡ［３］の原子座標を表す、Ｍ［１］→Ａ［３］→ｃに、上記の変換後のＢ［４］の結合ベクトルｖ’を加えた座標に変換された様子が示されている。
【０１７５】
図６の表示制御部１８は、回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、図３３のパート（ａ）に示すように、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図３１のステップＳ４０１４）。そして、回転準備部１４は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図３１のステップＳ４０１５）。図３３のパート（ｂ）には、ステップＳ４０１５の時点での分子構造データの様子が示されている。
【０１７６】
次に、Ｒｏｔａｔｅ４の回転後にＵＮＤＯが行われたときの様子について説明する。
【０１７７】
図３４は、Ｒｏｔａｔｅ４の回転後にユーザがＵＮＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャート、図３５は、ＵＮＤＯ実行後の分子構造データを表した図である。
【０１７８】
図３１で説明したＲｏｔａｔｅ４の回転後に、ユーザにより図８のＵＮＤＯボタン１２０９がマウス１４０でクリックされると、図５のＵＮＤＯ準備部１６が、そのＵＮＤＯ指示を取得する（図３４のステップＳ４１０１）。次に、ＵＮＤＯ準備部１６は、図３５に示すように、テンポラリデータ４０Ｔの左から１番目の補助フラグ情報部４０１Ｔに「Ｕｎｄｏ」を設定する（図３４のステップＳ４１０２）。次に、ＵＮＤＯ準備部１６は、分子データ４０ＭのＵＮＤＯ操作数情報部４０４Ｍに現在設定されているＵＮＤＯ操作数に、１を加える。図３３のパート（ｂ）に示すように、Ｒｏｔａｔｅ４の回転後には、分子データ４０Ｍの左から４番目のＵＮＤＯ操作数は「０」となっていたので、上記のＵＮＤＯ準備部１６の動作により、分子データ４０Ｍの左から４番目のＵＮＤＯ操作数は、図３５に示すように「１」となる。次に、ＵＮＤＯ準備部１６は、イベント番号を設定する（図３４のステップＳ４１０３）。図３５に示すように、この時点では、分子データ４０Ｍの左から３番目の変換操作数は「１」であり、左から４番目のＵＮＤＯ操作数は「１」であるので、その差であるイベント番号は０となる。このため、先のＲｏｔａｔｅ４のイベントデータ４０Ｅを表すＥ［０］とイベント番号が同じとなり、ＵＮＤＯに伴う変換では、先のＲｏｔａｔｅ４のイベントデータ４０Ｅを表すＥ［０］がそのまま利用される（上書きされる）。次に、ＵＮＤＯ準備部１６は、イベントデータ４０Ｅのチェックフラグ情報部４０１Ｅ（図３５のイベントデータ４０Ｅの左から１番目）の設定値が「Ｒｏｔａｔｅ４」となっていることから、ユーザにより先に指定された回転であって現在の取消し対象となっている回転の種類がＲｏｔａｔｅ４であることを把握する（図３４のステップＳ４１０４）。次に、ＵＮＤＯ準備部１６は、イベントデータ４０Ｅの識別情報部４０２Ｅ（図３５のイベントデータ４０Ｅの左から２番目）の設定値が「［４，ａｎｇｌｅ，２，３，４］」となっていることから、指定された原子がＡ［４］であって、指定された結合軸がＢ［２］、Ｂ［３］、Ｂ［４］であることを把握し、Ａ［４］の個別原子データ中のチェックフラグ情報部４０１Ａ、および、Ｂ［２］、Ｂ［３］、Ｂ［４］の個別結合軸データ中のチェックフラグ情報部４０１Ｂに、「Ｓｅｌｅｃｔ」を設定する（図３４のステップＳ４１０５）。次に、ＵＮＤＯ準備部１６は、ステップＳ４１０４およびステップＳ４１０５で得られた、先に指定された回転であって現在の取消し対象となっている回転の種類、指定された原子および結合軸の情報に基づき、図３１のステップＳ４００３〜ステップＳ４００７までの過程と同様にして、回転を取り消すための逆回転の対象となる結合軸を特定し、それらの個別結合軸データ４００Ｂの判定フラグ情報部４０１Ｂを「Ｓｅｌｅｃｔ」に設定する（図３４のステップＳ４１０６）。次に、ＵＮＤＯ準備部１６は、図６のイベントデータ４０Ｅの識別情報部４０２Ｅ（図３５のイベントデータ４０Ｅの左から２番目）に記録されている回転角度「ａｎｇｌｅ」の情報と、図６の回転軸データ４０Ｒの回転軸ベクトル情報部４０５Ｒに記録されている回転軸ベクトル（図３５では、イベントデータ４０Ｅの左から３番目の「Ｂ１」と略して示されている、図３３のパート（ｂ）の「Ｂ１→ｖ」のベクトル）の情報とに基づき、取消し対象の回転の行列の逆行列を算出する（図３４のステップＳ４１０７）。次に、ＵＮＤＯ準備部１６は、回転実行部１５にその逆行列による回転実行の指示を与え、回転実行部１５は、現在、個別結合軸データ４００Ｂ中で判定フラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」が設定されている結合軸の結合軸ベクトル（すなわち、図３３のパート（ｂ）に示す、Ｂ［４］の結合軸ベクトルｖ’）に、上記の逆行列を作用させる。さらに、回転実行部１５は、原子座標も結合軸ベクトルの回転に合わせて変換する（図３４のステップＳ４１０８）。このような結合軸ベクトルの回転や原子座標の変換は、ステップＳ４１０８で用いられる回転行列が逆行列であって、回転対象の結合軸ベクトルや原子座標が、図３３のパート（ｂ）のＲｏｔａｔｅ４の回転後の結合軸ベクトルや原子座標である点を除き、図３１のステップＳ４０１３の過程と同様にして実行される。
【０１７９】
図６の表示制御部１８は、ステップＳ４１０８で回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図３４のステップＳ４１０９）。このとき表示される分子構造モデルの画像は、図３２のパート（ａ）に示すものと同じものとなる。そして、ＵＮＤＯ準備部１６は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図３４のステップＳ４１１０）。図３５には、ステップＳ４１１０の時点での分子構造データが示されている。
【０１８０】
次に、上記のようにＵＮＤＯが行われた後で、ＲＥＤＯが行われたときの様子について説明する。
【０１８１】
図３６は、Ｒｏｔａｔｅ４の回転後にＵＮＤＯが行われ、その後でユーザがＲＥＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャート、図３７は、ＲＥＤＯ実行後の分子構造データを表した図である。
【０１８２】
図３６で説明したＵＮＤＯの実行後に、ユーザにより図８のＲＥＤＯボタン１２１０がマウス１４０でクリックされると、図５のＲＥＤＯ準備部１７が、そのＲＥＤＯ指示を取得する（図３６のステップＳ４２０１）。次に、ＲＥＤＯ準備部１７は、図３７に示すように、テンポラリデータ４０Ｔの左から１番目の補助フラグ情報部４０１Ｔに「Ｒｅｄｏ」を設定する（図３６のステップＳ４２０２）。次に、ＲＥＤＯ準備部１７は、イベント番号を設定する。ＵＮＤＯ後は、図３５に示すように、分子データ４０Ｍの左から３番目の変換操作数は「１」であり、左から４番目のＵＮＤＯ操作数は「１」であるので、その差であるイベント番号は０となる。このため、先のＵＮＤＯのイベントデータ４０Ｅを表すＥ［０］とイベント番号が同じとなり、ＲＥＤＯに伴う変換では、先のＲｏｔａｔｅ４のイベントデータ４０Ｅを表すＥ［０］がそのまま利用される（上書きされる）。そして、ＲＥＤＯ準備部１７は、分子データ４０ＭのＵＮＤＯ操作数情報部４０４Ｍに現在設定されているＵＮＤＯ操作数から１を引く（図３６のステップＳ４２０３）。次に、ＲＥＤＯ準備部１７は、イベントデータ４０Ｅのチェックフラグ情報部４０１Ｅ（図３５のイベントデータ４０Ｅの左から１番目）の設定値が「Ｒｏｔａｔｅ４」となっていることから、ユーザにより先のＵＮＤＯで取消し対象となっていた回転の種類がＲｏｔａｔｅ４であることを把握する（図３６のステップＳ４２０４）。次に、ＲＥＤＯ準備部１７は、イベントデータ４０Ｅの識別情報部４０２Ｅ（図３５のイベントデータ４０Ｅの左から２番目）の設定値が「［４，ａｎｇｌｅ，２，３，４］」となっていることから、取消し前の回転で指定されていた原子がＡ［４］であって、取消し前の回転で指定されていた結合軸がＢ［２］、Ｂ［３］、Ｂ［４］であることを把握する。そして、ＲＥＤＯ準備部１７は、Ａ［４］の個別原子データ中のチェックフラグ情報部４０１Ａ、および、Ｂ［２］、Ｂ［３］、Ｂ［４］の個別結合軸データ中のチェックフラグ情報部４０１Ｂに、「Ｓｅｌｅｃｔ」を設定する（図３６のステップＳ４２０５）。次に、ＲＥＤＯ準備部１７は、ステップＳ４２０４およびステップＳ４２０５で得られた、取消し対象となっていた回転の種類、取消し前の回転で指定されていた原子および結合軸の情報に基づき、図３１のステップＳ４００３〜ステップＳ４００７までの過程と同様にして、再度の回転の対象となる結合軸を特定し、それらの個別結合軸データ４００Ｂの判定フラグ情報部４０１Ｂを「Ｓｅｌｅｃｔ」に設定する（図３６のステップＳ４２０６）。次に、ＲＥＤＯ準備部１７は、図６のイベントデータ４０Ｅの識別情報部４０２Ｅ（図３７のイベントデータ４０Ｅの左から２番目）に記録されている回転角度「ａｎｇｌｅ」の情報と、図６の回転軸データ４０Ｒの回転軸ベクトル情報部４０５Ｒに記録されている回転軸ベクトル（図３７では、イベントデータ４０Ｅの左から３番目の「Ｂ１」と略して示されている、図３３のパート（ｂ）の「Ｂ１→ｖ」のベクトル）の情報とに基づき、ＵＮＤＯで取消された回転の回転行列を算出する（図３６のステップＳ４２０７）。次に、ＲＥＤＯ準備部１７は、回転実行部１５に、その把握された行列による回転実行の指示を与え、回転実行部１５は、現在、個別結合軸データ４００Ｂ中で判定フラグ情報部４０１Ｂが「Ｓｅｌｅｃｔ」が設定されている結合軸（すなわち、Ｂ［４］）の結合軸ベクトル（すなわち、図３５のＭ［１］→Ｂ［４］の個別結合軸情報データ４００Ｂ中のｖ）に、ステップＳ４２０７で把握された行列を作用させる。さらに、回転実行部１５は、原子座標も結合軸ベクトルの回転に合わせて変換する（図３６のステップＳ４２０８）。このような結合軸ベクトルの回転や原子座標の変換は、図３１のステップＳ４０１３の過程と同様にして実行される。
【０１８３】
図６の表示制御部１８は、ステップＳ４２０８で回転実行部１５により原子座標や結合軸ベクトルの書き換えが行われた分子構造データに基づき、分子構造モデルの画像を分子構造モデル表示窓１２０１に表示する（図３６のステップＳ４２０９）。このとき表示される分子構造モデルの画像は、図３３のパート（ａ）に示すものと同じものとなる。そして、ＲＥＤＯ準備部１７は、全ての原子および結合軸のチェックフラグ情報部および判定フラグ情報部の設定を「Ｎｕｌｌ」に戻す（図３６のステップＳ４２１０）。図３７には、ステップＳ４２１０の時点での分子構造データが示されている。
【０１８４】
以上が、図８のＲｏｔａｔｅ１〜Ｒｏｔａｔｅ４の４種類の回転と、それぞれの回転のＵＮＤＯおよびＲＥＤＯの説明である。以上の説明では、図９に示す初期状態の分子構造モデルに上記の各種類の回転が施されるものとしたため、各回転についての情報は、図１２のパート（ｂ）、図１９のパート（ｂ）、図２６のパート（ｂ）、図３３のパート（ｂ）に示すように、いずれも、図６のイベントデータ４０Ｅを表すＥ［０］に記録された。      
【０１８５】
しかし、例えば、Ｒｏｔａｔｅ１〜Ｒｏｔａｔｅ４の回転をこの順番に行った場合には、変換操作数が増加してイベント番号が増加していくため、Ｅ［０］、Ｅ［１］、Ｅ［２］、Ｅ［３］の順にイベントデータ４０Ｅが累積的に作成されていく。このときには、図１２のパート（ｂ）中のＥ［０］と同じ内容がＥ［０］に記録され、図１９のパート（ｂ）中のＥ［０］と同じ内容がＥ［１］に記録され、図２６のパート（ｂ）中のＥ［０］と同じ内容がＥ［２］に記録され、図３３のパート（ｂ）中のＥ［０］と同じ内容がＥ［３］に記録されることとなる。それとともに、図６の回転軸データ４０Ｒも上記の４種類の回転それぞれについて作成される。一方、図６のＧＵＩ用データ４０Ｇのデータの内容は、回転によらず一定であり、図６の、テンポラリデータ４０Ｔ、分子データ４０Ｍ、原子データ４０Ａ、結合軸データ４０Ｂは、回転のたびに書き換えられていくことはあっても情報量が増えることはない。
【０１８６】
次に、このように、分子構造データ中でイベントデータ４０Ｅと回転軸データ４０Ｒの情報量だけが回転操作とともに増加していく方式では、過去の回転操作で実現した状態についての情報量が小さく抑えられることを、図１の従来の分子構造データと比較してより具体的に説明する。
【０１８７】
ここでは、原子の数がＡ個で各原子に２本の結合軸がある分子の分子構造モデルについて、Ｎ回の回転操作が行われたときの情報量を、図１の従来の分子構造データと、図６の分子構造データとで比較する。ここで、簡単のため、分子中の結合軸の総数は、（２×Ａ）本とみなして話を進める。
【０１８８】
また、ここでは、簡単のためにＧＵＩ用データの存在は無視するものとし、各種の操作数や識別番号といった整数値の情報や、各種のフラグやアドレスの情報、図６の識別情報部４０２内の回転角度の情報については、それぞれ４バイト分の情報とし、また、ベクトルや座標の成分、回転行列の成分といった小数点を含む値については、値１つあたり８バイト分の情報として情報量の見積もりを行う。
【０１８９】
まず、図１の従来の分子構造データについて情報量の見積もりを行う。
【０１９０】
図１のイベントデータ３０Ｅは、変換操作数情報部３０１Ｅ、ＵＮＤＯ操作数情報部３０２Ｅ、および分子データアドレス情報部３０３Ｅを備えている。これらは、いずれも１つの整数値のデータが記録されるので、全部で３×４＝１２バイト分の情報量となる。
【０１９１】
図１の分子データ３０Ｍは、総原子数情報部３０１Ｍ、総結合軸数情報部３０２Ｍ、原子データアドレス情報部３０３Ｍ、および、結合軸データアドレス情報部３０４Ｍを備えている。これらは、いずれも１つの整数値のデータが記録されるので、全部で４×４＝１６バイト分の情報量となる。
【０１９２】
原子データ３０Ａは、Ａ個の個別原子データ３００Ａによって構成されており、原子データ３０Ａは回転操作が行われるごとに増加していくので、原子データ３０Ａの全情報量は、ある時点での個別原子データ３００Ａの情報量の（Ｎ＋１）×Ａ倍となる。個別原子データ３００Ａは、原子識別番号情報部３０１Ａ、原子番号情報部３０２Ａ、結合軸数情報部３０３Ａ、原子用結合情報部３０４Ａ、および原子座標情報部３０５Ａから構成されている。原子識別番号情報部３０１Ａ、原子番号情報部３０２Ａ、結合軸数情報部３０３Ａは、いずれも１つの整数値のデータが記録され、原子用結合情報部３０４Ａには２つの整数値のデータが記録され、原子座標情報部３０５Ａには小数点を含む値の３つ分のデータが記録される。そこで、ある時点での個別原子データ３００Ａの情報量は、（３＋２）×４＋３×８＝４４バイトとなる。そこで、原子データ３０Ａの全情報量は、４４×（Ｎ＋１）×Ａバイトとなる。
【０１９３】
結合軸データ３０Ｂは、（２×Ａ）個の個別結合軸データ３００Ｂによって構成されており、結合軸データ３０Ｂは回転操作が行われるごとに増加していくので、結合軸データ３０Ｂの全情報量は、ある時点での個別結合軸データ３００Ｂの情報量の（Ｎ＋１）×（２×Ａ）倍となる。個別結合軸データ３００Ｂは、結合軸識別番号情報部３０１Ｂ、結合軸用結合情報部３０２Ｂ、および、結合軸ベクトル情報部３０３Ｂから構成されている。結合軸識別番号情報部３０１Ｂには、１つの整数値のデータが記録され、結合軸用結合情報部３０２Ｂには２つの整数値のデータが記録され、結合軸ベクトル情報部３０３Ｂには小数点を含む値の３つ分のデータが記録される。そこで、ある時点での個別結合軸データ３００Ｂの情報量は、（１＋２）×４＋３×８＝３６バイトとなる。そこで、結合軸データ３０Ｂの全情報量は、３６×（Ｎ＋１）×（２×Ａ）＝７２×（Ｎ＋１）×Ａバイトとなる。
【０１９４】
以上より、図１の従来の分子構造データでは、全情報量は、１２＋１６＋４４×（Ｎ＋１）×Ａ＋７２×（Ｎ＋１）×Ａ＝２８＋１１６×（Ｎ＋１）×Ａ  バイトとなる。特にＮが大きいときには、図１の従来の分子構造データの全情報量は、ほぼ、１１６×Ｎ×Ａバイトとなる。
【０１９５】
次に、図６の分子構造データについて情報量の見積もりを行う。
【０１９６】
テンポラリデータ４０Ｔは、補助フラグ情報部４０１Ｔ、ベクトル情報部４０２Ｔ、および回転行列情報部４０３Ｔを備えている。、補助フラグ情報部４０１Ｔには、１つの整数値のデータが記録され、ベクトル情報部４０２Ｔには、小数点を含む値の３つ分のデータが記録され、回転行列情報部４０３Ｔには、小数点を含む値の９つ分のデータが記録される。そこで、テンポラリデータ４０Ｔの情報量は、１×４＋（３＋９）×８＝１００バイトとなる。
【０１９７】
イベントデータ４０Ｅは、回転操作が行われるごとに増加していくデータであり、それぞれの回転操作ごとに、チェックフラグ情報部４０１Ｅ、識別情報部４０２Ｅ、回転軸データアドレス情報部４０３Ｅ、および回転行列情報部４０４Ｅを備えている。１つの回転については、チェックフラグ情報部４０１Ｅ、回転軸データアドレス情報部４０３Ｅには、いずれも１つの整数値のデータが記録され、識別情報部４０２Ｅには、５つの整数値のデータが記録され、回転行列情報部４０４Ｅには、小数点を含む値の９つ分のデータが記録される。そこで、１つの回転についてのイベントデータ４０Ｅの情報量は、（２＋５）×４＋９×８＝１００バイトとなる。そこで、Ｎ回の回転についてのイベントデータ４０Ｅの全情報量は、１００×Ｎバイトとなる。
【０１９８】
分子データ４０Ｍは、総原子数情報部４０１Ｍ、総結合軸数情報部４０２Ｍ、変換操作数情報部４０３Ｍ、ＵＮＤＯ操作数情報部４０４Ｍ，原子データアドレス情報部４０５Ｍ、結合軸データアドレス情報部４０６Ｍ、および、回転行列情報部４０７Ｍを備えている。総原子数情報部４０１Ｍ、総結合軸数情報部４０２Ｍ、変換操作数情報部４０３Ｍ、ＵＮＤＯ操作数情報部４０４Ｍ，原子データアドレス情報部４０５Ｍ、結合軸データアドレス情報部４０６Ｍには、いずれも１つの整数値のデータが記録され、回転行列情報部４０７Ｍには、小数点を含む値の９つ分のデータが記録される。そこで、分子データ４０Ｍの情報量は、６×４＋９×８＝１１６バイトとなる。
【０１９９】
原子データ４０Ａは、Ａ個の個別原子データ３００Ａによって構成されており、個別原子データ４００Ａは、チェックフラグ情報部４０１Ａ、判定フラグ情報部４０２Ａ、原子識別番号情報部４０３Ａ、原子番号情報部４０４Ａ、結合軸数情報部４０５Ａ、原子用結合情報部４０６Ａ、および原子座標情報部４０７Ａから構成されている。チェックフラグ情報部４０１Ａ、判定フラグ情報部４０２Ａ、原子識別番号情報部４０３Ａ、原子番号情報部４０４Ａ、結合軸数情報部４０５Ａには、いずれも１つの整数値のデータが記録され、原子用結合情報部４０６Ａには、２つの整数値のデータが記録され、原子座標情報部４０７Ａには、小数点を含む値の３つ分のデータが記録される。そこで、１つの個別原子データ４００Ａの情報量は、（５＋２）×４＋３×８＝５２バイトとなり、原子データ４０Ａの全情報量は、５２×Ａバイトとなる。
【０２００】
結合軸データ４０Ｂは、２Ａ個の個別結合軸データ３００Ｂによって構成されており、個別結合軸データ３００Ｂは、チェックフラグ情報部４０１Ｂ、判定フラグ情報部４０２Ｂ、結合軸識別番号情報部４０３Ｂ、結合軸用結合情報部４０４Ｂ、および、結合軸ベクトル情報部４０５Ｂから構成されている。チェックフラグ情報部４０１Ｂ、判定フラグ情報部４０２Ｂ、結合軸識別番号情報部４０３Ｂには、いずれも１つの整数値のデータが記録され、結合軸用結合情報部４０４Ｂには、２つの整数値のデータが記録され、結合軸ベクトル情報部４０５Ｂには、小数点を含む値の３つ分のデータが記録される。そこで、１つの個別結合軸データ４００Ｂの情報量は、（３＋２）×４＋３×８＝４４バイトとなり、結合軸データ４０Ｂの全情報量は、４４×（２×Ａ）＝８８×Ａバイトとなる
回転軸データ４０Ｒは、回転操作が行われるごとに増加していくデータであり、それぞれの回転操作ごとに、チェックフラグ情報部４０１Ｒ、判定フラグ情報部４０２Ｒ、回転軸識別番号情報部４０３Ｒ、回転軸用結合情報部４０４Ｒ、および、回転軸ベクトル情報部４０５Ｒから構成されている。１つの回転については、チェックフラグ情報部４０１Ｒ、判定フラグ情報部４０２Ｒ、回転軸識別番号情報部４０３Ｒには、いずれも１つの整数値のデータが記録され、回転軸用結合情報部４０４Ｒには、２つの整数値のデータが記録され、回転軸ベクトル情報部４０５Ｒには、小数点を含む値の３つ分のデータが記録される。そこで、１つの回転についての回転軸データ４０Ｒの情報量は、（３＋２）×４＋３×８＝４４バイトとなる。そこで、Ｎ回の回転についての回転軸データ４０Ｒの全情報量は、４４×Ｎバイトとなる。
【０２０１】
以上より、図６の分子構造データでは、全情報量は、１００＋１００×Ｎ＋１１６＋５２×Ａ＋８８×Ａ＋４４×Ｎ＝２１６＋１４４×Ｎ＋１４０×Ａバイトとなる。特にＮが大きいときには、図６の分子構造データの全情報量は、ほぼ、１４４×Ｎバイトとなる。
【０２０２】
ここで、図６の分子構造データの全情報量に対する、図１の従来の分子構造データの全情報量の比は、Ｎが大きいときには、１１６×Ｎ×Ａ／（１４４×Ｎ）＝２９×Ａ／３６となる。通常、分子構造モデルでは、原子数が、数百以上になることもあり、この場合、図１の従来の分子構造データの全情報量は、図６の分子構造データの全情報量の数百倍となる。このことから、図６の分子構造データのように、分子構造データ中でイベントデータ４０Ｅと回転軸データ４０Ｒの情報量だけが回転操作とともに増加していく方式では、過去の回転操作で実現した状態についての情報量が小さく抑えられることがわかる。
【０２０３】
以上が、実施形態の説明である。
【０２０４】
以上では、図８の４種類の回転を有する分子構造表示装置について説明したが、さらに他の種類の回転をユーザが選択できる機能が備えられていてもよい。
【図面の簡単な説明】
【０２０５】
【図１】従来の分子構造表示装置で用いられる分子構造データのデータ構成を表した図である。
【図２】分子構造表示装置の一実施形態として動作するパーソナルコンピュータの外観斜視図である。
【図３】図２のパーソナルコンピュータのハードウェア構成図である。
【図４】分子構造表示プログラムの一実施形態を示す図である。
【図５】図２および図３に示すパーソナルコンピュータを分子構造表示装置の一実施形態として動作させるためにこのパーソナルコンピュータ上に構築される要素と、それらの要素による作用の概略を表す図である。
【図６】図２および図３に示すパーソナルコンピュータで処理される分子構造データのデータ構成を表した図である。
【図７】初期データの構成の手順を示すフローチャートである。
【図８】図２の表示画面１２１上に表示される分子構造モデルを示した図である。
【図９】初期データで表される分子構造モデルの状態（初期状態）を表す図である。
【図１０】Ｒｏｔａｔｅ１の回転が行われる際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図１１】Ｒｏｔａｔｅ１の回転前の分子構造モデルと分子構造データとを表した図である。
【図１２】Ｒｏｔａｔｅ１の回転後の分子構造モデルと分子構造データとを表した図である。
【図１３】Ｒｏｔａｔｅ１の回転後にユーザがＵＮＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図１４】ＵＮＤＯ実行後の分子構造データを表した図である。
【図１５】Ｒｏｔａｔｅ１の回転後にＵＮＤＯが行われ、その後でユーザがＲＥＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図１６】ＲＥＤＯ実行後の分子構造データを表した図である。
【図１７】Ｒｏｔａｔｅ２の回転が行われる際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図１８】Ｒｏｔａｔｅ２の回転前の分子構造モデルと分子構造データとを表した図である。
【図１９】Ｒｏｔａｔｅ２の回転後の分子構造モデルと分子構造データとを表した図である。
【図２０】Ｒｏｔａｔｅ２の回転後にユーザがＵＮＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図２１】ＵＮＤＯ実行後の分子構造データを表した図である。
【図２２】Ｒｏｔａｔｅ２の回転後にＵＮＤＯが行われ、その後でユーザがＲＥＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図２３】ＲＥＤＯ実行後の分子構造データを表した図である。
【図２４】Ｒｏｔａｔｅ３の回転が行われる際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図２５】Ｒｏｔａｔｅ３の回転前の分子構造モデルと分子構造データとを表した図である。
【図２６】Ｒｏｔａｔｅ３の回転後の分子構造モデルと分子構造データとを表した図である。
【図２７】Ｒｏｔａｔｅ３の回転後にユーザがＵＮＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図２８】ＵＮＤＯ実行後の分子構造データを表した図である。
【図２９】Ｒｏｔａｔｅ３の回転後にＵＮＤＯが行われ、その後でユーザがＲＥＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図３０】ＲＥＤＯ実行後の分子構造データを表した図である。
【図３１】Ｒｏｔａｔｅ４の回転が行われる際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図３２】Ｒｏｔａｔｅ４の回転前の分子構造モデルと分子構造データとを表した図である。
【図３３】Ｒｏｔａｔｅ４の回転後の分子構造モデルと分子構造データとを表した図である。
【図３４】Ｒｏｔａｔｅ４の回転後にユーザがＵＮＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図３５】ＵＮＤＯ実行後の分子構造データを表した図である。
【図３６】Ｒｏｔａｔｅ４の回転後にＵＮＤＯが行われ、その後でユーザがＲＥＤＯ操作をした際に、図５の各部で行われる動作の流れを表したフローチャートである。
【図３７】ＲＥＤＯ実行後の分子構造データを表した図である。
【符号の説明】
【０２０６】
１１，２１  回転指定情報取得部
１２，２２  初期データ構成部
１３，２３  回転可能性判定部
１４，２４  回転準備部
１５，２５  回転実行部
１６，２６  ＵＮＤＯ準備部
１７，２７  ＲＥＤＯ準備部
１８，２８  表示制御部
１００  パーソナルコンピュータ
１１０  本体部
１１１  ＦＤ装填口
１１２  ＣＤ−ＲＯＭ装填口
１２０  画像表示装置
１２１  表示画面
１４０  キーボード
１４０  マウス
１２００  バス
２１１  ＣＰＵ
２１２  主メモリ
２１３  ハードディスク装置
２１４  ＦＤドライブ
２１４０  ＦＤ
２１５  ＣＤ−ＲＯＭドライブ
２１５０  ＣＤ−ＲＯＭ
２１６  入出力インタフェース
３０Ｇ，４０Ｇ  ＧＵＩ用データ
３０Ｅ，４０Ｅ  イベントデータ
３０Ｍ，４０Ｍ  分子データ
３０Ａ，４０Ａ  原子データ
３０Ｂ，４０Ｂ  結合軸データ
３００Ａ，４００Ａ  個別原子データ
３００Ｂ，４００Ｂ  個別結合軸データ
３０１Ｅ，４０３Ｍ  変換操作数情報部
３０１Ｍ，４０１Ｍ  総原子数情報部
３０１Ａ，４０３Ａ  原子識別番号情報部
３０１Ｂ，４０３Ｂ  結合軸識別番号情報部
３０２Ｅ，４０４Ｍ  ＵＮＤＯ操作数情報部
３０２Ｍ，４０２Ｍ  総結合軸数情報部
３０２Ａ，４０４Ａ  原子番号情報部
３０２Ｂ，４０４Ｂ  結合軸用結合情報部
３０３Ｅ  分子データアドレス情報部
３０３Ｍ，４０５Ｍ  原子データアドレス情報部
３０３Ａ，４０５Ａ  結合軸数情報部
３０３Ｂ，４０５Ｂ  結合軸ベクトル情報部
３０４Ｍ，４０６Ｍ  結合軸データアドレス情報部
３０４Ａ，４０６Ａ  原子用結合情報部
３０５Ａ，４０７Ａ  原子座標情報部
４０Ｔ  テンポラリデータ
４０Ｒ  テンポラリデータ
４０１Ｔ  補助フラグ情報部
４０１Ｅ，４０１Ａ，４０１Ｂ，４０１Ｒ  チェックフラグ情報部
４０２Ｔ  ベクトル情報部
４０２Ｅ  識別情報部
４０２Ａ，４０２Ｂ，４０２Ｒ  判定フラグ情報部
４０３Ｔ，４０７Ｍ，４０４Ｅ  回転行列情報部
４０３Ｅ  回転軸データアドレス情報部
４０３Ｒ  回転軸識別番号情報部
４０４Ｒ  回転軸用結合情報部
４０５Ｒ  回転軸ベクトル情報部
９００  分子構造表示プログラム
１２００Ａ  ウィンドウ
１２０１  分子構造モデル表示窓
１２０２  回転指定欄
１２０３  チェック欄
１２０４  回転角度φ指定欄
１２０５  回転角度θ指定欄
１２０６，１２０７，１２０８  回転角度指定欄
１２０８  実行ボタン
１２０９  ＵＮＤＯボタン
１２１０  ＲＥＤＯボタン
【図１】
2009230211.tif 000003
【図２】
2009230211.tif 000004
【図３】
2009230211.tif 000005
【図４】
2009230211.tif 000006
【図５】
2009230211.tif 000007
【図６】
2009230211.tif 000008
【図７】
2009230211.tif 000009
【図８】
2009230211.tif 000010
【図９】
2009230211.tif 000011
【図１０】
2009230211.tif 000012
【図１１】
2009230211.tif 000013
【図１２】
2009230211.tif 000014
【図１３】
2009230211.tif 000015
【図１４】
2009230211.tif 000016
【図１５】
2009230211.tif 000017
【図１６】
2009230211.tif 000018
【図１７】
2009230211.tif 000019
【図１８】
2009230211.tif 000020
【図１９】
2009230211.tif 000021
【図２０】
2009230211.tif 000022
【図２１】
2009230211.tif 000023
【図２２】
2009230211.tif 000024
【図２３】
2009230211.tif 000025
【図２４】
2009230211.tif 000026
【図２５】
2009230211.tif 000027
【図２６】
2009230211.tif 000028
【図２７】
2009230211.tif 000029
【図２８】
2009230211.tif 000030
【図２９】
2009230211.tif 000031
【図３０】
2009230211.tif 000032
【図３１】
2009230211.tif 000033
【図３２】
2009230211.tif 000034
【図３３】
2009230211.tif 000035
【図３４】
2009230211.tif 000036
【図３５】
2009230211.tif 000037
【図３６】
2009230211.tif 000038
【図３７】
2009230211.tif 000039