「lmolvie(API)」の版間の差分

提供: Eospedia
移動: 案内検索
(キーボード)
 
(同じ利用者による、間の21版が非表示)
行1: 行1:
DataExpress/eosOpenGL/src/'''lmolvie'''はAPI です。
+
DataExpress/eosOpenGL/src/'''lmolvie'''は[[openGL]]を使用したビューア[[molvie]]のための[[API]]です。
  
 
== 定数 ==
 
== 定数 ==
行65: 行65:
  
 
== API ==
 
== API ==
extern void lmolviePDBread(FILE* fptIn);
 
extern pdbFile* get_pdb(void);
 
 
 
=== 初期設定 ===
 
=== 初期設定 ===
 +
Normal mode
 
  extern void lmolvieInitNormal(void);
 
  extern void lmolvieInitNormal(void);
 +
 +
Parallel mode
 +
extern void lmolvieInitParallel(void);
 +
<br>
 +
 +
=== 画面表示 ===
 +
Normal mode
 +
extern void lmolvieDisplayNormal(void);
 +
 +
Parallel mode
 +
extern void lmolvieDisplayParallel(void);
 +
 +
画面表示のテスト
 +
extern void lmolvieDisplayTest(void);
 +
<br>
 +
 +
=== 再表示 ===
 +
Normal mode
 +
extern void lmolvieReshapeNormal(int width, int height);
 +
 +
Parallel mode
 +
extern void lmolvieReshapeParallel(int width, int height);
 +
<br>
  
 
=== アイドル処理 ===
 
=== アイドル処理 ===
行75: 行96:
 
  extern void lmolvieIdleTest(void);
 
  extern void lmolvieIdleTest(void);
  
アイドル時の処理
+
Normal mode
 
  extern void lmolvieIdleNormal(void);
 
  extern void lmolvieIdleNormal(void);
