(57)【要約】【課題】本発明は、分子設計支援装置及びプログラムに関し、所望の分子構造変更操作を、初期構造及び初期座標に影響されることなく、又、意図しない構造に陥ることなく、容易に実行することを目的とする。【解決手順】入力部と、ハーフベクタ形式又はボールアンドスティック形式で３次元分子構造を画面上に表示するディスプレイと、分子構造のうち入力部により指定された分子の結合軸に基づいて分子全体に対して座標変更の対象となる側を決定する決定部と、指定された結合軸及び座標変更の対象となる側に基づいて原子周りの自由回転、結合軸周りの回転、２軸間の角度変更、２面角の変更及び結合軸の伸縮の少なくとも１つを含む分子構造の変更を入力部からの指定に基づいて行う変更部と、上記決定及び変更に基づいて変更された分子構造をディスプレイの画面上に表示する表示部とを備えるように構成する。【選択図】図６
2008129649.tif 000002
【特許請求の範囲】
【請求項１】
入力部と、
ハーフベクタ形式又はボールアンドスティック形式で３次元分子構造を画面上に表示するディスプレイと、
該分子構造のうち、該入力部により指定された分子の結合軸に基づいて、分子全体に対して座標変更の対象となる側を決定する決定手段と、
該指定された結合軸及び該座標変更の対象となる側に基づいて、原子周りの自由回転、結合軸周りの回転、２軸間の角度変更、２面角の変更及び結合軸の伸縮の少なくとも１つを含む分子構造の変更を、該入力部からの指定に基づいて行う変更手段と、
該決定手段の決定及び該変更手段の変更に基づいて、変更された分子構造を該ディスプレイの画面上に表示する表示手段とを備えたことを特徴とする、分子設計支援装置。
【請求項２】
該決定手段は、該入力部により指定された分子の結合軸１つ、或いは、結合軸１つと結合軸末端原子２つのうちの原子１つに基づいて、分子全体に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸末端原子２つのうちの原子１つに基づいて、該指定された結合軸の末端に対して座標変更対象ではない側の原子を中心とした自由回転を行うことで、該入力部から指定された角度だけ原子周りの自由回転を行うことを特徴とする、請求項１記載の分子設計支援装置。
【請求項３】
該決定手段は、該入力部により指定された分子の結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸末端原子２つのうちの原子１つに基づいて、結合軸に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された結合軸１つ、或いは、結合軸１つと結合軸末端原子２つのうちの原子１つに基づいて、該指定された結合軸周りの回転を行うことで、該入力部から指定された角度だけ該指定された結合軸周りの回転を行うことを特徴とする、請求項１記載の分子設計支援装置。
【請求項４】
該決定手段は、該入力部により指定された分子の連続する結合軸２つ、或いは、連続する結合軸２つとボールアンドスティック形式の連続した結合軸２つの末端原子２つのうちの原子１つに基づいて、分子全体に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された連続する結合軸２つ、或いは、連続する結合軸２つとボールアンドスティック形式の連続した結合軸２つの末端原子２つのうちの原子１つに基づいて、結合軸２つの間の角度を変更することで、該入力部から指定された角度だけ該指定された２軸間の角度変更を行うことを特徴とする、請求項１記載の分子設計支援装置。
【請求項５】
該決定手段は、該入力部により指定された分子の連続する結合軸３つ、或いは、連続する結合軸３つとボールアンドスティック形式の連続した結合軸３つの末端原子２つのうちの原子１つに基づいて、分子全体に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された連続する結合軸３つ、或いは、連続する結合軸３つとボールアンドスティック形式の連続した結合軸２つの末端原子２つのうちの原子１つに基づいて、結合軸３つのうち中心の結合軸周りの回転を行うことで、該入力部から指定された角度だけ該指定された３つの連続した結合軸のうち中心の結合軸周りに２面角の回転を行うことを特徴とする、請求項１記載の分子設計支援装置。
【請求項６】
該決定手段は、該入力部により指定された分子の結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸の末端原子２つのうちの原子１つに基づいて、結合軸に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された分子の結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸の末端原子２つのうちの原子１つに基づいて、該入力部から指定された縮尺度だけ該指定された結合軸の伸縮を行うことを特徴とする、請求項１記載の分子設計支援装置。
【請求項７】
該決定手段は、該入力部により結合軸若しくは連続した結合軸のみが指定されると、該指定された結合軸の２つの末端原子から該指定された結合軸以外の結合軸に連なる結合軸からなる複数の結合軸集団のうち、結合軸数の少ない方の結合軸集団のみを座標変更の対象に設定することを特徴とする、請求項１〜６のいずれか１項記載の分子設計支援装置。
【請求項８】
該決定手段は、該入力部により結合軸若しくは連続した結合軸が指定され、且つ、該入力部により更に該指定された結合軸の２つの末端原子のうち１つの原子が指定されると、該指定された原子側或いは指定されていない原子側を基点とした該指定された結合軸以外の結合軸に連なる結合軸からなる結合軸集団を座標変更の対象に設定することを特徴とする、請求項１〜６のいずれか１項記載の分子設計支援装置。
【請求項９】
該決定手段は、該入力部により結合軸若しくは連続した結合軸の一方の末端原子から該指定された結合軸以外の結合軸に連なる結合軸からなる結合軸集団が、該指定された結合軸の他方の末端原子から該指定された結合軸以外の結合軸に連なる結合軸を含む場合、該結合軸集団を座標変更の対象から除外することを特徴とする、請求項１〜６のいずれか１項記載の分子設計支援装置。
【請求項１０】
入力部を有するコンピュータに分子設計支援機能を持たせるプログラムであって、
該コンピュータに、ディスプレイの画面上にハーフベクタ形式又はボールアンドスティック形式で表示される３次元分子構造のうち、該入力部により指定された分子の結合軸に基づいて、分子全体に対して座標変更の対象となる側を決定させる決定手順と、
該コンピュータに、該指定された結合軸及び該座標変更の対象となる側に基づいて、原子周りの自由回転、結合軸周りの回転、２軸間の角度変更、２面角の変更及び結合軸の伸縮の少なくとも１つを含む分子構造の変更を、該入力部からの指定に基づいて行わせる変更手順と、
該コンピュータに、該決定手順の決定及び該変更手順の変更に基づいて、変更された分子構造を該ディスプレイの画面上に表示させる表示手順とを含むことを特徴とする、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分子設計支援装置及びプログラムに係り、特に分子構造の３次元表示を行い分子構造構築操作を行う分子設計支援装置及びコンピュータにそのような分子構造構築操作を行わせるプログラムに関する。
【０００２】
本発明の分子設計支援装置及びプログラムは、グラフィカルユーザインタフェース（ＧＵＩ）及び分子設計支援ツールをも包含する。
【背景技術】
【０００３】
コンピュータシステムの高性能化に伴い、ドラッグデザイン等の先端研究における分子軌道計算、分子動力学計算等の理論化学計算のニーズが高まっている。これらの理論化学計算を実行するためには、計算方法のみならず計算対象となる分子の構造を入力データに用いる必要がある。ドラッグデザイン等の先端研究では、分極率等の想定している物性の効果が従来以上に向上され得る新規分子構造の探索を行う必要が多々生じることから、任意の分子構造を構築する必要性が増している。このようなニーズから、分子構造構築の作業効率を向上させることを目的として、グラフィック表示機能を利用した分子設計システムが特許文献１，２や非特許文献１等にて提案されている。
【特許文献１】特開平５−１７４１０９号公報
【特許文献２】特開平５−１２８２１８号公報
【非特許文献１】http://software.fujitsu.com/jp/products/indust11.html, WinMOPAC（富士通株式会社）、CAChe（富士通株式会社）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来から提案されている分子構造の変更手法は、原子種毎に決められた結合方向のみの変更が許容されている場合が多く、任意の構造変更を阻害する要因であった。又、富士通株式会社製のWinMOPACのＧＵＩと同様に、任意の構造変更を可能とする分子構造構築システムでは、Ｚマトリクス（Z-matrix）という分子の内部座標を利用する場合、内部座標に含まれる結合角及び２面角のみが変更対象となる。このように、内部座標では１つの方向から２面角しか設定できない側面があるため、任意の構造変更を容易に実行することは困難であった。更に、上記WinMOPACに代表される分子構造構築システムでは、環構造を有する分子構造に対して回転操作を行うと、回転に関与する部位と関与しない部位とが環を構成することにより繋がってしまい、変更を意図しない部位の構造が変更されてしまう等の、所望の構造が得られない状況が発生しやすいという問題があった。
【０００５】
そこで、本発明は、所望の分子構造変更操作を、初期構造及び初期座標に影響されることなく、又、意図しない構造に陥ることなく、容易に実行することが可能な分子設計支援装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の課題は、入力部と、ハーフベクタ形式又はボールアンドスティック形式で３次元分子構造を画面上に表示するディスプレイと、該分子構造のうち、該入力部により指定された分子の結合軸に基づいて、分子全体に対して座標変更の対象となる側を決定する決定手段と、該指定された結合軸及び該座標変更の対象となる側に基づいて、原子周りの自由回転、結合軸周りの回転、２軸間の角度変更、２面角の変更及び結合軸の伸縮の少なくとも１つを含む分子構造の変更を、該入力部からの指定に基づいて行う変更手段と、該決定手段の決定及び該変更手段の変更に基づいて、変更された分子構造を該ディスプレイの画面上に表示する表示手段とを備えたことを特徴とする分子設計支援装置によって達成できる。
【０００７】
上記の課題は、入力部を有するコンピュータに分子設計支援機能を持たせるプログラムであって、該コンピュータに、ディスプレイの画面上にハーフベクタ形式又はボールアンドスティック形式で表示される３次元分子構造のうち、該入力部により指定された分子の結合軸に基づいて、分子全体に対して座標変更の対象となる側を決定させる決定手順と、該コンピュータに、該指定された結合軸及び該座標変更の対象となる側に基づいて、原子周りの自由回転、結合軸周りの回転、２軸間の角度変更、２面角の変更及び結合軸の伸縮の少なくとも１つを含む分子構造の変更を、該入力部からの指定に基づいて行わせる変更手順と、該コンピュータに、該決定手順の決定及び該変更手順の変更に基づいて、変更された分子構造を該ディスプレイの画面上に表示させる表示手順とを含むことを特徴とするプログラムによって達成できる。
【発明の効果】
【０００８】
本発明によれば、所望の分子構造変更操作を、初期構造及び初期座標に影響されることなく、又、意図しない構造に陥ることなく、容易に実行することが可能な分子設計支援装置及びプログラムを実現することができる。
【発明を実施するための最良の形態】
【０００９】
本発明では、分子構造変更操作を行う場合に、図１に示す如きデータ構造、即ち、原子データ構造Ａ、結合軸データ構造Ｂ及び分子データ構造Ｍのデータを用いる。図１に示すデータ構造では、原子データ構造Ａと結合軸データ構造Ｂとが、夫々全ての原子と結合軸に対して１対１対応のデータを含む点、及び、イベント用フラグと識別用フラグを含む点で、従来用いているデータ構造と異なる。尚、図１中、各データ構造Ａ，Ｂ，Ｍの構成要素（又は、アイテム）には番号１〜７，...が付され、〔〕内のデータは必須ではないことを示す。
【００１０】
原子データ構造Ａにおいて、識別番号ａは内部座標における原子順序番号からなり、原子番号は元素記号からなる。又、結合軸数は、元分子に任意の新規分子構造を追加することで変動する数値からなる。結合軸数の初期値は、入力構造からファンデルワールス半径を元に原子対を構成していると推定された結合数を示す。結合軸の識別番号は、結合軸数に含まれる各結合軸の識別番号ｂの集合データからなる。イベント用フラグは、回転操作、伸縮操作、削除操作、追加操作、置換操作等の分子構造構築ＧＵＩが有するイベントに対し、現在のイベント種類を示す。識別用フラグは、意図しない構造に陥ることを防ぐために、環構造を有するか否かをチェックするためのものである。デカルト座標（Cartesian座標）は、各原子が存在する３次元空間内の位置を示すデータからなる。
【００１１】
結合軸データ構造Ｂにおいて、識別番号ｂは全ての結合軸を１対１に対応させるために必要な番号からなり、結合の型は１重結合、２重結合等の結合軸のタイプを識別するためのデータからなる。任意の分子構造を構築する場合、結合の型は必ずしも必要ではない。末端原子の識別番号は、結合軸の両末端に存在する原子の識別番号ａの集合データからなり、データ数は２である。イベント用フラグ及び識別用フラグは、原子データ構造Ａのイベント用フラグ及び識別用フラグと同じである。ベクトル情報は、結合軸を３次元ベクトルと１対１に対応させたものである。ベクトル情報を単位ベクトルで表現する場合には、結合軸の長さを示す結合軸長も必要となる。
【００１２】
分子データ構造Ｍは、相互にデータを保持し合う原子データ構造Ａと結合軸データ構造Ｂの両方を含み、削除操作及び追加操作にも対応するために、原子数、結合軸数、イベント情報及びイベント用フラグを有する。識別用フラグは、必要に応じて用いる。
【００１３】
分子構造のデータが与えられたとき、図１に示すデータ構造がどのように設定されるかについて、蟻酸（ＨＣＯＯＨ）の場合を例にとって図２と共に説明する。図２において、「Ａ｛  ｝」は原子データ構造Ａ、「Ｂ｛  ｝」は結合軸データ構造Ｂ、「Ｍ｛  ｝」は分子データ構造Ｍを示す。「ａ〔  〕」は、結合軸データ構造Ｂに含まれる結合軸の識別番号を保存した配列であり、配列の数は２である。又、「ｂ｛  ｝」は、原子データ構造Ａに含まれる結合軸の識別番号を保存した配列であり、配列の数は原子構造データＡに含まれる結合軸数である。原子データ構造Ａに含まれる元素記号データは、原子番号であっても良い。従って、図２は便宜上、原子データ構造Ａのアイテム番号１〜４、結合軸データ構造Ｂのアイテム番号１，３、分子データ構造Ｍのアイテム番号１〜４を示している。
【００１４】
分子構造変更操作を行う場合、例えばディスプレイの画面上に作業用のメインウィンドウを表示し、メインウィンドウ上に３次元分子構造を図３に示すハーフベクタ形式又は図４に示すボールアンドスティック形式で表示する。そして、ポインティングデバイスのクリックやドラッグアンドドロップ操作、キーボードの操作等の入力部からの操作により、メインウィンドウ上に分子の結合軸を少なくとも１つ、又、必要であれば更にボールアンドスティック形式の結合軸末端原子２つのうち１つの原子を指定することで、結合軸に対して座標変更の対象となる側を決定し、原子周りの自由回転、結合軸回りの回転、２軸間の角度変更、２面角の変更、伸縮等の連続的な分子構造の変更操作を行い、新たに形成された分子構造をメインウィンドウ上に表示する。
【００１５】
従って、所望の分子構造変更操作を、初期構造及び初期座標に影響されることなく、又、意図しない構造に陥ることなく、容易に実行することが可能である。
【実施例】
【００１６】
本発明の分子設計支援装置の一実施例は、本発明のプログラムの一実施例を用いる。本実施例では、本発明がコンピュータシステムに適用されている。図５は、本実施例において本発明が適用されるコンピュータシステムを示す斜視図である。
【００１７】
図５に示すコンピュータシステム１００は、ＣＰＵやディスクドライブ等を内蔵した本体部１０１、本体部１０１からの指示により表示画面１０２ａ上に分子形成シミュレーションにより形成される分子等の画像を表示するディスプレイ１０２、コンピュータシステム１００に種々の情報を入力するためのキーボード１０３、ディスプレイ１０２の表示画面１０２ａ上の任意の位置を指定するマウス１０４及び外部のデータベース等にアクセスして他のコンピュータシステムに記憶されているプログラム等をダウンロードするモデム１０５を有する。
【００１８】
ディスク１１０等の可搬型記録媒体に格納されるか、モデム１０５等の通信装置を使って他のコンピュータシステムの記録媒体１０６からダウンロードされる、コンピュータシステム１００に少なくとも分子設計支援機能を持たせるプログラム（分子設計支援ソフトウェア）の本実施例は、コンピュータシステム１００に入力されてコンパイルされる。プログラムの本実施例は、コンピュータシステム１００（即ち、後述するＣＰＵ２０１）を分子設計支援機能を有する分子設計支援装置（又は、シミュレーションシステム）として動作させる。プログラムの本実施例は、例えばディスク１１０等のコンピュータ読み取り可能な記録媒体に格納されていても良い。コンピュータ読み取り可能な記録媒体は、ディスク１１０、ＩＣカードメモリ、フロッピー（登録商標）ディスク等の磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の可搬型記録媒体に限定されるものではなく、モデム１０５やＬＡＮ等の通信装置や通信手段を介して接続されるコンピュータシステムでアクセス可能な各種記録媒体を含む。
【００１９】
図６は、コンピュータシステム１００の本体部１０１内の要部の構成を説明するブロック図である。同図中、本体部１０１は、バス２００により接続されたＣＰＵ２０１、ＲＡＭやＲＯＭ等からなるメモリ部２０２、ディスク１１０用のディスクドライブ２０３及びハードディスクドライブ（ＨＤＤ）２０４からなる。本実施例では、ディスプレイ１０２、キーボード１０３及びマウス１０４も、バス２００を介してＣＰＵ２０１に接続されているが、これらは直接ＣＰＵ２０１に接続されていても良い。又、ディスプレイ１０２は、入出力画像データの処理を行う周知のグラフィックインタフェース（図示せず）を介してＣＰＵ２０１に接続されていても良い。
【００２０】
コンピュータシステム１００において、キーボード１０３やマウス１０４は分子設計支援装置の入力部を構成する。ディスプレイ１０２は、ハーフベクタ形式又はボールアンドスティック形式で３次元分子構造を画面１０２ａ上に表示する。ＣＰＵ２０１は、分子構造のうち、入力部により指定された結合軸に基づいて、少なくとも該指定された結合軸に対して座標変更の対象となる側を決定する決定手段と、指定された結合軸周りの回転又は指定された結合軸の伸縮を含む分子構造の変更を、入力部からの指定に基づいて行う変更手段と、決定手段の決定及び変更手段の変更に基づいて、変更された分子構造をディスプレイ１０２の画面１０２ａ上に表示する表示手段として機能する。
【００２１】
尚、コンピュータシステム１００の構成は図５及び図６に示す構成に限定されるものではなく、代わりに各種周知の構成を使用しても良い。
【００２２】
図７は、初期データ構造の構築を説明するフローチャートである。図７に示す処理は、ＣＰＵ２０１により実行される。
【００２３】
図７において、ステップＳ１は、図１に示す如き原子データ構造Ａを有する原子データ構造体及び結合軸データ構造Ｂを有する結合軸データ構造体を宣言し、ステップＳ２は、図１に示す如き分子データ構造Ｍを有する分子データ構造体を、原子データ構造体及び結合軸データ構造体を含む構造体として宣言する。ステップＳ３は、Cartesian又はZ-matrix座標データを記憶部内のファイルから読み込み、原子数を分子データ構造Ｍに格納する。記憶部は、コンピュータシステム１００内のメモリ部２０２、ディスクドライブ２０３又はＨＤＤ２０４であっても、コンピュータシステム１００外部の記録媒体１０６等で構成される。ステップＳ４は、読み込まれた座標データがZ-matrix座標データの場合にはCartesian座標に変換し、原子データ構造Ａの座標と原子番号に格納すると共に、識別番号を格納順に設定する。ステップＳ５は、原子座標を用いて全ての原子間結合距離を計算する。
【００２４】
ステップＳ６は、任意に設定した閾値以下の距離にある原子間に結合軸を形成する。ステップＳ７は、結合軸データ構造Ｂの識別番号を形成順に設定し、結合軸数を分子データ構造体に格納する。ステップＳ８は、結合軸のベクトルを結合軸データ構造体に格納する。ステップＳ９は、結合軸に関与する２つの原子の識別番号を結合軸データ構造体の識別番号に格納する。ステップＳ１０は、各原子に関連する結合軸の識別番号を抽出すると共に、原子データ構造体に識別番号と総数を格納し、処理は終了する。これにより、与えられた分子構造のデータに対して、図１に示す如き原子データ構造Ａ、結合軸データ構造Ｂ及び分子データ構造Ｍからなる初期データ構造が構築される。
（原子周りの自由回転）
図８は、結合軸周りの回転を説明する図である。図８は、回転対象となる原子が、この場合は回転軸である結合軸を介して固定の原子に結合されており、この固定の原子が結合軸を介して不動原子に結合されている状態を示す。
【００２５】
図７に示す処理によりユーザが用意した図１のデータ構造体に対し、結合軸データ構造Ｂのアイテムを１つ選択し、選択されたアイテムが識別番号ｂ１であるとすると、識別番号ｂ１の結合軸データに属するイベント用フラグの選択ビットを立てる。この状態で分子データ構造Ｍのイベント情報を「原子周りの自由回転」に設定すると、分子データ構造Ｍのイベント用フラグに「原子周りの自由回転」ビットを立て、識別番号ｂ１の結合軸データの両末端原子（識別番号ａ１，ａ２）に対し、この結合軸データ以外の結合軸にて連なる全ての結合軸集合データの識別用フラグの選択ビットを立てる。ここで結合軸が有する末端原子に識別番号ａ１又はａ２の原子が含まれる場合、識別番号ｂ１の結合軸データは環構造の内部に属することが決定される。この場合には、末端原子データに属する識別用フラグのリングビットを立てる。リングビットが立てられた末端原子データに属する結合軸集合については、回転操作の対象から除外するために識別用フラグの選択ビットを解除する。リングビットが立てられていない場合には、識別番号ａ１の原子から連なる結合軸の選択ビット数と識別番号ａ２の原子から連なる結合軸の選択ビット数とを比較し、少ない方の選択ビットを残し、多い方は解除する。以降、選択ビットのある結合軸を回転対象と表現する。又、選択した識別番号ｂ１の結合軸についても回転対象に含める。
【００２６】
結合軸だけでなく末端原子のうち１つの原子が選択されている場合には、選択された原子若しくは選択されていない原子に連なる結合軸集合のみについて上記操作を実行する。
【００２７】
原子周りの３次元回転行列若しくは四元数は、表示されている分子構造上でポインティングデバイスのドラッグアンドドロップから算出するか、又は、メインウィンドウ上の分子表示エリア以外のコマンドエリアにてドラッグアンドドロップ若しくはキーボードにて角度設定を行うことで決定し、回転操作に移行する。原子周りの３次元改訂行列若しくは四元数をドラッグアンドドロップにて指定する場合、ドラッグしている間は連続的に回転操作を行う。
【００２８】
回転操作は、指定した識別番号ｂ１の結合軸データに関してイベント用フラグに、「原子周りの自由回転」ビットを立て、３次元回転行列若しくは四元数を回転対象の結合軸に作用させる。その後、適切な原子１つから結合軸のベクトル情報を辿ることで原子データ構造ＡのCartesian座標を再形成し、メインウィンドウ上に変更された分子構造を表示する。
【００２９】
図９は、原子周りの自由回転を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。図１０及び図１１は、この場合の原子周りの自由回転を説明するフローチャートであり、図１２及び図１３は、この場合の原子周りの自由回転操作時の表示画面を示す図である。図１０は、結合軸アイテム（必要であれば更に原子アイテム）の選択操作からリング存在フラグの設定までの処理を示し、図１１は、回転対象と回転演算の設定から実際の構造変更までの処理を示す。
【００３０】
図１０において、ステップＳ１０１は、任意の結合軸Ｂｉを選択する。ここでは、説明の便宜上、結合軸Ｂｉの末端原子がＡＢ１，ＡＢ２であるものとする。ステップＳ１０２は、回転角調整フラグを設定、即ち、分子データのイベント情報フラグに「結合軸周りの回転」ビットを立てる。ステップＳ１０３は、結合軸は結合軸Ｂｉのみが選択され、且つ、末端原子ＡＢ１（又はＡＢ２）のみが選択されているか否かを判定する。ステップＳ１０３の判定結果がＮＯであると、処理は図１１と共に後述するステップＳ１２６へ進む。他方、ステップＳ１０３の判定結果がＹＥＳであると、ステップＳ１０４は、末端原子ＡＢ１（又はＡＢ２）が未設定の結合軸Ｂｉ'を持つか否かを判定する。ステップＳ１０４の判定結果がＮＯであると、処理は図１１と共に後述するステップＳ１１２へ進む。
【００３１】
ステップＳ１０４の判定結果がＹＥＳであると、ステップＳ１０５は、結合軸Ｂｉ'を属性ＲＢ１（又はＲＢ２）に設定し、結合軸Ｂｉ'に対して末端原子ＡＢ１（又はＡＢ２）とは逆の末端原子に移動する。ステップＳ１０６は、現在の原子が未設定の結合軸を持つか否かを判定し、判定結果がＹＥＳであると、ステップＳ１０７は、未設定の結合軸を属性ＲＢ１（又はＲＢ２）に設定し、逆側の末端原子に移動する。ステップＳ１０６の判定結果がＮＯであると、ステップＳ１０８は、直前の、即ち、設定されている結合軸の逆側の原子に移動する。ステップＳ１０７又はＳ１０８の後、ステップＳ１０９は、現在の原子がＡＢ２（又はＡＢ１）であるか否かを判定する。ステップＳ１０９の判定結果がＮＯであると、ステップＳ１１０は、現在の原子がＡＢ１（又はＡＢ２）であるか否かを判定する。他方、ステップＳ１０９の判定結果がＹＥＳであると、ステップＳ１１１は、リング存在フラグを真に設定する（識別用フラグのリングビットを立てる）。ステップＳ１１０の判定結果がＹＥＳであると、処理はステップＳ１０４へ戻る。ステップＳ１１０の判定結果がＮＯ、或いは、ステップＳ１１１の後、処理はステップＳ１０６へ戻る。
【００３２】
図１１において、ステップＳ１１２は、リング存在フラグが偽である（識別用フラグのリングビットが立っていない）か否かを判定し、判定結果がＮＯであると、処理は後述するステップＳ１２６へ進む。ステップＳ１１２の判定結果がＹＥＳであると、ステップＳ１１３は、原子ＡＢ１が固定端であるか否かを判定する。ステップＳ１１３の判定結果がＹＥＳであると、ステップＳ１１４は、属性ＲＢ２の結合軸と結合軸Ｂｉを回転操作の対象となるベクトルに設定し、処理はステップＳ１１６へ進む。他方、ステップＳ１１３の判定結果がＮＯであると、ステップＳ１１５は、属性ＲＢ１の結合軸と結合軸Ｂｉを回転操作の対象となるベクトルに設定し、処理はステップＳ１１６へ進む。
【００３３】
ステップＳ１１６は、回転が画面１０２ａ上で直接操作されるか否かを判定する。ステップＳ１１６の判定結果がＮＯであると、ステップＳ１１７は、画面１０２ａ上のメニュー若しくはサブメニューに従って入力部から入力された値から回転情報φ，θを取得する。ステップＳ１１８は、回転情報φ，θに基づいて対象となるベクトルに対して回転操作を行い、ステップＳ１１９は、得られたベクトル情報から原子座標を変更して分子構造を再構築する。ステップＳ１１９の後、処理は後述するステップＳ１２６へ進む。
【００３４】
他方、ステップＳ１１６の判定結果がＹＥＳであると、ステップＳ１２０は、マウス１０４のドラッグアンドドロップに伴う画面１０２ａ上の水平移動ベクトルと画面横範囲から回転情報φを設定し、ステップＳ１２１は、マウス１０４のドラッグアンドドロップに伴う画面１０２ａ上の垂直移動ベクトルと画面縦範囲から回転情報θを設定する。ステップＳ１２２は、回転情報φ，θに基づいて対象となるベクトルに対して回転操作を行い、ステップＳ１２３は、得られたベクトル情報から原子座標を変更し、分子構造を再構築する。ステップＳ１２４は、回転操作が終了したか否かを判定し、判定結果がＮＯであると処理はステップＳ１２０へ戻る。ステップＳ１２４の判定結果がＹＥＳであると、ステップＳ１２５は、回転操作対象の結合軸の選択を解除する。又、ステップＳ１２６は、設定情報を解除し、処理は終了する。
【００３５】
このようにして、先ず最初は図９に示す結合軸Ｂ２が選択される。選択後に回転角調整フラグが設定されると（分子データのイベント情報フラグに「原子周りの自由回転」ビットが立てられると）、図１０の後半の再帰的処理（アルゴリズム）により、末端原子Ａ１を基点として結合軸Ｂ２を含まない結合軸に連なる結合軸集団ＲＡ１（Ｂ１，Ｂ３）が選出され、リング存在フラグを真にするかどうか（結合軸集団ＲＡ１については末端原子Ａ３に属する識別用フラグのリングビットを立てるかどうか）についても調査される。ここで、リング存在フラグが真の結合軸集団を回転操作対象から外す（識別用フラグの選択ビットを解除する）。結合軸集団ＲＡ１のがリング存在フラグが真であれば、回転操作対象が存在しなくなることから、設定情報を解除して回転操作を終了する。
【００３６】
他方、結合軸集団ＲＡ１のがリング存在フラグが偽であれば、結合軸数の多い結合軸集団側を回転操作対象から外す（識別用フラグの選択ビットを解除する）。ここまでの操作により、ディスプレイ１０２の画面１０２ａ上のメインウィンドウに表示される３次元分子構造は、図１２のようになる。図１２に示す蟻酸は環構造を持たないため、回転操作可能な状態となる。結合軸数は結合軸集団ＲＡ３の方が少ないため、結合軸Ｂ３の選択ビットだけが立てられている。
【００３７】
上記の処理までで回転操作可能な状態であれば、図１１の前半の処理（アルゴリズム）により結合軸集団ＲＡ３に含まれる結合軸Ｂ１，Ｂ２，Ｂ３に選択ビットを立てて回転対象に設定する。本実施例では、メインウィンドウに表示された分子上にマウスカーソルを合わせて、ドラッグアンドドロップする方向と長さを画面１０２ａの大きさと比較することにより回転行列を決定するアルゴリズムを用いた。回転行列が決定されると、図１１の後半の処理（アルゴリズム）により結合軸Ｂ１，Ｂ２，Ｂ３が回転演算を受けて結合軸Ｂ'１，Ｂ'２，Ｂ'３となり、原子Ａ３からベクトルを加えることにより原子Ａ１，Ａ２，Ａ４のCartesian座標がＡ'１，Ａ'２，Ａ'４に変更され、メインウィンドウ上の分子構造が変更される。マウス１０４がリリースされると回転が終了したと見なして、選択情報と設定情報を解除して回転操作を終了する。ここまでの操作により、ディスプレイ１０２の画面１０２ａ上のメインウィンドウに表示される３次元分子構造は、図１３のようになる。図１３では、回転行列を決めるマウス１０４のドラッグアンドドロップを、右斜め上方向に動かした場合の結果が示されている。
【００３８】
図９において、Ｂ２は選択された結合軸、リングフラグは偽、Ａ１は固定端の原子、Ｂ１，Ｂ２，Ｂ３は回転対象の結合軸を示し、回転情報は画面上の操作により入力されるものとする。回転演算をＲで示すと、Ｂ'１＝ＲＢ１、Ｂ'２＝ＲＢ２及びＢ'３＝ＲＢ３が成立し、Ａ１，Ａ２，Ａ４の座標変更はＡ'１＝Ａ３＋Ｂ'２、Ａ'２＝Ａ'１＋Ｂ'１及びＡ'４＝Ａ'１＋Ｂ'３で表される。
（結合軸周りの回転）
図１４は、結合軸周りの回転を説明する図である。図１４は、回転対象となる原子が、この場合は回転軸である結合軸を介して固定の原子に結合されている状態を示す。
【００３９】
図７に示す処理によりユーザが用意した図１のデータ構造体に対し、結合軸データ構造Ｂのアイテムを１つ選択し、選択されたアイテムが識別番号ｂ１であるとすると、識別番号ｂ１の結合軸データに属するイベント用フラグの選択ビットを立てる。この状態で分子データ構造Ｍのイベント情報を「結合軸周りの回転」に設定すると、分子データ構造Ｍのイベント用フラグに「結合軸周りの回転」ビットを立て、識別番号ｂ１の結合軸データの両末端原子（識別番号ａ１，ａ２）に対し、この結合軸データ以外の結合軸にて連なる全ての結合軸集合データの識別用フラグの選択ビットを立てる。ここで結合軸が有する末端原子に識別番号ａ１又はａ２の原子が含まれる場合、識別番号ｂ１の結合軸データは環構造の内部に属することが決定される。この場合には、末端原子データに属する識別用フラグのリングビットを立てる。リングビットが立てられた末端原子データに属する結合軸集合については、回転操作の対象から除外するために識別用フラグの選択ビットを解除する。リングビットが立てられていない場合には、識別番号ａ１の原子から連なる結合軸の選択ビット数と識別番号ａ２の原子から連なる結合軸の選択ビット数とを比較し、少ない方の選択ビットを残し、多い方は解除する。以降、選択ビットのある結合軸を回転対象と表現する。
【００４０】
結合軸だけでなく末端原子のうち１つの原子が選択されている場合には、選択された原子若しくは選択されていない原子に連なる結合軸集合のみについて上記操作を実行する。
【００４１】
結合軸周りの回転角は、表示されている分子構造上でポインティングデバイスのドラッグアンドドロップから算出するか、又は、メインウィンドウ上の分子表示エリア以外のコマンドエリアにてドラッグアンドドロップ若しくはキーボードにて角度設定を行うことで決定し、回転操作に移行する。結合軸周りの回転角の角度設定をドラッグアンドドロップにて指定する場合、ドラッグしている間は連続的に回転操作を行う。
【００４２】
回転操作は、指定した識別番号ｂ１の結合軸データに関してイベント用フラグに、「結合軸周りの回転」ビットを立て、固定側から回転対象側の方向を回転軸に設定する。回転軸と回転角から回転行列若しくは四元数を算出し、回転対象の結合軸に作用させる。その後、適切な原子１つから結合軸のベクトル情報を辿ることで原子データ構造ＡのCartesian座標を再形成し、メインウィンドウ上に変更された分子構造を表示する。
【００４３】
図１５は、結合軸周りの回転を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。図１６及び図１７は、この場合の結合軸周りの回転を説明するフローチャートであり、図１８及び図１９は、この場合の結合軸周りの回転操作時の表示画面を示す図である。図１６は、結合軸アイテム（必要であれば更に原子アイテム）の選択操作からリング存在フラグの設定までの処理を示し、図１７は、回転対象と回転演算の設定から実際の構造変更までの処理を示す。
【００４４】
図１６において、ステップＳ１１は、任意の結合軸Ｂｉを選択する。ここでは、説明の便宜上、結合軸Ｂｉの末端原子がＡＢ１，ＡＢ２であるものとする。ステップＳ１２は、回転角調整フラグを設定、即ち、分子データのイベント情報フラグに「結合軸周りの回転」ビットを立てる。ステップＳ１３は、結合軸は結合軸Ｂｉのみが選択され、且つ、原子は選択されていないか或いは末端原子ＡＢ１（又はＡＢ２）のみが選択されているか否かを判定する。ステップＳ１３の判定結果がＮＯであると、処理は図１７と共に後述するステップＳ３９へ進む。他方、ステップＳ１３の判定結果がＹＥＳであると、ステップＳ１４は、末端原子ＡＢ１（又はＡＢ２）が未設定の結合軸Ｂｉ'を持つか否かを判定する。ステップＳ１４の判定結果がＮＯであると、処理は図１７と共に後述するステップＳ２２へ進む。
【００４５】
ステップＳ１４の判定結果がＹＥＳであると、ステップＳ１５は、結合軸Ｂｉ'を属性ＲＢ１（又はＲＢ２）に設定し、結合軸Ｂｉ'に対して末端原子ＡＢ１（又はＡＢ２）とは逆の末端原子に移動する。ステップＳ１６は、現在の原子が未設定の結合軸を持つか否かを判定し、判定結果がＹＥＳであると、ステップＳ１７は、未設定の結合軸を属性ＲＢ１（又はＲＢ２）に設定し、逆側の末端原子に移動する。ステップＳ１６の判定結果がＮＯであると、ステップＳ１８は、直前の、即ち、設定されている結合軸の逆側の原子に移動する。ステップＳ１７又はＳ１８の後、ステップＳ１９は、現在の原子がＡＢ２（又はＡＢ１）であるか否かを判定する。ステップＳ１９の判定結果がＮＯであると、ステップＳ２０は、現在の原子がＡＢ１（又はＡＢ２）であるか否かを判定する。他方、ステップＳ１９の判定結果がＹＥＳであると、ステップＳ２１は、リング存在フラグを真に設定する（識別用フラグのリングビットを立てる）。ステップＳ２０の判定結果がＹＥＳであると、処理はステップＳ１４へ戻る。ステップＳ２０の判定結果がＮＯ、或いは、ステップＳ２１の後、処理はステップＳ１６へ戻る。
【００４６】
図１７において、ステップＳ２２は、リング存在フラグが偽である（識別用フラグのリングビットが立っていない）か否かを判定し、判定結果がＮＯであると、処理は後述するステップＳ３９へ進む。ステップＳ２２の判定結果がＹＥＳであると、ステップＳ２３は、原子ＡＢ１（又はＡＢ２）が選択済みであるか否かを判定する。ステップＳ２３の判定結果がＹＥＳであると、ステップＳ２４は、原子ＡＢ１（又はＡＢ２）を固定端に設定する。ステップＳ２３の判定結果がＮＯであると、ステップＳ２５は、属性ＲＢ１の原子数が属性ＲＢ２の原子数より大きいか否かを判定する。ステップＳ２５の判定結果がＹＥＳであると、ステップＳ２６は、原子ＡＢ１を固定端に設定する。ステップＳ２５の判定結果がＮＯであると、ステップＳ２７は、原子ＡＢ２を固定端に設定する。ステップＳ２４又はＳ２６又はＳ２７の後、処理はステップＳ２８へ進む。
【００４７】
ステップＳ２８は、原子ＡＢ１が固定端であるか否かを判定する。ステップＳ２８の判定結果がＹＥＳであると、ステップＳ２９は、属性ＲＢ２の結合軸を回転操作の対象ベクトルに設定し、ステップＳ３０は、ベクトルＡＢ１→ＡＢ２を回転軸に設定する。他方、ステップＳ２８の判定結果がＮＯであると、ステップＳ３１は、属性ＲＢ１の結合軸を回転操作の対象ベクトルに設定し、ステップＳ３２は、ベクトルＡＢ２→ＡＢ１を回転軸に設定する。ステップＳ３０又はＳ３２の後、処理はステップＳ３３へ進む。
【００４８】
ステップＳ３３は、結合軸周りの回転角の初期値を設定する。ステップＳ３４は、回転角を調整し、ステップＳ３５は、前回の回転角と現在の回転角との差分に相当する回転角情報を取得し、対象となるベクトルに対して回転操作を行う。ステップＳ３６は、得られたベクトル情報から原子座標を変更し、分子構造を再構築する。ステップＳ３７は、回転角の調整が終了したか否かを判定し、判定結果がＮＯであると処理はステップＳ３４へ戻る。ステップＳ３７の判定結果がＹＥＳであると、ステップＳ３８は、回転操作対象の結合軸の選択を解除する。又、ステップＳ３９は、設定情報を解除し、処理は終了する。
【００４９】
このようにして、先ず最初は図１５に示す結合軸Ｂ２が選択される。選択後に回転角調整フラグが設定されると（分子データのイベント情報フラグに「結合軸周りの回転」ビットが立てられると）、図１６の後半の再帰的処理（アルゴリズム）により、末端原子Ａ１を基点として結合軸Ｂ２を含まない結合軸に連なる結合軸集団ＲＡ１（Ｂ１，Ｂ３）と末端原子Ａ３を基点として結合軸Ｂ２を含まない結合軸に連なる結合軸集団ＲＡ３（Ｂ４）が選出され、夫々についてリング存在フラグを真にするかどうか（結合軸集団ＲＡ１については末端原子Ａ３に属する識別用フラグのリングビットを立てるかどうか、結合軸集団ＲＡ３については末端原子Ａ１に属する識別用フラグのリングビットを立てるかどうか）についても調査される。ここで、リング存在フラグが真の結合軸集団を回転操作対象から外す（識別用フラグの選択ビットを解除する）。結合軸集団ＲＡ１と結合軸集団ＲＡ３双方のリング存在フラグが真であれば、回転操作対象が存在しなくなることから、設定情報を解除して回転操作を終了する。
【００５０】
他方、結合軸集団ＲＡ１と結合軸集団ＲＡ３双方のリング存在フラグが偽であれば、結合軸数の多い結合軸集団側を回転操作対象から外す（識別用フラグの選択ビットを解除する）。ここまでの操作により、ディスプレイ１０２の画面１０２ａ上のメインウィンドウに表示される３次元分子構造は、図１８のようになる。図１８に示す蟻酸は環構造を持たないため、回転操作可能な状態となる。結合軸数は結合軸集団ＲＡ３の方が少ないため、結合軸Ｂ３の選択ビットだけが立てられている。
【００５１】
上記の処理までで回転操作可能な状態であれば、図１７の前半の処理（アルゴリズム）により結合軸集団ＲＡ３に含まれる結合軸Ｂ４に選択ビットを立てて回転対象に設定する。結合軸Ｂ４の回転軸は、結合軸Ｂ２の方向でＡ１→Ａ３の向きを持つベクトルに設定する。本実施例では、メインウィンドウに表示されたコマンドウィンドウ上にスライドバーを表示して、バーをマウス１０４にてドラッグアンドドロップすることにより回転角度を決定し、回転軸と回転角度から回転行列を決定するアルゴリズムを用いた。回転行列が決定されると、図１７の後半の処理（アルゴリズム）により結合軸Ｂ４が回転演算を受けて結合軸Ｂ'４となり、原子Ａ３からベクトルを加えることにより原子Ａ５のCartesian座標がＡ'５に変更され、メインウィンドウ上の分子構造が変更される。マウス１０４がリリースされると回転が終了したと見なして、選択情報と設定情報を解除して回転操作を終了する。ここまでの操作により、ディスプレイ１０２の画面１０２ａ上のメインウィンドウに表示される３次元分子構造は、図１９のようになる。図１９では、マウス１０４のドラッグアンドドロップにより、結合軸周りに−１３３度の回転を行った結果が示されている。
【００５２】
図１５において、Ｂ２は選択された結合軸、リングフラグは偽、Ａ１は固定端の原子、Ｂ４は回転対象の結合軸、Ａ１→Ａ３はその回転軸を示す。回転演算をＲで示すと、Ｂ'４＝ＲＢ４が成立し、Ａ５の座標変更はＡ'５＝Ａ３＋Ｂ'４で表される。
（２軸間の角度変更）
図２０は、２軸間の角度変更を説明する図である。図２０は、回転対象となる原子が、この場合は回転軸である結合軸と更に別の結合軸を介して固定の原子に結合されている状態を示す。
【００５３】
図７に示す処理によりユーザが用意した図１のデータ構造体に対し、結合軸データ構造Ｂのアイテムを２つ選択し、選択されたアイテムが識別番号ｂ１，ｂ２であるとすると、識別番号ｂ１，ｂ２の結合軸データに属するイベント用フラグの選択ビットを立てる。この状態で分子データ構造Ｍのイベント情報を「２軸間の角度変更」に設定すると、識別番号ｂ１の結合軸データに属する末端原子のどちらかの原子データが識別番号ｂ２の結合軸を含む場合にのみ連続（連結）した結合軸データであるとみなして、分子データ構造Ｍのイベント用フラグに「２軸間の角度変更」ビットを立てる。識別番号ｂ１，ｂ２の結合軸データの両末端原子（識別番号ａｂ１，ａｂ２）に対し、これらの識別番号ａｂ１からｂ１及び識別番号ａｂ２からｂ２の結合軸データ以外の結合軸にて連なる全ての結合軸集合データの識別用フラグの選択ビットを立てる。ここで結合軸が有する末端原子に識別番号ａｂ２又はａｂ１の原子が含まれる場合、識別番号ｂ１，ｂ２の結合軸データは環構造の内部に属することが決定される。この場合には、末端原子データに属する識別用フラグのリングビットを立てる。リングビットが立てられた末端原子データに属する結合軸集合については、回転操作の対象から除外するために識別用フラグの選択ビットを解除する。リングビットが立てられていない場合には、識別番号ａｂ１の原子から連なる結合軸の選択ビット数と識別番号ａｂ２の原子から連なる結合軸の選択ビット数とを比較し、少ない方の選択ビットを残し、多い方は解除する。以降、選択ビットのある結合軸を回転対象と表現する。
【００５４】
２連続結合軸だけでなく末端原子のうち１つの原子が選択されている場合には、選択された原子若しくは選択されていない原子に連なる結合軸集合のみについて上記操作を実行する。
【００５５】
２軸間の角度は、表示されている分子構造上でポインティングデバイスのドラッグアンドドロップから算出するか、又は、メインウィンドウ上の分子表示エリア以外のコマンドエリアにてドラッグアンドドロップ若しくはキーボードにて角度設定を行うことで決定し、回転操作に移行する。２軸間の角度設定をドラッグアンドドロップにて指定する場合、ドラッグしている間は連続的に回転操作を行う。
【００５６】
回転操作は、指定した識別番号ｂ１，ｂ２の結合軸データに関してイベント用フラグに「２軸間の角度変更」ビットを立て、識別番号ｂ１，ｂ２の両方の結合軸に直交するベクトルを回転軸に設定する。回転軸と回転角から回転行列若しくは四元数を算出し、回転対象の結合軸に作用させる。その後、適切な原子１つから結合軸のベクトル情報を辿ることで原子データ構造ＡのCartesian座標を再形成し、メインウィンドウ上に変更された分子構造を表示する。
【００５７】
図２１は、２軸間の角度変更を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。図２２及び図２３は、この場合の２軸間の角度変更を説明するフローチャートであり、図２４及び図２５は、この場合の２軸間の角度変更操作時の表示画面を示す図である。図２２は、結合軸アイテム（必要であれば更に原子アイテム）の選択操作からリング存在フラグの設定までの処理を示し、図２３は、回転対象と回転演算の設定から実際の構造変更までの処理を示す。
【００５８】
図２２において、ステップＳ１３１は、任意の２つの連続する結合軸Ｂｉ，Ｂｊを選択する。ここでは、説明の便宜上、結合軸Ｂｉ，Ｂｉ'の末端原子がＡＢ，ＡＢＢ'，ＡＢ'であるものとする。ステップＳ１３２は、２つの結合軸Ｂｉ，Ｂｉ'の結合角調整フラグを設定、即ち、分子データのイベント情報フラグに「２軸間の角度変更」ビットを立てる。ステップＳ１３３は、結合軸は結合軸Ｂｉ，Ｂｉ'のみが選択され、且つ、原子は選択されていないか或いは末端原子ＡＢ（又はＡＢ'）のみが選択されているか否かを判定する。ステップＳ１３３の判定結果がＮＯであると、処理は図２３と共に後述するステップＳ１５８へ進む。他方、ステップＳ１３３の判定結果がＹＥＳであると、ステップＳ１３４は、末端原子ＡＢ（又はＡＢ'）が未設定の結合軸Ｂｉ''を持つか否かを判定する。ステップＳ１３４の判定結果がＮＯであると、処理は図２３と共に後述するステップＳ１４２へ進む。
【００５９】
ステップＳ１３４の判定結果がＹＥＳであると、ステップＳ１３５は、結合軸Ｂｉ''を属性ＲＢ（又はＲＢ'）に設定し、結合軸Ｂｉ''に対して末端原子ＡＢ（又はＡＢ'）とは逆の末端原子に移動する。ステップＳ１３６は、現在の原子が未設定の結合軸を持つか否かを判定し、判定結果がＹＥＳであると、ステップＳ１３７は、未設定の結合軸を属性ＲＢ（又はＲＢ'）に設定し、逆側の末端原子に移動する。ステップＳ１３６の判定結果がＮＯであると、ステップＳ１３８は、直前の、即ち、設定されている結合軸の逆側の原子に移動する。ステップＳ１３７又はＳ１３８の後、ステップＳ１３９は、現在の原子がＡＢ'（又はＡＢ）かＡＢＢ'であるか否かを判定する。ステップＳ１３９の判定結果がＮＯであると、ステップＳ１４０は、現在の原子がＡＢ（又はＡＢ'）であるか否かを判定する。他方、ステップＳ１３９の判定結果がＹＥＳであると、ステップＳ１４１は、リング存在フラグを真に設定する（識別用フラグのリングビットを立てる）。ステップＳ１４０の判定結果がＹＥＳであると、処理はステップＳ１３４へ戻る。ステップＳ１４０の判定結果がＮＯ、或いは、ステップＳ１４１の後、処理はステップＳ１３６へ戻る。
【００６０】
図２３において、ステップＳ１４２は、リング存在フラグが偽である（識別用フラグのリングビットが立っていない）か否かを判定し、判定結果がＮＯであると、処理は後述するステップＳ１５８へ進む。ステップＳ１４２の判定結果がＹＥＳであると、ステップＳ１４３は、原子ＡＢ（又はＡＢ'）が選択済みであるか否かを判定する。ステップＳ１４３の判定結果がＹＥＳであると、ステップＳ１４４は、結合軸Ｂ（又はＢ'）をを固定軸に設定する。ステップＳ１４３の判定結果がＮＯであると、ステップＳ１４５は、属性ＲＢの原子数が属性ＲＢ'の原子数より大きいか否かを判定する。ステップＳ１４５の判定結果がＹＥＳであると、ステップＳ１４６は、結合軸Ｂｉを固定軸に設定する。ステップＳ１４５の判定結果がＮＯであると、ステップＳ１４７は、結合軸Ｂｉ'を固定軸に設定する。ステップＳ１４４又はＳ１４６又はＳ１４７の後、処理はステップＳ１４８へ進む。
【００６１】
ステップＳ１４８は、結合軸Ｂｉ（又はＢｉ'）が固定軸であるか否かを判定する。ステップＳ１４８の判定結果がＹＥＳであると、ステップＳ１４９は、属性ＲＢ２の結合軸と結合軸Ｂｉ'を回転操作の対象ベクトルに設定し、ステップＳ１５０は、結合軸Ｂｉ，Ｂｉ'の両方に直交するベクトルを回転軸に設定する。他方、ステップＳ１４８の判定結果がＮＯであると、ステップＳ１５１は、属性ＲＢ１の結合軸と結合軸Ｂｉを回転操作の対象ベクトルに設定し、処理はステップＳ１５０へ進む。
【００６２】
ステップＳ１５２は、結合軸Ｂｉ，Ｂｉ'のなす角度を結合角の初期値に設定する。ステップＳ１５３は、結合角を調整し、ステップＳ１５４は、前回の回転角と現在の回転角との差分に相当する回転角情報を取得し、対象となるベクトルに対して回転操作を行う。ステップＳ１５５は、得られたベクトル情報から原子座標を変更し、分子構造を再構築する。ステップＳ１５６は、結合角の調整が終了したか否かを判定し、判定結果がＮＯであると処理はステップＳ１５３へ戻る。ステップＳ１５６の判定結果がＹＥＳであると、ステップＳ１５７は、回転操作対象の結合軸の選択を解除する。又、ステップＳ１５８は、設定情報を解除し、処理は終了する。
【００６３】
このようにして、先ず最初は図２１に示す結合軸Ｂ１，Ｂ２及び原子Ａ２が選択される。結合軸Ｂ１，Ｂ２は連結し、原子Ａ２は結合軸Ｂ１の末端原子で結合軸Ｂ２の末端原子ではないことから、処理は図２２の後半の処理（アルゴリズム）に到達することが可能である。選択後に回転角調整フラグが設定されると（分子データのイベント情報フラグに「２軸間の角度変更」ビットが立てられると）、図２２の後半の再帰的処理（アルゴリズム）により、結合軸Ｂ２の末端原子であって結合軸Ｂ１の末端原子ではない末端原子Ａ３を基点として結合軸Ｂ２を含まない結合軸に連なる結合軸集団ＲＡ３（Ｂ４）が選出され、リング存在フラグを真にするかどうか（結合軸Ｂ１，Ｂ２の両方の末端原子Ａ１に属する識別用フラグのリングビットを立てるかどうか）についても調査される。ここで、リング存在フラグが真であれば、回転操作対象が存在しなくなることから、設定情報を解除して回転操作を終了する。図２４に示す蟻酸は環構造を持たないため、回転操作可能な状態となる。
【００６４】
上記の処理までで回転操作可能な状態であれば、図２３の前半の処理（アルゴリズム）により結合軸集団ＲＡ３に含まれる結合軸Ｂ４と原子Ａ２を末端原子に含まない選択結合軸Ｂ２に選択ビットを立てて回転対象に設定する。回転軸は、結合軸Ｂ１の方向でＡ１→Ａ２の向きを持つベクトルＶ１と、結合軸Ｂ２の方向でＡ１→Ａ３の向きを持つベクトルＶ２について、双方の外積ベクトルに設定する。本実施例では、メインウィンドウに表示されたコマンドウィンドウ上にスライドバーを表示して、バーをマウス１０４にてドラッグアンドドロップすることにより回転角度を決定し、回転軸と回転角度から回転行列を決定するアルゴリズムを用いた。図２４でのスライドバーの初期角度は、初期分子構造における初期角度を計算して表示されている。回転行列が決定されると、図２３の後半の処理（アルゴリズム）により結合軸Ｂ２，Ｂ４が回転演算を受けて結合軸Ｂ'２，Ｂ'４となり、原子Ａ１からベクトルを加えることにより原子Ａ３と原子Ａ５のCartesian座標がＡ'３，Ａ'５に変更され、メインウィンドウ上の分子構造が変更される。マウス１０４がリリースされると回転が終了したと見なして、選択情報と設定情報を解除して回転操作を終了する。ここまでの操作により、ディスプレイ１０２の画面１０２ａ上のメインウィンドウに表示される３次元分子構造は、図２５のようになる。図２５では、マウス１０４のドラッグアンドドロップにより、１２０度の初期角度から−６６度までの回転を行った結果が示されている。
【００６５】
図２１において、Ｂ１，Ｂ２は選択された結合軸、リングフラグは偽、Ａ２は固定端の原子、Ｂ２，Ｂ４は回転対象の結合軸、Ａ１→Ａ２×Ａ１→Ａ３はその回転軸を示す。回転演算をＲで示すと、Ｂ'２＝ＲＢ２及びＢ'４＝ＲＢ４が成立し、Ａ３，Ａ５の座標変更はＡ'３＝Ａ１＋Ｂ'２及びＡ'５＝Ａ'３＋Ｂ'４で表される。
（２面角の変更）
図２６は、２面角の変更を説明する図である。図２６は、回転対象となる原子が、この場合は回転軸である結合軸を介して固定の原子及び不動原子に結合されている状態を示す。
【００６６】
図２６に示す処理によりユーザが用意した図１のデータ構造に対し、結合軸データ構造Ｂのアイテムを３つ選択し、選択されたアイテムが識別番号ｂ１，ｂ２，ｂ３であるとすると、識別番号ｂ１，ｂ２，ｂ３の結合軸データに属するイベント用フラグの選択ビットを立てる。この状態で分子データ構造Ｍのイベント情報を「２面角の変更」に設定すると、識別番号ｂ１の結合軸データの末端原子についてどちらかの原子データが識別番号ｂ１（ｂ３）を含み、識別番号ｂ２（ｂ３）の結合軸データの末端原子についてどちらかの原子データが識別番号ｂ３（ｂ２）の結合軸データを含む場合にのみ、３連続（連結）の結合軸データ構造Ｂであるとして、分子データ構造Ｍのイベント用フラグに「２面角の変更」ビットを立てる。又、識別番号ｂ１の結合軸データと識別番号ｂ３（ｂ２）の結合軸データの両末端原子（識別番号ａｂ１，ａｂ３（ａｂ３））に対し、識別番号ａｂ１から識別番号ｂ１以外（若しくは、識別番号ａｂ３（ａｂ２）から識別番号ｂ３（ｂ２）以外）の結合軸にて連なる全ての結合軸集合データの識別用フラグの選択ビットを立てる。ここで結合軸が有する末端原子に識別番号ａｂ２（若しくは、ａｂ３）の原子が含まれる場合、識別番号ｂ１と識別番号ｂ２（ｂ３）（若しくは、識別番号ｂ３と識別番号ｂ２（ｂ１））の結合軸データは同じ環構造の内部に属することが決定される。この場合には、末端原子データに属する識別用フラグのリングビットを立てる。リングビットが立てられた末端原子データに属する結合軸集合については、回転操作の対象から除外するために識別用フラグの選択ビットを解除する。リングビットが立てられていない場合には、識別番号ａｂ１の原子から連なる結合軸の選択ビット数と識別番号ａｂ３（ａｂ２）の原子から連なる結合軸の選択ビット数とを比較し、少ない方の選択ビットを残し、多い方は解除する。以降、選択ビットのある結合軸を回転対象と表現する。
【００６７】
３連続結合軸だけでなく、両末端原子のうち１つの原子が選択されている場合には、選択された原子若しくは選択されていない原子に連なる結合軸集合のみについて上記操作を実行する。
【００６８】
２面角の角度は、表示されている分子構造上でポインティングデバイスのドラッグアンドドロップから算出するか、又は、メインウィンドウ上の分子表示エリア以外のコマンドエリアにてドラッグアンドドロップ若しくはキーボードにて角度設定を行うことで決定し、回転操作に移行する。ドラッグアンドドロップにて２面角の角度設定を指定する場合、ドラッグしている間は連続的に回転操作を行う。
【００６９】
回転操作は、指定した結合軸データのイベント用フラグに「２面角の変更」ビットを立て、識別番号ｂ１と識別番号ｂ２（ｂ３）の結合軸データの双方と直交するベクトルｖ１と、指定した識別番号ｂ２と識別番号ｂ３の結合軸データの双方と直交するベクトルｖ２の双方と直交するベクトルｖ３を回転軸に設定する。回転軸の向きは固定側から回転対象側とする。回転軸と回転角から回転行列若しくは四元数を算出し、回転対象の結合軸に作用させる。その後、適切な原子１つから結合軸のベクトル情報を辿ることで原子データ構造ＡのCartesian座標を再形成し、メインウィンドウ上に変更された分子構造を表示する。
【００７０】
図２７は、２面角の変更を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。図２８及び図２９は、この場合の２面角の変更を説明するフローチャートであり、図３０及び図３１は、この場合の２面角の変更操作時の表示画面を示す図である。図３０は、結合軸アイテム（必要であれば更に原子アイテム）の選択操作からリング存在フラグの設定までの処理を示し、図３１は、回転対象と回転演算の設定から実際の構造変更までの処理を示す。
【００７１】
図２８において、ステップＳ４１は、任意の３連続結合軸Ｂｉ，Ｂｉ'，Ｂｉ"を選択する。ここでは、説明の便宜上、結合軸Ｂｉ，Ｂｉ'，Ｂｉ"の末端原子がＡＢｉ，ＡＢｉＢｉ'，ＡＢｉ'Ｂｉ"，ＡＢｉ"であるものとする。ステップＳ４２は、２面角調整フラグを設定、即ち、分子データのイベント情報フラグに「２面角の変更」ビットを立てる。ステップＳ４３は、結合軸は結合軸Ｂｉ，Ｂｉ'，Ｂｉ"のみが選択され、且つ、原子は選択されていないか或いは末端原子ＡＢｉ（又はＡＢｉ"）のみが選択されているか否かを判定する。ステップＳ４３の判定結果がＮＯであると、処理は図２９と共に後述するステップＳ６９へ進む。他方、ステップＳ４３の判定結果がＹＥＳであると、ステップＳ４４は、末端原子ＡＢｉ（又はＡＢｉ"）が未設定の結合軸Ｂｉ"'を持つか否かを判定する。ステップＳ４４の判定結果がＮＯであると、処理は図２９と共に後述するステップＳ５２へ進む。
【００７２】
ステップＳ４４の判定結果がＹＥＳであると、ステップＳ４５は、結合軸Ｂｉ"'を属性ＲＢｉ（又はＲＢｉ"）に設定し、結合軸Ｂｉ"'に対して末端原子ＡＢｉ（又はＡＢｉ"）とは逆の末端原子に移動する。ステップＳ４６は、現在の原子が未設定の結合軸を持つか否かを判定し、判定結果がＹＥＳであると、ステップＳ４７は、未設定の結合軸を属性ＲＢｉ（又はＲＢｉ"）に設定し、逆側の末端原子に移動する。ステップＳ４６の判定結果がＮＯであると、ステップＳ４８は、直前の、即ち、設定されている結合軸の逆側の原子に移動する。ステップＳ４７又はＳ４８の後、ステップＳ４９は、現在の原子がＡＢｉ"又はＡＢｉ'Ｂｉ"（又は、ＡＢｉ又はＡＢｉＢｉ'）であるか否かを判定する。ステップＳ４９の判定結果がＮＯであると、ステップＳ５０は、現在の原子がＡＢｉ（又はＡＢｉ"）であるか否かを判定する。他方、ステップＳ４９の判定結果がＹＥＳであると、ステップＳ５１は、リング存在フラグを真に設定する（識別用フラグのリングビットを立てる）。ステップＳ５０の判定結果がＹＥＳであると、処理はステップＳ４４へ戻る。ステップＳ５０の判定結果がＮＯ、或いは、ステップＳ５１の後、処理はステップＳ４６へ戻る。
【００７３】
図２９において、ステップＳ５２は、リング存在フラグが偽である（識別用フラグのリングビットが立っていない）か否かを判定し、判定結果がＮＯであると、処理は後述するステップＳ６９へ進む。ステップＳ５２の判定結果がＹＥＳであると、ステップＳ５３は、原子ＡＢｉ（又はＡＢｉ"）が選択済みであるか否かを判定する。ステップＳ５３の判定結果がＹＥＳであると、ステップＳ５４は、原子ＡＢｉ（又はＡＢｉ"）を固定端に設定する。ステップＳ５３の判定結果がＮＯであると、ステップＳ５５は、属性ＲＢｉの原子数が属性ＲＢｉ"の原子数より大きいか否かを判定する。ステップＳ５５の判定結果がＹＥＳであると、ステップＳ５６は、原子ＡＢｉを固定端に設定する。ステップＳ５５の判定結果がＮＯであると、ステップＳ５７は、原子ＡＢｉ"を固定端に設定する。ステップＳ５４又はＳ５６又はＳ５７の後、処理はステップＳ５８へ進む。
【００７４】
ステップＳ５８は、原子ＡＢｉが固定端であるか否かを判定する。ステップＳ５８の判定結果がＹＥＳであると、ステップＳ５９は、属性ＲＢｉ"の結合軸と結合軸Ｂｉ"を回転操作の対象ベクトルに設定し、ステップＳ６０は、ベクトルＡＢｉＢｉ'→ＡＢｉ'Ｂｉ"を回転軸に設定する。他方、ステップＳ５８の判定結果がＮＯであると、ステップＳ６１は、属性ＲＢｉの結合軸と結合軸Ｂｉを回転操作の対象ベクトルに設定し、ステップＳ６２は、ベクトルＡＢｉ'Ｂｉ"→ＡＢｉＢｉ'を回転軸に設定する。ステップＳ６０又はＳ６２の後、処理はステップＳ６３へ進む。
【００７５】
ステップＳ６３は、結合軸Ｂｉと結合軸Ｂｉ'が張る（即ち、形成する）面と結合軸Ｂｉ'と結合軸Ｂｉ"が張る面から、２面角の初期値を設定する。ステップＳ６４は、２面角を調整し、ステップＳ６５は、前回の２面角と現在の２面角との差分に相当する回転角情報を取得し、対象となるベクトルに対して回転操作を行う。ステップＳ６６は、得られたベクトル情報から原子座標を変更し、分子構造を再構築する。ステップＳ６７は、２面角の調整が終了したか否かを判定し、判定結果がＮＯであると処理はステップＳ６４へ戻る。ステップＳ６７の判定結果がＹＥＳであると、ステップＳ６８は、回転操作対象の結合軸の選択を解除する。又、ステップＳ６９は、設定情報を解除し、処理は終了する。
【００７６】
このようにして、先ず最初は図２７の結合軸Ｂ２，Ｂ３，Ｂ４及び原子Ａ５が選択される。結合軸Ｂ２，Ｂ３，Ｂ４は連結され、原子Ａ５は結合軸Ｂ４の末端原子で結合軸Ｂ２と結合軸Ｂ３の末端原子ではないことから、処理は図２８の後半の処理（アルゴリズム）に到達することが可能である。結合軸Ｂ２，Ｂ３，Ｂ４及び原子Ａ５の選択後に、回転角調整フラグを設定すると（分子データのイベント情報フラグに「２面角の変更」ビットを立てると）、図２８の後半の再帰的処理（アルゴリズム）により、結合軸Ｂ２の末端原子であって結合軸Ｂ３の末端原子である原子Ａ１を基点として結合軸Ｂ３を含み結合軸Ｂ２を含まない結合軸に連なる結合軸集団ＲＡ１（Ｂ３）が選択され、リング存在フラグを真にするかどうか（結合軸Ｂ２と結合軸Ｂ４双方の末端原子Ａ３に属する識別用フラグのリングビットを立てるかどうか）についても調査される。ここで、リング存在フラグが真であれば、回転操作対象が存在しなくなることから、設定情報を解除して回転操作を終了する。ここまでの操作により、ディスプレイ１０２の画面１０２ａ上のメインウィンドウに表示される３次元分子構造は、図３０のようになる。図３０に示す蟻酸は環構造を持たないため、回転操作可能な状態となる。
【００７７】
上記の処理までで回転操作可能な状態であれば、図２９の前半の処理（アルゴリズム）により結合軸集団ＲＡ１に含まれる結合軸Ｂ３に選択ビットを立てて回転対象に設定する。結合軸Ｂ３の回転軸は、結合軸Ｂ２の方向でＡ３→Ａ１の向きを持つベクトルに設定する。本実施例では、メインウィンドウに表示されたコマンドウィンドウ上にスライドバーを表示して、バーをマウス１０４にてドラッグアンドドロップすることにより回転角度を決定し、回転軸と回転角度から回転行列を決定するアルゴリズムを用いた。図３０において、スライドバーの初期角度は、初期分子構造における初期角度を計算して表示されている。回転行列が決定されると、図２９の後半の処理（アルゴリズム）により結合軸Ｂ３が回転演算を受けて結合軸Ｂ'３となり、原子Ａ１からベクトルを加えることにより原子Ａ４のCartesian座標がＡ'４に変更され、メインウィンドウ上の分子構造が変更される。マウス１０４がリリースされると回転が終了したと見なして、選択情報と設定情報を解除して回転操作を終了する。ここまでの操作により、ディスプレイ１０２の画面１０２ａ上のメインウィンドウに表示される３次元分子構造は、図３１のようになる。図３１では、マウス１０４のドラッグアンドドロップにより、２面角が初期の−１７９度から７４度までの回転を行った結果が示されている。
【００７８】
図２７において、Ｂ２，Ｂ３，Ｂ４，Ｂ５は選択された結合軸、リングフラグは偽、Ａ５は固定端の原子、Ｂ３は回転対象の結合軸、Ａ３→Ａ１はその回転軸を示す。回転演算をＲで示すと、Ｂ'３＝ＲＢ３が成立し、Ａ４の座標変更はＡ'４＝Ａ１＋Ｂ'３で表される。
（結合軸の伸縮）
図３２は、結合軸の伸縮を説明する図である。図３２は、移動対象となる原子が、この場合は伸縮軸である結合軸を介して固定の原子に結合されている状態を示す。
【００７９】
図７に示す処理によりユーザが用意した図１のデータ構造に対し、結合軸データ構造Ｂのアイテムを１つ選択し、選択されたアイテムが識別番号ｂ１であるとすると、識別番号ｂ１の結合軸データに属するイベント用フラグの選択ビットを立てる。この状態で分子データ構造Ｍのイベント情報を「伸縮」に設定すると、分子データ構造Ｍのイベント用フラグに「伸縮」ビットを立て、識別番号ｂ１の結合軸データの両末端原子（識別番号ａ１，ａ２）に対し、識別番号ｂ１の結合軸データ以外の結合軸にて連なる全ての結合軸集合データの識別用フラグの選択ビットを立てる。ここで結合軸が有する末端原子に識別番号ａ１又はａ２の原子が含まれる場合、識別番号ｂ１の結合軸データは環構造の内部に属することが決定される。この場合には、末端原子データに属する識別用フラグのリングビットを立てる。リングビットが立てられた末端原子データに属する結合軸集合については、伸縮操作の対象から除外するために識別用フラグの選択ビットを解除する。リングビットが立てられていない場合には、識別番号ａ１の原子から連なる結合軸の選択ビット数と識別番号ａ２の原子から連なる結合軸の選択ビット数とを比較し、少ない方の選択ビットを残し、多い方は解除する。以降、選択ビットのある結合軸を回転対象と表現する。
【００８０】
結合軸だけでなく末端原子のうち１つの原子が選択されている場合には、選択された原子若しくは選択されていない原子に連なる結合軸集合のみについて上記操作を実行する。
【００８１】
結合軸伸縮の縮尺度は、表示されている分子構造上でポインティングデバイスのドラッグアンドドロップから算出するか、又は、メインウィンドウ上の分子表示エリア以外のコマンドエリアにてドラッグアンドドロップ若しくはキーボードにて角度設定を行うことで決定し、伸縮操作に移行する。ドラッグアンドドロップにて結合軸伸縮の縮尺度を指定する場合、ドラッグしている間は連続的に伸縮操作を行う。
【００８２】
伸縮操作は、指定した識別番号ｂ１の結合軸データに関してイベント用フラグに、「伸縮」ビットを立て、縮尺度に応じて識別番号ｂ１の結合軸のベクトル情報を変更する。その後、変更対象の識別番号ｂ１の結合軸の末端原子から伸縮操作対象の結合軸のベクトル情報を辿ることで原子データ構造ＡのCartesian座標を再形成し、メインウィンドウ上に変更された分子構造を表示する。
【００８３】
図３３は、結合軸の伸縮を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。図３４及び図３５は、この場合の結合軸の伸縮を説明するフローチャートであり、図３６及び図３７は、この場合の結合軸の伸縮操作時の表示画面を示す図である。図３６は、結合軸アイテム（必要であれば更に原子アイテム）の選択操作からリング存在フラグの設定までの処理を示し、図３７は、移動対象と伸縮演算の設定から実際の構造変更までの処理を示す。
【００８４】
図３４において、ステップＳ７１は、任意の結合軸Ｂｉを選択する。ここでは、説明の便宜上、結合軸Ｂｉの末端原子がＡＢ１，ＡＢ２であるものとする。ステップＳ７２は、結合長調整フラグを設定、即ち、分子データのイベント情報フラグに「伸縮」ビットを立てる。ステップＳ７３は、結合軸は結合軸Ｂｉのみが選択され、且つ、原子は選択されていないか或いは末端原子ＡＢ１（又はＡＢ２）のみが選択されているか否かを判定する。ステップＳ７３の判定結果がＮＯであると、処理は図３５と共に後述するステップＳ９９へ進む。他方、ステップＳ７３の判定結果がＹＥＳであると、ステップＳ７４は、末端原子ＡＢ１（又はＡＢ２）が未設定の結合軸Ｂｉ'を持つか否かを判定する。ステップＳ７４の判定結果がＮＯであると、処理は図３５と共に後述するステップＳ８２へ進む。
【００８５】
ステップＳ７４の判定結果がＹＥＳであると、ステップＳ７５は、結合軸Ｂｉ'を属性ＲＢ１（又はＲＢ２）に設定し、結合軸Ｂｉ'に対して末端原子ＡＢ１（又はＡＢ２）とは逆の末端原子に移動する。ステップＳ７６は、現在の原子が未設定の結合軸を持つか否かを判定し、判定結果がＹＥＳであると、ステップＳ７７は、未設定の結合軸を属性ＲＢ１（又はＲＢ２）に設定し、逆側の末端原子に移動する。ステップＳ７６の判定結果がＮＯであると、ステップＳ７８は、直前の、即ち、設定されている結合軸の逆側の原子に移動する。ステップＳ７７又はＳ７８の後、ステップＳ７９は、現在の原子がＡＢ２（又はＡＢ１）であるか否かを判定する。ステップＳ７９の判定結果がＮＯであると、ステップＳ８０は、現在の原子がＡＢ１（又はＡＢ２）であるか否かを判定する。他方、ステップＳ７９の判定結果がＹＥＳであると、ステップＳ８１は、リング存在フラグを真に設定する（識別用フラグのリングビットを立てる）。ステップＳ８０の判定結果がＹＥＳであると、処理はステップＳ７４へ戻る。ステップＳ８０の判定結果がＮＯ、或いは、ステップＳ８１の後、処理はステップＳ７６へ戻る。
【００８６】
図３５において、ステップＳ８２は、リング存在フラグが偽である（識別用フラグのリングビットが立っていない）か否かを判定し、判定結果がＮＯであると、処理は後述するステップＳ９９へ進む。ステップＳ８２の判定結果がＹＥＳであると、ステップＳ８３は、原子ＡＢ１（又はＡＢ２）が選択済みであるか否かを判定する。ステップＳ８３の判定結果がＹＥＳであると、ステップＳ８４は、原子ＡＢ１（又はＡＢ２）を固定端に設定する。ステップＳ８３の判定結果がＮＯであると、ステップＳ８５は、属性ＲＢ１の原子数が属性ＲＢ２の原子数より大きいか否かを判定する。ステップＳ８５の判定結果がＹＥＳであると、ステップＳ８６は、原子ＡＢ１を固定端に設定する。ステップＳ８５の判定結果がＮＯであると、ステップＳ８７は、原子ＡＢ２を固定端に設定する。ステップＳ８４又はＳ８６又はＳ８７の後、処理はステップＳ８８へ進む。
【００８７】
ステップＳ８８は、原子ＡＢ１が固定端であるか否かを判定する。ステップＳ８８の判定結果がＹＥＳであると、ステップＳ８９は、属性ＲＢ２の結合軸を伸縮操作の対象ベクトルに設定し、ステップＳ９０は、ベクトルＡＢ１→ＡＢ２を伸縮方向に設定する。他方、ステップＳ８８の判定結果がＮＯであると、ステップＳ９１は、属性ＲＢ１の結合軸を伸縮操作の対象ベクトルに設定し、ステップＳ９２は、ベクトルＡＢ２→ＡＢ１を伸縮方向に設定する。ステップＳ９０又はＳ９２の後、処理はステップＳ９３へ進む。
【００８８】
ステップＳ９３は、結合軸Ｂｉの結合長の初期値を設定する。ステップＳ９４は、結合長を調整し、ステップＳ９５は、前回の結合長と現在の結合長との差分に相当する情報を取得し、対象となるベクトルに対して伸縮操作を行う。ステップＳ９６は、得られたベクトル情報から原子座標を変更し、分子構造を再構築する。ステップＳ９７は、結合長の調整が終了したか否かを判定し、判定結果がＮＯであると処理はステップＳ９４へ戻る。ステップＳ９７の判定結果がＹＥＳであると、ステップＳ９８は、伸縮操作対象の結合軸の選択を解除する。又、ステップＳ９９は、設定情報を解除し、処理は終了する。
【００８９】
このようにして、先ず最初は図３３の結合軸Ｂ２と原子Ａ３が選択される。原子Ａ３は結合軸Ｂ２の末端原子であるから、図３４の後半の処理（アルゴリズム）に到達することが可能である。結合軸Ｂ２と原子Ａ３の選択後に結合長調整フラグが設定されると（分子データのイベント情報フラグに「伸縮」ビットが立てられると）、図３４の後半の再帰的処理（アルゴリズム）により、末端原子Ａ１を基点として結合軸Ｂ２を含まない結合軸に連なる結合軸集団ＲＡ１（Ｂ１，Ｂ３）が選出され、リング存在フラグを真にするかどうか（原子Ａ３に属する識別用フラグのリングビットを立てるかどうか）についても調査される。ここで、リング存在フラグが真であれば、伸縮による移動操作対象が存在しなくなることから、設定情報を解除して移動操作を終了する。ここまでの操作により、ディスプレイ１０２の画面１０２ａ上のメインウィンドウに表示される３次元分子構造は、図３６のようになる。図３６に示す蟻酸は環構造を持たないため、伸縮操作可能な状態となる。
【００９０】
上記の処理までで伸縮操作可能な状態であれば、図３５の前半の処理（アルゴリズム）により結合軸集団ＲＡ１に含まれる結合軸Ｂ１，Ｂ３を移動対象に、結合軸Ｂ２を伸縮軸に設定する。本実施例では、メインウィンドウに表示されたコマンドウィンドウ上にスライドバーを表示して、バーをマウス１０４にてドラッグアンドドロップすることにより縮尺度を決定するアルゴリズムを用いた。縮尺度が決定されると、図３５の後半の処理（アルゴリズム）により結合軸Ｂ２が伸縮演算を受けて結合軸Ｂ'２となり、原子Ａ３からベクトルを加えることにより原子Ａ１，Ａ２，Ａ４のCartesian座標がＡ'１，Ａ'２，Ａ'４に変更され、メインウィンドウ上の分子構造が変更される。マウス１０４がリリースされると伸縮が終了したと見なして、選択情報と設定情報を解除して伸縮操作を終了する。ここまでの操作により、ディスプレイ１０２の画面１０２ａ上のメインウィンドウに表示される３次元分子構造は、図３７のようになる。図３７では、マウス１０４のドラッグアンドドロップにより、結合長を１．８倍に拡大した結果が示されている。
【００９１】
図３３において、Ｂ２，Ａ３は選択された結合軸及び原子、リングフラグは偽、Ａ３は固定端の原子、Ｂ２は伸縮対象の結合軸を示す。伸縮演算をＳで示すと、Ｂ'２＝ＳＢ２が成立し、Ａ１，Ａ２，Ａ４の座標変更は夫々Ａ'１＝Ａ３＋Ｂ'２，Ａ'２＝Ａ'１＋Ｂ１，Ａ'４＝Ａ'１＋Ｂ３で表される。
【００９２】
上記原子周りの自由回転、結合軸周りの回転、２軸間の角度変更、２面角の変更及び伸縮は、適宜組み合わせても良い。又、従来の手法と比較すると、全ての結合軸に末端原子２個の情報とベクトル情報とフラグ情報を、全ての原子に関与する全結合軸情報と座標とフラグ情報を含めることにより、任意の分子構造変更を容易に操作することができ、分子構造構築操作の全体を容易にすることができる。
【００９３】
尚、本発明は、以下に付記する発明をも包含するものである。
（付記１）  入力部と、
ハーフベクタ形式又はボールアンドスティック形式で３次元分子構造を画面上に表示するディスプレイと、
該分子構造のうち、該入力部により指定された分子の結合軸に基づいて、分子全体に対して座標変更の対象となる側を決定する決定手段と、
該指定された結合軸及び該座標変更の対象となる側に基づいて、原子周りの自由回転、結合軸周りの回転、２軸間の角度変更、２面角の変更及び結合軸の伸縮の少なくとも１つを含む分子構造の変更を、該入力部からの指定に基づいて行う変更手段と、
該決定手段の決定及び該変更手段の変更に基づいて、変更された分子構造を該ディスプレイの画面上に表示する表示手段とを備えたことを特徴とする、分子設計支援装置。
（付記２）  該決定手段は、該入力部により指定された分子の結合軸１つ、或いは、結合軸１つと結合軸末端原子２つのうちの原子１つに基づいて、分子全体に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸末端原子２つのうちの原子１つに基づいて、該指定された結合軸の末端に対して座標変更対象ではない側の原子を中心とした自由回転を行うことで、該入力部から指定された角度だけ原子周りの自由回転を行うことを特徴とする、付記１記載の分子設計支援装置。
（付記３）  該決定手段は、該入力部により指定された分子の結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸末端原子２つのうちの原子１つに基づいて、結合軸に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された結合軸１つ、或いは、結合軸１つと結合軸末端原子２つのうちの原子１つに基づいて、該指定された結合軸周りの回転を行うことで、該入力部から指定された角度だけ該指定された結合軸周りの回転を行うことを特徴とする、付記１記載の分子設計支援装置。
（付記４）  該決定手段は、該入力部により指定された分子の連続する結合軸２つ、或いは、連続する結合軸２つとボールアンドスティック形式の連続した結合軸２つの末端原子２つのうちの原子１つに基づいて、分子全体に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された連続する結合軸２つ、或いは、連続する結合軸２つとボールアンドスティック形式の連続した結合軸２つの末端原子２つのうちの原子１つに基づいて、結合軸２つの間の角度を変更することで、該入力部から指定された角度だけ該指定された２軸間の角度変更を行うことを特徴とする、付記１記載の分子設計支援装置。
（付記５）  該決定手段は、該入力部により指定された分子の連続する結合軸３つ、或いは、連続する結合軸３つとボールアンドスティック形式の連続した結合軸３つの末端原子２つのうちの原子１つに基づいて、分子全体に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された連続する結合軸３つ、或いは、連続する結合軸３つとボールアンドスティック形式の連続した結合軸２つの末端原子２つのうちの原子１つに基づいて、結合軸３つのうち中心の結合軸周りの回転を行うことで、該入力部から指定された角度だけ該指定された３つの連続した結合軸のうち中心の結合軸周りに２面角の回転を行うことを特徴とする、付記１記載の分子設計支援装置。
（付記６）  該決定手段は、該入力部により指定された分子の結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸の末端原子２つのうちの原子１つに基づいて、結合軸に対して座標変更の対象となる側を決定し、
該変更手段は、該指定された分子の結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸の末端原子２つのうちの原子１つに基づいて、該入力部から指定された縮尺度だけ該指定された結合軸の伸縮を行うことを特徴とする、付記１記載の分子設計支援装置。
（付記７）  該決定手段は、該入力部により結合軸若しくは連続した結合軸のみが指定されると、該指定された結合軸の２つの末端原子から該指定された結合軸以外の結合軸に連なる結合軸からなる複数の結合軸集団のうち、結合軸数の少ない方の結合軸集団のみを座標変更の対象に設定することを特徴とする、付記１〜６のいずれか１項記載の分子設計支援装置。
（付記８）  該決定手段は、該入力部により結合軸若しくは連続した結合軸が指定され、且つ、該入力部により更に該指定された結合軸の２つの末端原子のうち１つの原子が指定されると、該指定された原子側或いは指定されていない原子側を基点とした該指定された結合軸以外の結合軸に連なる結合軸からなる結合軸集団を座標変更の対象に設定することを特徴とする、付記１〜６のいずれか１項記載の分子設計支援装置。
（付記９）  該決定手段は、該入力部により結合軸若しくは連続した結合軸の一方の末端原子から該指定された結合軸以外の結合軸に連なる結合軸からなる結合軸集団が、該指定された結合軸の他方の末端原子から該指定された結合軸以外の結合軸に連なる結合軸を含む場合、該結合軸集団を座標変更の対象から除外することを特徴とする、付記１〜６のいずれか１項記載の分子設計支援装置。
（付記１０）  入力部を有するコンピュータに分子設計支援機能を持たせるプログラムであって、
該コンピュータに、ディスプレイの画面上にハーフベクタ形式又はボールアンドスティック形式で表示される３次元分子構造のうち、該入力部により指定された分子の結合軸に基づいて、分子全体に対して座標変更の対象となる側を決定させる決定手順と、
該コンピュータに、該指定された結合軸及び該座標変更の対象となる側に基づいて、原子周りの自由回転、結合軸周りの回転、２軸間の角度変更、２面角の変更及び結合軸の伸縮の少なくとも１つを含む分子構造の変更を、該入力部からの指定に基づいて行わせる変更手順と、
該コンピュータに、該決定手順の決定及び該変更手順の変更に基づいて、変更された分子構造を該ディスプレイの画面上に表示させる表示手順とを含むことを特徴とする、プログラム。
（付記１１）  該決定手順は、該コンピュータに、該入力部により指定された分子の結合軸１つ、或いは、結合軸１つと結合軸末端原子２つのうちの原子１つに基づいて、分子全体に対して座標変更の対象となる側を決定させ、
該変更手順は、該コンピュータに、該指定された結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸末端原子２つのうちの原子１つに基づいて、該指定された結合軸の末端に対して座標変更対象ではない側の原子を中心とした自由回転を行わせることで、該入力部から指定された角度だけ原子周りの自由回転を行わせることを特徴とする、付記１０記載のプログラム。
（付記１２）  該決定手順は、該コンピュータに、該入力部により指定された分子の結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸末端原子２つのうちの原子１つに基づいて、結合軸に対して座標変更の対象となる側を決定させ、
該変更手順は、該コンピュータに、該指定された結合軸１つ、或いは、結合軸１つと結合軸末端原子２つのうちの原子１つに基づいて、該指定された結合軸周りの回転を行わせることで、該入力部から指定された角度だけ該指定された結合軸周りの回転を行わせることを特徴とする、付記１０記載のプログラム。
（付記１３）  該決定手順は、該コンピュータに、該入力部により指定された分子の連続する結合軸２つ、或いは、連続する結合軸２つとボールアンドスティック形式の連続した結合軸２つの末端原子２つのうちの原子１つに基づいて、分子全体に対して座標変更の対象となる側を決定させ、
該変更手順は、該コンピュータに、該指定された連続する結合軸２つ、或いは、連続する結合軸２つとボールアンドスティック形式の連続した結合軸２つの末端原子２つのうちの原子１つに基づいて、結合軸２つの間の角度を変更させることで、該入力部から指定された角度だけ該指定された２軸間の角度変更を行わせることを特徴とする、付記１０記載のプログラム。
（付記１４）  該決定手順は、該コンピュータに、該入力部により指定された分子の連続する結合軸３つ、或いは、連続する結合軸３つとボールアンドスティック形式の連続した結合軸３つの末端原子２つのうちの原子１つに基づいて、分子全体に対して座標変更の対象となる側を決定させ、
該変更手順は、該コンピュータに、該指定された連続する結合軸３つ、或いは、連続する結合軸３つとボールアンドスティック形式の連続した結合軸２つの末端原子２つのうちの原子１つに基づいて、結合軸３つのうち中心の結合軸周りの回転を行わせることで、該入力部から指定された角度だけ該指定された３つの連続した結合軸のうち中心の結合軸周りに２面角の回転を行わせることを特徴とする、付記１０記載のプログラム。
（付記１５）  該決定手順は、該コンピュータに、該入力部により指定された分子の結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸の末端原子２つのうちの原子１つに基づいて、結合軸に対して座標変更の対象となる側を決定させ、
該変更手順は、該コンピュータに、該指定された分子の結合軸１つ、或いは、結合軸１つとボールアンドスティック形式の結合軸の末端原子２つのうちの原子１つに基づいて、該入力部から指定された縮尺度だけ該指定された結合軸の伸縮を行わせることを特徴とする、付記１０記載のプログラム。
（付記１６）  該決定手順は、該コンピュータに、該入力部により結合軸若しくは連続した結合軸のみが指定されると、該指定された結合軸の２つの末端原子から該指定された結合軸以外の結合軸に連なる結合軸からなる複数の結合軸集団のうち、結合軸数の少ない方の結合軸集団のみを座標変更の対象に設定させることを特徴とする、付記１０〜１５のいずれか１項記載のプログラム。
（付記１７）  該決定手順は、該コンピュータに、該入力部により結合軸若しくは連続した結合軸が指定され、且つ、該入力部により更に該指定された結合軸の２つの末端原子のうち１つの原子が指定されると、該指定された原子側或いは指定されていない原子側を基点とした該指定された結合軸以外の結合軸に連なる結合軸からなる結合軸集団を座標変更の対象に設定させることを特徴とする、付記１０〜１５のいずれか１項記載のプログラム。
（付記１８）  該決定手順は、該コンピュータに、該入力部により結合軸若しくは連続した結合軸の一方の末端原子から該指定された結合軸以外の結合軸に連なる結合軸からなる結合軸集団が、該指定された結合軸の他方の末端原子から該指定された結合軸以外の結合軸に連なる結合軸を含む場合、該結合軸集団を座標変更の対象から除外させることを特徴とする、付記１０〜１５のいずれか１項記載のプログラム。
【００９４】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図面の簡単な説明】
【００９５】
【図１】データ構造を説明する図である。
【図２】データ構造がどのように設定されるかを、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。
【図３】ハーフベクタ形式の表示を説明する図である。
【図４】ボールアンドスティック形式の表示を説明する図である。
【図５】本発明が適用されるコンピュータシステムを示す斜視図である。
【図６】コンピュータシステムの本体部内の要部の構成を説明するブロック図である。
【図７】初期データ構造の構築を説明するフローチャートである。
【図８】結合軸周りの回転を説明する図である。
【図９】原子周りの自由回転を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。
【図１０】原子周りの自由回転を説明するフローチャートである。
【図１１】原子周りの自由回転を説明するフローチャートである。
【図１２】原子周りの自由回転操作時の表示画面を示す図である。
【図１３】原子周りの自由回転操作時の表示画面を示す図である。
【図１４】結合軸周りの回転を説明する図である。
【図１５】結合軸周りの回転を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。
【図１６】結合軸周りの回転を説明するフローチャートである。
【図１７】結合軸周りの回転を説明するフローチャートである。
【図１８】結合軸周りの回転操作時の表示画面を示す図である。
【図１９】結合軸周りの回転操作時の表示画面を示す図である。
【図２０】２軸間の角度変更を説明する図である。
【図２１】２軸間の角度変更を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。
【図２２】２軸間の角度変更を説明するフローチャートである。
【図２３】２軸間の角度変更を説明するフローチャートである。
【図２４】２軸間の角度変更操作時の表示画面を示す図である。
【図２５】２軸間の角度変更操作時の表示画面を示す図である。
【図２６】２面角の変更を説明する図である。
【図２７】２面角の変更を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。
【図２８】２面角の変更を説明するフローチャートである。
【図２９】２面角の変更を説明するフローチャートである。
【図３０】２面角の変更操作時の表示画面を示す図である。
【図３１】２面角の変更操作時の表示画面を示す図である。
【図３２】結合軸の伸縮を説明する図である。
【図３３】結合軸の伸縮を、蟻酸（ＨＣＯＯＨ）の場合を例に説明する図である。
【図３４】結合軸の伸縮を説明するフローチャートである。
【図３５】結合軸の伸縮を説明するフローチャートである。
【図３６】結合軸の伸縮操作時の表示画面を示す図である。
【図３７】結合軸の伸縮操作時の表示画面を示す図である。
【符号の説明】
【００９６】
１００      コンピュータシステム
１０１      本体部
１０２      ディスプレイ
１０２ａ      表示画面
１０３      キーボード
１０４      マウス
１０５      モデム
１０６      記録媒体
１１０      ディスク
２００      バス
２０１      ＣＰＵ
２０２      メモリ部
２０３      ディスクドライブ
２０４      ハードディスクドライブ
【図１】
2008129649.tif 000003
【図２】
2008129649.tif 000004
【図３】
2008129649.tif 000005
【図４】
2008129649.tif 000006
【図５】
2008129649.tif 000007
【図６】
2008129649.tif 000008
【図７】
2008129649.tif 000009
【図８】
2008129649.tif 000010
【図９】
2008129649.tif 000011
【図１０】
2008129649.tif 000012
【図１１】
2008129649.tif 000013
【図１２】
2008129649.tif 000014
【図１３】
2008129649.tif 000015
【図１４】
2008129649.tif 000016
【図１５】
2008129649.tif 000017
【図１６】
2008129649.tif 000018
【図１７】
2008129649.tif 000019
【図１８】
2008129649.tif 000020
【図１９】
2008129649.tif 000021
【図２０】
2008129649.tif 000022
【図２１】
2008129649.tif 000023
【図２２】
2008129649.tif 000024
【図２３】
2008129649.tif 000025
【図２４】
2008129649.tif 000026
【図２５】
2008129649.tif 000027
【図２６】
2008129649.tif 000028
【図２７】
2008129649.tif 000029
【図２８】
2008129649.tif 000030
【図２９】
2008129649.tif 000031
【図３０】
2008129649.tif 000032
【図３１】
2008129649.tif 000033
【図３２】
2008129649.tif 000034
【図３３】
2008129649.tif 000035
【図３４】
2008129649.tif 000036
【図３５】
2008129649.tif 000037
【図３６】
2008129649.tif 000038
【図３７】
2008129649.tif 000039