示例#1
0
def _nutate_sub(start_frame,
                stop_frame,
                angle=15.0,
                spiral=0,
                loop=1,
                offset=0,
                phase=0,
                shift=math.pi / 2.0,
                _self=cmd):
    cmd = _self
    angle = float(angle)
    spiral = int(spiral)
    loop = int(loop)
    fps = float(cmd.get('movie_fps'))
    duration = (stop_frame - start_frame) / fps
    n_frame = int(round(fps * duration))
    if n_frame > 0:
        for index in range(0, n_frame):
            if spiral > 0:
                sp_angle = angle * float(index + 1) / n_frame
            elif spiral < 0:
                sp_angle = angle * (1.0 - float(index + 1) / n_frame)
            else:
                sp_angle = angle
            ang_cur = math.pi * phase / 180.0 + (2 * math.pi * index) / n_frame
            x_rot = sp_angle * math.sin(ang_cur) / 2
            y_rot = sp_angle * math.sin(ang_cur + shift) / 2
            cmd.turn('x', x_rot)
            cmd.turn('y', y_rot)
            cmd.mview('store', start_frame + index, freeze=1)
            cmd.turn('y', -y_rot)
            cmd.turn('x', -x_rot)
示例#2
0
def add_nutate(duration=8.0,
               angle=30.0,
               spiral=0,
               loop=1,
               offset=0,
               phase=0,
               shift=math.pi / 2.0,
               start=0,
               _self=cmd):
    cmd = _self
    if not start:
        start = cmd.get_movie_length() + 1
    duration = float(duration)
    angle = float(angle)
    spiral = int(spiral)
    loop = int(loop)
    fps = float(cmd.get('movie_fps'))
    n_frame = int(round(fps * duration))
    if n_frame > 0:
        cmd.mset("1 x%d" % n_frame, start, freeze=1)
        for index in range(0, n_frame):
            if spiral > 0:
                sp_angle = angle * float(index + 1) / n_frame
            elif spiral < 0:
                sp_angle = angle * (1.0 - float(index + 1) / n_frame)
            else:
                sp_angle = angle
            ang_cur = math.pi * phase / 180.0 + (2 * math.pi * index) / n_frame
            x_rot = sp_angle * math.sin(ang_cur) / 2
            y_rot = sp_angle * math.sin(ang_cur + shift) / 2
            cmd.turn('x', x_rot)
            cmd.turn('y', y_rot)
            cmd.mview('store', start + index, freeze=1)
            cmd.turn('y', -y_rot)
            cmd.turn('x', -x_rot)
示例#3
0
文件: movie.py 项目: aghozlane/pymol
def _nutate_sub(start_frame, stop_frame, angle=15.0, spiral=0, loop=1, 
                offset=0, phase=0, shift=math.pi/2.0, _self=cmd):
    cmd = _self
    angle = float(angle)
    spiral = int(spiral)
    loop = int(loop)
    fps = float(cmd.get('movie_fps'))
    duration = (stop_frame - start_frame)/fps
    n_frame = int(round(fps * duration))
    if n_frame > 0:
        for index in range(0,n_frame):
            if spiral>0:
                sp_angle = angle*float(index+1)/n_frame
            elif spiral<0:
                sp_angle = angle*(1.0 - float(index+1)/n_frame)
            else:
                sp_angle = angle
            ang_cur = math.pi*phase/180.0 + (2*math.pi*index)/n_frame
            x_rot = sp_angle * math.sin(ang_cur)/2
            y_rot = sp_angle * math.sin(ang_cur+shift)/2      
            cmd.turn('x',x_rot)
            cmd.turn('y',y_rot)
            cmd.mview('store',start_frame+index,freeze=1)
            cmd.turn('y',-y_rot)
            cmd.turn('x',-x_rot)