スタティック変数__accelerator(初期値: 0)に依る処理を行います。
+
スタティック変数__accelerator(初期値: 0)に依って[[#視点移動]]を行います。
 
<table border=1>
 
<table border=1>
 
<tr>
 
<tr>
行93: 行114:
 
<tr>
 
<tr>
 
<td>それ以外</td>
 
<td>それ以外</td>
<td>何もしない</td>
+
<td>停止(何もしない)</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
 
<br>
 
<br>
  
=== 画面 ===
+
=== マウスイベント ===
画面表示のテスト(glutDisplayFuncなどに使用して画面テストを行います。)
+
==== クリック ====
  extern void lmolvieDisplayTest(void);
+
MOUSE_FUNCTIONが定義されているときのみ有効です。
 +
<br>
  
通常画面表示
+
===== メイン =====
  extern void lmolvieDisplayNormal(void);
+
クリック操作の処理です。(button:対応ボタン、state:状態、x, y:座標)
 +
  extern void lmolvieMouse(int button, int state, int x, int y);
 +
[[#操作モード]]に依った処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>操作モード</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>lmolvieMouseNormal</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>lmolvieMouseDrive</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>lmolvieMouseParallel</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>lmolvieMouseNormal</td>
 +
</tr>
 +
</table>
 +
<br>
  
幅width、高さheightにて再表示します。
+
===== Drive mode時 =====
  extern void lmolvieReshapeNormal(int width, int height);
+
  extern void lmolvieMouseDrive(int button, int state, int x, int y);
 +
buttonとstateにより[[#視点移動]]を行います。
 +
<table border=1>
 +
<tr>
 +
<th>state</th>
 +
<th>button</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>GLUT_DOWN</td>
 +
<td>GLUT_LEFT_BUTTON</td>
 +
<td>中心に近づく(__accelerator=1)</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_DOWN</td>
 +
<td>GLUT_RIGHT_BUTTON</td>
 +
<td>中心から離れる(__accelerator=2)</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_DOWN</td>
 +
<td>GLUT_LEFT_BUTTON</td>
 +
<td>停止(__accelerator=0)</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_DOWN</td>
 +
<td>GLUT_RIGHT_BUTTON</td>
 +
<td>停止(__accelerator=0)</td>
 +
</tr>
 +
</table>
 +
<br>
  
=== マウス ===
+
===== Parallel mode時 =====
  extern void lmolvieMouse(int button, int state, int x, int y);
+
処理なし
 +
  extern void lmolvieMouseParallel(int button, int state, int x, int y);
 +
<br>
 +
 
 +
===== MultiProtein mode時 =====
 +
処理なし
 +
extern void lmolvieMouseMulti(int button, int state, int x, int y);
 +
<br>
 +
 
 +
==== ドラッグ ====
 +
MOTION_FUNCTIONが定義されているときのみ有効です。
 +
<br>
 +
 
 +
===== メイン =====
 +
マウスのドラッグ操作による処理です。(x, y:座標)
 
  extern void lmolvieMouseMotion(int x, int y);
 
  extern void lmolvieMouseMotion(int x, int y);
extern void lmolvieMousePassiveMotion(int x, int y);
+
[[#操作モード]]に依った処理を行います。
extern void lmolvieMouseDrive(int button, int state, int x, int y);
+
<table border=1>
 +
<tr>
 +
<th>操作モード</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>lmolvieMouseMotionNormal</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>lmolvieMouseMotionDrive</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>lmolvieMouseMotionParallel</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>lmolvieMouseMotionNormal</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 
 +
===== Drive mode時 =====
 
  extern void lmolvieMouseMotionDrive(int x, int y);
 
  extern void lmolvieMouseMotionDrive(int x, int y);
extern void lmolvieMousePassiveMotionDrive(int x, int y);
+
ドラッグ時のボタンpressedButtonに依った処理を行います。
extern void lmolvieMouseParallel(int button, int state, int x, int y);
+
<table border=1>
 +
<tr>
 +
<th>pressedButton</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>GLUT_LEFT_BUTTON</td>
 +
<td>[[#視点回転]]</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_MIDDLE_BUTTON</td>
 +
<td>[[#視点回転]]</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_RIGHT_BUTTON</td>
 +
<td>[[#中心回転]]</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 
 +
===== Parallel mode時 =====
 
  extern void lmolvieMouseMotionParallel(int x, int y);
 
  extern void lmolvieMouseMotionParallel(int x, int y);
extern void lmolvieMousePassiveMotionParallel(int x, int y);
+
ドラッグ時のボタンpressedButtonに依った処理を行います。
extern void lmolvieMouseMulti(int button, int state, int x, int y);
+
<table border=1>
 +
<tr>
 +
<th>pressedButton</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>GLUT_LEFT_BUTTON</td>
 +
<td>物体回転(proteinRotateX, proteinRotateY)</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_MIDDLE_BUTTON</td>
 +
<td>[[#中心移動]]</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_RIGHT_BUTTON</td>
 +
<td>[[#中心回転]]</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 
 +
===== MultiProtein mode時 =====
 
  extern void lmolvieMouseMotionMulti(int x, int y);
 
  extern void lmolvieMouseMotionMulti(int x, int y);
 +
ドラッグ時のボタンpressedButtonに依った処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pressedButton</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>GLUT_LEFT_BUTTON</td>
 +
<td>物体回転(proteinRotateX, proteinRotateY)</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_MIDDLE_BUTTON</td>
 +
<td>[[#中心移動]]</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_RIGHT_BUTTON</td>
 +
<td>[[#中心回転]]</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
==== マウス移動 ====
 +
PASSIVEMOTION_FUNCTIONが定義されているときのみ有効です。
 +
<br>
 +
 +
===== メイン =====
 +
ボタンを押していない状態でのマウス移動による処理です。
 +
extern void lmolvieMousePassiveMotion(int x, int y);
 +
[[#操作モード]]に依った処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>操作モード</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>lmolvieMousePassiveMotionNormal</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>lmolvieMousePassiveMotionDrive</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>lmolvieMousePassiveMotionParallel</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>lmolvieMousePassiveMotionNormal</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
===== Drive mode時 =====
 +
処理なし
 +
extern void lmolvieMousePassiveMotionDrive(int x, int y);
 +
<br>
 +
 +
===== Parallel mode時 =====
 +
処理なし
 +
extern void lmolvieMousePassiveMotionParallel(int x, int y);
 +
<br>
 +
 +
===== MultiProtein mode時 =====
 +
処理なし
 
  extern void lmolvieMousePassiveMotionMulti(int x, int y);
 
  extern void lmolvieMousePassiveMotionMulti(int x, int y);
 +
<br>
 +
 +
=== キーボードイベント ===
 +
KEYBOARD_FUNCTIONが定義されているときのみ有効です。
 +
<br>
  
=== キーボード ===
+
==== メイン ====
 
  extern void lmolvieKeyboard(unsigned char pushkey, int x, int y);
 
  extern void lmolvieKeyboard(unsigned char pushkey, int x, int y);
 +
[[#操作モード]]に依った処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>操作モード</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>lmolvieKeyboardNormal</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>lmolvieKeyboardDrive</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>lmolvieKeyboardParallel</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>lmolvieKeyboardSurface</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>lmolvieKeyboardMulti</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
==== Normal mode時 ====
 
  extern void lmolvieKeyboardNormal(unsigned char pushkey, int x, int y);
 
  extern void lmolvieKeyboardNormal(unsigned char pushkey, int x, int y);
 +
キーpushkeyによる処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pushkey</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>q</td>
 +
<td>終了</td>
 +
</tr>
 +
<tr>
 +
<td>d</td>
 +
<td>Drive mode</td>
 +
</tr>
 +
<tr>
 +
<td>l</td>
 +
<td>Parallel mode</td>
 +
</tr>
 +
<tr>
 +
<td>t</td>
 +
<td>Surface mode</td>
 +
</tr>
 +
<tr>
 +
<td>m</td>
 +
<td>MultiProtein mode(未実装)</td>
 +
</tr>
 +
<tr>
 +
<td>C</td>
 +
<td>Coaster mode(未実装)</td>
 +
</tr>
 +
<tr>
 +
<td>c</td>
 +
<td>C switchの切り替え(ON, mainChain, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>o</td>
 +
<td>O switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>n</td>
 +
<td>N switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>s</td>
 +
<td>S switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>p</td>
 +
<td>P switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>h</td>
 +
<td>H switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>f</td>
 +
<td>Fe switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>NoneAtom mode</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>Atom mode</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>Number mode</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>AminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>Temperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>5</td>
 +
<td>CStickNumber mode</td>
 +
</tr>
 +
<tr>
 +
<td>6</td>
 +
<td>CStickAminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>7</td>
 +
<td>CStickTemperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>8</td>
 +
<td>DistanceFromTarget mode</td>
 +
</tr>
 +
<tr>
 +
<td>9</td>
 +
<td>WireFrame mode</td>
 +
</tr>
 +
<tr>
 +
<td>!</td>
 +
<td>Chain mode</td>
 +
</tr>
 +
<tr>
 +
<td>v</td>
 +
<td>voice!</td>
 +
</tr>
 +
<tr>
 +
<td>r</td>
 +
<td>camera reset</td>
 +
</tr>
 +
<tr>
 +
<td>w</td>
 +
<td>中心に近づく</td>
 +
</tr>
 +
<tr>
 +
<td>e</td>
 +
<td>中心から離れる</td>
 +
</tr>
 +
<tr>
 +
<td>F</td>
 +
<td>CentreTagの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>Z</td>
 +
<td>DSN6読み込み(未実装)</td>
 +
</tr>
 +
<tr>
 +
<td>b</td>
 +
<td>状態保存(未実装)</td>
 +
</tr>
 +
<tr>
 +
<td>g</td>
 +
<td>状態読込(未実装)</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
==== Drive mode時 ====
 
  extern void lmolvieKeyboardDrive(unsigned char pushkey, int x, int y);
 
  extern void lmolvieKeyboardDrive(unsigned char pushkey, int x, int y);
 +
キーpushkeyによる処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pushkey</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>q</td>
 +
<td>終了</td>
 +
</tr>
 +
<tr>
 +
<td>n</td>
 +
<td>Normal mode</td>
 +
</tr>
 +
<tr>
 +
<td>c</td>
 +
<td>check!</td>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>NoneAtom mode</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>Atom mode</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>Number mode</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>AminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>Temperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>5</td>
 +
<td>CStickNumber mode</td>
 +
</tr>
 +
<tr>
 +
<td>6</td>
 +
<td>CStickAminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>7</td>
 +
<td>CStickTemperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>v</td>
 +
<td>voice!</td>
 +
</tr>
 +
<tr>
 +
<td>r</td>
 +
<td>camera reset</td>
 +
</tr>
 +
<tr>
 +
<td>w</td>
 +
<td>中心に近づく</td>
 +
</tr>
 +
<tr>
 +
<td>e</td>
 +
<td>中心から離れる</td>
 +
</tr>
 +
<tr>
 +
<td>s</td>
 +
<td>speed change</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
==== MultiProtein mode時 ====
 
  extern void lmolvieKeyboardParallel(unsigned char pushkey, int x, int y);
 
  extern void lmolvieKeyboardParallel(unsigned char pushkey, int x, int y);
extern void lmolvieKeyboardSurface(unsigned char pushkey, int x, int y);
+
キーpushkeyによる処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pushkey</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>q</td>
 +
<td>終了</td>
 +
</tr>
 +
<tr>
 +
<td>n</td>
 +
<td>Normal mode</td>
 +
</tr>
 +
<tr>
 +
<td>d</td>
 +
<td>Drive mode</td>
 +
</tr>
  
extern void lmolvieInitParallel(void);
+
<tr>
extern void lmolvieDisplayParallel(void);
+
<td>i</td>
  extern void lmolvieReshapeParallel(int width, int height);
+
<td>[[PDB]]データの読み込み(loadPDB1)</td>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>NoneAtom mode</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>Atom mode</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>Number mode</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>AminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>Temperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>5</td>
 +
<td>CStickNumber mode</td>
 +
</tr>
 +
<tr>
 +
<td>6</td>
 +
<td>CStickAminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>7</td>
 +
<td>CStickTemperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>v</td>
 +
<td>voice!</td>
 +
</tr>
 +
<tr>
 +
<td>r</td>
 +
<td>camera reset</td>
 +
</tr>
 +
<tr>
 +
<td>w</td>
 +
<td>中心に近づく</td>
 +
</tr>
 +
<tr>
 +
<td>e</td>
 +
<td>中心から離れる</td>
 +
</tr>
 +
<tr>
 +
<td>F</td>
 +
<td>CentreTagの切り替え(ON, OFF)</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 
 +
==== Surface mode時 ====
 +
  extern void lmolvieKeyboardSurface(unsigned char pushkey, int x, int y);
 +
キーpushkeyによる処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pushkey</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>q</td>
 +
<td>終了</td>
 +
</tr>
 +
<tr>
 +
<td>n</td>
 +
<td>Normal mode</td>
 +
</tr>
 +
<tr>
 +
<td>d</td>
 +
<td>Drive mode</td>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>NoneAtom mode</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>Atom mode</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>Number mode</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>AminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>Temperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>5</td>
 +
<td>CStickNumber mode</td>
 +
</tr>
 +
<tr>
 +
<td>6</td>
 +
<td>CStickAminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>7</td>
 +
<td>CStickTemperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>v</td>
 +
<td>voice!</td>
 +
</tr>
 +
<tr>
 +
<td>r</td>
 +
<td>camera reset</td>
 +
</tr>
 +
<tr>
 +
<td>w</td>
 +
<td>中心に近づく</td>
 +
</tr>
 +
<tr>
 +
<td>e</td>
 +
<td>中心から離れる</td>
 +
</tr>
 +
<tr>
 +
<td>y</td>
 +
<td>Density +0.1</td>
 +
</tr>
 +
<tr>
 +
<td>h</td>
 +
<td>Density -0.1</td>
 +
</tr>
 +
<tr>
 +
<td>u</td>
 +
<td>Density +1.0</td>
 +
</tr>
 +
<tr>
 +
<td>j</td>
 +
<td>Density -1.0</td>
 +
</tr>
 +
<tr>
 +
<td>i</td>
 +
<td>Density +10.0</td>
 +
</tr>
 +
<tr>
 +
<td>k</td>
 +
<td>Density -10.0</td>
 +
</tr>
 +
<tr>
 +
<td>F</td>
 +
<td>CentreTagの切り替え(ON, OFF)</td>
 +
</tr>
 +
</table>
 +
<br>
  
 
=== 操作モードの設定・取得 ===
 
=== 操作モードの設定・取得 ===
行139: 行776:
 
現在の[[#操作モード]]をoperationModeに設定します。
 
現在の[[#操作モード]]をoperationModeに設定します。
 
  extern void operationModeSet(operationMode);
 
  extern void operationModeSet(operationMode);
 +
<br>
  
 +
=== 光源 ===
 +
光源の設定
 
  extern void lmolvieLightSet(void);
 
  extern void lmolvieLightSet(void);
 +
 +
光源の位置を取得(index=0, 1)
 
  extern GLfloat* get_LightPos(int index);
 
  extern GLfloat* get_LightPos(int index);
 +
<br>
  
extern void monoSound(float amplitude, float Hz);
+
=== サウンド ===
 +
Voice(未実装)
 
  extern void lmolvieVoice(void);
 
  extern void lmolvieVoice(void);
  
 +
サウンド(未実装)
 +
extern void monoSound(float amplitude, float Hz);
 +
<br>
 +
 +
=== 境界線 ===
 +
境界線を描画します。(未実装)
 
  extern void drawContour(contourLinesSet* contour);
 
  extern void drawContour(contourLinesSet* contour);
 +
<br>
  
 +
=== スケールバー ===
 +
スケールバーを切り替えます。(無し, 1nm, 5nm, 10nm)
 
  extern void scaleBarSwitch();
 
  extern void scaleBarSwitch();
 +
<br>
  
 
===molvieViewer===
 
===molvieViewer===
 +
==== 画面表示 ====
 +
extern void lmolvieViewerDisplay(void);
 +
<br>
 +
 +
==== アイドル処理 ====
 +
処理なし
 
  extern void lmolvieViewerIdle(void);
 
  extern void lmolvieViewerIdle(void);
extern void lmolvieViewerKeyboard(unsigned char pushkey, int x, int y);
+
<br>
extern void lmolvieViewerSpecial(int pushkey, int x, int y);
+
 
 +
==== マウスイベント ====
 +
===== クリック =====
 +
処理なし
 
  extern void lmolvieViewerMouse(int button, int state, int x, int y);
 
  extern void lmolvieViewerMouse(int button, int state, int x, int y);
 +
<br>
 +
 +
===== ドラッグ =====
 
  extern void lmolvieViewerMouseMotion(int x, int y);
 
  extern void lmolvieViewerMouseMotion(int x, int y);
 +
ドラッグ時のボタンpressedButtonに依った処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pressedButton</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>GLUT_LEFT_BUTTON</td>
 +
<td>[[#中心回転]]</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_MIDDLE_BUTTON</td>
 +
<td>処理なし</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_RIGHT_BUTTON</td>
 +
<td>[[#視点回転]]</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
===== マウス移動 =====
 +
処理なし
 
  extern void lmolvieViewerMousePassiveMotion(int x, int y);
 
  extern void lmolvieViewerMousePassiveMotion(int x, int y);
  extern void lmolvieViewerDisplay(void);
+
<br>
 +
 
 +
===== キーボードイベント =====
 +
  extern void lmolvieViewerKeyboard(unsigned char pushkey, int x, int y);
 +
キーpushkeyによる処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pushkey</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>q</td>
 +
<td>終了</td>
 +
</tr>
 +
<tr>
 +
<td>c</td>
 +
<td>C switchの切り替え(ON, mainChain, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>o</td>
 +
<td>O switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>n</td>
 +
<td>N switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>s</td>
 +
<td>S switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>p</td>
 +
<td>P switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>h</td>
 +
<td>H switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>f</td>
 +
<td>Fe switchの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>NoneAtom mode</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>Atom mode</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>Number mode</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>AminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>Temperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>5</td>
 +
<td>CStickNumber mode</td>
 +
</tr>
 +
<tr>
 +
<td>6</td>
 +
<td>CStickAminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>7</td>
 +
<td>CStickTemperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>8</td>
 +
<td>DistanceFromTarget mode</td>
 +
</tr>
 +
<tr>
 +
<td>9</td>
 +
<td>WireFrame mode</td>
 +
</tr>
 +
<tr>
 +
<td>!</td>
 +
<td>Chain mode</td>
 +
</tr>
 +
<tr>
 +
<td>v</td>
 +
<td>voice!</td>
 +
</tr>
 +
<tr>
 +
<td>r</td>
 +
<td>camera reset</td>
 +
</tr>
 +
<tr>
 +
<td>w</td>
 +
<td>中心に近づく</td>
 +
</tr>
 +
<tr>
 +
<td>e</td>
 +
<td>中心から離れる</td>
 +
</tr>
 +
<tr>
 +
<td>F</td>
 +
<td>CentreTagの切り替え(ON, OFF)</td>
 +
</tr>
 +
<tr>
 +
<td>b</td>
 +
<td>状態保存(未実装)</td>
 +
</tr>
 +
<tr>
 +
<td>g</td>
 +
<td>状態読込(未実装)</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 
 +
===== 特殊キーイベント =====
 +
extern void lmolvieViewerSpecial(int pushkey, int x, int y);
 +
<br>
  
 
===molvieMrcViewer===
 
===molvieMrcViewer===
  extern void lmolvieMrcViewerKeyboard(unsigned char pushkey, int x, int y);
+
==== 画面表示 ====
 +
  extern void lmolvieMrcViewerDisplay(void);
 +
<br>
 +
 
 +
==== マウスイベント ====
 +
===== クリック =====
 +
処理なし
 
  extern void lmolvieMrcViewerMouse(int button, int state, int x, int y);
 
  extern void lmolvieMrcViewerMouse(int button, int state, int x, int y);
 +
<br>
 +
 +
===== ドラッグ =====
 
  extern void lmolvieMrcViewerMouseMotion(int x, int y);
 
  extern void lmolvieMrcViewerMouseMotion(int x, int y);
 +
ドラッグ時のボタンpressedButtonに依った処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pressedButton</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>GLUT_LEFT_BUTTON</td>
 +
<td>[[#中心回転]]</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_MIDDLE_BUTTON</td>
 +
<td>処理なし</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_RIGHT_BUTTON</td>
 +
<td>[[#視点回転]]</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
===== マウス移動 =====
 +
処理なし
 
  extern void lmolvieMrcViewerMousePassiveMotion(int x, int y);
 
  extern void lmolvieMrcViewerMousePassiveMotion(int x, int y);
  extern void lmolvieMrcViewerDisplay(void);
+
<br>
 +
 
 +
==== キーボードイベント ====
 +
  extern void lmolvieMrcViewerKeyboard(unsigned char pushkey, int x, int y);
 +
キーpushkeyによる処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pushkey</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>q</td>
 +
<td>終了</td>
 +
</tr>
 +
<tr>
 +
<td>v</td>
 +
<td>voice!</td>
 +
</tr>
 +
<tr>
 +
<td>r</td>
 +
<td>camera reset</td>
 +
</tr>
 +
<tr>
 +
<td>w</td>
 +
<td>中心に近づく</td>
 +
</tr>
 +
<tr>
 +
<td>e</td>
 +
<td>中心から離れる</td>
 +
</tr>
 +
<tr>
 +
<td>y</td>
 +
<td>Density +0.1</td>
 +
</tr>
 +
<tr>
 +
<td>h</td>
 +
<td>Density -0.1</td>
 +
</tr>
 +
<tr>
 +
<td>u</td>
 +
<td>Density +1.0</td>
 +
</tr>
 +
<tr>
 +
<td>j</td>
 +
<td>Density -1.0</td>
 +
</tr>
 +
<tr>
 +
<td>i</td>
 +
<td>Density +10.0</td>
 +
</tr>
 +
<tr>
 +
<td>k</td>
 +
<td>Density -10.0</td>
 +
</tr>
 +
<tr>
 +
<td>F</td>
 +
<td>CentreTagの切り替え(ON, OFF)</td>
 +
</tr>
 +
</table>
 +
<br>
  
 
===molvieProjection===
 
===molvieProjection===
extern void lmolvieProjectionKeyboard(unsigned char pushkey, int x, int y);
+
==== マウスイベント ====
 +
===== クリック =====
 +
処理なし
 
  extern void lmolvieProjectionMouse(int button, int state, int x, int y);
 
  extern void lmolvieProjectionMouse(int button, int state, int x, int y);
 +
<br>
 +
 +
===== ドラッグ =====
 
  extern void lmolvieProjectionMouseMotion(int x, int y);
 
  extern void lmolvieProjectionMouseMotion(int x, int y);
 +
ドラッグ時のボタンpressedButtonに依った処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pressedButton</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>GLUT_LEFT_BUTTON</td>
 +
<td>物体回転(proteinRotateX, proteinRotateY)</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_MIDDLE_BUTTON</td>
 +
<td>[[#中心移動]]</td>
 +
</tr>
 +
<tr>
 +
<td>GLUT_RIGHT_BUTTON</td>
 +
<td>[[#中心回転]]</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
===== マウス移動 =====
 +
処理なし
 
  extern void lmolvieProjectionMousePassiveMotion(int x, int y);
 
  extern void lmolvieProjectionMousePassiveMotion(int x, int y);
 +
<br>
 +
 +
==== キーボードイベント ====
 +
extern void lmolvieProjectionKeyboard(unsigned char pushkey, int x, int y);
 +
キーpushkeyによる処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pushkey</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>q</td>
 +
<td>終了</td>
 +
</tr>
 +
<tr>
 +
<td>s</td>
 +
<td>save PPM</td>
 +
</tr>
 +
<tr>
 +
<td>l</td>
 +
<td></td>
 +
</tr>
 +
<tr>
 +
<td>r</td>
 +
<td>camera reset</td>
 +
</tr>
 +
<tr>
 +
<td>w</td>
 +
<td>中心に近づく</td>
 +
</tr>
 +
<tr>
 +
<td>e</td>
 +
<td>中心から離れる</td>
 +
</tr>
 +
<tr>
 +
<td>u</td>
 +
<td>テクスチャのスケール+0.01</td>
 +
</tr>
 +
<tr>
 +
<td>d</td>
 +
<td>テクスチャのスケール-0.01</td>
 +
</tr>
 +
<tr>
 +
<td>g</td>
 +
<td>テクスチャのx座標+0.5</td>
 +
</tr>
 +
<tr>
 +
<td>j</td>
 +
<td>テクスチャのx座標-0.5</td>
 +
</tr>
 +
<tr>
 +
<td>y</td>
 +
<td>テクスチャのy座標+0.5</td>
 +
</tr>
 +
<tr>
 +
<td>h</td>
 +
<td>テクスチャのy座標-0.5</td>
 +
</tr>
 +
<tr>
 +
<td>b</td>
 +
<td>テクスチャのz座標+0.5</td>
 +
</tr>
 +
<tr>
 +
<td>n</td>
 +
<td>テクスチャのz座標-0.5</td>
 +
</tr>
 +
<tr>
 +
<td>i</td>
 +
<td>スケール+0.01</td>
 +
</tr>
 +
<tr>
 +
<td>k</td>
 +
<td>スケール-0.01</td>
 +
</tr>
 +
<tr>
 +
<td>S</td>
 +
<td>スケールバーの切り替え(無し, 1nm, 5nm, 10nm)</td>
 +
</tr>
 +
<tr>
 +
<td>p</td>
 +
<td>Parallel mode</td>
 +
</tr>
 +
<tr>
 +
<td>R</td>
 +
<td>回転座標(x, y, z)の出力</td>
 +
</tr>
 +
<tr>
 +
<td>X</td>
 +
<td>回転座標xを標準入力で取得</td>
 +
</tr>
 +
<tr>
 +
<td>Y</td>
 +
<td>回転座標yを標準入力で取得</td>
 +
</tr>
 +
<tr>
 +
<td>Z</td>
 +
<td>回転座標zを標準入力で取得</td>
 +
</tr>
 +
</table>
 +
<br>
  
 
===molvieDock===
 
===molvieDock===
extern void lmolvieDockKeyboard(unsigned char pushkey, int x, int y);
+
==== 画面表示 ====
extern void displayMultiPDB1();
+
 
  extern void lmolvieDockDisplay(void);
 
  extern void lmolvieDockDisplay(void);
 +
 +
[[PDB]]ファイルの描画
 +
extern void displayMultiPDB1();
 +
<br>
 +
 +
==== キーボードイベント ====
 +
extern void lmolvieDockKeyboard(unsigned char pushkey, int x, int y);
 +
キーpushkeyによる処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pushkey</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>q</td>
 +
<td>終了</td>
 +
</tr>
 +
<tr>
 +
<td>i</td>
 +
<td>[[PDB]]データの読み込み(loadPDB1)</td>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>NoneAtom mode</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>Atom mode</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>Number mode</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>AminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>Temperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>5</td>
 +
<td>CStickNumber mode</td>
 +
</tr>
 +
<tr>
 +
<td>6</td>
 +
<td>CStickAminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>7</td>
 +
<td>CStickTemperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>c</td>
 +
<td>Protein Change</td>
 +
</tr>
 +
<tr>
 +
<td>r</td>
 +
<td>camera reset</td>
 +
</tr>
 +
<tr>
 +
<td>w</td>
 +
<td>中心に近づく</td>
 +
</tr>
 +
<tr>
 +
<td>e</td>
 +
<td>中心から離れる</td>
 +
</tr>
 +
<tr>
 +
<td>F</td>
 +
<td>CentreTagの切り替え(ON, OFF)</td>
 +
</tr>
 +
</table>
 +
<br>
  
 
===molvieFlight===
 
===molvieFlight===
extern void lmolvieFlightKeyboard(unsigned char pushkey, int x, int y);
+
==== 画面表示 ====
 
  extern void lmolvieFlightDisplay(void);
 
  extern void lmolvieFlightDisplay(void);
 +
<br>
 +
 +
==== アイドル処理 ====
 
  extern void lmolvieFlightIdle(void);
 
  extern void lmolvieFlightIdle(void);
 +
<br>
 +
 +
==== キーボードイベント ====
 +
extern void lmolvieFlightKeyboard(unsigned char pushkey, int x, int y);
 +
キーpushkeyによる処理を行います。
 +
<table border=1>
 +
<tr>
 +
<th>pushkey</th>
 +
<th>処理</th>
 +
</tr>
 +
<tr>
 +
<td>q</td>
 +
<td>終了</td>
 +
</tr>
 +
<tr>
 +
<td>c</td>
 +
<td>check!</td>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>NoneAtom mode</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>Atom mode</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>Number mode</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>AminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>Temperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>5</td>
 +
<td>CStickNumber mode</td>
 +
</tr>
 +
<tr>
 +
<td>6</td>
 +
<td>CStickAminoAcid mode</td>
 +
</tr>
 +
<tr>
 +
<td>7</td>
 +
<td>CStickTemperature mode</td>
 +
</tr>
 +
<tr>
 +
<td>v</td>
 +
<td>voice!</td>
 +
</tr>
 +
<tr>
 +
<td>r</td>
 +
<td>camera reset</td>
 +
</tr>
 +
<tr>
 +
<td>w</td>
 +
<td>中心に近づく</td>
 +
</tr>
 +
<tr>
 +
<td>e</td>
 +
<td>中心から離れる</td>
 +
</tr>
 +
<tr>
 +
<td>s</td>
 +
<td>speed change</td>
 +
</tr>
 +
</table>
 +
<br>
  
 
===molvieTest===
 
===molvieTest===
 
  extern void lmolvieTest(void);
 
  extern void lmolvieTest(void);
extern GLboolean myDisplayListMakeAtom(void);
+
<br>
  
 
=== カメラ ===
 
=== カメラ ===
行192: 行1,368:
 
  extern void myCameraRotateY(GLdouble angle);         
 
  extern void myCameraRotateY(GLdouble angle);         
 
  extern void myCameraRotateZ(GLdouble angle);
 
  extern void myCameraRotateZ(GLdouble angle);
 +
<br>
  
 
==== 視点回転 ====
 
==== 視点回転 ====
行197: 行1,374:
 
  extern void myCameraEyeRotateX(GLdouble angle);
 
  extern void myCameraEyeRotateX(GLdouble angle);
 
  extern void myCameraEyeRotateY(GLdouble angle);
 
  extern void myCameraEyeRotateY(GLdouble angle);
 +
<br>
  
 
==== 中心移動 ====
 
==== 中心移動 ====
行203: 行1,381:
 
  extern void myCameraTranslateY(GLdouble pan);         
 
  extern void myCameraTranslateY(GLdouble pan);         
 
  extern void myCameraTranslateZ(GLdouble pan);  
 
  extern void myCameraTranslateZ(GLdouble pan);  
 +
<br>
  
 
==== 視点移動 ====
 
==== 視点移動 ====
行233: 行1,412:
 
視点・中心座標を[[PDB]]ファイルの中心(__pdbCenter)に合わせます。(各座標間が元の1/100となる)
 
視点・中心座標を[[PDB]]ファイルの中心(__pdbCenter)に合わせます。(各座標間が元の1/100となる)
 
  extern void resetDriveMyCamera();
 
  extern void resetDriveMyCamera();
 +
<br>
  
 +
==== カメラ情報取得 ====
 
cameraInfo型のカメラ情報をポインタとして返します。
 
cameraInfo型のカメラ情報をポインタとして返します。
 
  extern cameraInfo* getMyCamera(void);
 
  extern cameraInfo* getMyCamera(void);
 +
<br>
  
 +
==== Up再計算 ====
 
Upの長さが1になるように再計算します。
 
Upの長さが1になるように再計算します。
 
  extern void upCalc();
 
  extern void upCalc();
 +
<br>
  
 +
==== CentreTagの切り替え(ON, OFF) ====
 
  extern void setCameraCentreTag(int tag);
 
  extern void setCameraCentreTag(int tag);
 +
<br>
 +
 +
=== [[PDB]]関連 ===
 +
ファイルfptInから[[PDB]]を読み込んで、pdbInへ格納します。
 +
extern void lmolviePDBread(FILE* fptIn);
 +
 +
pdbInを返します。
 +
extern pdbFile* get_pdb(void);
 +
 +
get_pdbで取得した[[PDB]]を描画します。
 +
extern GLboolean myDisplayListMakeAtom(void);
 +
<br>

2015年3月20日 (金) 06:46時点における最新版

DataExpress/eosOpenGL/src/lmolvieopenGLを使用したビューアmolvieのためのAPIです。

目次

定数

画面表示モード

typedef enum displayMode{
	none=0,
	atom=1,
	stick=2,
	serial=3,
	residue=4,
	temp=5,
	sticktemp=6,
	stickresidue=7
}displayMode;

操作モード

typedef enum operationMode {
	normal=0,
	drive=1,
	parallel=2,
	surface=3,
	multi=4,
	coaster=5
} operationMode;

構造体

入力・出力・コンフィグ

typedef struct molvieInfo {
    long flagRedirect;

    long flagIn;
    char* In;
    FILE* fptIn;
    
    long flagOut;
    char* Out;
    FILE* fptOut;
    
    long flagconfigFile;
    char* configFile;
    FILE* fptconfigFile;
    
    long flagmode;
    long mode;
    
} molvieInfo;

カメラ設定

typedef struct cameraInfo {
	GLdouble Fovy;
	GLdouble Aspect;
	GLdouble ClipNear;
	GLdouble ClipFar;
	GLdouble Eye[3];
	GLdouble Centre[3];
	GLdouble Up[3];
} cameraInfo;

座標情報

typedef struct Coord {
	GLfloat x;
	GLfloat y;
	GLfloat z;
} Coord; 

API

初期設定

Normal mode

extern void lmolvieInitNormal(void);

Parallel mode

extern void lmolvieInitParallel(void);


画面表示

Normal mode

extern void lmolvieDisplayNormal(void);

Parallel mode

extern void lmolvieDisplayParallel(void);

画面表示のテスト

extern void lmolvieDisplayTest(void);


再表示

Normal mode

extern void lmolvieReshapeNormal(int width, int height);

Parallel mode

extern void lmolvieReshapeParallel(int width, int height);


アイドル処理

テストメッセージの表示

extern void lmolvieIdleTest(void);

Normal mode

extern void lmolvieIdleNormal(void);

スタティック変数__accelerator(初期値: 0)に依って#視点移動を行います。

__accelerator 処理
1 中心に近づく
2 中心から離れる
それ以外 停止(何もしない)


マウスイベント

クリック

MOUSE_FUNCTIONが定義されているときのみ有効です。

メイン

クリック操作の処理です。(button:対応ボタン、state:状態、x, y:座標)

extern void lmolvieMouse(int button, int state, int x, int y);

#操作モードに依った処理を行います。

操作モード 処理
0 lmolvieMouseNormal
1 lmolvieMouseDrive
2 lmolvieMouseParallel
3 lmolvieMouseNormal


Drive mode時
extern void lmolvieMouseDrive(int button, int state, int x, int y);

buttonとstateにより#視点移動を行います。

state button 処理
GLUT_DOWN GLUT_LEFT_BUTTON 中心に近づく(__accelerator=1)
GLUT_DOWN GLUT_RIGHT_BUTTON 中心から離れる(__accelerator=2)
GLUT_DOWN GLUT_LEFT_BUTTON 停止(__accelerator=0)
GLUT_DOWN GLUT_RIGHT_BUTTON 停止(__accelerator=0)


Parallel mode時

処理なし

extern void lmolvieMouseParallel(int button, int state, int x, int y);


MultiProtein mode時

処理なし

extern void lmolvieMouseMulti(int button, int state, int x, int y);


ドラッグ

MOTION_FUNCTIONが定義されているときのみ有効です。

メイン

マウスのドラッグ操作による処理です。(x, y:座標)

extern void lmolvieMouseMotion(int x, int y);

#操作モードに依った処理を行います。

操作モード 処理
0 lmolvieMouseMotionNormal
1 lmolvieMouseMotionDrive
2 lmolvieMouseMotionParallel
3 lmolvieMouseMotionNormal


Drive mode時
extern void lmolvieMouseMotionDrive(int x, int y);

ドラッグ時のボタンpressedButtonに依った処理を行います。

pressedButton 処理
GLUT_LEFT_BUTTON #視点回転
GLUT_MIDDLE_BUTTON #視点回転
GLUT_RIGHT_BUTTON #中心回転


Parallel mode時
extern void lmolvieMouseMotionParallel(int x, int y);

ドラッグ時のボタンpressedButtonに依った処理を行います。

pressedButton 処理
GLUT_LEFT_BUTTON 物体回転(proteinRotateX, proteinRotateY)
GLUT_MIDDLE_BUTTON #中心移動
GLUT_RIGHT_BUTTON #中心回転


MultiProtein mode時
extern void lmolvieMouseMotionMulti(int x, int y);

ドラッグ時のボタンpressedButtonに依った処理を行います。

pressedButton 処理
GLUT_LEFT_BUTTON 物体回転(proteinRotateX, proteinRotateY)
GLUT_MIDDLE_BUTTON #中心移動
GLUT_RIGHT_BUTTON #中心回転


マウス移動

PASSIVEMOTION_FUNCTIONが定義されているときのみ有効です。

メイン

ボタンを押していない状態でのマウス移動による処理です。

extern void lmolvieMousePassiveMotion(int x, int y);

#操作モードに依った処理を行います。

操作モード 処理
0 lmolvieMousePassiveMotionNormal
1 lmolvieMousePassiveMotionDrive
2 lmolvieMousePassiveMotionParallel
3 lmolvieMousePassiveMotionNormal


Drive mode時

処理なし

extern void lmolvieMousePassiveMotionDrive(int x, int y);


Parallel mode時

処理なし

extern void lmolvieMousePassiveMotionParallel(int x, int y);


MultiProtein mode時

処理なし

extern void lmolvieMousePassiveMotionMulti(int x, int y);


キーボードイベント

KEYBOARD_FUNCTIONが定義されているときのみ有効です。

メイン

extern void lmolvieKeyboard(unsigned char pushkey, int x, int y);

#操作モードに依った処理を行います。

操作モード 処理
0 lmolvieKeyboardNormal
1 lmolvieKeyboardDrive
2 lmolvieKeyboardParallel
3 lmolvieKeyboardSurface
4 lmolvieKeyboardMulti


Normal mode時

extern void lmolvieKeyboardNormal(unsigned char pushkey, int x, int y);

キーpushkeyによる処理を行います。

pushkey 処理
q 終了
d Drive mode
l Parallel mode
t Surface mode
m MultiProtein mode(未実装)
C Coaster mode(未実装)
c C switchの切り替え(ON, mainChain, OFF)
o O switchの切り替え(ON, OFF)
n N switchの切り替え(ON, OFF)
s S switchの切り替え(ON, OFF)
p P switchの切り替え(ON, OFF)
h H switchの切り替え(ON, OFF)
f Fe switchの切り替え(ON, OFF)
0 NoneAtom mode
1 Atom mode
2 Number mode
3 AminoAcid mode
4 Temperature mode
5 CStickNumber mode
6 CStickAminoAcid mode
7 CStickTemperature mode
8 DistanceFromTarget mode
9 WireFrame mode
! Chain mode
v voice!
r camera reset
w 中心に近づく
e 中心から離れる
F CentreTagの切り替え(ON, OFF)
Z DSN6読み込み(未実装)
b 状態保存(未実装)
g 状態読込(未実装)


Drive mode時

extern void lmolvieKeyboardDrive(unsigned char pushkey, int x, int y);

キーpushkeyによる処理を行います。

pushkey 処理
q 終了
n Normal mode
c check!
0 NoneAtom mode
1 Atom mode
2 Number mode
3 AminoAcid mode
4 Temperature mode
5 CStickNumber mode
6 CStickAminoAcid mode
7 CStickTemperature mode
v voice!
r camera reset
w 中心に近づく
e 中心から離れる
s speed change


MultiProtein mode時

extern void lmolvieKeyboardParallel(unsigned char pushkey, int x, int y);

キーpushkeyによる処理を行います。

pushkey 処理
q 終了
n Normal mode
d Drive mode
i PDBデータの読み込み(loadPDB1)
0 NoneAtom mode
1 Atom mode
2 Number mode
3 AminoAcid mode
4 Temperature mode
5 CStickNumber mode
6 CStickAminoAcid mode
7 CStickTemperature mode
v voice!
r camera reset
w 中心に近づく
e 中心から離れる
F CentreTagの切り替え(ON, OFF)


Surface mode時

extern void lmolvieKeyboardSurface(unsigned char pushkey, int x, int y);

キーpushkeyによる処理を行います。

pushkey 処理
q 終了
n Normal mode
d Drive mode
0 NoneAtom mode
1 Atom mode
2 Number mode
3 AminoAcid mode
4 Temperature mode
5 CStickNumber mode
6 CStickAminoAcid mode
7 CStickTemperature mode
v voice!
r camera reset
w 中心に近づく
e 中心から離れる
y Density +0.1
h Density -0.1
u Density +1.0
j Density -1.0
i Density +10.0
k Density -10.0
F CentreTagの切り替え(ON, OFF)


操作モードの設定・取得

現在の#操作モードを返します。

extern operationMode operationModeGet(void);

現在の#操作モードをoperationModeに設定します。

extern void operationModeSet(operationMode);


光源

光源の設定

extern void lmolvieLightSet(void);

光源の位置を取得(index=0, 1)

extern GLfloat* get_LightPos(int index);


サウンド

Voice(未実装)

extern void lmolvieVoice(void);

サウンド(未実装)

extern void monoSound(float amplitude, float Hz);


境界線

境界線を描画します。(未実装)

extern void drawContour(contourLinesSet* contour);


スケールバー

スケールバーを切り替えます。(無し, 1nm, 5nm, 10nm)

extern void scaleBarSwitch();


molvieViewer

画面表示

extern void lmolvieViewerDisplay(void);


アイドル処理

処理なし

extern void lmolvieViewerIdle(void);


マウスイベント

クリック

処理なし

extern void lmolvieViewerMouse(int button, int state, int x, int y);


ドラッグ
extern void lmolvieViewerMouseMotion(int x, int y);

ドラッグ時のボタンpressedButtonに依った処理を行います。

pressedButton 処理
GLUT_LEFT_BUTTON #中心回転
GLUT_MIDDLE_BUTTON 処理なし
GLUT_RIGHT_BUTTON #視点回転


マウス移動

処理なし

extern void lmolvieViewerMousePassiveMotion(int x, int y);


キーボードイベント
extern void lmolvieViewerKeyboard(unsigned char pushkey, int x, int y);

キーpushkeyによる処理を行います。

pushkey 処理
q 終了
c C switchの切り替え(ON, mainChain, OFF)
o O switchの切り替え(ON, OFF)
n N switchの切り替え(ON, OFF)
s S switchの切り替え(ON, OFF)
p P switchの切り替え(ON, OFF)
h H switchの切り替え(ON, OFF)
f Fe switchの切り替え(ON, OFF)
0 NoneAtom mode
1 Atom mode
2 Number mode
3 AminoAcid mode
4 Temperature mode
5 CStickNumber mode
6 CStickAminoAcid mode
7 CStickTemperature mode
8 DistanceFromTarget mode
9 WireFrame mode
! Chain mode
v voice!
r camera reset
w 中心に近づく
e 中心から離れる
F CentreTagの切り替え(ON, OFF)
b 状態保存(未実装)
g 状態読込(未実装)


特殊キーイベント
extern void lmolvieViewerSpecial(int pushkey, int x, int y);


molvieMrcViewer

画面表示

extern void lmolvieMrcViewerDisplay(void);


マウスイベント

クリック 

処理なし

extern void lmolvieMrcViewerMouse(int button, int state, int x, int y);


ドラッグ
extern void lmolvieMrcViewerMouseMotion(int x, int y);

ドラッグ時のボタンpressedButtonに依った処理を行います。

pressedButton 処理
GLUT_LEFT_BUTTON #中心回転
GLUT_MIDDLE_BUTTON 処理なし
GLUT_RIGHT_BUTTON #視点回転


マウス移動

処理なし

extern void lmolvieMrcViewerMousePassiveMotion(int x, int y);


キーボードイベント

extern void lmolvieMrcViewerKeyboard(unsigned char pushkey, int x, int y);

キーpushkeyによる処理を行います。

pushkey 処理
q 終了
v voice!
r camera reset
w 中心に近づく
e 中心から離れる
y Density +0.1
h Density -0.1
u Density +1.0
j Density -1.0
i Density +10.0
k Density -10.0
F CentreTagの切り替え(ON, OFF)


molvieProjection

マウスイベント

クリック 

処理なし

extern void lmolvieProjectionMouse(int button, int state, int x, int y);


ドラッグ
extern void lmolvieProjectionMouseMotion(int x, int y);

ドラッグ時のボタンpressedButtonに依った処理を行います。

pressedButton 処理
GLUT_LEFT_BUTTON 物体回転(proteinRotateX, proteinRotateY)
GLUT_MIDDLE_BUTTON #中心移動
GLUT_RIGHT_BUTTON #中心回転


マウス移動

処理なし

extern void lmolvieProjectionMousePassiveMotion(int x, int y);


キーボードイベント

extern void lmolvieProjectionKeyboard(unsigned char pushkey, int x, int y);

キーpushkeyによる処理を行います。

pushkey 処理
q 終了
s save PPM
l
r camera reset
w 中心に近づく
e 中心から離れる
u テクスチャのスケール+0.01
d テクスチャのスケール-0.01
g テクスチャのx座標+0.5
j テクスチャのx座標-0.5
y テクスチャのy座標+0.5
h テクスチャのy座標-0.5
b テクスチャのz座標+0.5
n テクスチャのz座標-0.5
i スケール+0.01
k スケール-0.01
S スケールバーの切り替え(無し, 1nm, 5nm, 10nm)
p Parallel mode
R 回転座標(x, y, z)の出力
X 回転座標xを標準入力で取得
Y 回転座標yを標準入力で取得
Z 回転座標zを標準入力で取得


molvieDock

画面表示

extern void lmolvieDockDisplay(void);

PDBファイルの描画

extern void displayMultiPDB1();


キーボードイベント

extern void lmolvieDockKeyboard(unsigned char pushkey, int x, int y);

キーpushkeyによる処理を行います。

pushkey 処理
q 終了
i PDBデータの読み込み(loadPDB1)
0 NoneAtom mode
1 Atom mode
2 Number mode
3 AminoAcid mode
4 Temperature mode
5 CStickNumber mode
6 CStickAminoAcid mode
7 CStickTemperature mode
c Protein Change
r camera reset
w 中心に近づく
e 中心から離れる
F CentreTagの切り替え(ON, OFF)


molvieFlight

画面表示

extern void lmolvieFlightDisplay(void);


アイドル処理

extern void lmolvieFlightIdle(void);


キーボードイベント

extern void lmolvieFlightKeyboard(unsigned char pushkey, int x, int y);

キーpushkeyによる処理を行います。

pushkey 処理
q 終了
c check!
0 NoneAtom mode
1 Atom mode
2 Number mode
3 AminoAcid mode
4 Temperature mode
5 CStickNumber mode
6 CStickAminoAcid mode
7 CStickTemperature mode
v voice!
r camera reset
w 中心に近づく
e 中心から離れる
s speed change


molvieTest

extern void lmolvieTest(void);


カメラ

中心回転

中心座標をangle[radian]だけ回転します。

extern void myCameraRotateX(GLdouble angle);        
extern void myCameraRotateY(GLdouble angle);        
extern void myCameraRotateZ(GLdouble angle);


視点回転

視点座標をangle[radian]だけ回転します。

extern void myCameraEyeRotateX(GLdouble angle);
extern void myCameraEyeRotateY(GLdouble angle);


中心移動

中心座標をpanだけマイナスして移動します。

extern void myCameraTranslateX(GLdouble pan);        
extern void myCameraTranslateY(GLdouble pan);        
extern void myCameraTranslateZ(GLdouble pan); 


視点移動

視点座標を移動します。

extern void moveMyCamera(double movedistance);

movedistanceにより移動方向を選択できます。(移動距離は中心と視点間の1/50)

movedistance 移動方向
1.0 中心に近づく
それ以外 中心から離れる


座標設定

視点・中心座標をPDBファイルの中心(__pdbCenter)に合わせます。

extern void resetMyCamera();

現在の視点座標を中心座標に設定します。(各座標間が元の1/100となる)

extern void setDriveMyCamera();

視点・中心座標をPDBファイルの中心(__pdbCenter)に合わせます。(各座標間が元の1/100となる)

extern void resetDriveMyCamera();


カメラ情報取得

cameraInfo型のカメラ情報をポインタとして返します。

extern cameraInfo* getMyCamera(void);


Up再計算

Upの長さが1になるように再計算します。

extern void upCalc();


CentreTagの切り替え(ON, OFF)

extern void setCameraCentreTag(int tag);


PDB関連

ファイルfptInからPDBを読み込んで、pdbInへ格納します。

extern void lmolviePDBread(FILE* fptIn);

pdbInを返します。

extern pdbFile* get_pdb(void);

get_pdbで取得したPDBを描画します。

extern GLboolean myDisplayListMakeAtom(void);