* ソースからメソッドを調べる(のぶメモ) [#jf1cec7d]
** movieモジュール [#u9c9904d]
*** movie.rock(first=1,last=-1,angle=30,phase=0,loop=1,axis='y') [#o3403700]
- ''util.mrock''の実体(将来的にはutil.mrockが廃止されそう)
- 振動動画を作成する
-- first : 最初のフレームNo
-- last : 最後のフレームNo
-- angle : 振動角(+/-)
-- phase : スタートする周期(angle * sin(π * phase / 180))
-- loop : 振動のずれが発生しない(エンドレス動画用;0または非0)
-- axis : 中心軸
- 使用例~
PyMOL> movie.rock(1,30,50,0,1,'x')
X軸を振動の中心軸として+/-50°振動させる。loopを0にすると、振動しながら少しずつ回転する。
- 検証~
周期を90°とすれば、ずれないはずなのだが浮動小数点の誤差で少しずつずれる。~
> ''pymol-1.1/modules/pymol/movie.py''~
>
:pymol-1.1/modules/pymol/movie.py|
nstep = (last-first)+1
if nstep<0:
nstep = 1
if loop:
subdiv = nstep
else:
subdiv = nstep+1
ang_cur = math.pi*phase/180
ang_inc = 2*math.pi/subdiv
ang_cur = ang_cur - ang_inc
a = 0
while a<nstep:
last = angle*math.sin(ang_cur)/2
ang_cur = ang_cur + ang_inc
disp = angle*math.sin(ang_cur)/2
diff = disp-last
# com = "mdo %d:turn %s,%8.3f" % (first+a,axis,diff)
# _self.do(com)
_self.mdo("%d"%(first+a),"turn %s,%8.3f"% (axis,diff))
a = a + 1
*** movie.roll(first=1,last=-1,loop=1,axis='y') [#k368724f]
- util.mrollの実体(将来的にはutil.mrollが廃止されそう)
- 回転動画を作成する
-- first : 最初のフレームNo
-- last : 最後のフレームNo
-- loop : おそらくずれの調整(0または非0)
-- axis : 中心軸
- 使用例~
PyMOL> movie.roll(1,30,1,'y')
Y軸を中心として回転させる。
*** movie.zoom(first,last,step=1,loop=1,axis='z') [#mcaefb45]
- 軸に沿ってズームする
-- first : 最初のフレームNo
-- last : 最後のフレームNo
-- loop : 非0なら往復する。0ならずーっと進む
-- axis : 沿っていく軸
- 使用例~
PyMOL> movie.zoom(1,30,1,1)
Z軸に沿って進んで行く。