with(plottools):
with(plots):
ground:=plot([[1.25,0],[4,0]],color=black):
head :=disk([2.5,3.5],.6,color=black):
torso :=line([2.5,2.9],[2.25,1],color=black):
backleg :=line([2.25,1],[1.5,0],color=black):
frontthigh :=line([2.25,1],[3,.75],color=black):
frontshin :=line([3,.75],[2.75,0],color=black):
body :=(torso,head,backleg,frontthigh,frontshin):
leftinnerarm1 :=line([2.5,2.9],[3,2.75],color=black):
leftouterarm1 :=line([3,2.75],[3.5,3],color=black):
reloadstaticarm:=display(leftinnerarm1,leftouterarm1):
blackstance1 :=display(body,leftinnerarm1,leftouterarm1):
grip1 :=polygon([[3.425,3.05],[3.375,2.85],[3.475,2.85],[3.525,3.05]],color=brown):
leftinnerarm2:=line([2.5,2.9],[2.95,2.75]):
leftouterarm2:=line([2.95,2.75],[3.48,3]):
grip2 :=translate(grip1,-.05,0):
bottom1 :=polygon([[3.425,3.05],[3.8,3.05],[3.8,3.075],[3.39,3.075]]):
bottom2:=translate(bottom1,-.05,0):
barrel1:=polygon([[3.83,3.08],[3.83,3.12],[3.5,3.12],[3.5,3.08]]):
barrel2:=translate(barrel1,-.05,0):
triggerguardfront:=line([3.6,3],[3.6,3.05]):
triggerguardbottom:=line([3.5,3],[3.6,3]):
triggerpress:=line([3.55,3.04],[3.54,3]):
trigger1 :=display(triggerguardbottom,triggerguardfront,triggerpress):
slide1:=polygon([[3.4,3.075],[3.82,3.075],[3.82,3.125],[3.41,3.125]]):
slide2:=translate(slide1,-.105,0):
hammer:=polygon([[3.5,3.1],[3.38,3.11],[3.45,3.1]]):
gunidle:=display(trigger1,slide1,hammer,bottom1,barrel1,grip1):
groundcasing1 :=polygon([[3,0],[3.08,0],[3.08,.03],[3,.03]],color=yellow):
groundcasing2 :=polygon([[3.2,0],[3.28,0],[3.28,.03],[3.2,.03]],color=yellow):
groundcasing:=(groundcasing1,groundcasing2):
frame1:=display([ground,groundcasing,gunidle,blackstance1,leftinnerarm1,leftouterarm1],scaling=constrained):
blackstance2:=display(body,leftinnerarm2,leftouterarm2):
trigger2 :=translate(trigger1,-.05,0):
bulletfire:=line([3.78,3.1],[4,3.1],color="#ffffaa",thickness=6):
bulletcasing:=polygon([[3.41,3.05],[3.49,3.05],[3.49,3.08],[3.41,3.08]],color=yellow):
bulletcasing1:=display(translate(bulletcasing,-.25,.25)):
bulletcasing2:=display(translate(bulletcasing1,-.05,-.5)):
gunfiring:=display(bottom2,slide2,grip2,trigger2,barrel2):
gunfiringrotate := rotate(gunfiring,Pi/12):
gunfiringfinal:=translate(gunfiringrotate,.85,-.83):
bang:=textplot([4,3.5,"*BANG!*"]):
click:=textplot([3.5,3.25,"*Click*"]):
frame2:=display([ground,groundcasing,gunfiringfinal,blackstance2,bulletcasing1,bulletfire,bang],scaling=constrained):
bulletcasing3:=display(translate(bulletcasing2,-.05,-1)):
frame3:=display([ground,bulletcasing3,blackstance1,gunidle,groundcasing],scaling=constrained):
bulletcasing4:=display(translate(bulletcasing3,-.05,-1.5)):
frame4:=display([ground,bulletcasing4,blackstance1,groundcasing,gunidle],scaling=constrained):
firinganimation:=display([frame1,frame2,frame3,frame4,frame1,frame1],insequence=true,scaling=constrained):
magemptying:=display([frame1,frame2,frame3,frame4,frame1,frame1,frame1,frame2,frame3,frame4,frame1,frame1,frame1,frame2,frame3,frame4,frame1,frame1,frame1,frame2,frame3,frame4,frame1,frame1,frame1,frame2,frame3,frame4,frame1,frame1,frame1,frame2,frame3,frame4,frame1,frame1,frame1,frame2,frame3,frame4,frame1,frame1],insequence=true,scaling=constrained):
magazine:=polygon([[3.42,3],[3.37,2.8],[3.47,2.8],[3.52,3]],color=gray):
magazinerotate:=rotate(magazine,-Pi/3):
gunempty:=display(bottom2,slide2,grip2,trigger2,barrel2):
gunemptied:=display(ground,blackstance1,gunempty,groundcasing,click):
reloadinnerarm1:=plot([[2.5,2.9],[2.8,2.6]],color=black):
reloadouterarm1:=plot([[2.8,2.6],[3.2,2.45]],color=black):
reloadinnerarm2:=plot([[2.5,2.9],[2.6,2.5]],color=black):
reloadouterarm2:=plot([[2.6,2.5],[2.7,2.2]],color=black):
reloadarm1:=display(reloadouterarm1,reloadinnerarm1):
reloadframe1:=display([ground,groundcasing,gunempty,blackstance1]):
gunempty2rotate := rotate(gunempty,-Pi/6):
gunempty2final:=translate(gunempty2rotate,-1.4,1.6):
reloadbody1:=display([body,reloadinnerarm1,reloadouterarm1]):
reloadframe2:=display([ground,groundcasing,reloadbody1,gunempty2final]):
reloadarm1:=display(reloadinnerarm2,reloadouterarm2):
reloadarm2:=(reloadinnerarm2,reloadouterarm2):
gunempty3rotate:=rotate(gunempty2final,-Pi/5):
triggerguardbottom:=line([3.5,3],[3.6,3]):
gunempty3final:=translate(gunempty3rotate,-1.25,2):
gundown:=display([body,gunempty3final,reloadarm2]):
slide3:=translate(slide2,-.05,0):
gunloading:=display(bottom2,slide3,grip2,trigger2,barrel2):
gunloadingrotate:=rotate(gunloading,-11*Pi/30):
gunloadingfinal:=translate(gunloadingrotate,-1.45,4.15):
reloadframe3:=display(ground,groundcasing,body,gunempty3final,reloadarm2):
reloadarm3inner:=plot([[2.5,2.9],[2.45,2.4]],color=black):
reloadarm3outer:=plot([[2.45,2.4],[2.525,2.2]],color=black):
magazinefinal:=translate(magazinerotate,-1.85,3.7):
reloadframe4:=display(ground,groundcasing,gundown,reloadarm3inner,reloadarm3outer):
reloadarm4inner:=plot([[2.5,2.9],[2.35,2.5]],color=black):
reloadarm4outer:=plot([[2.35,2.5],[2.35,2.2]],color=black):
reloadarm4:=display(reloadarm4inner,reloadarm4outer):
reloadframe5:=display([ground,groundcasing,gundown,reloadarm4,magazinefinal],scaling=constrained):
magazinefinal2:=translate(magazinefinal,-.3,-.1):
reloadarm5:=plot([[2.5,2.9],[2,2.1]],color=black):
reloadframe6:=display(ground,groundcasing,gundown,reloadarm5,magazinefinal2):
magazinefinal3:=translate(magazinefinal2,-.5,-.25):
reloadframe7:=display(ground,groundcasing,gundown,reloadarm5,magazinefinal3):
reloadarm6inner:=plot([[2.5,2.9],[2.3,2.4]],color=black):
reloadarm6outer:=plot([[2.3,2.4],[2.4,2.25]],color=black):
reloadframe8:=display(ground,groundcasing,gundown,reloadarm6inner,reloadarm6outer):
reloadarm7:=plot([[2.5,2.9],[2.75,2.3]],color=black):
reloadframe9:=display(ground,groundcasing,gundown,reloadarm7):
chamberingarm1:=plot([[2.5,2.9],[2.75,2.3]],color=black):
chamberingbody1:=display(ground,groundcasing,gundown,chamberingarm1):
chamberarminner2:=plot([[2.5,2.9],[2.5,2.6]],color=black):
chamberarmouter2:=plot([[2.5,2.6],[2.75,2.3]],color=black):
slideclick:=textplot([2.9,2.5,"*Click*"]):
slideclack:=textplot([3,2.4,"*Clack*"]):
chamberingbody2:=display(ground,body,groundcasing,reloadarm2,chamberarminner2,chamberarmouter2,gunloadingfinal,slideclack):
chamberingbody3:=display(ground,chamberingbody1,slideclick):
reloadanimation:=display(gunemptied,reloadframe2,reloadframe3,reloadframe4,reloadframe5,reloadframe6,reloadframe7,reloadframe8,reloadframe5,reloadframe4,chamberingbody3,chamberingbody2,chamberingbody1,reloadframe3,reloadframe2,reloadframe1,frame1,frame1,insequence=true,scaling=constrained):
display([magemptying,reloadanimation],insequence=true,scaling=constrained,axes=none);
speed=10