BLENDER_v223REND P1SRd,`ISRscreen,\ D =DATA,JDATAJ,=DATAJ< =DATA<J DATAJ<DATAJL DATALJ(DATAJL (DATAJ\DATA\J(DATA KDATAKl <,DATAlK,DATAKl<DATAK|DATA|K,LDATA,K|DATAK,LDATAK<DATA<KDATAK<\LDATAKL\DATALK\DATAKLDATAKLDATALL,<dp{D;BJDD\DATAB\DdCIzաD????????| m===o?p=A|A??p=A B? #<C<ggDATA@D\/9DATAL<\??Pףdp{D;BpOI{D{DDATAA,zC̽̌?zC@ #< #<`jFzD OBzC̽̌?DATA,>??? ???? A???PA A!O?j?}GCHB? A B? #<C<@h@hDATA@D,/9SRdI|,`SRscreen.001\ L< D =DATAJ|DATA|J,=DATA,J| =DATAJ, DATAJ<DATA<J DATAJ<(DATAJL (DATALJDATAJL(DATAJ\|DATA\J |DATA K,|DATAKl DATAlKDATAKl<DATAK|<DATA|K,|DATA,K|,DATAK,DATAK<DATA<KLDATAK|<L<DATA|K,DATA,K|DATAK,LDATAK<LDATA<KDATAK<\DATAKL\<DATALK\DATA<L<   !Cdp{D;BJDDl  ADATAlBDdCDMm&lCC(BDC?z?$eOBDATA@Dl/9DATAL<|, += +? ==!d;BDD\\DATALL\<?@AHM y  ydgD;BCgDgD̠̠DATA>Q}e?G*>>Ĭ>YTx; n? >^].>k7?R}e? >;Ĭ> n??*>WT >ֈ@ h@?{? ־G*־>aU?XU?YT?@@=n >>/.4A7AQ??>Ƀ(rY >>:4.B /3ןߧA,GA)@pN?[ ;SA B?=CxЄ=<[k[ke. DATA@DOAD FILE/9DATAAzC AzC A #< #<`jFzD OBDATABDdCDv@CC(BDC?z?DATAL L '.==w7=o?%%  ^d;BPEFRFL̰̰DATAXLG\  >;>OQVDATA\>\L????=0t??Yf2?|1X:0??@1t@?'.==w7=o+ƽ^:o ;?(Au2%Ap[7 '5?@/t@??(A B?=C?=0t< DATA\A\zC AzC A #< #<`jFzD OBDATAB\DdCDv@CC(BDC?z?DATA@D SAVE FILEFILEd:\pete\phys1905f02\nov12\tics\2DRotator.blendddDATA L\--<l=o? %  % dgD;BCgDgDL  DATAL>܇??m?71e??*ͲY2?̱(m?@e71@?<o;l=k#fՅ<?>Bُ36mAh۶C$5m?@e71@?5?5>B B?=Cm?eA71<KK DATA@܇DLOAD FILE/9DATAA܇zC AzC A #< #<`jFzD OBDATABDdCDv@CC(BDC?z?SRd|ISRscreen.002,l D =DATA,J܄DATA܄J,=DATAJ<܄ =DATA<J DATAJ<DATAJL DATALJ(DATAJL (DATAJ\hDATA\J  hDATA J\hDATAJ (DATAlK܄DATAK̀l<,DATÀK|,DATA|K,̀<DATA,K̟|DATA̟K|,L܄DATA|K,̟DATA,Kܞ|LDATAܞK,DATAK<ܞLDATA<K\DATAK<\DATAKL\DATALK DATAKL \DATAK\LDATA\K DATA K\ DATAL,<%dp{D;BJDD,DATA,BDdCIzաDo?uub dp{D;B0CKpDܕDATAܕCzCAzCAbb A@FB= A DATA>ܕ????????8=i>o?fffAD&@??fffA B? #<C<DATA@DAVE TARGA/t1.blend9DATAL \8=H>o?{{R dp{D;B0CKpDܐDATAܐC\zCAzCA1||1 A@FB= A DATA\>ܐ????????8=H>o?fffA*@??fffA B? #<C<>>DATA@D\AVE TARGA/t1.blend9DATALL 8=>o?{{Rdp{D;BpOI{D{DDATAA,B̽̌?B̽̌?RR #< #<`jFzD SQB̽̌?DATA,>????????8=>o?fffA@??fffA B? #<C<zzDATA@D,OAD FILE/9SC<SC1<LS@n@Z+K@dd??< d??_@??////render///# DATA9<>DATA<9D|DATA9L<\DATAL9Y<DATA DATA OB<6\OBCamera ֈ@ i@???m?><>?Q}e?>;Ĭ> n?B*>YT >ֈ@ i@??????7'? 3/fК+?ШH5?d??)d??>)d????OB\6|<OBLamp WY@A???2pw/2$0$??75Aw40R,?-^>oZ[>s?WY@A?????xq> n% D*^}?X>s? =qP@i#A^?Dd?? #=?>=?@???OODATA,|DATA`OConst?OB|6\OBRod\8Ђ;?Xe=???<9R>???<??8Ђ;??????I/j?>;{گ> n?>Y >cZu@j@?Dd?? #=?>=?@???DATAOB6|OBPlane,L2诡=@C=9?9?9???9?9?9?2诡=@C=????? 8?ƒ>lm;pO9J>e: ?4z>MW[>"@-aZn@?Dd?? #=?>=?@???DATALME\2,MECubel Ln;8 =)R?t@/?DATAܮDATAL/ ??,LFr> }M-Gp(L,~jT+@ MG&.??|?ʲ J~>(?hHm ?)LkG JJ+@{?6ӸHDATAH*F%J)ME,2\MEPlane ,l @ @?DATADATAPl/ @@ @   @DATA ,*MA!ܮMAfloor4?D'*??????????L?RY>2 ???l?DATAPl???_W?u?OS??????MAܮ!MAMaterialL???????????L??2 ????TETEfloor>@????????LDATAxL=BdCAlCACamera=B?A B?LALALamp????AA>??? B4B?@@WO7WOWorld@7f?%Dq??=}4?b%???Ap?pATXdTXrotator̵\\ɄC>DATA\,HDATA\  HDATA \LreenDATAl "' )DATAl 32DATA̧lL DATA̧|  DATA|,̧̳reenDATA,ܦ|DATAܦ,,$DATA<ܦ _DATA<FREEDATA<\DATALeenDATAḺFREEDATALreenDATA\LFREEDATA\  DATA \̰eenDATAl |eenDATAl,eenDATA̢lDATA̢|\reenDATA|,̢@DATA,ܡ|,@DATAܡ,eenDATA<ܡDATA<̠eenDATA<l`DATALeenDATAL̿,`DATA̿|LreenDATA|,̿ $ADD DATA,ܾ|\QDATAܾ,,O PDATA<ܾL -DATA<̲DATA<|.1 ]DATALl |DATAL, ),DATALܱ0]*FDATA\1]*FDATA\ qDATA \  DATAl |2eenDATAlLPreenDATA̺lZ reenDATA̺|%0]nDATA|,̺%1]nDATA,ܹ|%QDATAܹ,|xDATA<ܹ,H.DATA<$DATA<l$* dtDATAL $x^DATAL reenDATAL| QDATA\ !senDATA\  !senDATA \\ !senDATAl  \DATAl $* dtDATA̵l\ $* dtDATA̵ $DATA,import BlenderDATA import mathDATALDATA$rod = Blender.Object.Get ( 'Rod' )DATAeenDATA$Ltime = Blender.Get ( 'curtime' )eenDATA print timeDATA ̳dt =0.04REEDATADATA(,# setup mom of inertia in rest frame15DATA mass = 10.0DATA I = mass * ( 4*4 + 1*1 )/12.0DATA\eenDATA# start at t=0DATA̱if (time == 1 ):eenDATA rod.RotX = 0.0DATAL rod.RotY = 0.0DATA  rod.RotZ = 0.0DATA̰eenDATA| rod.dRotX = 0.0eenDATA, rod.dRotY = 0.0eenDATA rod.dRotZ = 0.2eenDATA\xDATA rod.LocX = 0.0DATA, rod.LocY = 0.0DATA rod.LocZ = 1.5DATADATA̠ rod.dLocX = 0.0eenDATAl` rod.dLocY = 0.0eenDATA rod.dLocZ = 0.0eenDATA,`bDATA#get current omeganDATA( omega = [ 0.0, 0.0, rod.dRotZ / dt ]15DATA\QDATA,O# get torqueDATA0L Fmag = 1.0 * math.cos( time /100*2.0*math.pi)DATA̲F = [ Fmag, 0.0, 0.0 ]DATA|R = [ 0.0, -2.0, 0.0 ]DATA ltorque = [ DATA,( R[1]*F[2] - R[2]*F[1] ),DATAܱ( R[2]*F[0] - R[0]*F[2] ),EDATA( R[0]*F[1] - R[1]*F[0] ) ]DATADATA #get alphaEDATA4|alpha = [ torque[0]/I, torque[1]/I, torque[2]/I ] DATALPeenDATAZ#update omegaDATA(rod.dRotX = rod.dRotX + dt * alpha[0]5DATA(rod.dRotY = rod.dRotY + dt * alpha[1]5DATA(rod.dRotZ = rod.dRotZ + dt * alpha[2]5DATA|DATA,#update angular posDATA(rod.RotX = rod.RotX + rod.dRotX * dt15DATA(lrod.RotY = rod.RotY + rod.dRotY * dt15DATA( rod.RotZ = rod.RotZ + rod.dRotZ * dt15DATA XDATA| #update linear positionDATA$ rod.dLocX = rod.dLocX + F[0]/massenDATA$ rod.dLocY = rod.dLocY + F[1]/massenDATA$\ rod.dLocZ = rod.dLocZ + F[2]/massenDATA ZDATA( rod.LocX = rod.LocX + rod.dLocX * dt15DATA(\ rod.LocY = rod.LocY + rod.dLocY * dt15DATA( rod.LocZ = rod.LocZ + rod.dLocZ * dt15GLOB lMDNA1CSDNANAME*next*prev*first*lastxyzwxminxmaxyminymax*newid*libname[24]usflagpadid*idblock*filedataname[160]totcurvecurblocktypeshowkeypostotelemtypert*data*refkeyelemstr[32]elemsizecurvalblock*ipo*fromtotkeyslurphactkey**scripts*flagactscripttotscript*linelenblen*nameflagsnlineslines*curl*sellcurcselc*undo_bufundo_posundo_len*compiledsizeseekdrawzoomholdclipstaclipendnetstanetendlensdrawsizehololenhololen1scriptlink*anim*ibuf*mipmap[10]oklastframelastqualitytpageflagtotbindxrepyreptwstatwendbindcode*repbind*packedfiletexcomaptomaptonegblendtype*object*texprojxprojyprojzmappingofs[3]size[3]texflagcolormodelrgbkdef_varcolfacnorfacvarfac*handle*pname*stnamesstypesvars*varstr*result*cfradata[32](*doit)()(*callback)()versionaipotypedata[16]*ima*cube[6]imat[4][4]stypenotlaycuberesnoisesizeturbulbrightcontrastrfacgfacbfacfiltersizenoisedepthnoisetypeimaflagcropxmincropymincropxmaxcropymaxxrepeatyrepeatextendframesoffsetsfrafie_ima*nor*plugin*coba*envfradur[4][2]modetotexenergydistspotsizespotblendhaintatt1att2bufsizesampshadspotsizebiassofttexactshadhalostep*mtex[8]layspecrspecgspecbmirrmirgmirbambrambbambgambemitangspectraalpharefspeczoffsaddkfacharseed1seed2mode2flarecstarclinecringchasizeflaresizesubsizeflareboostrgbselpr_typeseptexpr_backpr_lamppad1*renfrictionfhreflectfhdistxyfrictdynamodename[255]namenullscaleselcolexpxexpyexpzradrad2smaxrad2*mat*imat*bbelemsdisp**mattotcolloc[3]rot[3]wiresizerendersizethreshvec[3][3]alfas[3][2]h1h2f1f2f3hidevec[4]s[2]mat_nrpntsupntsvresoluresolvorderuordervflaguflagv*knotsu*knotsv*bp*beztnurb*bevobj*textoncurve*path*keybev*orcopathlenbevresolwidthext1ext2spacemodespacinglinedistshearfsizexofyof*strfamily[24]*vfontmaxrcttotrctadrcodevartypetotvertipoextrapbitmaskv1v2v3v4punoedcode*tpageuv[4][2]col[4]transptiledef_nrweight*dwtotweightreserved1co[3]no[3]co[2]effect*mface*dface*tface*mvert*dvert*mcol*msticky*texcomesh*oc*sumohandletotfacesmoothreshsubdivcubemapsizertfpntswtypeutypevtypew*defmax**obname[32]partypepar1par2par3parsubstr[32]*parent*track*action*posenetworkdefbase*lifedloc[3]orig[3]dsize[3]drot[3]quat[4]dquat[4]obmat[4][4]parentinv[4][4]colbitstransflagipoflagtrackflagupflagipowinscaflagscavisflagboundtypedupondupoffdupstadupendsfctimemassdampinginertiaformfactordummy_1rdampingsizefacdtdtxactcolpropsensorscontrollersactuatorslbufportbbsize[3]dfrasactdefgameflaggameflag2anisotropicFriction[3]constraintsmistypehorrhorghorbhorkzenrzengzenbzenkambkfastcolexposuregravityactivityBoxRadiusskytypemisimiststamistdistmisthistarrstargstarbstarkstarsizestarmindiststardiststarcolnoisedofstadofenddofmindofmaxhemiresmaxiterdrawtypesubshootpsubshootenodelimmaxsublamppamapamielmaelmimaxnodeconvergenceradfacgammasxsycfraefraimagesframaptoframelenblurfacedgeRedgeGedgeBfullscreenxplayyplayfreqplaydepthattribrt1rt2maximsizexschyschxaspyaspxpartsypartssafetyborderwinposplanesimtypebufflagqualityscemodealphamodedogammaosafrs_secedgeintpostmulpostgammapostaddpostigammabackbuf[160]pic[160]ftype[160]movie[160]col[3]pad2pad3*camera*world*setbase*basact*groupcursor[3]*fcam*ed*radioframingzoomblendximyim*rectspacetypeviewmat[4][4]viewinv[4][4]persmat[4][4]persinv[4][4]viewquat[4]perspviewlocalviewlayactscenelockaroundcamzoomgridnearfarmxmymxomyopr_xminpr_xmaxpr_yminpr_ymaxpr_sizexpr_sizeygridlinesviewbutpr_facxpr_facy*bgpic*localvdverthormaskmin[2]max[2]minzoommaxzoomscrollkeeptotkeepaspectkeepzoomrowbutv2d*editipoipokeytotipopinbutofschannelmenunrlockcursenscuractmainbmainbo*lockpointexnrtexfromshowgrouprectxrectycurymodeltypescriptblock*filelisttotfiletitle[24]dir[160]file[80]ofssortmaxnamelencollums*libfiledataretvalmenuact(*returnfunc)()*menupoopsvisiflag*imageimanrcurtileleft*texttopviewlinesfont_idlheightpix_per_linetxtscrolltxtbar*py_draw*py_event*py_buttondupflagsavetimetempdir[64]fontdir[64]renderdir[64]textudir[64]plugtexdir[64]plugseqdir[64]pythondir[64]sounddir[64]versionsvrmlflaggameflagsvertbaseedgebaseareabase*scenestartxendxstartyendysizexsizeyscenenrscreennrfullmainwinwinakt*newvvec*v1*v2*v3*v4*full*headqueue*hq*winqueue*wqwinmat[4][4]headrctwinrctheadwinwinheadertypebutspacetypewinxwinyhead_swaphead_equalwin_swapwin_equalheadbutlenheadbutofscursor(*headchange)()(*winchange)()(*headdraw)(void)(*windraw)(void)(*headqread)()(*winqread)()spacedatauiblocks*curscreendisplaymodefileflagsname[40]*se1*se2*se3nrdone*stripdatadir[80]orxoryname[80]*newseqstartstartofsendofsstartstillendstillmachinestartdispenddispmulhandsize*strip*curelemfacf0facf1*seq1*seq2*seq3seqbase*seqbasepmetastackbuttypestaendlifetimetotpartseednormfacobfacrandfactexfacrandlifeforce[3]dampnablavectsizedefvec[3]mult[4]life[4]child[4]mat[4]texmapcurmultstaticstep*keysheightnarrowspeedminfactimeoffs*obpremat[4][4]postmat[4][4]vec[3]faclenoalphaoeff[2]iterlastfralimbbaseeff[3]effg[3]effn[3]memslowtotytotxxyconstrainttotdefdef_scrolllimb_scrolldxdy*idlinkfasesubfasemouse_move_redrawimafasedirslidirsli_linesdirsli_sxdirsli_eydirsli_exdirsli_himaslifileselmenuitemimasli_sximasli_eyimasli_eximasli_hdssxdssydsexdseydesxdesydeexdeeyfssxfssyfsexfseydsdhfsdhfesxfesyfeexfeeyinfsxinfsyinfexinfeydnsxdnsydnwdnhfnsxfnsyfnwfnhfole[128]dor[128]file[128]dir[128]*firstdir*firstfiletopdirtotaldirshilitetopfiletotalfilesimage_sliderslider_heightslider_spacetopimatotalimacurimaxcurimay*first_sel_ima*hilite_imatotal_selectedima_redraw*cmapotypedataold*poin*oldpoinresetdistlastval*makeyqualqual2targetName[32]toggleName[32]value[32]maxvalue[32]materialName[32]damptimeranglerangeaxisdelaypropname[32]matname[32]axisflag*fromObjectsubject[32]body[32]pulsefreqtotlinks**linksinvertfreq2str[128]*mynewinputstotslinks**slinksvalvalopad5time*actblendinprioritystridelengthstrideaxisreserved2reserved3sndnr*soundmakecopycopymadepad[1]*melinVelocity[3]localflagforceloc[3]forcerot[3]linearvelocity[3]angularvelocity[3]addedlinearvelocity[3]anotherpad[4]butstabutendminvisifacminloc[3]maxloc[3]minrot[3]maxrot[3]distributionint_arg_1int_arg_2float_arg_1float_arg_2toPropName[32]*toObjectbodyTypegoaccellerationmaxspeedmaxrotspeedmaxtiltspeedrotdamptiltdampspeeddamptotportactport*portals*campos*camframe*dynamesh*texmeshtotcamtotfra*sectoroldloc[3]speed[3]oldloc1[3]loc1[3]speed1[3]startloc[3]startrot[3]rotspeed[3]oldimat[4][4]frictrotfrictaxsizefrictfacaeropadf*sensors*contact*collision*floor*oldmeshtotsensactsenstimerdflagstate[4]colloc[3]floorloc[3]links*sample*snd_soundvolumepanningattenuationpitchmin_gainmax_gaindistancechannelspad[7]gaindopplerfactordopplervelocitynumsoundsblendernumsoundsgameengine*gkeyokeygobjectgkey*activechildbaserollhead[3]tail[3]parmat[4][4]defmat[4][4]irestmat[4][4]posemat[4][4]bonebasechainbaseres1res2res3chanbase*achan*pchanactnrenforceoffset[3]orient[3]roll[3]*tartoleranceiterationssubtarget[32]zminzmaxTYPEcharucharshortushortintlongulongfloatdoublevoidLinkListBasevec2svec2ivec2fvec2dvec3ivec3fvec3dvec4ivec4fvec4drctirctfIDLibraryFileDataIpoKeyBlockKeyScriptLinkTextLineTextPackedFileCameraImageanimImBufMTexObjectTexPluginTexCBDataColorBandEnvMapLampWaveMaterialVFontVFontDataMetaElemMetaBallBoundBoxBezTripleBPointNurbCurvePathIpoCurveMFaceMFaceIntTFaceMDeformWeightBoneMDeformVertMVertMColMStickyMeshOcInfoLatticeLBufbDeformGroupbActionbPoseLifeWorldRadioBaseRenderDataGameFramingSceneGroupFreeCameraBGpicView3DView2DSpaceLinkSpaceIpoSpaceButsSpaceSeqSpaceFiledirentryBlendHandleSpaceOopsSpaceImageSpaceTextUserDefbScreenScrVertScrEdgeScrAreaFileGlobalStripElemStripPluginSeqSequenceEditingEffectBuildEffPartEffParticleWaveEffDeformLimbIkaOopsSpaceImaSelImaDirOneSelectableImabPropertybNearSensorbMouseSensorbTouchSensorbKeyboardSensorbPropertySensorbCollisionSensorbRadarSensorbRandomSensorbRaySensorbMessageSensorbSensorbControllerbExpressionContbPythonContbActuatorbAddObjectActuatorbActionActuatorbSoundActuatorbSoundbEditObjectActuatorbSceneActuatorbPropertyActuatorbObjectActuatorbIpoActuatorbCameraActuatorbConstraintActuatorbGroupActuatorbRandomActuatorbMessageActuatorSectorbSamplebSoundListenerSpaceSoundGroupKeyObjectKeyGroupObjectbArmaturebPoseChannelbActionChannelSpaceActionbConstraintbKinematicConstraintbTrackToConstraintbRotateLikeConstraintbLocateLikeConstraintbFollowPathConstraintbRotationConstraintTLEN  0Ptdl PPx4@H<0P <  L ,@x(D($p@Xd @l8(,@0,HhH,(lDLP< <@Lx0848l@0pP<`,,,,STRC                     !"# $%&'()*+,-./0 123 456789:; <!=>2 "?@ABCDEFGH%I#$J%K%LMNOPQRSTUVW!X&YZ[\'](^_`abcdefghijklmn) opqrs tuvwx yz*ghi{+|*}, ']#~#ABMN(#/m%#~)+,-fghijAB&%I.%/:fghiYZ&%/I01!X222/34 %/ed5 6777 6 5 8&4  ' '%9/ de/4 0!:::6 5 "#$%&'(  )#;*+,-./<*+,-./= 01234>56?@>789A:;B{ghiC<D4 = %/ > ? @AA@BBCCDDEEF G&HedIJKLF MNOP6Q%GR'SHHHT 'NUVWXY'Z'[%94I\J]  = ^ _/K`abdcdefghijklmnopqrstuvwxyz{|}~I     GGG2 L+f%&IMNNN']O3w=PQ'LQ#~ NRS M GPOgIT #~(^=U*UU   E  c'TUV  !"#$%&'()WWWXXX*V+ , -%&./01239YYY45V+62/7 89:;<=>?@oZZZV+6[[[\ABCDEFGHI]JK|LM NO^ ^^V+ P/Q 8___V+#R/ST3```U VWX22YZ[\] ^ _ `aabcdefghijklm|b n o pQqrstuvwxyz{|cccc} ~dddcce&eeccccb#        f g%KgggMh hh/gi  opsz tvw x yj jjj /hg%Qq$Jijjj k   lllmmm/nnn'oppprtq 'UVWXr rr/sU %'ZVWXqQt tt uNuuC      !"#$%&'()*+v,v-./0123456789w:w;<=%> Nx xxT?@A B CyTDEz{T/F|GHIJK}TLM~TNOTPQRTSTQTUV'WXY?Z[\T ]'^_` Vab\?cT ]defgh' IiTjklm9no pqrst h'DuTvwQq'TL' xyadz{|} T~'RR T~RT'XY a?T 'S x' G   'DDdghiK- xghi /''& DDDG '!X %2 V+qp3TUVWX'Z'[%abdcdefghjklmvw' R  ????Z T6adcefg    degT9J % T9I  3V+I\/9  %?Th''9n'9'9'   ENDB