示例#4
0
文件: movie.py 项目: aghozlane/pymol
def add_nutate(duration=8.0, angle=30.0, spiral=0, loop=1, 
               offset=0, phase=0, shift=math.pi/2.0, start=0,
               _self=cmd):
    cmd = _self
    if not start:
        start = cmd.get_movie_length()+1
    duration = float(duration)
    angle = float(angle)
    spiral = int(spiral)
    loop = int(loop)
    fps = float(cmd.get('movie_fps'))
    n_frame = int(round(fps * duration))
    if n_frame > 0:
        cmd.mset("1 x%d"%n_frame,start,freeze=1)
        for index in range(0,n_frame):
            if spiral>0:
                sp_angle = angle*float(index+1)/n_frame
            elif spiral<0:
                sp_angle = angle*(1.0 - float(index+1)/n_frame)
            else:
                sp_angle = angle
            ang_cur = math.pi*phase/180.0 + (2*math.pi*index)/n_frame
            x_rot = sp_angle * math.sin(ang_cur)/2
            y_rot = sp_angle * math.sin(ang_cur+shift)/2      
            cmd.turn('x',x_rot)
            cmd.turn('y',y_rot)
            cmd.mview('store',start+index,freeze=1)
            cmd.turn('y',-y_rot)
            cmd.turn('x',-x_rot)
示例#5
0
def add_rock(duration=8.0, angle=30.0, loop=1, axis='y', start=0, _self=cmd):
    cmd = _self
    if not start:
        start = cmd.get_movie_length() + 1
    duration = float(duration)
    angle = float(angle)
    loop = int(loop)
    fps = float(cmd.get('movie_fps'))
    n_frame = int(round(fps * duration))
    if n_frame > 0:
        cmd.mset("1 x%d" % n_frame, start, freeze=1)
        cmd.turn(axis, angle / 2.0)
        cmd.mview("store", start + n_frame / 4, power=-1, freeze=1)
        cmd.turn(axis, -angle)
        cmd.mview("store", start + (3 * n_frame) / 4, power=-1, freeze=1)
        if loop and (start == 1):
            cmd.mview("interpolate", wrap=1)
        else:
            cmd.mview("interpolate")
        cmd.frame(start)
示例#6
0
文件: movie.py 项目: aghozlane/pymol
def add_rock(duration=8.0,angle=30.0,loop=1,axis='y',start=0,_self=cmd):
    cmd = _self
    if not start:
        start = cmd.get_movie_length()+1
    duration = float(duration)
    angle=float(angle)
    loop=int(loop)
    fps = float(cmd.get('movie_fps'))
    n_frame = int(round(fps * duration))
    if n_frame > 0:
        cmd.mset("1 x%d"%n_frame,start,freeze=1)
        cmd.turn(axis,angle/2.0)
        cmd.mview("store",start+n_frame/4,power=-1,freeze=1)
        cmd.turn(axis,-angle)
        cmd.mview("store",start+(3*n_frame)/4,power=-1,freeze=1)
        if loop and (start == 1):
            cmd.mview("interpolate",wrap=1)
        else:
            cmd.mview("interpolate")
        cmd.frame(start)
示例#7
0
def _rock(mode, axis, first, last, period, pause, _self=cmd):
    cmd = _self
    n_frame = last - first + 1
    angle = cmd.get_setting_float('sweep_angle')
    if (period * 1.5) < pause:
        n_cyc = int(round(pause / period))
        frame_list = []
        for cyc in range(n_cyc):
            frame_list.extend([
                (first + ((1 + 4 * cyc) * n_frame) / (4 * n_cyc)),
                (first + ((3 + 4 * cyc) * n_frame) / (4 * n_cyc))
            ])
    else:
        frame_list = [first + n_frame / 4, first + (3 * n_frame) / 4]
    if 1 or mode:
        direction = 0
        for frame in frame_list:
            if not direction:
                cmd.turn(axis, angle / 2.0)
                cmd.mview("store", frame, power=-1, freeze=1)
                direction = -1
            else:
                cmd.turn(axis, direction * angle)
                cmd.mview("store", frame, power=-1, freeze=1)
                direction = -direction
        cmd.turn(axis, direction * angle / 2.0)
        cmd.mview("store", last, power=-1, freeze=1)
        cmd.mview("interpolate", first, last)
