#*********************horsewalk.py************************* # # Emily Echevarria # # usage: python horsefallen2.py # # Blobby horse is in ellipsoid form. # The blobby horse walks back and forth eventually making the # rider fall off. The horse resumes walking after the rider # has fallen. #********************************************************* from visual import * mult = 2 deltax = .0002/mult nframes = 500*mult nframes2 = 5000*mult # Initialize the frame system # and create hierarchy (i.e. PushMatrix) world_fr=frame() #scene.mouse.camera.pos = (0, 0, -5) floor = box(length=50, height=.1, width=20, color=color.green, pos = (0, -4.2, 0)) xaxis = (1, 0, 0) yaxis = (0, 1, 0) zaxis = (0, 0, 1) M_PI = 3.15159 #HORSE # Initialize the frame system for the horse barrel = frame(frame = world_fr) point_of_hip = frame(frame = barrel) point_of_croup = frame(frame = barrel) withers = frame(frame = point_of_croup) point_of_tail = frame(frame = point_of_hip) point_of_tail2 = frame(frame = point_of_tail) offpoint_of_hip = frame(frame = point_of_hip) nearpoint_of_hip = frame(frame = point_of_hip) poll = frame(frame = withers) right_earframe = frame(frame = poll) left_earframe = frame(frame = poll) offside_elbow = frame(frame = point_of_croup) offside_knee = frame(frame = offside_elbow) offsidefore_pasternjoint = frame(frame = offside_knee) nearside_elbow = frame(frame = point_of_croup) nearside_knee = frame(frame = nearside_elbow) nearsidefore_pasternjoint = frame(frame = nearside_knee) offside_hock = frame(frame = offpoint_of_hip) offsideback_pasternjoint = frame(frame = offside_hock) nearside_hock = frame(frame = nearpoint_of_hip) nearsideback_pasternjoint = frame(frame = nearside_hock) offsidefore_hoof = frame(frame = offsidefore_pasternjoint) nearsidefore_hoof = frame(frame = nearsidefore_pasternjoint) offsideback_hoof = frame(frame = offsideback_pasternjoint) nearsideback_hoof = frame(frame = nearsideback_pasternjoint) #Initialize joints for the horse in their correct frames witherspoint = sphere(frame = withers, pos=(0,0,0), color = color.yellow, radius = .2) point_of_crouppoint = sphere(frame = point_of_croup, pos=(0,0,0), color = color.orange, radius = .2) point_of_tailpoint = sphere(frame = point_of_tail, pos=(0,0,0), color = color.red, radius = .2) point_of_tail2point = sphere(frame = point_of_tail2, pos=(0,-.1,0), color = color.red, radius = .2) pollpoint = sphere(frame = poll, pos=(-.5,0,0), color = color.red, radius = .2) right_earpoint = sphere(frame = right_earframe, pos=(0,0,0), color = color.red, radius = .2) left_earpoint = sphere(frame = left_earframe, pos=(0,0,0), color = color.red, radius = .2) offside_elbowpoint = sphere(frame = offside_elbow, pos=(0,0,0), color = color.orange, radius = .2) offside_kneepoint = sphere(frame = offside_knee, pos=(0,0,0), color = (color.yellow), radius = .4) nearside_kneepoint = sphere(frame = nearside_knee, pos=(0,0,0), color = (color.yellow), radius = .4) offside_hockpoint = sphere(frame = offside_hock, pos=(0,0,0), color = (color.yellow), radius = .4) nearside_hockpoint = sphere(frame = nearside_hock, pos=(0,0,0), color = (color.yellow), radius = .4) nearside_elbowpoint = sphere(frame = nearside_elbow, pos=(0,0,0), color = color.orange, radius = .2) offsidefore_pasternjointpoint = sphere(frame = offsidefore_pasternjoint, pos=(0,0,0), color = (color.yellow), radius = .35) nearsidefore_pasternjointpoint = sphere(frame = nearsidefore_pasternjoint, pos=(0,0,0), color = (color.yellow), radius = .35) offsideback_pasternjointpoint = sphere(frame = offsideback_pasternjoint, pos=(0,0,0), color = (color.yellow), radius = .35) nearsideback_pasternjointpoint = sphere(frame = nearsideback_pasternjoint, pos=(0,0,0), color = (color.yellow), radius = .35) offsideback_pasternjointpoint = sphere(frame = offsideback_pasternjoint, pos=(0,0,0), color = (color.yellow), radius = .35) nearsideback_pasternjointpoint = sphere(frame = nearsideback_pasternjoint, pos=(0,0,0), color = (color.yellow), radius = .35) offsidefore_hoofpoint = ellipsoid(frame = offsidefore_hoof, pos=(0,0,0), size = (.9, .6, .8), color = color.orange) nearsidefore_hoofpoint = ellipsoid(frame = nearsidefore_hoof, pos=(0,0,0), size = (.9, .6, .8), color = color.orange) offsideback_hoofpoint = ellipsoid(frame = offsideback_hoof, pos=(0,0,0), size = (.9, .6, .8), color = color.orange) nearsideback_hoofpoint = ellipsoid(frame = nearsideback_hoof, pos=(0,0,0), size = (.9, .6, .8), color = color.orange) offpoint_of_hippoint = sphere(frame = offpoint_of_hip, pos=(0,0,0), color = color.green, radius = .2) nearpoint_of_hippoint = sphere(frame = nearpoint_of_hip, pos=(0,0,0), color = color.green, radius = .2) #Initialize the horse's body parts ribs = ellipsoid(frame = point_of_croup, pos=(2, 0, 0), size = (6, 2.8, 2.8), color = color.yellow) sternum = ellipsoid(frame = point_of_croup, pos=(4, 0, 0), size = (3, 3, 3), color = color.yellow) hindquarters = ellipsoid(frame = point_of_croup, pos=(0, 0, 0), size = (3, 3, 3), color = color.yellow) cervicalvertebrae = ellipsoid (frame = withers, pos=(2, -.2, 0), size = (5, 1.7, 1), color = (color.yellow)) head1 = ellipsoid(frame = poll, pos=(0, -.5, 0), size = (1.8, 1.8, 1.7), color = (color.yellow)) head2 = ellipsoid(frame = poll, pos=(0, -1.6,0), size = (1.3, 1.3, 1.3), color = (color.yellow)) tail1 = ellipsoid(frame = point_of_tail, pos=(0, -.5, 0), size = (.4, 1.5, .4), color = color.red) tail2 = ellipsoid(frame = point_of_tail2, pos=(0, -1.5,0), size = (.4, 3, .5), color = color.red) mane1 = ellipsoid(frame = withers, pos=(1.75, .4, 0), length = 5.5, width = .1, depth = .1, color = color.red) mane2 = ellipsoid(frame = poll, pos=(.37, -.05,0), length =1, width = .1, depth = 2, color = color.red) offtibia = ellipsoid(frame = offpoint_of_hip, pos=(0, -1.75, 0), size = (1.8, 4, 1.8), color = (color.yellow)) neartibia = ellipsoid(frame = nearpoint_of_hip, pos=(0, -1.75, 0), size = (1.8, 4, 1.8), color = (color.yellow)) offradius = ellipsoid(frame = offside_elbow, pos=(0, -.7, 0), size = (1.2, 3, 1.2), color = (color.yellow)) nearradius = ellipsoid(frame = nearside_elbow, pos=(0, -.7, 0), size = (1.2, 3, 1.2), color = (color.yellow)) offcannon = ellipsoid(frame = offside_knee, pos=(0, -.75, 0), size = (.85, 2, .85), color = (color.yellow)) nearcannon = ellipsoid(frame = nearside_knee, pos=(0, -.75, 0), size = (.85, 2, .85), color = (color.yellow)) offpastern = ellipsoid(frame = offsidefore_pasternjoint, pos=(0, -.5, 0), size = (.7, 1, .7), color = (color.yellow)) nearpastern = ellipsoid(frame = nearsidefore_pasternjoint, pos=(0, -.5, 0), size = (.7, 1, .7), color = (color.yellow)) offbackpastern = ellipsoid(frame = offsideback_pasternjoint, pos=(0, -.5, 0), size = (.7, 1, .7), color = (color.yellow)) nearbackpastern = ellipsoid(frame = nearsideback_pasternjoint, pos=(0, -.5, 0), size = (.7, 1, .7), color = (color.yellow)) offbackcannon = ellipsoid(frame = offside_hock, pos=(0, -.75, 0), size = (.9, 2.5, .9), color = (color.yellow)) nearbackcannon = ellipsoid(frame = nearside_hock, pos=(0, -.75, 0), size = (.9, 2.5, .9), color = (color.yellow)) right_ear = ellipsoid(frame = right_earframe, pos=(.2, .1, 0), size = (1, .4, .6), color = (color.yellow)) left_ear = ellipsoid(frame = left_earframe, pos=(.2, .1, 0), size = (1, .4, .6), color = (color.yellow)) # Move the frames to their correct starting locations (i.e. glTranslate) # All .pos are relative to the frame that they are in world_fr.pos=(0,0,0) #Move the horse's frame to their correct starting locations barrel.pos=(0, 2.2, 0) withers.pos=(3.3, 0,0) point_of_hip.pos = (0, 0, 0) point_of_croup.pos = (-2, -1, 0) offpoint_of_hip.pos = (-2,0,.75) nearpoint_of_hip.pos = (-2,0,-.75) point_of_tail.pos = (-3, 0, 0) point_of_tail2.pos = (0, -1, 0) poll.pos = (4, 0, 0) left_earframe.pos = (.5, -.2, -.4) right_earframe.pos = (.5, -.2, .4) offside_elbow.pos = (4.2, -1, .7) offside_knee.pos = (0, -2, 0) offsidefore_pasternjoint.pos = (0,-1.5, 0) nearside_elbow.pos = (4.2, -1, -.7) nearside_knee.pos = (0, -2, 0) nearsidefore_pasternjoint.pos = (0,-1.5, 0) offsidefore_hoof.pos = (0, -.8, 0) nearsidefore_hoof.pos = (0, -.8, 0) offsideback_hoof.pos = (0, -.8, 0) nearsideback_hoof.pos = (0, -.8, 0) offside_hock.pos = (0, -3.5, 0) offsideback_pasternjoint.pos = (0,-2,0) nearside_hock.pos = (0, -3.5, 0) nearsideback_pasternjoint.pos = (0,-2,0) # HUMAN saddle_fr = frame(frame = point_of_croup) human_fr = frame(frame=saddle_fr) waist=frame(frame=human_fr) neck=frame(frame=waist) lshoulder=frame(frame=waist) rshoulder=frame(frame=waist) lelbow=frame(frame=lshoulder) relbow=frame(frame=rshoulder) lwrist=frame(frame=lelbow) rwrist=frame(frame=relbow) lhip=frame(frame=human_fr) rhip=frame(frame=human_fr) lknee=frame(frame=lhip) rknee=frame(frame=rhip) lankle=frame(frame=lknee) rankle=frame(frame=rknee) #Initilize joints in their correct frames saddlepoint = sphere(frame = saddle_fr, pos=(0,0,0), color = color.red, radius = .2) neckpoint = sphere(frame=neck, pos=(0,0,0), color=color.cyan, radius = .2) lshoulderpoint = sphere(frame=lshoulder, pos=(0,0,0), color =color.cyan, radius=.25) rshoulderpoint = sphere(frame=rshoulder, pos=(0,0,0), color= color.cyan, radius=.25) lelbowpoint = sphere(frame=lelbow, pos=(0,0,-.1), color=color.cyan, radius=.2) relbowpoint = sphere(frame=relbow, pos=(0,0,-.1), color=color.cyan, radius=.2) lwristpoint = sphere(frame=lwrist, pos=(0,0,-.1), color= color.cyan, radius=.1) rwristpoint = sphere(frame=rwrist, pos=(0,0,-.1), color=color.cyan, radius=.1) lhippoint = sphere(frame=lhip, pos=(0,0,0), color=color.cyan, radius=.3) rhippoint = sphere(frame=rhip, pos=(0,0,0), color= color.cyan, radius=.3) lkneepoint = sphere(frame=lknee, pos=(0,0,0), color=color.cyan, radius=.2) rkneepoint = sphere(frame=rknee, pos=(0,0,0), color=color.cyan, radius=.2) lanklepoint = sphere(frame=lankle, pos=(0,0,0), color= color.cyan, radius=.2) ranklepoint = sphere(frame=rankle, pos=(0,0,0), color=color.cyan, radius=.2) waistpoint = sphere(frame=waist, pos=(0,0,0), color=color.cyan, radius = .4) # Initialize body parts in their correct frames utorso = ellipsoid(frame=waist,pos=(0,.5,0), size = (1, 2, 1), color=(color.cyan)) ltorso = ellipsoid(frame=human_fr, pos=(0,-.5,0), size =(1, 1.5, 1), color = (color.cyan)) head = sphere(frame=neck,pos=(0,.5,0), radius=.5,color=(color.cyan)) lhumerous = ellipsoid(frame=lshoulder, pos=(.5,0,-.1), size=(1.5, .4, .4), color=(color.cyan)) rhumerous = ellipsoid(frame=rshoulder, pos=(-.5,0,-.1), size=(1.5, .4, .4),color=(color.cyan)) lradius = ellipsoid(frame=lelbow, pos=(.5,0,-.1), size=(1.5, .4, .3), color=(color.cyan)) rradius = ellipsoid(frame=relbow, pos=(-.5,0,-.1), size=(1.5, .3, .4), color=(color.cyan)) lhand = ellipsoid(frame=lwrist, pos=(.25,0,-.1), size=(.5, .3, .3),color=(color.cyan)) rhand = ellipsoid(frame=rwrist, pos=(-.25,0,-.1), size = (.5, .3, .3),color=(color.cyan)) lfemur = ellipsoid(frame=lhip, pos=(0,-.75,0), size=(.5, 2, .5), color=(color.cyan)) rfemur = ellipsoid(frame=rhip, pos=(0,-.75,0), size=(.5, 2, .5), color=(color.cyan)) ltibia = ellipsoid(frame=lknee, pos=(0,-.75,0), size=(.5, 2, .5), color=(color.cyan)) rtibia = ellipsoid(frame=rknee, pos=(0,-.75,0), size=(.5, 2, .5), color=(color.cyan)) lfoot = box(frame=lankle, pos=(0,0,.25), length=.3, height=.2, width=.45,color=(color.cyan)) rfoot = box(frame=rankle, pos=(0,0,.25), length=.3, height=.2, width=.45,color=(color.cyan)) # Move the frames to their correct starting locations (i.e. glTranslate) # All .pos are relative to the frame that they are in world_fr.pos=(0,0,0) human_fr.pos.y = human_fr.pos.y + 2.5 #human_fr.pos.x = human_fr.pos.x + 1.6 saddle_fr.pos.x = saddle_fr.pos.x + 1.6 neck.pos=(0,1.5,0) lshoulder.pos=(.55,1.3,0) rshoulder.pos= (-.55,1.3,0) lelbow.pos=(1.05,0,0) relbow.pos=(-1.05,0,0) lwrist.pos=(1.0,0,0) rwrist.pos=(-1.0,0,0) lhip.pos=(.35,-1.,0) rhip.pos=(-.35,-1.,0) lknee.pos=(0,-1.6,0) rknee.pos=(0,-1.6,0) lankle.pos= (0,-1.6,0) rankle.pos=(0,-1.6,0) waist.pos=(0, 0,0) # resetcolors() def resetcolors(): """ #reset human colors utorso.color=(.2,.2,.9) ltorso.color=(.2, .2, .9) head.color= (.2,.2,.9) lhumerous.color=(.2,.2,.9) rhumerous.color=(.2,.2,.9) lradius.color= (.2,.2,.9) rradius.color=(.2,.2,.9) lhand.color=(.2,.2,.9) rhand.color=(.2,.2,.9) lfemur.color= (.2,.2,.9) rfemur.color=(.2,.2,.9) ltibia.color=(.2,.2,.9) rtibia.color=(.2,.2,.9) lfoot.color=(.2,.2,.9) rfoot.color=(.2,.2,.9) """ #reset horse's colors ribs.color =col sternum.color = col hindquarters.color = col cervicalvertebrae.color = col head1.color = col head2.color = col tail1.color =color.red tail2.color = color.red mane1.color = color.red mane2.color = color.red point_of_tailpoint.color = color.red point_of_tail2point.color = color.red offtibia.color = col neartibia.color = col offradius.color = col nearradius.color = col offcannon.color = col nearcannon.color = col offpastern.color = col nearpastern.color = col offbackpastern.color = col nearbackpastern.color = col offbackcannon.color = col nearbackcannon.color = col right_ear.color = col left_ear.color = col offside_kneepoint.color = col nearside_kneepoint.color = col offside_hockpoint.color = col nearside_hockpoint.color = col offsidefore_pasternjointpoint.color = col nearsidefore_pasternjointpoint.color = col offsideback_pasternjointpoint.color = col nearsideback_pasternjointpoint.color = col offsidefore_hoofpoint.color = color.orange nearsidefore_hoofpoint.color = color.orange offsideback_hoofpoint.color = color.orange nearsideback_hoofpoint.color = color.orange #rotate parts of human lshoulder.rotate(angle=-M_PI/2, axis=(0,1,0)) lshoulder.rotate(angle=M_PI/4, axis=(0,0,1)) lshoulder.rotate(angle=M_PI/4, axis=(1,0,0)) rshoulder.rotate(angle=M_PI/2, axis=(0,1,0)) rshoulder.rotate(angle=-M_PI/4, axis=(0,0,1)) rshoulder.rotate(angle= M_PI/4, axis=(1,0,0)) relbow.rotate(angle = -M_PI/4, axis=(0, 0, 1)) lelbow.rotate(angle = M_PI/4, axis=(0,0,1)) relbow.rotate(angle = -M_PI/4, axis=(0, 1, 0)) lelbow.rotate(angle = M_PI/4, axis=(0,1,0)) waist.rotate(angle = M_PI/8, axis =(1, 0, 0)) lhip.rotate(angle = -M_PI/2, axis = (1, 0, 0)) rhip.rotate(angle=-M_PI/2, axis = (1, 0, 0)) lhip.rotate(angle = M_PI/8, axis= (0, 1, 0)) rhip.rotate(angle=-M_PI/8, axis = (0, 1, 0)) lknee.rotate(angle = 3*M_PI/4, axis = (1, 0, 0)) rknee.rotate(angle=3*M_PI/4, axis = (1, 0, 0)) lknee.rotate(angle = -M_PI/4, axis = (0, 1, 0)) rknee.rotate(angle=M_PI/4, axis = (0, 1, 0)) human_fr.rotate(angle=M_PI/2, axis = (0, 1, 0)) #unbend parts arrays parts = [lshoulder, lshoulder, lshoulder, rshoulder, rshoulder, rshoulder, relbow, lelbow, relbow, lelbow, waist, lhip, rhip, lhip, rhip, lknee, rknee, lknee, rknee, waist, human_fr] partangles = [M_PI/2, -M_PI/4, -M_PI/4, -M_PI/2, M_PI/4, -M_PI/4, M_PI/4, -M_PI/4, M_PI/4, -M_PI/4, -M_PI/8, M_PI/2, M_PI/2, -M_PI/8, M_PI/8, 3*M_PI/4, -3*M_PI/4, -M_PI/4, M_PI/4, M_PI/2, M_PI/2] partaxes = [yaxis, zaxis, xaxis, yaxis, zaxis, xaxis, xaxis, zaxis, yaxis, yaxis, xaxis, xaxis, xaxis, yaxis, yaxis, yaxis, yaxis, yaxis, yaxis, xaxis, xaxis] #rotate parts of horse to begin in initial stance nearsidefore_pasternjoint.rotate(angle=M_PI/8, axis=(0,0,1)) offsidefore_pasternjoint.rotate(angle=M_PI/8, axis=(0,0,1)) nearsideback_pasternjoint.rotate(angle=M_PI/16, axis=(0,0,1)) offsideback_pasternjoint.rotate(angle=M_PI/16, axis=(0,0,1)) nearsidefore_hoof.rotate(angle=-M_PI/8, axis=(0,0,1)) offsidefore_hoof.rotate(angle=-M_PI/8, axis=(0,0,1)) nearsideback_hoof.rotate(angle=-M_PI/8, axis=(0,0,1)) offsideback_hoof.rotate(angle=-M_PI/8, axis=(0,0,1)) withers.rotate(angle=M_PI/4, axis=(0,0,1)) offpoint_of_hip.rotate(angle =-M_PI/16, axis=(0,0,1)) nearpoint_of_hip.rotate(angle=-M_PI/16, axis=(0,0,1)) offside_hock.rotate(angle=M_PI/8, axis = (0,0,1)) nearside_hock.rotate(angle=M_PI/8, axis = (0,0,1)) point_of_tail.rotate(angle=-M_PI/6, axis = (0,0,1)) point_of_tail2.rotate(angle=M_PI/6, axis = (0,0,1)) picked=None # What body part is picked mousedown=false # Is the mouse being dragged? # Set the window title scene.title="Blobby Horse for VPython, By Emily Echevarria, Math198 Spring 2006" # Set up the scene, we want autoscaling off or VPython will resize # the scene and it can be distracting scene.center=(0,-1,0) scene.autoscale=0 bendkneeangle = -(M_PI/180)*90 bendpasternangle = -(M_PI/180)*90 bendelbowangle = (M_PI/180)*90 bendhip = (M_PI/180)*10 bendhock = (M_PI/180)*10 bendhindpastern = -(M_PI/180)*15 bendtail = (M_PI/180)*30 bendhead = (M_PI/180)*10 nearforeoffhind = [nearside_elbow, offpoint_of_hip, offside_elbow, nearpoint_of_hip, nearside_knee, offside_hock, offside_knee, nearside_hock, nearsidefore_pasternjoint, offsideback_pasternjoint, offsidefore_pasternjoint, nearsideback_pasternjoint, withers, point_of_tail] offforenearhind = [offside_elbow, nearpoint_of_hip, nearside_elbow, offpoint_of_hip, offside_knee, nearside_hock, nearside_knee, offside_hock, offsidefore_pasternjoint, nearsideback_pasternjoint, nearsidefore_pasternjoint, offsideback_pasternjoint, withers, point_of_tail] angup = [bendelbowangle*.7, bendhip, -bendelbowangle/5, -bendhip*1, bendkneeangle/2, bendhock*2.5, 0*bendkneeangle/4, -bendhock*2, bendpasternangle*.7, bendhindpastern*3.5, -bendpasternangle*.2, bendhindpastern*1, -bendhead, -bendtail] angdown = [-bendelbowangle*.7, -bendhip, bendelbowangle/5, bendhip*1, -bendkneeangle/2, -bendhock*2.5, 0*-bendkneeangle/4, bendhock*2, -bendpasternangle*.7, -bendhindpastern*3.5, bendpasternangle*.2, -bendhindpastern*1, bendhead, bendtail] zaxes = [zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis] #trotanglefactor = 1.2 #walkspeed = 600 #offsetwalk = .0002 countsteps = 0 off = deltax stillgoing = true mouseclicked = false fallen = false def bendjoint(frame, angle, axis, OFFSET = .005, SPEED = nframes, ANGLEFACTOR=1.2, MAX_FRAMES = 14, MOVELATERALLY = 1, ROTATE = true): count = 0 rotationCounter = 0 while (count < SPEED): i = 0 while( i < MAX_FRAMES): if(ROTATE): rotation = ANGLEFACTOR*angle[i]/SPEED tempframe = frame[i] tempframe.rotate(angle = rotation, axis = axis[i]) if(MOVELATERALLY == 1): barrel.pos.x = barrel.pos.x + OFFSET if(MOVELATERALLY == 2): human_fr.pos.x = human_fr.pos.x - .0001 i = i + 1 count = count + 1 def movelaterally(fr, offsetx): fr.pos.x = fr.pos.x + offsetx def stall(): stall = 0 while(stall !=1000000): stall = stall + 1 def movefrontlegs(OFFSET = .000025): bendjoint(offforenearhind, angup, zaxes, OFFSET=OFFSET) bendjoint(offforenearhind, angdown, zaxes, OFFSET=OFFSET) bendjoint(nearforeoffhind, angup, zaxes, OFFSET=OFFSET) bendjoint(nearforeoffhind, angdown, zaxes, OFFSET=OFFSET) mouseclicked = false riderCounter = 0 def checkClick(): if scene.mouse.events: #rotating mode m1 = scene.mouse.getevent() # obtain drag or drop event if m1.click == 'left': mouseclicked = true return true def throwRider(): #animation goes here riderCounter = 0 horseCounter = 0 bendjoint(frame = [point_of_croup, offside_elbow, nearside_elbow, nearside_knee, offside_knee, nearsidefore_pasternjoint, offsidefore_pasternjoint], angle=[M_PI/6, M_PI/2, M_PI/3, -M_PI/3, -M_PI/2, -M_PI/3, -M_PI/3], axis=[zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis], SPEED = nframes2, MAX_FRAMES = 7, MOVELATERALLY = 15) bendjoint(frame = parts, angle = partangles, axis = partaxes, MAX_FRAMES = 21, MOVELATERALLY = 2, SPEED = 6600) human_fr.frame = world_fr human_fr.rotate(angle = -M_PI/180*175, axis = yaxis) human_fr.pos = (23.9, -3.55, -.35) human_fr.rotate(angle = -M_PI/180*36.5, axis = zaxis) bendjoint(frame = [point_of_croup, offside_elbow, nearside_elbow, nearside_knee, offside_knee, nearsidefore_pasternjoint, offsidefore_pasternjoint], angle=[-M_PI/6, -M_PI/2, -M_PI/3, M_PI/3, M_PI/2, M_PI/3, M_PI/3], axis=[zaxis, zaxis, zaxis, zaxis, zaxis, zaxis, zaxis], SPEED = nframes2, MAX_FRAMES = 7, MOVELATERALLY = 0) iterationcount =1 fifthiteration = false i = 1 j = 1 k = 0 while(1): while (fifthiteration == false): if(countsteps == 4): barrel.rotate(angle = (M_PI/180)*180, axis = [0, 1, 0]) off = -off countsteps = 0 if(fallen == true): col = (i, j, k) oldi = i oldj = j oldk = k i = oldk j = oldi k = oldj resetcolors() movefrontlegs(OFFSET = off) countsteps = countsteps + 1 iterationcount = iterationcount + 1 if(iterationcount == 15 and fallen == false): fifthiteration = true throwRider() fallen = true countsteps = 0 fifthiteration = false