示例#8
0
文件: movie.py 项目: aghozlane/pymol
def _rock(mode,axis,first,last,period,pause,_self=cmd):
    cmd = _self
    n_frame = last - first + 1
    angle = cmd.get_setting_float('sweep_angle')
    if (period * 1.5) < pause:
        n_cyc = int(round(pause / period))
        frame_list = []
        for cyc in range(n_cyc):
            frame_list.extend( [(first + ((1+4*cyc)*n_frame)/(4*n_cyc)),
                                (first + ((3+4*cyc)*n_frame)/(4*n_cyc))] )
    else:
        frame_list = [ first+n_frame/4, first+(3*n_frame)/4 ]
    if 1 or mode:
        direction = 0
        for frame in frame_list:
            if not direction:
                cmd.turn(axis,angle/2.0)
                cmd.mview("store",frame,power=-1,freeze=1)
                direction = -1
            else:
                cmd.turn(axis, direction * angle)
                cmd.mview("store",frame,power=-1,freeze=1)
                direction = -direction
        cmd.turn(axis,direction * angle/2.0)
        cmd.mview("store",last,power=-1,freeze=1)
        cmd.mview("interpolate",first,last)
示例#9
0
def add_roll(duration=12.0, loop=1, axis='y', start=0, _self=cmd):
    cmd = _self
    if not start:
        start = cmd.get_movie_length() + 1
    duration = float(duration)
    fps = float(cmd.get('movie_fps'))
    n_frame = int(round(fps * duration))
    if n_frame > 0:
        cmd.mset("1 x%d" % n_frame, start, freeze=1)
        cmd.mview("store", start, power=1, freeze=1)
        cmd.turn(axis, 120)
        cmd.mview("store", start + n_frame / 3, power=1, freeze=1)
        cmd.turn(axis, 120)
        cmd.mview("store", start + (2 * n_frame) / 3, power=1, freeze=1)
        if loop:
            if (start == 1):
                cmd.mview("interpolate", wrap=1)
                cmd.turn(axis, 120)
                cmd.mview("store", start + n_frame - 1, power=1, freeze=1)
                cmd.turn(axis, 120)
            else:
                adjustment = 360.0 / n_frame
                cmd.turn(axis, 120 - adjustment)
                cmd.mview("store", start + n_frame - 1, power=1, freeze=1)
                cmd.mview("interpolate")
                cmd.turn(axis, adjustment)
        else:
            cmd.turn(axis, 120)
            cmd.mview("store", start + n_frame - 1, power=1, freeze=1)
            cmd.mview("interpolate")
        cmd.frame(start)
示例#10
0
文件: movie.py 项目: aghozlane/pymol
def add_roll(duration=12.0,loop=1,axis='y',start=0,_self=cmd):
    cmd = _self
    if not start:
        start = cmd.get_movie_length()+1
    duration = float(duration)
    fps = float(cmd.get('movie_fps'))
    n_frame = int(round(fps * duration))
    if n_frame > 0:
        cmd.mset("1 x%d"%n_frame,start,freeze=1)
        cmd.mview("store",start,power=1,freeze=1)
        cmd.turn(axis,120)
        cmd.mview("store",start+n_frame/3,power=1,freeze=1)
        cmd.turn(axis,120)
        cmd.mview("store",start+(2*n_frame)/3,power=1,freeze=1)
        if loop:
            if (start == 1):
                cmd.mview("interpolate",wrap=1)
                cmd.turn(axis,120)                
                cmd.mview("store",start+n_frame-1,power=1,freeze=1)
                cmd.turn(axis,120)
            else:
                adjustment = 360.0/n_frame
                cmd.turn(axis,120 - adjustment)
                cmd.mview("store",start+n_frame-1,power=1,freeze=1)
                cmd.mview("interpolate")
                cmd.turn(axis,adjustment) 
        else:
            cmd.turn(axis,120)
            cmd.mview("store",start+n_frame-1,power=1,freeze=1)
            cmd.mview("interpolate")
        cmd.frame(start)