%23%20%2F%2F%2F%20script%0A%23%20requires-python%20%3D%20%22%3E%3D3.11%22%0A%23%20dependencies%20%3D%20%5B%22marimo%3E%3D0.23.9%22%2C%20%22numpy%3E%3D2.0%22%2C%20%22matplotlib%3E%3D3.9%22%5D%0A%23%20%2F%2F%2F%0A%0Aimport%20marimo%0A%0A__generated_with%20%3D%20%220.25.2%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20Velocity%20and%20acceleration%20of%20a%20point%20of%20a%20rigid%20body%0A%0A%20%20%20%20%3E%20Renato%20Naville%20Watanabe%2C%20Marcos%20Duarte%3Cbr%3E%0A%20%20%20%20%3E%20%5BLaboratory%20of%20Biomechanics%20and%20Motor%20Control%5D(https%3A%2F%2Fbmclab.pesquisa.ufabc.edu.br%2F)%3Cbr%3E%0A%20%20%20%20%3E%20Federal%20University%20of%20ABC%2C%20Brazil%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20How%20to%20use%20this%20guide%0A%0A%20%20%20%20A%20body%20segment%20is%20not%20a%20particle.%20When%20the%20shank%20swings%20forward%2C%20the%20knee%20and%20the%20ankle%20move%20with%20different%20velocities.%20When%20a%20wheel%20rolls%2C%20its%20top%20races%20ahead%20while%20the%20point%20touching%20the%20ground%20stands%20still.%20Each%20point%20of%20a%20moving%20rigid%20body%20has%20a%20velocity%20and%20an%20acceleration%20of%20its%20own%2C%20and%20yet%20they%20are%20not%20independent%3A%20the%20body%20is%20rigid%2C%20so%20they%20are%20tied%20together.%0A%0A%20%20%20%20This%20notebook%20derives%20the%20two%20equations%20that%20tie%20them%20together.%20Given%20the%20motion%20of%20a%20single%20point%20of%20the%20body%20and%20the%20body's%20angular%20velocity%2C%20they%20give%20the%20velocity%20and%20the%20acceleration%20of%20every%20other%20point.%20Along%20the%20way%20they%20reveal%20a%20point%20that%2C%20at%20each%20instant%2C%20does%20not%20move%20at%20all%2C%20and%20show%20why%20a%20point%20that%20does%20not%20move%20can%20still%20be%20accelerating.%0A%0A%20%20%20%20Read%20it%20in%20order%20and%20run%20each%20cell%20as%20you%20reach%20it.%20Where%20you%20find%20a%20**Challenge**%20or%20a%20set%20of%20**Guiding%20questions**%2C%20stop%20and%20answer%20on%20a%20scratchpad%20before%20moving%20on.%20Several%20of%20them%20ask%20you%20to%20predict%20a%20number%20*before*%20the%20code%20prints%20it.%20Make%20the%20prediction%3B%20a%20wrong%20guess%20that%20the%20code%20then%20corrects%20teaches%20more%20than%20a%20right%20one.%20The%20**Exercises**%20come%20with%20worked%20solutions%2C%20folded%20away%20under%20each%20exercise%3A%20work%20the%20exercise%20out%20first%2C%20and%20open%20the%20solution%20only%20to%20check%20your%20answer.%0A%0A%20%20%20%20You%20will%20need%20the%20cross%20product%20from%20%5BScalar%20and%20vector%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fscalar_vector.py)%2C%20the%20angular%20velocity%20from%20%5BAngular%20kinematics%20in%20a%20plane%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fkinematics_angular_2d.py)%2C%20and%20the%20normal%20(centripetal)%20acceleration%20from%20%5BPath%20frame%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fpath_frame.py).%0A%0A%20%20%20%20**Challenge%200.**%20Before%20you%20begin%2C%20picture%20a%20bicycle%20wheel%20rolling%20along%20the%20road%20at%203%20m%2Fs.%20Write%20down%20the%20velocity%20(magnitude%20and%20direction)%20of%20three%20of%20its%20points%3A%20the%20hub%2C%20the%20top%20of%20the%20tyre%2C%20and%20the%20point%20of%20the%20tyre%20touching%20the%20road.%20Keep%20your%20answers%20nearby%3B%20the%20checkpoint%20questions%20ask%20you%20to%20come%20back%20to%20them.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Catching%20the%20push%20rim%0A%0A%20%20%20%20A%20wheelchair%20user%20rolls%20along%20at%20a%20steady%201.5%20m%2Fs.%20To%20push%2C%20the%20user%20grabs%20the%20push%20rim%2C%20a%20ring%20fixed%20to%20the%20wheel%20and%20slightly%20smaller%20than%20it%2C%20and%20drives%20it%20forward.%20But%20before%20the%20hand%20can%20push%2C%20it%20has%20to%20*catch*%20the%20rim.%20At%20the%20instant%20of%20contact%20the%20hand%20should%20be%20moving%20with%20the%20point%20of%20the%20rim%20it%20grabs%3B%20any%20difference%20between%20the%20two%20velocities%20is%20absorbed%20by%20friction%20against%20the%20palm%2C%20and%20a%20hand%20that%20arrives%20too%20slowly%20brakes%20the%20chair%20instead%20of%20propelling%20it.%0A%0A%20%20%20%20So%2C%20how%20fast%20is%20the%20rim%20moving%20where%20the%20hand%20grabs%20it%3F%0A%0A%20%20%20%20The%20hub%20moves%20at%201.5%20m%2Fs%2C%20like%20the%20chair.%20But%20the%20wheel%20also%20rotates%2C%20so%20every%20point%20of%20the%20rim%20moves%20with%20a%20different%20velocity.%20And%20if%20the%20wheel%20does%20not%20slip%2C%20the%20point%20of%20the%20tyre%20touching%20the%20ground%20does%20not%20move%20at%20all%2C%20at%20least%20at%20that%20instant.%20Somewhere%20between%20%22not%20at%20all%22%20and%20something%20faster%20than%20the%20chair%20is%20the%20speed%20the%20hand%20must%20match.%0A%0A%20%20%20%20**Guiding%20questions%200.**%0A%0A%20%20%20%201.%20Where%20on%20the%20push%20rim%20would%20the%20hand%20need%20the%20lowest%20speed%20to%20catch%20it%3F%20And%20the%20highest%3F%0A%20%20%20%202.%20The%20point%20of%20the%20tyre%20in%20contact%20with%20the%20ground%20has%20zero%20velocity.%20Does%20it%20also%20have%20zero%20acceleration%3F%0A%20%20%20%203.%20At%20the%20instant%20shown%20in%20any%20photograph%20of%20a%20rolling%20wheel%2C%20is%20the%20wheel%20rotating%20about%20its%20hub%2C%20or%20about%20the%20point%20touching%20the%20ground%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Python%20setup%0A%0A%20%20%20%20NumPy%20does%20the%20numerical%20work%20and%20Matplotlib%20draws%20the%20figures.%20Two%20of%20the%20figures%20are%20driven%20by%20sliders%2C%20marimo's%20interactive%20controls%2C%20to%20move%20the%20body%20through%20time.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20matplotlib%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20from%20matplotlib.patches%20import%20FancyArrowPatch%0A%0A%20%20%20%20matplotlib.rc(%22axes%22%2C%20labelsize%3D13%2C%20titlesize%3D14)%0A%20%20%20%20matplotlib.rc(%22xtick%22%2C%20labelsize%3D11)%0A%20%20%20%20matplotlib.rc(%22ytick%22%2C%20labelsize%3D11)%0A%20%20%20%20matplotlib.rc(%22legend%22%2C%20fontsize%3D11)%0A%20%20%20%20return%20FancyArrowPatch%2C%20np%2C%20plt%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20A%20frame%20of%20reference%20attached%20to%20the%20body%0A%0A%20%20%20%20The%20concept%20of%20reference%20frame%20is%20central%20to%20the%20understanding%20of%20human%20motion%2C%20in%20biomechanics%20and%20in%20motor%20control.%20For%20example%2C%20do%20we%20see%2C%20plan%20and%20control%20the%20movement%20of%20our%20hand%20with%20respect%20to%20reference%20frames%20within%20our%20body%2C%20or%20in%20the%20environment%20we%20move%20in%3F%20Or%20a%20combination%20of%20both%3F%20The%20figure%20below%2C%20although%20drawn%20for%20a%20robot%2C%20illustrates%20well%20that%20we%20may%20have%20to%20deal%20with%20several%20coordinate%20systems%20at%20once.%0A%0A%20%20%20%20%3Cfigure%20aria-describedby%3D%22figure-caption-1%22%3E%3Ccenter%3E%3Cimg%20src%3D%22https%3A%2F%2Fgithub.com%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fimages%2Fcoordinatesystems.png%3Fraw%3D1%22%20width%3D450%20alt%3D%22multiple%20coordinate%20systems%20of%20a%20robot%22%2F%3E%3C%2Fcenter%3E%3C%2Ffigure%3E%0A%0A%20%20%20%20%3Cspan%20id%3D%22figure-caption-1%22%20class%3D%22figure-caption%22%20style%3D%22display%3Ablock%3Btext-align%3Acenter%3Bfont-style%3Aitalic%22%3EFigure.%20Multiple%20coordinate%20systems%20for%20use%20in%20robots%20(figure%20from%20Corke%20(2017)).%3C%2Fspan%3E%0A%0A%20%20%20%20In%20three-dimensional%20motion%20analysis%20we%20use%20several%20frames%20of%20reference%20for%20convenience%2C%20and%20call%20them%20global%2C%20laboratory%2C%20local%2C%20anatomical%20or%20technical%20reference%20frames%20or%20coordinate%20systems.%20Different%20standardizations%20have%20been%20proposed%20for%20how%20to%20define%20the%20frames%20of%20reference%20of%20the%20main%20segments%20and%20joints%20of%20the%20human%20body%3B%20the%20International%20Society%20of%20Biomechanics%20keeps%20a%20%5Bpage%20listing%20standardization%20proposals%5D(https%3A%2F%2Fisbweb.org%2Factivities%2Fstandards)%20by%20its%20standardization%20committee%20and%20subcommittees.%0A%0A%20%20%20%20In%20this%20notebook%20we%20need%20one%20frame%20in%20particular%3A%20a%20frame%20attached%20to%20the%20moving%20body%2C%20with%20axes%20that%20turn%20and%20travel%20with%20it.%20In%20a%20motion%20analysis%2C%20such%20a%20frame%20is%20built%20from%20markers%20placed%20on%20the%20segment%2C%20as%20shown%20in%20%5BDetermination%20of%20a%20coordinate%20system%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fcoordinate_system.py)%20and%20%5BFrame%20of%20reference%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Freference_frame.py).%20Here%20we%20work%20in%20a%20plane%2C%20where%20the%20body's%20frame%20has%20two%20versors%2C%20%24%5Chat%7B%5Cmathbf%7Bi%7D%7D'%24%20and%20%24%5Chat%7B%5Cmathbf%7Bj%7D%7D'%24%2C%20and%20the%20laboratory's%20frame%20has%20%24%5Chat%7B%5Cmathbf%7Bi%7D%7D%24%20and%20%24%5Chat%7B%5Cmathbf%7Bj%7D%7D%24.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Position%20of%20a%20point%20on%20a%20rigid%20body%0A%0A%20%20%20%20The%20position%20of%20a%20point%20P%20of%20a%20rigid%20body%20rotating%20about%20the%20origin%20O%20is%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FO%7D%20%3D%20x_%7BP%2FO%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%2B%20y_%7BP%2FO%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D'%0A%20%20%20%20%24%24%0A%0A%20%20%20%20where%20%24x_%7BP%2FO%7D%5E*%24%20and%20%24y_%7BP%2FO%7D%5E*%24%20are%20the%20coordinates%20of%20the%20point%20P%20in%20a%20reference%20state%2C%20when%20the%20body's%20frame%20coincides%20with%20the%20laboratory's%2C%20and%20the%20versors%20of%20the%20body's%20frame%2C%20turned%20by%20the%20angle%20%24%5Ctheta%24%2C%20are%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%3D%20%5Ccos(%5Ctheta)%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%20%5Csin(%5Ctheta)%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Chat%7B%5Cmathbf%7Bj%7D%7D'%20%3D%20-%5Csin(%5Ctheta)%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%20%5Ccos(%5Ctheta)%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%3Cfigure%20aria-describedby%3D%22figure-caption-2%22%3E%3Ccenter%3E%3Cimg%20src%3D%22https%3A%2F%2Fgithub.com%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fimages%2FrotBody.png%3Fraw%3D1%22%20width%3D500%20alt%3D%22point%20of%20a%20rotating%20rigid%20body%22%2F%3E%3C%2Fcenter%3E%3C%2Ffigure%3E%0A%0A%20%20%20%20%3Cspan%20id%3D%22figure-caption-2%22%20class%3D%22figure-caption%22%20style%3D%22display%3Ablock%3Btext-align%3Acenter%3Bfont-style%3Aitalic%22%3EFigure.%20A%20point%20P%20of%20a%20rigid%20body%20rotating%20about%20the%20origin%20O.%3C%2Fspan%3E%0A%0A%20%20%20%20This%20is%20what%20rigidity%20means%2C%20written%20as%20an%20equation.%20As%20the%20body%20rotates%2C%20the%20versors%20%24%5Chat%7B%5Cmathbf%7Bi%7D%7D'%24%20and%20%24%5Chat%7B%5Cmathbf%7Bj%7D%7D'%24%20turn%20with%20it%2C%20but%20the%20coefficients%20%24x_%7BP%2FO%7D%5E*%24%20and%20%24y_%7BP%2FO%7D%5E*%24%20of%20a%20given%20point%20never%20change.%20Every%20bit%20of%20the%20motion%20of%20P%20is%20carried%20by%20the%20versors.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Translation%20of%20a%20rigid%20body%0A%0A%20%20%20%20Let's%20consider%20now%20the%20case%20in%20which%2C%20besides%20rotating%2C%20the%20body%20also%20translates%2C%20as%20in%20the%20figure%20below.%20Describing%20P%20from%20another%20point%20of%20the%20body%2C%20A%2C%20the%20position%20of%20P%20is%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FO%7D%20%3D%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BA%2FO%7D%20%2B%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%20%3D%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BA%2FO%7D%20%2B%20x_%7BP%2FA%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%2B%20y_%7BP%2FA%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D'%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%3Cfigure%20aria-describedby%3D%22figure-caption-3%22%3E%3Ccenter%3E%3Cimg%20src%3D%22https%3A%2F%2Fgithub.com%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fimages%2FrotTrBody.png%3Fraw%3D1%22%20width%3D500%20alt%3D%22point%20of%20a%20rotating%20and%20translating%20rigid%20body%22%2F%3E%3C%2Fcenter%3E%3C%2Ffigure%3E%0A%0A%20%20%20%20%3Cspan%20id%3D%22figure-caption-3%22%20class%3D%22figure-caption%22%20style%3D%22display%3Ablock%3Btext-align%3Acenter%3Bfont-style%3Aitalic%22%3EFigure.%20A%20point%20P%20of%20a%20rigid%20body%20that%20rotates%20and%20translates%2C%20described%20from%20the%20point%20A%20of%20the%20same%20body.%3C%2Fspan%3E%0A%0A%20%20%20%20The%20first%20term%20carries%20the%20translation%2C%20the%20motion%20of%20A.%20The%20second%20carries%20the%20rotation%2C%20and%20has%20exactly%20the%20form%20of%20the%20previous%20section%2C%20with%20A%20in%20place%20of%20O.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Angular%20velocity%20of%20a%20body%0A%0A%20%20%20%20The%20magnitude%20of%20the%20angular%20velocity%20of%20a%20rigid%20body%20rotating%20in%20a%20plane%20is%20defined%20as%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Comega%20%3D%20%5Cfrac%7Bd%5Ctheta%7D%7Bdt%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20It%20is%20usual%20to%20define%20an%20angular%20velocity%20vector%20perpendicular%20to%20the%20plane%20of%20the%20rotation%20(here%20the%20%24x%24-%24y%24%20plane)%2C%20with%20magnitude%20%24%5Comega%24%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%3D%20%5Comega%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%3Cfigure%20aria-describedby%3D%22figure-caption-4%22%3E%3Ccenter%3E%3Cimg%20src%3D%22https%3A%2F%2Fgithub.com%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fimages%2Fangvel.png%3Fraw%3D1%22%20width%3D400%20alt%3D%22angular%20velocity%20vector%22%2F%3E%3C%2Fcenter%3E%3C%2Ffigure%3E%0A%0A%20%20%20%20%3Cspan%20id%3D%22figure-caption-4%22%20class%3D%22figure-caption%22%20style%3D%22display%3Ablock%3Btext-align%3Acenter%3Bfont-style%3Aitalic%22%3EFigure.%20The%20angular%20velocity%20vector%20is%20perpendicular%20to%20the%20plane%20of%20rotation.%3C%2Fspan%3E%0A%0A%20%20%20%20By%20the%20right-hand%20rule%2C%20a%20positive%20%24%5Comega%24%20is%20a%20counterclockwise%20rotation%20seen%20from%20above%20the%20plane.%20Note%20that%20the%20angular%20velocity%20belongs%20to%20the%20body%20as%20a%20whole%3A%20every%20line%20drawn%20on%20a%20rigid%20body%20turns%20through%20the%20same%20angle%20in%20the%20same%20time%2C%20so%20there%20is%20one%20%24%5Comega%24%20for%20the%20whole%20body%2C%20not%20one%20per%20point.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Velocity%20of%20a%20point%20with%20no%20translation%0A%0A%20%20%20%20First%2C%20the%20situation%20with%20no%20translation.%20The%20velocity%20of%20the%20point%20P%20is%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BP%2FO%7D%20%3D%20%5Cfrac%7Bd%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FO%7D%7D%7Bdt%7D%20%3D%20%5Cfrac%7Bd%5Cleft(x_%7BP%2FO%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%2B%20y_%7BP%2FO%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D'%5Cright)%7D%7Bdt%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20coefficients%20are%20constant%2C%20so%20what%20we%20need%20are%20the%20derivatives%20of%20the%20versors%20%24%5Chat%7B%5Cmathbf%7Bi%7D%7D'%24%20and%20%24%5Chat%7B%5Cmathbf%7Bj%7D%7D'%24.%20They%20are%20found%20exactly%20like%20the%20derivatives%20of%20%24%5Chat%7B%5Cmathbf%7Be%7D%7D_R%24%20and%20%24%5Chat%7B%5Cmathbf%7Be%7D%7D_%5Ctheta%24%20of%20the%20%5Bpolar%20basis%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fpolar_basis.py)%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7Bd%5Chat%7B%5Cmathbf%7Bi%7D%7D'%7D%7Bdt%7D%20%3D%20-%5Cdot%7B%5Ctheta%7D%5Csin(%5Ctheta)%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%20%5Cdot%7B%5Ctheta%7D%5Ccos(%5Ctheta)%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%20%3D%20%5Cdot%7B%5Ctheta%7D%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D'%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7Bd%5Chat%7B%5Cmathbf%7Bj%7D%7D'%7D%7Bdt%7D%20%3D%20-%5Cdot%7B%5Ctheta%7D%5Ccos(%5Ctheta)%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20-%20%5Cdot%7B%5Ctheta%7D%5Csin(%5Ctheta)%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%20%3D%20-%5Cdot%7B%5Ctheta%7D%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D'%0A%20%20%20%20%24%24%0A%0A%20%20%20%20Each%20versor%20changes%20in%20the%20direction%20perpendicular%20to%20itself%2C%20at%20a%20rate%20equal%20to%20the%20angular%20velocity.%20That%20is%20a%20job%20for%20the%20cross%20product.%20With%20the%20angular%20velocity%20as%20the%20vector%20%24%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%3D%20%5Cdot%7B%5Ctheta%7D%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%3D%20%5Comega%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%24%2C%20the%20two%20expressions%20become%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7Bd%5Chat%7B%5Cmathbf%7Bi%7D%7D'%7D%7Bdt%7D%20%3D%20%5Cdot%7B%5Ctheta%7D%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D'%20%3D%20%5Cdot%7B%5Ctheta%7D%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%3D%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Chat%7B%5Cmathbf%7Bi%7D%7D'%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7Bd%5Chat%7B%5Cmathbf%7Bj%7D%7D'%7D%7Bdt%7D%20%3D%20-%5Cdot%7B%5Ctheta%7D%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%3D%20%5Cdot%7B%5Ctheta%7D%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Chat%7B%5Cmathbf%7Bj%7D%7D'%20%3D%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Chat%7B%5Cmathbf%7Bj%7D%7D'%0A%20%20%20%20%24%24%0A%0A%20%20%20%20So%20the%20velocity%20of%20the%20point%20P%2C%20with%20no%20translation%2C%20is%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BP%2FO%7D%20%3D%20x_%7BP%2FO%7D%5E*%5Cfrac%7Bd%5Chat%7B%5Cmathbf%7Bi%7D%7D'%7D%7Bdt%7D%20%2B%20y_%7BP%2FO%7D%5E*%5Cfrac%7Bd%5Chat%7B%5Cmathbf%7Bj%7D%7D'%7D%7Bdt%7D%20%3D%20x_%7BP%2FO%7D%5E*%5C%2C%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%2B%20y_%7BP%2FO%7D%5E*%5C%2C%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Chat%7B%5Cmathbf%7Bj%7D%7D'%20%3D%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cleft(x_%7BP%2FO%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%2B%20y_%7BP%2FO%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D'%5Cright)%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BP%2FO%7D%20%3D%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FO%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20This%20expression%20shows%20that%20the%20velocity%20of%20any%20point%20of%20a%20body%20rotating%20about%20O%20is%20perpendicular%20to%20the%20vector%20from%20O%20to%20that%20point%2C%20with%20magnitude%20%24%5Comega%5C%2C%5CVert%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FO%7D%5CVert%24%3A%20the%20%24v%20%3D%20r%5Comega%24%20of%20circular%20motion%2C%20now%20with%20a%20direction%20attached.%0A%0A%20%20%20%20Although%20it%20was%20derived%20here%20for%20planar%20motion%2C%20the%20expression%20is%20general%20and%20holds%20for%20three-dimensional%20rotations%20as%20well%20(see%20%5BAngular%20velocity%20in%203D%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fangular_velocity_3d.py)).%0A%0A%20%20%20%20**Guiding%20questions%201.**%0A%0A%20%20%20%201.%20A%20point%20on%20the%20axis%20of%20rotation%20has%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FO%7D%24%20parallel%20to%20%24%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%24%20(in%203D)%20or%20equal%20to%20zero%20(in%20the%20plane).%20What%20is%20its%20velocity%3F%0A%20%20%20%202.%20Two%20points%20of%20the%20same%20body%20are%20at%20the%20same%20distance%20from%20O%2C%20on%20opposite%20sides.%20Compare%20their%20velocities.%0A%20%20%20%203.%20Why%20does%20%24%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%24%20have%20to%20point%20out%20of%20the%20plane%20for%20%24%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D%24%20to%20lie%20in%20the%20plane%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exercise%201.**%20A%20forearm%20rotates%20about%20a%20fixed%20elbow%2C%20at%20the%20origin%2C%20with%20%24%5Comega%20%3D%204%24%20rad%2Fs%20counterclockwise.%20At%20this%20instant%20the%20wrist%20is%200.25%20m%20from%20the%20elbow%2C%20along%20the%20direction%20%2430%5E%5Ccirc%24%20above%20the%20%24%2Bx%24%20axis.%20Calculate%20the%20velocity%20of%20the%20wrist%2C%20as%20a%20vector%20and%20as%20a%20speed.%0A%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solution%20to%20Exercise%201%0A%0A%20%20%20%20The%20position%20of%20the%20wrist%20relative%20to%20the%20elbow%20is%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Br%7D%7D%20%3D%200.25%5C%2C(%5Ccos%2030%5E%5Ccirc%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%20%5Csin%2030%5E%5Ccirc%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D)%20%3D%200.2165%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%200.125%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%5C%3B%5Cmathrm%7Bm%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20With%20%24%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%3D%20%5Chat%7B%5Cmathbf%7Bj%7D%7D%24%20and%20%24%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Chat%7B%5Cmathbf%7Bj%7D%7D%20%3D%20-%5Chat%7B%5Cmathbf%7Bi%7D%7D%24%2C%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D%20%3D%20%5Comega%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D%20%3D%204%5C%2C(0.2165%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%20-%200.125%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D)%20%3D%20-0.5%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%200.866%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%5C%3B%5Cmathrm%7Bm%2Fs%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20speed%20is%20%24%5Comega%5C%2C%5CVert%5Cvec%7B%5Cmathbf%7Br%7D%7D%5CVert%20%3D%204%20%5Ctimes%200.25%20%3D%201.0%24%20m%2Fs%2C%20and%20the%20velocity%20points%20%24120%5E%5Ccirc%24%20from%20the%20%24%2Bx%24%20axis%3A%20perpendicular%20to%20the%20forearm%2C%20turned%20%2490%5E%5Ccirc%24%20counterclockwise%20from%20it%2C%20as%20%24%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%24%20always%20does%20in%20the%20plane.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Relative%20velocity%20of%20a%20point%20on%20a%20rigid%20body%20to%20another%20point%0A%0A%20%20%20%20To%20find%20the%20velocity%20of%20a%20point%20of%20a%20body%20that%20also%20translates%2C%20we%20first%20need%20the%20velocity%20of%20a%20point%20P%20relative%20to%20another%20point%20A%20of%20the%20same%20body%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BP%2FA%7D%20%3D%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BP%2FO%7D%20-%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BA%2FO%7D%20%3D%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FO%7D%20-%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BA%2FO%7D%20%3D%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cleft(%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FO%7D%20-%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BA%2FO%7D%5Cright)%20%3D%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20Seen%20from%20any%20point%20of%20a%20rigid%20body%2C%20every%20other%20point%20moves%20on%20a%20circle%20around%20it.%0A%0A%20%20%20%20There%20is%20a%20test%20of%20rigidity%20hidden%20here.%20Because%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BP%2FA%7D%24%20is%20perpendicular%20to%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%2C%20the%20dot%20product%20%24(%5Cvec%7B%5Cmathbf%7Bv%7D%7D_P%20-%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A)%5Ccdot%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%20is%20zero%3A%20**two%20points%20of%20a%20rigid%20body%20have%20the%20same%20velocity%20component%20along%20the%20line%20that%20joins%20them**.%20If%20they%20did%20not%2C%20the%20distance%20between%20them%20would%20be%20changing.%20In%20%5BAngular%20kinematics%20in%20a%20plane%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fkinematics_angular_2d.py)%2C%20the%20markers%20on%20the%20leg%20failed%20this%20test%20by%20up%20to%200.4%20m%2Fs%2C%20a%20sign%20of%20skin%20movement%20and%20measurement%20error%2C%20not%20of%20a%20stretching%20bone.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exercise%202.**%20Two%20markers%20are%20on%20the%20thigh%3A%20A%20at%20%24(0%2C%200.9)%24%20m%20with%20velocity%20%24(1.2%2C%200.1)%24%20m%2Fs%2C%20and%20B%20at%20%24(0.1%2C%200.5)%24%20m%20with%20a%20horizontal%20velocity%20component%20of%201.5%20m%2Fs.%20What%20must%20the%20vertical%20velocity%20component%20of%20B%20be%20for%20the%20two%20markers%20to%20pass%20the%20rigidity%20test%3F%0A%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solution%20to%20Exercise%202%0A%0A%20%20%20%20The%20test%20requires%20%24(%5Cvec%7B%5Cmathbf%7Bv%7D%7D_B%20-%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A)%5Ccdot%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BB%2FA%7D%20%3D%200%24%2C%20with%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BB%2FA%7D%20%3D%20(0.1%2C%20-0.4)%24%20m%20and%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_B%20-%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%20%3D%20(0.3%2C%5C%3B%20v_%7BBy%7D%20-%200.1)%24%20m%2Fs%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%200.3%20%5Ctimes%200.1%20%2B%20(v_%7BBy%7D%20-%200.1)(-0.4)%20%3D%200%0A%20%20%20%20%5Cquad%5CLongrightarrow%5Cquad%0A%20%20%20%20v_%7BBy%7D%20%3D%200.1%20%2B%20%5Cfrac%7B0.03%7D%7B0.4%7D%20%3D%200.175%5C%3B%5Cmathrm%7Bm%2Fs%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20Any%20other%20value%20would%20mean%20that%20the%20distance%20between%20the%20markers%20is%20changing.%20For%20instance%2C%20with%20%24v_%7BBy%7D%20%3D%200.2%24%20m%2Fs%2C%20the%20dot%20product%20is%20%24-0.01%5C%3B%5Cmathrm%7Bm%5E2%2Fs%7D%24%2C%20and%20dividing%20by%20the%20distance%20between%20the%20markers%2C%200.412%20m%2C%20the%20markers%20approach%20each%20other%20at%202.4%20cm%2Fs.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Velocity%20of%20a%20point%20on%20a%20rigid%20body%20that%20translates%0A%0A%20%20%20%20Differentiating%20the%20position%20of%20P%20when%20the%20body%20rotates%20and%20translates%2C%20and%20using%20the%20previous%20result%20for%20the%20rotating%20part%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BP%2FO%7D%20%3D%20%5Cfrac%7Bd%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FO%7D%7D%7Bdt%7D%20%3D%20%5Cfrac%7Bd%5Cleft(%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BA%2FO%7D%20%2B%20x_%7BP%2FA%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%2B%20y_%7BP%2FA%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D'%5Cright)%7D%7Bdt%7D%20%3D%20%5Cfrac%7Bd%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BA%2FO%7D%7D%7Bdt%7D%20%2B%20%5Cfrac%7Bd%5Cleft(x_%7BP%2FA%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D'%20%2B%20y_%7BP%2FA%7D%5E*%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D'%5Cright)%7D%7Bdt%7D%20%3D%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BA%2FO%7D%20%2B%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20This%20is%20the%20first%20of%20the%20two%20equations%20of%20this%20notebook.%20The%20velocity%20of%20any%20point%20P%20is%20the%20velocity%20of%20one%20reference%20point%20A%2C%20which%20carries%20the%20translation%2C%20plus%20a%20rotational%20part%20that%20is%20perpendicular%20to%20the%20line%20from%20A%20to%20P%20and%20proportional%20to%20its%20length.%20Know%20one%20point%20and%20%24%5Comega%24%2C%20and%20you%20know%20them%20all.%0A%0A%20%20%20%20Let's%20write%20three%20small%20functions%20for%20the%20computations%20ahead.%20NumPy's%20cross%20product%20needs%20three-dimensional%20vectors%2C%20so%20%60omega_cross%60%20adds%20a%20zero%20third%20component%20to%20the%20planar%20vector%20and%20removes%20it%20from%20the%20result%3A%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.function%0Adef%20rotation_matrix(theta)%3A%0A%20%20%20%20%22%22%22Matrix%20that%20rotates%20planar%20vectors%20by%20the%20angle%20theta%20%5Brad%5D%2C%20counterclockwise.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20return%20np.array(%5B%5Bnp.cos(theta)%2C%20-np.sin(theta)%5D%2C%20%5Bnp.sin(theta)%2C%20np.cos(theta)%5D%5D)%0A%0A%0A%40app.function%0Adef%20omega_cross(omega%2C%20r)%3A%0A%20%20%20%20%22%22%22Cross%20product%20omega%20k%20x%20r%2C%20for%20a%20planar%20vector%20r%20%3D%20%5Bx%2C%20y%5D%20or%20one%20vector%20per%20row.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20r%20%3D%20np.asarray(r%2C%20dtype%3Dfloat)%0A%20%20%20%20r3%20%3D%20np.concatenate((r%2C%20np.zeros(r.shape%5B%3A-1%5D%20%2B%20(1%2C)))%2C%20axis%3D-1)%0A%20%20%20%20return%20np.cross(%5B0.0%2C%200.0%2C%20omega%5D%2C%20r3)%5B...%2C%20%3A2%5D%0A%0A%0A%40app.function%0Adef%20ellipse_body(n%3D100)%3A%0A%20%20%20%20%22%22%22Outline%20of%20the%20example%20body%2C%20an%20ellipse%20with%20semi-axes%20of%202%20m%20and%206%20m%2C%0A%20%20%20%20in%20the%20body's%20own%20frame%3A%20x%20in%20the%20first%20row%2C%20y%20in%20the%20second.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20phi%20%3D%20np.linspace(0%2C%202%20*%20np.pi%2C%20n)%0A%20%20%20%20return%20np.vstack((2%20*%20np.cos(phi)%2C%206%20*%20np.sin(phi)))%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Example%3A%20a%20body%20that%20rotates%20and%20translates%0A%0A%20%20%20%20Below%20is%20a%20body%2C%20an%20ellipse%20with%20semi-axes%20of%202%20m%20and%206%20m%2C%20rotating%20with%20the%20angular%20velocity%20%24%5Comega%20%3D%20%5Cpi%2F10%24%20rad%2Fs%20while%20its%20geometric%20centre%2C%20the%20point%20A%2C%20translates%20with%20the%20velocity%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%20%3D%200.7%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%200.5%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%24%20m%2Fs.%20We%20follow%20the%20point%20P%20of%20the%20outline%20that%20is%20at%20the%20bottom%20of%20the%20body%20at%20%24t%20%3D%200%24%3A%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20ex1_omega%20%3D%20np.pi%20%2F%2010%20%20%23%20rad%2Fs%0A%20%20%20%20ex1_v_A%20%3D%20np.array(%5B0.7%2C%200.5%5D)%20%20%23%20m%2Fs%2C%20velocity%20of%20the%20geometric%20centre%0A%0A%20%20%20%20body%20%3D%20ellipse_body()%0A%20%20%20%20tip%20%3D%20body%5B%3A%2C%2075%5D%20%20%23%20coordinates%20of%20P%20in%20the%20body's%20frame%0A%0A%20%20%20%20print(%22Coordinates%20of%20P%20in%20the%20body's%20frame%3A%22%2C%20tip.round(4)%2C%20%22m%22)%0A%20%20%20%20return%20body%2C%20ex1_omega%2C%20ex1_v_A%2C%20tip%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Drag%20the%20slider%20to%20move%20through%20time.%20The%20figure%20shows%20the%20body%20at%20the%20chosen%20instant%2C%20in%20green%2C%20and%20where%20it%20was%20at%20every%20earlier%20multiple%20of%202%20s%2C%20in%20grey.%20The%20red%20arrow%20is%20the%20velocity%20of%20the%20centre%20and%20the%20blue%20arrow%20the%20velocity%20of%20P%2C%20both%20drawn%205%20times%20their%20size%20in%20metres%20per%20second.%0A%0A%20%20%20%20**Before%20you%20move%20the%20slider**%2C%20predict%3A%20is%20the%20blue%20arrow%20always%20longer%20than%20the%20red%20one%3F%20When%20is%20it%20shortest%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20t_slider_1%20%3D%20mo.ui.slider(start%3D0%2C%20stop%3D13%2C%20step%3D0.5%2C%20value%3D8%2C%20label%3D%22Time%20%5Bs%5D%22%2C%20show_value%3DTrue)%0A%20%20%20%20t_slider_1%0A%20%20%20%20return%20(t_slider_1%2C)%0A%0A%0A%40app.cell%0Adef%20_(FancyArrowPatch%2C%20body%2C%20ex1_omega%2C%20ex1_v_A%2C%20np%2C%20plt%2C%20t_slider_1%2C%20tip)%3A%0A%20%20%20%20_t%20%3D%20t_slider_1.value%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(6.5%2C%206.5))%0A%20%20%20%20for%20_tg%20in%20np.arange(0%2C%20_t%2C%202)%3A%0A%20%20%20%20%20%20%20%20_outline%20%3D%20rotation_matrix(ex1_omega%20*%20_tg)%20%40%20body%20%2B%20(ex1_v_A%20*%20_tg)%5B%3A%2C%20np.newaxis%5D%0A%20%20%20%20%20%20%20%20_ax.plot(_outline%5B0%5D%2C%20_outline%5B1%5D%2C%20color%3D%220.75%22%2C%20linewidth%3D1)%0A%0A%20%20%20%20_R%20%3D%20rotation_matrix(ex1_omega%20*%20_t)%0A%20%20%20%20_r_A%20%3D%20ex1_v_A%20*%20_t%0A%20%20%20%20_outline%20%3D%20_R%20%40%20body%20%2B%20_r_A%5B%3A%2C%20np.newaxis%5D%0A%20%20%20%20_ax.fill(_outline%5B0%5D%2C%20_outline%5B1%5D%2C%20color%3D%22tab%3Agreen%22%2C%20alpha%3D0.6)%0A%0A%20%20%20%20_r_PA%20%3D%20_R%20%40%20tip%0A%20%20%20%20_v_P%20%3D%20ex1_v_A%20%2B%20omega_cross(ex1_omega%2C%20_r_PA)%0A%20%20%20%20for%20_start%2C%20_vel%2C%20_color%20in%20%5B(_r_A%2C%20ex1_v_A%2C%20%22tab%3Ared%22)%2C%20(_r_A%20%2B%20_r_PA%2C%20_v_P%2C%20%22tab%3Ablue%22)%5D%3A%0A%20%20%20%20%20%20%20%20_ax.add_patch(%0A%20%20%20%20%20%20%20%20%20%20%20%20FancyArrowPatch(_start%2C%20_start%20%2B%205%20*%20_vel%2C%20mutation_scale%3D20%2C%20lw%3D2%2C%20arrowstyle%3D%22-%3E%22%2C%20color%3D_color)%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20_ax.plot(*_r_A%2C%20%22k.%22)%0A%20%20%20%20_ax.set_xlim(-10%2C%2020)%0A%20%20%20%20_ax.set_ylim(-10%2C%2020)%0A%20%20%20%20_ax.set_aspect(%22equal%22)%0A%20%20%20%20_ax.grid(True)%0A%20%20%20%20_ax.set_xlabel(%22x%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_ylabel(%22y%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_title(f%22t%20%3D%20%7B_t%3A.1f%7D%20s%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%0A%20%20%20%20print(f%22v_A%20%3D%20%7Bex1_v_A%7D%20m%2Fs%2C%20%7Cv_A%7C%20%3D%20%7Bnp.linalg.norm(ex1_v_A)%3A.3f%7D%20m%2Fs%22)%0A%20%20%20%20print(f%22v_P%20%3D%20%7B_v_P.round(3)%7D%20m%2Fs%2C%20%7Cv_P%7C%20%3D%20%7Bnp.linalg.norm(_v_P)%3A.3f%7D%20m%2Fs%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20rotational%20part%2C%20%24%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%2C%20has%20the%20same%20magnitude%20at%20every%20instant%2C%20%24%5Comega%5C%2C%5CVert%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%5CVert%20%3D%201.88%24%20m%2Fs%2C%20but%20its%20direction%20turns%20with%20the%20body.%20Added%20to%20the%20constant%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%24%2C%20of%20magnitude%200.86%20m%2Fs%2C%20it%20makes%20the%20speed%20of%20P%20swing%20between%20%241.88%20%2B%200.86%20%3D%202.74%24%20m%2Fs%2C%20when%20the%20two%20parts%20point%20the%20same%20way%2C%20and%20%241.88%20-%200.86%20%3D%201.02%24%20m%2Fs%2C%20when%20they%20point%20in%20nearly%20opposite%20directions%2C%20as%20they%20do%20at%20%24t%24%20%3D%2012%20s.%20So%20the%20blue%20arrow%20is%20always%20the%20longer%20one%20here%2C%20but%20only%20because%20the%20rotational%20part%20is%20larger%20than%20the%20translation.%20A%20point%20closer%20to%20the%20centre%2C%20with%20%24%5Comega%5C%2C%5CVert%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%5CVert%24%20below%200.86%20m%2Fs%2C%20would%20at%20times%20move%20more%20slowly%20than%20the%20centre.%0A%0A%20%20%20%20Velocities%20from%20a%20formula%20should%20be%20checked%20against%20velocities%20from%20positions.%20Let's%20sample%20the%20position%20of%20P%20every%20millisecond%20for%2013%20s%2C%20differentiate%20it%20numerically%20as%20in%20%5BKinematics%20of%20a%20particle%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fkinematics_particle.py)%2C%20and%20compare.%20We%20also%20check%20the%20rigidity%20test%20of%20the%20previous%20section%2C%20%24(%5Cvec%7B%5Cmathbf%7Bv%7D%7D_P%20-%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A)%5Ccdot%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%20%3D%200%24%3A%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(ex1_omega%2C%20ex1_v_A%2C%20np%2C%20tip)%3A%0A%20%20%20%20_dt%20%3D%200.001%0A%20%20%20%20_t%20%3D%20np.arange(0%2C%2013%20%2B%20_dt%20%2F%202%2C%20_dt)%0A%20%20%20%20_r_A%20%3D%20ex1_v_A%20*%20_t%5B%3A%2C%20np.newaxis%5D%0A%20%20%20%20_r_PA%20%3D%20np.array(%5Brotation_matrix(ex1_omega%20*%20_ti)%20%40%20tip%20for%20_ti%20in%20_t%5D)%0A%0A%20%20%20%20_v_numerical%20%3D%20np.gradient(_r_A%20%2B%20_r_PA%2C%20_dt%2C%20axis%3D0%2C%20edge_order%3D2)%0A%20%20%20%20_v_formula%20%3D%20ex1_v_A%20%2B%20omega_cross(ex1_omega%2C%20_r_PA)%0A%0A%20%20%20%20print(f%22Largest%20%7Cv_numerical%20-%20v_formula%7C%3A%20%7Bnp.abs(_v_numerical%20-%20_v_formula).max()%3A.1e%7D%20m%2Fs%22)%0A%20%20%20%20print(f%22Largest%20%7C(v_P%20-%20v_A)%20.%20r_P%2FA%7C%3A%20%20%20%20%20%7Bnp.abs(np.sum((_v_numerical%20-%20ex1_v_A)%20*%20_r_PA%2C%20axis%3D1)).max()%3A.1e%7D%20m2%2Fs%22)%0A%20%20%20%20_speed%20%3D%20np.linalg.norm(_v_formula%2C%20axis%3D1)%0A%20%20%20%20print(f%22Speed%20of%20P%3A%20from%20%7B_speed.min()%3A.2f%7D%20to%20%7B_speed.max()%3A.2f%7D%20m%2Fs%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20formula%20and%20the%20numerical%20derivative%20agree%20to%20within%20%2410%5E%7B-7%7D%24%20m%2Fs%2C%20and%20the%20relative%20velocity%20is%20perpendicular%20to%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%20to%20within%20rounding%20error.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Example%3A%20the%20leg%20in%20the%20swing%20phase%0A%0A%20%20%20%20The%20velocity%20equation%20links%20two%20points%20of%20the%20*same*%20body.%20A%20limb%20is%20a%20chain%20of%20bodies%2C%20but%20the%20equation%20can%20be%20applied%20link%20by%20link%3A%20the%20knee%20belongs%20to%20both%20the%20thigh%20and%20the%20shank%2C%20so%20the%20velocity%20of%20the%20knee%2C%20computed%20from%20the%20hip%20with%20the%20thigh's%20angular%20velocity%2C%20is%20the%20starting%20point%20for%20the%20shank.%0A%0A%20%20%20%20Take%20a%20plausible%20instant%20of%20mid-swing%20in%20walking%2C%20in%20the%20sagittal%20plane%2C%20with%20%24x%24%20forward%20and%20%24y%24%20up.%20The%20hip%2C%20at%20%24(0%2C%200.90)%24%20m%2C%20moves%20forward%20at%20the%20walking%20speed%2C%201.4%20m%2Fs.%20The%20thigh%20(0.42%20m%20long)%20is%20flexed%20%2420%5E%5Ccirc%24%20forward%20of%20the%20vertical%20and%20swings%20forward%20at%20%24%5Comega_%7Bthigh%7D%24%20%3D%203%20rad%2Fs.%20The%20shank%20(0.43%20m%20long)%20still%20hangs%20%2415%5E%5Ccirc%24%20behind%20the%20vertical%20and%20swings%20forward%20at%20%24%5Comega_%7Bshank%7D%24%20%3D%204%20rad%2Fs.%20Swinging%20forward%20is%20counterclockwise%20here%2C%20so%20both%20angular%20velocities%20are%20positive.%20Then%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7Bknee%7D%20%3D%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7Bhip%7D%20%2B%20%5Comega_%7Bthigh%7D%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7Bknee%2Fhip%7D%2C%0A%20%20%20%20%5Cqquad%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7Bankle%7D%20%3D%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7Bknee%7D%20%2B%20%5Comega_%7Bshank%7D%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7Bankle%2Fknee%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20**Before%20you%20run%20the%20next%20cell**%2C%20predict%3A%20how%20many%20times%20faster%20than%20the%20hip%20does%20the%20ankle%20move%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20swing_hip%20%3D%20np.array(%5B0.0%2C%200.90%5D)%20%20%23%20m%0A%20%20%20%20swing_v_hip%20%3D%20np.array(%5B1.4%2C%200.0%5D)%20%20%23%20m%2Fs%2C%20the%20walking%20speed%0A%20%20%20%20swing_omega_thigh%2C%20swing_omega_shank%20%3D%203.0%2C%204.0%20%20%23%20rad%2Fs%2C%20counterclockwise%20%3D%20swinging%20forward%0A%0A%20%20%20%20%23%20segment%20vectors%20from%20the%20angles%20to%20the%20downward%20vertical%20(positive%20%3D%20forward)%0A%20%20%20%20_r_knee_hip%20%3D%200.42%20*%20np.array(%5Bnp.sin(np.radians(20))%2C%20-np.cos(np.radians(20))%5D)%0A%20%20%20%20_r_ankle_knee%20%3D%200.43%20*%20np.array(%5Bnp.sin(np.radians(-15))%2C%20-np.cos(np.radians(-15))%5D)%0A%20%20%20%20swing_knee%20%3D%20swing_hip%20%2B%20_r_knee_hip%0A%20%20%20%20swing_ankle%20%3D%20swing_knee%20%2B%20_r_ankle_knee%0A%0A%20%20%20%20swing_v_knee%20%3D%20swing_v_hip%20%2B%20omega_cross(swing_omega_thigh%2C%20_r_knee_hip)%0A%20%20%20%20swing_v_ankle%20%3D%20swing_v_knee%20%2B%20omega_cross(swing_omega_shank%2C%20_r_ankle_knee)%0A%0A%20%20%20%20print(%22%20%20%20%20%20%20%20%20%20%20%20%20position%20%5Bm%5D%20%20%20%20%20%20velocity%20%5Bm%2Fs%5D%20%20%20%20speed%20%5Bm%2Fs%5D%22)%0A%20%20%20%20for%20_name%2C%20_r%2C%20_v%20in%20%5B%0A%20%20%20%20%20%20%20%20(%22hip%20%20%22%2C%20swing_hip%2C%20swing_v_hip)%2C%0A%20%20%20%20%20%20%20%20(%22knee%20%22%2C%20swing_knee%2C%20swing_v_knee)%2C%0A%20%20%20%20%20%20%20%20(%22ankle%22%2C%20swing_ankle%2C%20swing_v_ankle)%2C%0A%20%20%20%20%5D%3A%0A%20%20%20%20%20%20%20%20print(f%22%7B_name%7D%20%20%20%7B_r.round(3)%7D%20%20%20%7B_v.round(3)%7D%20%20%20%7Bnp.linalg.norm(_v)%3A6.2f%7D%22)%0A%20%20%20%20print(f%22%5CnThe%20ankle%20moves%20%7Bnp.linalg.norm(swing_v_ankle)%20%2F%20np.linalg.norm(swing_v_hip)%3A.1f%7D%20times%20faster%20than%20the%20hip%22)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20swing_ankle%2C%0A%20%20%20%20%20%20%20%20swing_hip%2C%0A%20%20%20%20%20%20%20%20swing_knee%2C%0A%20%20%20%20%20%20%20%20swing_omega_shank%2C%0A%20%20%20%20%20%20%20%20swing_v_ankle%2C%0A%20%20%20%20%20%20%20%20swing_v_hip%2C%0A%20%20%20%20%20%20%20%20swing_v_knee%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20plt%2C%0A%20%20%20%20swing_ankle%2C%0A%20%20%20%20swing_hip%2C%0A%20%20%20%20swing_knee%2C%0A%20%20%20%20swing_v_ankle%2C%0A%20%20%20%20swing_v_hip%2C%0A%20%20%20%20swing_v_knee%2C%0A)%3A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(6%2C%205.5))%0A%20%20%20%20_ax.plot(*zip(swing_hip%2C%20swing_knee)%2C%20color%3D%22tab%3Agreen%22%2C%20linewidth%3D6%2C%20solid_capstyle%3D%22round%22%2C%20label%3D%22thigh%22)%0A%20%20%20%20_ax.plot(*zip(swing_knee%2C%20swing_ankle)%2C%20color%3D%22tab%3Aolive%22%2C%20linewidth%3D6%2C%20solid_capstyle%3D%22round%22%2C%20label%3D%22shank%22)%0A%20%20%20%20for%20_r%2C%20_v%20in%20%5B(swing_hip%2C%20swing_v_hip)%2C%20(swing_knee%2C%20swing_v_knee)%2C%20(swing_ankle%2C%20swing_v_ankle)%5D%3A%0A%20%20%20%20%20%20%20%20_ax.quiver(*_r%2C%20*(0.1%20*%20_v)%2C%20angles%3D%22xy%22%2C%20scale_units%3D%22xy%22%2C%20scale%3D1%2C%20width%3D0.008%2C%20color%3D%22tab%3Ablue%22)%0A%20%20%20%20%20%20%20%20_ax.plot(*_r%2C%20%22ko%22)%0A%20%20%20%20_ax.set_aspect(%22equal%22)%0A%20%20%20%20_ax.set_xlim(-0.1%2C%200.6)%0A%20%20%20%20_ax.set_ylim(0%2C%201.0)%0A%20%20%20%20_ax.set_xlabel(%22x%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_ylabel(%22y%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_title(%22Velocities%20in%20mid-swing%20(arrows%20drawn%200.1%20s%20long)%22)%0A%20%20%20%20_ax.legend(loc%3D%22upper%20right%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20ankle%20moves%20at%204.25%20m%2Fs%2C%20three%20times%20the%20walking%20speed%2C%20and%20almost%20horizontally.%20Each%20link%20adds%20its%20own%20rotational%20part%3A%201.26%20m%2Fs%20from%20the%20thigh%20and%201.72%20m%2Fs%20from%20the%20shank%2C%20on%20top%20of%20the%201.4%20m%2Fs%20of%20the%20hip.%20The%20vertical%20components%2C%20upward%20at%20the%20knee%20and%20downward%20from%20the%20shank's%20rotation%2C%20nearly%20cancel%20at%20the%20ankle%2C%20which%20is%20why%20the%20foot%20skims%20forward%20close%20to%20the%20ground%20instead%20of%20rising.%20This%20is%20the%20same%20chaining%20of%20rigid-body%20equations%20that%20%5BKinematic%20chain%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fkinematic_chain.py)%20builds%20up%20with%20joint%20angles.%0A%0A%20%20%20%20**Exercise%203.**%20Where%20is%20the%20instantaneous%20centre%20of%20rotation%20of%20the%20shank%20at%20this%20instant%3F%20Is%20it%20on%20the%20shank%3F%20Which%20point%20of%20the%20shank%20moves%20most%20slowly%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20swing_ankle%2C%0A%20%20%20%20swing_hip%2C%0A%20%20%20%20swing_knee%2C%0A%20%20%20%20swing_omega_shank%2C%0A%20%20%20%20swing_v_knee%2C%0A)%3A%0A%20%20%20%20_ic%20%3D%20instant_centre(swing_knee%2C%20swing_v_knee%2C%20swing_omega_shank)%0A%20%20%20%20_from_knee%20%3D%20_ic%20-%20swing_knee%0A%20%20%20%20%23%20speed%20of%20points%20along%20the%20shank%2C%20from%20the%20knee%20(s%20%3D%200)%20to%20the%20ankle%20(s%20%3D%201)%0A%20%20%20%20_s%20%3D%20np.linspace(0%2C%201%2C%20101)%0A%20%20%20%20_points%20%3D%20swing_knee%20%2B%20_s%5B%3A%2C%20np.newaxis%5D%20*%20(swing_ankle%20-%20swing_knee)%0A%20%20%20%20_speeds%20%3D%20np.linalg.norm(swing_v_knee%20%2B%20omega_cross(swing_omega_shank%2C%20_points%20-%20swing_knee)%2C%20axis%3D1)%0A%20%20%20%20mo.accordion(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Solution%20to%20Exercise%203%22%3A%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20Use%20the%20knee%20as%20the%20reference%20point%2C%20with%20the%20velocity%20of%20the%20knee%20found%20above%20and%20the%20shank's%20angular%20velocity%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BIC%7D%20%3D%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7Bknee%7D%20%2B%20%5Cfrac%7B%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7Bknee%7D%7D%7B%5Comega_%7Bshank%7D%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20f%22%22%22%0A%20%20%20%20The%20instantaneous%20centre%20is%20at%20(%7B_ic%5B0%5D%3A.3f%7D%2C%20%7B_ic%5B1%5D%3A.3f%7D)%20m%3A%20%7Bnp.linalg.norm(_from_knee)%3A.2f%7D%20m%20from%20the%20knee%2C%20%7B_from_knee%5B1%5D%3A.2f%7D%20m%20above%20it%20and%20%7Babs(_from_knee%5B0%5D)%3A.2f%7D%20m%20behind%20it.%20That%20is%20%7B_ic%5B1%5D%20-%20swing_hip%5B1%5D%3A.2f%7D%20m%20above%20the%20hip%2C%20well%20off%20the%20shank%3A%20at%20this%20instant%20the%20shank%20moves%20mostly%20forward%2C%20and%20turns%20about%20a%20point%20high%20above%20it.%0A%0A%20%20%20%20Along%20the%20shank%2C%20the%20speed%20grows%20with%20the%20distance%20from%20the%20instantaneous%20centre%2C%20so%20the%20slowest%20point%20of%20the%20shank%20is%20the%20one%20closest%20to%20it%3A%20the%20knee%2C%20at%20%7B_speeds%5B0%5D%3A.2f%7D%20m%2Fs%20(the%20speed%20rises%20steadily%20to%20%7B_speeds%5B-1%5D%3A.2f%7D%20m%2Fs%20at%20the%20ankle).%20Of%20all%20its%20points%2C%20only%20the%20instantaneous%20centre%20itself%2C%20which%20is%20not%20part%20of%20the%20shank%2C%20has%20zero%20velocity.%0A%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Back%20to%20the%20push%20rim%3A%20rolling%20without%20slipping%0A%0A%20%20%20%20Now%20the%20wheelchair.%20Take%20a%20wheel%20of%20radius%20%24R%24%20%3D%200.30%20m%2C%20with%20a%20push%20rim%20of%20radius%20%24r%24%20%3D%200.27%20m%2C%20rolling%20to%20the%20right%20(%24%2Bx%24)%20at%20%24v%24%20%3D%201.5%20m%2Fs.%20Use%20the%20hub%20as%20the%20reference%20point%20A.%0A%0A%20%20%20%20If%20the%20wheel%20does%20not%20slip%2C%20the%20point%20C%20of%20the%20tyre%20in%20contact%20with%20the%20ground%20is%20momentarily%20at%20rest%2C%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_C%20%3D%200%24.%20The%20velocity%20equation%20then%20gives%20the%20angular%20velocity%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_C%20%3D%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%20%2B%20%5Comega%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BC%2FA%7D%20%3D%20v%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%20%5Comega%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20(-R%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D)%20%3D%20(v%20%2B%20%5Comega%20R)%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%3D%200%0A%20%20%20%20%5Cquad%5CLongrightarrow%5Cquad%0A%20%20%20%20%5Comega%20%3D%20-%5Cfrac%7Bv%7D%7BR%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20minus%20sign%20says%20the%20wheel%20turns%20clockwise%20as%20it%20rolls%20to%20the%20right%2C%20as%20it%20should.%20Here%20that%20is%20%24-5%24%20rad%2Fs%2C%20about%200.8%20turns%20per%20second.%0A%0A%20%20%20%20**Before%20you%20run%20the%20next%20cell**%2C%20return%20to%20Guiding%20question%200.1%20and%20put%20numbers%20on%20it.%20How%20fast%20does%20the%20top%20of%20the%20push%20rim%20move%3F%20And%20its%20lowest%20point%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20v_chair%20%3D%201.5%20%20%23%20m%2Fs%0A%20%20%20%20R_wheel%20%3D%200.30%20%20%23%20m%0A%20%20%20%20r_rim%20%3D%200.27%20%20%23%20m%0A%20%20%20%20omega_wheel%20%3D%20-v_chair%20%2F%20R_wheel%20%20%23%20rad%2Fs%2C%20rolling%20without%20slipping%0A%0A%20%20%20%20_v_A%20%3D%20np.array(%5Bv_chair%2C%200.0%5D)%0A%20%20%20%20print(f%22omega%20%3D%20%7Bomega_wheel%3A.1f%7D%20rad%2Fs%5Cn%22)%0A%20%20%20%20print(%22Point%20of%20the%20push%20rim%20%20%20%20%20%20%20%20%20velocity%20%5Bm%2Fs%5D%20%20%20%20%20%20speed%20%5Bm%2Fs%5D%22)%0A%20%20%20%20for%20_beta%20in%20%5B0%2C%2030%2C%2060%2C%2090%2C%20120%2C%20150%2C%20180%5D%3A%0A%20%20%20%20%20%20%20%20_r_PA%20%3D%20r_rim%20*%20np.array(%5Bnp.sin(np.radians(_beta))%2C%20np.cos(np.radians(_beta))%5D)%0A%20%20%20%20%20%20%20%20_v_P%20%3D%20_v_A%20%2B%20omega_cross(omega_wheel%2C%20_r_PA)%0A%20%20%20%20%20%20%20%20print(f%22%7B_beta%3A3d%7D%20degrees%20ahead%20of%20the%20top%20%20%20%7B_v_P.round(3)%20%2B%200.0%7D%20%20%20%7Bnp.linalg.norm(_v_P)%3A6.3f%7D%22)%0A%20%20%20%20return%20R_wheel%2C%20omega_wheel%2C%20r_rim%2C%20v_chair%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20angle%20of%20each%20point%20is%20measured%20from%20the%20top%20of%20the%20push%20rim%2C%20positive%20towards%20the%20front%20of%20the%20chair.%20The%20top%20of%20the%20push%20rim%20moves%20at%202.85%20m%2Fs%2C%20almost%20twice%20the%20speed%20of%20the%20chair%3B%20its%20lowest%20point%20at%20only%200.15%20m%2Fs.%20The%20rotational%20part%2C%20%24%5Comega%20r%24%20%3D%201.35%20m%2Fs%2C%20is%20added%20to%20the%20chair's%20speed%20at%20the%20top%20and%20subtracted%20at%20the%20bottom.%20A%20user%20who%20grabs%20the%20rim%20on%20its%20upper%20part%2C%20where%20the%20hand%20can%20push%20forward%2C%20must%20therefore%20swing%20the%20hand%20forward%20at%20well%20over%202%20m%2Fs%20just%20to%20catch%20it%2C%20faster%20than%20the%20chair%20itself.%0A%0A%20%20%20%20Let's%20draw%20the%20velocities%20of%20points%20all%20around%20the%20tyre%20and%20the%20push%20rim%2C%20together%20with%20the%20point%20C%3A%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(R_wheel%2C%20np%2C%20omega_wheel%2C%20plt%2C%20r_rim%2C%20v_chair)%3A%0A%20%20%20%20_beta%20%3D%20np.radians(np.arange(0%2C%20360%2C%2030))%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(7%2C%206))%0A%20%20%20%20_phi%20%3D%20np.linspace(0%2C%202%20*%20np.pi%2C%20200)%0A%20%20%20%20_ax.axhline(0%2C%20color%3D%22k%22%2C%20linewidth%3D2)%0A%20%20%20%20for%20_radius%2C%20_color%2C%20_label%20in%20%5B(R_wheel%2C%20%22tab%3Ablue%22%2C%20%22tyre%22)%2C%20(r_rim%2C%20%22tab%3Ared%22%2C%20%22push%20rim%22)%5D%3A%0A%20%20%20%20%20%20%20%20_ax.plot(_radius%20*%20np.cos(_phi)%2C%20R_wheel%20%2B%20_radius%20*%20np.sin(_phi)%2C%20color%3D_color%2C%20linewidth%3D1)%0A%20%20%20%20%20%20%20%20_r_PA%20%3D%20_radius%20*%20np.column_stack((np.sin(_beta)%2C%20np.cos(_beta)))%0A%20%20%20%20%20%20%20%20_v_P%20%3D%20np.array(%5Bv_chair%2C%200.0%5D)%20%2B%20omega_cross(omega_wheel%2C%20_r_PA)%0A%20%20%20%20%20%20%20%20_ax.quiver(%0A%20%20%20%20%20%20%20%20%20%20%20%20_r_PA%5B%3A%2C%200%5D%2C%20R_wheel%20%2B%20_r_PA%5B%3A%2C%201%5D%2C%200.1%20*%20_v_P%5B%3A%2C%200%5D%2C%200.1%20*%20_v_P%5B%3A%2C%201%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20angles%3D%22xy%22%2C%20scale_units%3D%22xy%22%2C%20scale%3D1%2C%20width%3D0.005%2C%20color%3D_color%2C%20label%3D_label%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20_ax.quiver(0%2C%20R_wheel%2C%200.1%20*%20v_chair%2C%200%2C%20angles%3D%22xy%22%2C%20scale_units%3D%22xy%22%2C%20scale%3D1%2C%20width%3D0.005%2C%20color%3D%22k%22%2C%20label%3D%22hub%22)%0A%20%20%20%20_ax.plot(0%2C%200%2C%20%22ko%22%2C%20markersize%3D8)%0A%20%20%20%20_ax.annotate(%22C%22%2C%20(0%2C%200)%2C%20xytext%3D(-0.05%2C%20-0.06)%2C%20fontsize%3D14)%0A%20%20%20%20_ax.set_aspect(%22equal%22)%0A%20%20%20%20_ax.set_xlim(-0.45%2C%200.75)%0A%20%20%20%20_ax.set_ylim(-0.12%2C%200.75)%0A%20%20%20%20_ax.set_xlabel(%22x%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_ylabel(%22y%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_title(%22Velocities%20of%20a%20rolling%20wheel%20(arrows%20drawn%200.1%20s%20long)%22)%0A%20%20%20%20_ax.legend(loc%3D%22upper%20right%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Look%20at%20the%20arrows%20as%20a%20whole.%20Every%20one%20of%20them%20is%20perpendicular%20to%20the%20line%20joining%20its%20point%20to%20C%2C%20and%20its%20length%20is%20proportional%20to%20the%20distance%20from%20C%3A%20the%20top%20of%20the%20tyre%2C%20twice%20as%20far%20from%20C%20as%20the%20hub%2C%20moves%20twice%20as%20fast%2C%20at%203%20m%2Fs.%20At%20this%20instant%20the%20wheel%20moves%20exactly%20as%20if%20it%20were%20rotating%20about%20C.%20That%20answers%20Guiding%20question%200.3%3A%20about%20both%2C%20in%20a%20sense%2C%20but%20only%20C%20is%20at%20rest.%0A%0A%20%20%20%20%23%23%23%20The%20instantaneous%20centre%20of%20rotation%0A%0A%20%20%20%20Any%20rigid%20body%20moving%20in%20a%20plane%20with%20%24%5Comega%20%5Cneq%200%24%20has%2C%20at%20each%20instant%2C%20such%20a%20point%20of%20zero%20velocity%3A%20the%20**instantaneous%20centre%20of%20rotation**.%20Setting%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BIC%7D%20%3D%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%20%2B%20%5Comega%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BIC%2FA%7D%20%3D%200%24%20and%20solving%20for%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BIC%2FA%7D%24%20gives%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BIC%2FA%7D%20%3D%20%5Cfrac%7B%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%7D%7B%5Comega%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20as%20you%20can%20verify%20by%20substituting%20it%20back%3A%20%24%5Comega%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20(%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A)%2F%5Comega%20%3D%20-%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%24%20for%20any%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%24%20in%20the%20plane.%20The%20instantaneous%20centre%20lies%20on%20the%20perpendicular%20to%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%24%2C%20at%20a%20distance%20%24%5CVert%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%5CVert%2F%7C%5Comega%7C%24%3A%20the%20faster%20the%20translation%20compared%20with%20the%20rotation%2C%20the%20further%20away%20it%20is.%20A%20body%20that%20only%20translates%20(%24%5Comega%20%3D%200%24)%20has%20its%20instantaneous%20centre%20at%20infinity.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.function%0Adef%20instant_centre(r_A%2C%20v_A%2C%20omega)%3A%0A%20%20%20%20%22%22%22Instantaneous%20centre%20of%20rotation%20of%20a%20rigid%20body%20moving%20in%20a%20plane%2C%20from%0A%20%20%20%20the%20position%20r_A%20and%20velocity%20v_A%20of%20one%20of%20its%20points%20and%20its%20angular%0A%20%20%20%20velocity%20omega%20(nonzero).%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20return%20np.asarray(r_A%2C%20dtype%3Dfloat)%20%2B%20omega_cross(1.0%2C%20v_A)%20%2F%20omega%0A%0A%0A%40app.cell%0Adef%20_(R_wheel%2C%20ex1_omega%2C%20ex1_v_A%2C%20np%2C%20omega_wheel%2C%20v_chair)%3A%0A%20%20%20%20print(%22Wheel%2C%20instantaneous%20centre%3A%22%2C%20instant_centre(%5B0%2C%20R_wheel%5D%2C%20%5Bv_chair%2C%200%5D%2C%20omega_wheel).round(4)%20%2B%200.0%2C%20%22m%22)%0A%20%20%20%20_ic%20%3D%20instant_centre(%5B0%2C%200%5D%2C%20ex1_v_A%2C%20ex1_omega)%0A%20%20%20%20print(f%22Ellipse%2C%20instantaneous%20centre%20relative%20to%20its%20centre%3A%20%7B_ic.round(2)%7D%20m%2C%20%7Bnp.linalg.norm(_ic)%3A.2f%7D%20m%20away%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20For%20the%20wheel%20the%20formula%20lands%20exactly%20on%20the%20contact%20point.%20For%20the%20ellipse%20of%20the%20previous%20example%2C%20the%20instantaneous%20centre%20is%202.74%20m%20from%20its%20geometric%20centre%2C%20and%20it%20stays%20at%20that%20position%20relative%20to%20the%20centre%20throughout%20the%20motion%2C%20because%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_A%24%20and%20%24%5Comega%24%20are%20both%20constant.%20The%20body%20turns%20around%20it%3A%20at%20some%20instants%20the%20instantaneous%20centre%20lies%20inside%20the%20ellipse%2C%20at%20others%20outside%2C%20and%20it%20is%20not%20attached%20to%20any%20particular%20point%20of%20the%20body.%0A%0A%20%20%20%20The%20instantaneous%20centre%20has%20a%20long%20history%20in%20joint%20biomechanics.%20A%20hinge%20would%20keep%20its%20centre%20of%20rotation%20fixed%20in%20both%20bones%3B%20the%20knee%20does%20not.%20Its%20instantaneous%20centre%20moves%20as%20the%20knee%20flexes%2C%20because%20the%20femoral%20condyles%20roll%20and%20slide%20on%20the%20tibia%2C%20and%20Frankel%20et%20al.%20(1971)%20used%20the%20path%20of%20the%20instantaneous%20centres%20of%20the%20knee%20to%20study%20its%20internal%20derangements.%0A%0A%20%20%20%20**Guiding%20questions%202.**%0A%0A%20%20%20%201.%20Where%20is%20the%20instantaneous%20centre%20of%20a%20body%20that%20rotates%20about%20a%20fixed%20pivot%3F%20Of%20a%20body%20that%20only%20translates%3F%0A%20%20%20%202.%20During%20the%20stance%20phase%20of%20walking%2C%20roughly%20where%20is%20the%20instantaneous%20centre%20of%20the%20shank%3F%20(Hint%3A%20which%20point%20of%20the%20shank%20moves%20least%20while%20the%20foot%20is%20flat%20on%20the%20ground%3F)%0A%20%20%20%203.%20The%20instantaneous%20centre%20of%20the%20wheel%20is%20the%20point%20C%20of%20the%20tyre.%20A%20tenth%20of%20a%20second%20later%2C%20is%20it%20still%20the%20same%20point%20of%20the%20tyre%3F%0A%0A%20%20%20%20**Challenge%201.**%20Add%20the%20instantaneous%20centre%20to%20the%20slider%20figure%20of%20the%20ellipse%2C%20and%20draw%20dashed%20lines%20from%20it%20to%20the%20centre%20and%20to%20P.%20Check%20by%20eye%20that%20each%20velocity%20arrow%20is%20perpendicular%20to%20its%20dashed%20line.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Example%3A%20when%20the%20wheel%20slips%0A%0A%20%20%20%20Rolling%20without%20slipping%20is%20a%20condition%2C%20not%20a%20law%3A%20on%20a%20wet%20floor%20or%20a%20loose%20surface%2C%20a%20wheel%20can%20spin%20or%20skid.%20The%20instantaneous%20centre%20then%20leaves%20the%20contact%20point%2C%20and%20where%20it%20goes%20tells%20you%20which%20way%20the%20wheel%20is%20slipping.%0A%0A%20%20%20%20Take%20the%20wheelchair%20wheel%20(%24R%24%20%3D%200.30%20m)%20with%20its%20hub%20moving%20forward%20at%201.0%20m%2Fs.%20Rolling%20without%20slipping%20would%20need%20%24%5Comega%20%3D%20-v%2FR%20%3D%20-3.33%24%20rad%2Fs.%20Consider%20two%20cases%3A%20the%20user%20pushes%20too%20hard%20on%20a%20slippery%20floor%20and%20the%20wheel%20*spins*%20at%20%24-5%24%20rad%2Fs%2C%20or%20the%20user%20brakes%20and%20the%20wheel%20turns%20too%20slowly%2C%20at%20%24-3%24%20rad%2Fs%2C%20so%20that%20it%20*skids*.%0A%0A%20%20%20%20**Before%20you%20run%20the%20next%20cell**%2C%20predict%20for%20each%20case%3A%20does%20the%20contact%20point%20slide%20forward%20or%20backward%3F%20Is%20the%20instantaneous%20centre%20above%20or%20below%20the%20ground%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(R_wheel%2C%20np)%3A%0A%20%20%20%20_v_hub%20%3D%20np.array(%5B1.0%2C%200.0%5D)%20%20%23%20m%2Fs%0A%20%20%20%20_r_hub%20%3D%20np.array(%5B0.0%2C%20R_wheel%5D)%20%20%23%20m%2C%20the%20contact%20point%20is%20at%20the%20origin%0A%20%20%20%20for%20_omega%2C%20_case%20in%20%5B(-5.0%2C%20%22spinning%22)%2C%20(-1.0%20%2F%20R_wheel%2C%20%22rolling%22)%2C%20(-3.0%2C%20%22skidding%22)%5D%3A%0A%20%20%20%20%20%20%20%20_v_contact%20%3D%20_v_hub%20%2B%20omega_cross(_omega%2C%20-_r_hub)%0A%20%20%20%20%20%20%20%20_ic%20%3D%20instant_centre(_r_hub%2C%20_v_hub%2C%20_omega)%0A%20%20%20%20%20%20%20%20print(%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22%7B_case%3A9s%7D%20omega%20%3D%20%7B_omega%3A5.2f%7D%20rad%2Fs%3A%20%20velocity%20of%20the%20contact%20point%20%7B_v_contact.round(3)%20%2B%200.0%7D%20m%2Fs%2C%22%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22%20%20instantaneous%20centre%20at%20height%20%7B_ic%5B1%5D%3A%2B.3f%7D%20m%22%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20A%20spinning%20wheel%20slides%20backward%20at%20the%20contact%20point%2C%20at%200.5%20m%2Fs%2C%20and%20its%20instantaneous%20centre%20rises%20inside%20the%20wheel%2C%2010%20cm%20above%20the%20ground%3A%20the%20wheel%20turns%20as%20if%20around%20a%20point%20between%20the%20floor%20and%20the%20hub.%20A%20skidding%20wheel%20slides%20forward%2C%20at%200.1%20m%2Fs%2C%20and%20its%20instantaneous%20centre%20drops%203.3%20cm%20*below*%20the%20ground.%20Only%20rolling%20without%20slipping%20puts%20it%20exactly%20at%20the%20contact%20point.%0A%0A%20%20%20%20The%20same%20reasoning%20applies%20to%20a%20foot.%20During%20stance%20the%20instantaneous%20centre%20of%20the%20foot%20should%20stay%20near%20the%20part%20of%20the%20foot%20in%20contact%20with%20the%20ground%3B%20when%20it%20drifts%20away%20from%20the%20contact%2C%20the%20foot%20is%20sliding%2C%20as%20in%20a%20slip%20on%20ice.%0A%0A%20%20%20%20**Exercise%204.**%20Seen%20from%20above%2C%20a%20wheelchair%20has%20its%20two%20wheels%200.6%20m%20apart%2C%20on%20a%20common%20axle.%20The%20left%20wheel%20moves%20forward%20at%201.0%20m%2Fs%20and%20the%20right%20wheel%20at%200.5%20m%2Fs.%20Treating%20the%20chair%20as%20a%20rigid%20body%20moving%20in%20the%20horizontal%20plane%2C%20with%20%24x%24%20forward%20and%20%24y%24%20to%20the%20left%2C%20find%20its%20angular%20velocity%20and%20its%20instantaneous%20centre.%20Which%20way%20is%20the%20chair%20turning%3F%0A%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solution%20to%20Exercise%204%0A%0A%20%20%20%20Put%20the%20left%20wheel%20at%20%24(0%2C%200.3)%24%20m%20and%20the%20right%20wheel%20at%20%24(0%2C%20-0.3)%24%20m.%20The%20velocity%20equation%20from%20the%20left%20wheel%20to%20the%20right%20wheel%20gives%0A%0A%20%20%20%20%24%24%0A%20%20%20%200.5%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%3D%201.0%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%20%5Comega%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20(-0.6%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D)%20%3D%20(1.0%20%2B%200.6%5C%2C%5Comega)%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%0A%20%20%20%20%5Cquad%5CLongrightarrow%5Cquad%0A%20%20%20%20%5Comega%20%3D%20-0.833%5C%3B%5Cmathrm%7Brad%2Fs%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20minus%20sign%20means%20clockwise%20seen%20from%20above%3A%20the%20chair%20turns%20to%20the%20right%2C%20towards%20the%20slower%20wheel.%20The%20instantaneous%20centre%2C%20from%20the%20left%20wheel%2C%20is%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BIC%7D%20%3D%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BL%7D%20%2B%20%5Cfrac%7B%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BL%7D%7D%7B%5Comega%7D%20%3D%200.3%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%20%2B%20%5Cfrac%7B1.0%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%7D%7B-0.833%7D%20%3D%20-0.9%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%5C%3B%5Cmathrm%7Bm%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20It%20lies%20on%20the%20line%20of%20the%20axle%2C%200.9%20m%20to%20the%20right%20of%20the%20centre%20of%20the%20chair%20and%200.6%20m%20beyond%20the%20right%20wheel%3A%20the%20chair%20is%20driving%20round%20a%20circle%20of%20radius%200.9%20m%2C%20at%20the%20speed%20of%20its%20centre%2C%200.75%20m%2Fs.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Acceleration%20of%20a%20point%20on%20a%20rigid%20body%0A%0A%20%20%20%20The%20acceleration%20of%20a%20point%20on%20a%20rigid%20body%20is%20obtained%20by%20differentiating%20the%20velocity%20equation.%20The%20derivative%20of%20%24%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%20follows%20the%20product%20rule%2C%20and%20the%20derivative%20of%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%20is%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BP%2FA%7D%20%3D%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cbegin%7Baligned%7D%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Ba%7D%7D_%7BP%2FO%7D%20%26%3D%20%5Cvec%7B%5Cmathbf%7Ba%7D%7D_%7BA%2FO%7D%20%2B%20%5Cdot%7B%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%20%2B%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D_%7BP%2FA%7D%20%5C%5C%0A%20%20%20%20%26%3D%20%5Cvec%7B%5Cmathbf%7Ba%7D%7D_%7BA%2FO%7D%20%2B%20%5Cdot%7B%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%20%2B%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20(%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D)%20%5C%5C%0A%20%20%20%20%26%3D%20%5Cvec%7B%5Cmathbf%7Ba%7D%7D_%7BA%2FO%7D%20%2B%20%5Cddot%7B%5Ctheta%7D%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%20-%20%5Cdot%7B%5Ctheta%7D%5E2%5C%2C%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%0A%20%20%20%20%5Cend%7Baligned%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20last%20line%20holds%20for%20planar%20motion%2C%20where%20%24%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%24%20is%20perpendicular%20to%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24.%20(In%20general%2C%20%24%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20(%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D)%20%3D%20(%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%5Ccdot%5Cvec%7B%5Cmathbf%7Br%7D%7D)%5C%2C%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20-%20%5Comega%5E2%5C%2C%5Cvec%7B%5Cmathbf%7Br%7D%7D%24.)%20This%20is%20the%20second%20equation%20of%20this%20notebook%2C%20and%20the%20acceleration%20has%20three%20terms%3A%0A%0A%20%20%20%20-%20%24%5Cvec%7B%5Cmathbf%7Ba%7D%7D_%7BA%2FO%7D%24%3A%20the%20acceleration%20of%20the%20reference%20point%20A%2C%20which%20carries%20the%20translation.%0A%20%20%20%20-%20%24%5Cddot%7B%5Ctheta%7D%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%3A%20the%20acceleration%20of%20P%20due%20to%20the%20angular%20acceleration%20of%20the%20body.%20It%20is%20perpendicular%20to%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%2C%20the%20tangential%20acceleration%20%24r%5Calpha%24%20of%20circular%20motion.%0A%20%20%20%20-%20%24-%5Cdot%7B%5Ctheta%7D%5E2%5C%2C%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BP%2FA%7D%24%3A%20the%20acceleration%20of%20P%20due%20to%20the%20angular%20velocity%20of%20the%20body.%20It%20points%20from%20P%20to%20A%2C%20and%20is%20known%20as%20the%20centripetal%20acceleration%2C%20%24%5Comega%5E2%20r%24.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Example%3A%20a%20body%20that%20speeds%20up%0A%0A%20%20%20%20Below%20is%20the%20same%20body%2C%20now%20with%20an%20angular%20acceleration%20of%20%24%5Calpha%20%3D%20%5Cpi%2F150%24%20rad%2Fs%C2%B2%20and%20an%20initial%20angular%20velocity%20of%20%24%5Comega_0%20%3D%20%5Cpi%2F100%24%20rad%2Fs.%20Its%20centre%20accelerates%20with%20%24%5Cvec%7B%5Cmathbf%7Ba%7D%7D_A%20%3D%200.01%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%200.05%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%24%20m%2Fs%C2%B2%2C%20starting%20from%20rest.%20The%20angle%2C%20the%20angular%20velocity%20and%20the%20motion%20of%20the%20centre%20follow%20from%20constant%20accelerations%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Ctheta%20%3D%20%5Comega_0%20t%20%2B%20%5Cfrac%7B%5Calpha%7D%7B2%7Dt%5E2%2C%20%5Cqquad%20%5Comega%20%3D%20%5Comega_0%20%2B%20%5Calpha%20t%2C%20%5Cqquad%20%5Cvec%7B%5Cmathbf%7Br%7D%7D_A%20%3D%20%5Cfrac%7B%5Cvec%7B%5Cmathbf%7Ba%7D%7D_A%7D%7B2%7Dt%5E2%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20blue%20arrow%20is%20the%20acceleration%20of%20P%2C%20drawn%205%20times%20its%20size%20in%20m%2Fs%C2%B2.%0A%0A%20%20%20%20**Before%20you%20move%20the%20slider**%2C%20predict%3A%20which%20of%20the%20three%20terms%20dominates%20the%20acceleration%20of%20P%20at%20the%20start%2C%20and%20which%20at%20the%20end%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20ex2_alpha%20%3D%20np.pi%20%2F%20150%20%20%23%20rad%2Fs2%2C%20angular%20acceleration%0A%20%20%20%20ex2_omega0%20%3D%20np.pi%20%2F%20100%20%20%23%20rad%2Fs%2C%20initial%20angular%20velocity%0A%20%20%20%20ex2_a_A%20%3D%20np.array(%5B0.01%2C%200.05%5D)%20%20%23%20m%2Fs2%2C%20acceleration%20of%20the%20centre%0A%20%20%20%20return%20ex2_a_A%2C%20ex2_alpha%2C%20ex2_omega0%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20t_slider_2%20%3D%20mo.ui.slider(start%3D0%2C%20stop%3D20%2C%20step%3D0.5%2C%20value%3D20%2C%20label%3D%22Time%20%5Bs%5D%22%2C%20show_value%3DTrue)%0A%20%20%20%20t_slider_2%0A%20%20%20%20return%20(t_slider_2%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20FancyArrowPatch%2C%0A%20%20%20%20body%2C%0A%20%20%20%20ex2_a_A%2C%0A%20%20%20%20ex2_alpha%2C%0A%20%20%20%20ex2_omega0%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20t_slider_2%2C%0A%20%20%20%20tip%2C%0A)%3A%0A%20%20%20%20_t%20%3D%20t_slider_2.value%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(6.5%2C%206.5))%0A%20%20%20%20for%20_tg%20in%20np.arange(0%2C%20_t%2C%204)%3A%0A%20%20%20%20%20%20%20%20_outline%20%3D%20rotation_matrix(ex2_omega0%20*%20_tg%20%2B%20ex2_alpha%20%2F%202%20*%20_tg**2)%20%40%20body%20%2B%20(ex2_a_A%20%2F%202%20*%20_tg**2)%5B%3A%2C%20np.newaxis%5D%0A%20%20%20%20%20%20%20%20_ax.plot(_outline%5B0%5D%2C%20_outline%5B1%5D%2C%20color%3D%220.75%22%2C%20linewidth%3D1)%0A%0A%20%20%20%20_theta%20%3D%20ex2_omega0%20*%20_t%20%2B%20ex2_alpha%20%2F%202%20*%20_t**2%0A%20%20%20%20_omega%20%3D%20ex2_omega0%20%2B%20ex2_alpha%20*%20_t%0A%20%20%20%20_r_A%20%3D%20ex2_a_A%20%2F%202%20*%20_t**2%0A%20%20%20%20_R%20%3D%20rotation_matrix(_theta)%0A%20%20%20%20_outline%20%3D%20_R%20%40%20body%20%2B%20_r_A%5B%3A%2C%20np.newaxis%5D%0A%20%20%20%20_ax.fill(_outline%5B0%5D%2C%20_outline%5B1%5D%2C%20color%3D%22tab%3Agreen%22%2C%20alpha%3D0.6)%0A%0A%20%20%20%20_r_PA%20%3D%20_R%20%40%20tip%0A%20%20%20%20_tangential%20%3D%20omega_cross(ex2_alpha%2C%20_r_PA)%0A%20%20%20%20_centripetal%20%3D%20-(_omega**2)%20*%20_r_PA%0A%20%20%20%20_a_P%20%3D%20ex2_a_A%20%2B%20_tangential%20%2B%20_centripetal%0A%20%20%20%20_ax.add_patch(%0A%20%20%20%20%20%20%20%20FancyArrowPatch(_r_A%20%2B%20_r_PA%2C%20_r_A%20%2B%20_r_PA%20%2B%205%20*%20_a_P%2C%20mutation_scale%3D20%2C%20lw%3D2%2C%20arrowstyle%3D%22-%3E%22%2C%20color%3D%22tab%3Ablue%22)%0A%20%20%20%20)%0A%20%20%20%20_ax.plot(*_r_A%2C%20%22k.%22)%0A%20%20%20%20_ax.set_xlim(-10%2C%2020)%0A%20%20%20%20_ax.set_ylim(-10%2C%2020)%0A%20%20%20%20_ax.set_aspect(%22equal%22)%0A%20%20%20%20_ax.grid(True)%0A%20%20%20%20_ax.set_xlabel(%22x%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_ylabel(%22y%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_title(f%22t%20%3D%20%7B_t%3A.1f%7D%20s%2C%20omega%20%3D%20%7B_omega%3A.3f%7D%20rad%2Fs%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%0A%20%20%20%20print(f%22%7Ca_A%7C%20%20%20%20%20%20%20%20%20%3D%20%7Bnp.linalg.norm(ex2_a_A)%3A.3f%7D%20m%2Fs2%22)%0A%20%20%20%20print(f%22%7Calpha%20x%20r%7C%20%20%20%3D%20%7Bnp.linalg.norm(_tangential)%3A.3f%7D%20m%2Fs2%22)%0A%20%20%20%20print(f%22%7Comega%5E2%20r%7C%20%20%20%3D%20%7Bnp.linalg.norm(_centripetal)%3A.3f%7D%20m%2Fs2%22)%0A%20%20%20%20print(f%22%7Ca_P%7C%20%20%20%20%20%20%20%20%20%3D%20%7Bnp.linalg.norm(_a_P)%3A.3f%7D%20m%2Fs2%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Let's%20see%20how%20the%20three%20terms%20evolve%2C%20and%20check%20the%20formula%20against%20the%20numerical%20second%20derivative%20of%20the%20position%20of%20P%3A%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(ex2_a_A%2C%20ex2_alpha%2C%20ex2_omega0%2C%20np%2C%20tip)%3A%0A%20%20%20%20_dt%20%3D%200.001%0A%20%20%20%20_t%20%3D%20np.arange(0%2C%2020%20%2B%20_dt%20%2F%202%2C%20_dt)%0A%20%20%20%20_theta%20%3D%20ex2_omega0%20*%20_t%20%2B%20ex2_alpha%20%2F%202%20*%20_t**2%0A%20%20%20%20_omega%20%3D%20ex2_omega0%20%2B%20ex2_alpha%20*%20_t%0A%20%20%20%20_r_A%20%3D%20ex2_a_A%20*%20_t%5B%3A%2C%20np.newaxis%5D%20**%202%20%2F%202%0A%20%20%20%20_r_PA%20%3D%20np.array(%5Brotation_matrix(_th)%20%40%20tip%20for%20_th%20in%20_theta%5D)%0A%0A%20%20%20%20_a_numerical%20%3D%20np.gradient(np.gradient(_r_A%20%2B%20_r_PA%2C%20_dt%2C%20axis%3D0%2C%20edge_order%3D2)%2C%20_dt%2C%20axis%3D0%2C%20edge_order%3D2)%0A%20%20%20%20_a_formula%20%3D%20ex2_a_A%20%2B%20omega_cross(ex2_alpha%2C%20_r_PA)%20-%20_omega%5B%3A%2C%20np.newaxis%5D%20**%202%20*%20_r_PA%0A%20%20%20%20_inner%20%3D%20slice(5%2C%20-5)%20%20%23%20the%20first%20and%20last%20samples%20of%20a%20second%20difference%20are%20less%20accurate%0A%20%20%20%20print(f%22Largest%20%7Ca_numerical%20-%20a_formula%7C%3A%20%7Bnp.abs(_a_numerical%5B_inner%5D%20-%20_a_formula%5B_inner%5D).max()%3A.1e%7D%20m%2Fs2%5Cn%22)%0A%0A%20%20%20%20print(%22%20%20%20t%20%20%20%20%20omega%20%20%20%20%7Ca_A%7C%20%20%7Calpha%20x%20r%7C%20%20%7Comega%5E2%20r%7C%20%20%20%7Ca_P%7C%22)%0A%20%20%20%20for%20_time%20in%20%5B0%2C%205%2C%2010%2C%2015%2C%2020%5D%3A%0A%20%20%20%20%20%20%20%20_i%20%3D%20np.argmin(np.abs(_t%20-%20_time))%0A%20%20%20%20%20%20%20%20print(%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22%7B_t%5B_i%5D%3A4.0f%7D%20s%20%20%7B_omega%5B_i%5D%3A.3f%7D%20%20%7Bnp.linalg.norm(ex2_a_A)%3A7.3f%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22%20%20%7Bnp.linalg.norm(omega_cross(ex2_alpha%2C%20_r_PA%5B_i%5D))%3A9.3f%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22%20%20%7B_omega%5B_i%5D%20**%202%20*%20np.linalg.norm(_r_PA%5B_i%5D)%3A11.3f%7D%20%20%7Bnp.linalg.norm(_a_formula%5B_i%5D)%3A7.3f%7D%20%20m%2Fs2%22%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20acceleration%20of%20the%20centre%20is%20small%20and%20constant%2C%200.051%20m%2Fs%C2%B2.%20The%20tangential%20term%20is%20constant%20too%2C%200.126%20m%2Fs%C2%B2%2C%20because%20both%20%24%5Calpha%24%20and%20the%20distance%20from%20A%20to%20P%20are%20constant.%20The%20centripetal%20term%20grows%20with%20the%20*square*%20of%20the%20angular%20velocity%3A%20negligible%20at%20the%20start%2C%200.006%20m%2Fs%C2%B2%2C%20it%20is%20the%20largest%20of%20the%20three%20by%20%24t%24%20%3D%2010%20s%2C%20and%20almost%20ten%20times%20the%20tangential%20term%20by%20%24t%24%20%3D%2020%20s%2C%20when%20the%20body%20turns%20at%200.45%20rad%2Fs.%20A%20steady%20angular%20acceleration%20produces%20an%20acceleration%20of%20P%20that%20is%20anything%20but%20steady.%0A%0A%20%20%20%20Notice%20also%20that%20at%20%24t%24%20%3D%2015%20s%20the%20magnitude%20of%20the%20total%2C%200.678%20m%2Fs%C2%B2%2C%20is%20smaller%20than%20that%20of%20the%20centripetal%20term%20alone%3A%20the%20terms%20are%20vectors%2C%20and%20they%20partly%20cancel.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Example%3A%20the%20giant%20swing%0A%0A%20%20%20%20In%20a%20giant%20swing%20on%20the%20high%20bar%2C%20a%20gymnast%20circles%20the%20bar%20with%20the%20body%20extended%2C%20hands%20fixed%20on%20the%20bar.%20The%20hands%20are%20a%20fixed%20pivot%2C%20so%20%24%5Cvec%7B%5Cmathbf%7Ba%7D%7D_A%20%3D%200%24%20and%20only%20the%20two%20rotational%20terms%20are%20left.%20Treat%20the%20body%20as%20rigid%2C%20hanging%20from%20the%20bar%2C%20with%20the%20shoulders%200.6%20m%2C%20the%20hips%201.25%20m%20and%20the%20feet%202.2%20m%20from%20the%20hands%2C%20and%20consider%20two%20instants%20of%20the%20downswing%3A%0A%0A%20%20%20%20-%20at%20the%20bottom%20of%20the%20swing%2C%20where%20the%20body%20turns%20fastest%2C%20%24%5Comega%24%20%3D%205%20rad%2Fs%2C%20and%20so%20is%20momentarily%20not%20speeding%20up%2C%20%24%5Calpha%20%3D%200%24%3B%0A%20%20%20%20-%20%2445%5E%5Ccirc%24%20before%20the%20bottom%2C%20with%20%24%5Comega%24%20%3D%204%20rad%2Fs%20and%20%24%5Calpha%24%20%3D%208%20rad%2Fs%C2%B2.%0A%0A%20%20%20%20These%20values%20are%20plausible%20for%20a%20giant%20swing%2C%20not%20measurements.%20**Before%20you%20run%20the%20next%20cell**%2C%20predict%3A%20at%20the%20bottom%2C%20which%20way%20do%20the%20accelerations%20point%2C%20and%20how%20large%20is%20the%20acceleration%20of%20the%20feet%20compared%20with%20%24g%24%3F%20And%20%2445%5E%5Ccirc%24%20before%20the%20bottom%2C%20do%20the%20accelerations%20still%20point%20at%20the%20bar%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20giant_distances%20%3D%20%7B%22shoulders%22%3A%200.6%2C%20%22hips%22%3A%201.25%2C%20%22feet%22%3A%202.2%7D%20%20%23%20m%20from%20the%20hands%0A%20%20%20%20giant_instants%20%3D%20%5B%20%20%23%20(label%2C%20body%20angle%20from%20the%20downward%20vertical%20%5Bdeg%5D%2C%20omega%20%5Brad%2Fs%5D%2C%20alpha%20%5Brad%2Fs2%5D)%0A%20%20%20%20%20%20%20%20(%22bottom%20of%20the%20swing%22%2C%200%2C%205.0%2C%200.0)%2C%0A%20%20%20%20%20%20%20%20(%2245%20degrees%20before%20the%20bottom%22%2C%20-45%2C%204.0%2C%208.0)%2C%0A%20%20%20%20%5D%0A%0A%20%20%20%20for%20_label%2C%20_angle%2C%20_omega%2C%20_alpha%20in%20giant_instants%3A%0A%20%20%20%20%20%20%20%20_direction%20%3D%20np.array(%5Bnp.sin(np.radians(_angle))%2C%20-np.cos(np.radians(_angle))%5D)%20%20%23%20from%20the%20bar%20along%20the%20body%0A%20%20%20%20%20%20%20%20print(f%22%7B_label%7D%3A%20omega%20%3D%20%7B_omega%7D%20rad%2Fs%2C%20alpha%20%3D%20%7B_alpha%7D%20rad%2Fs2%22)%0A%20%20%20%20%20%20%20%20for%20_name%2C%20_d%20in%20giant_distances.items()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_r%20%3D%20_d%20*%20_direction%0A%20%20%20%20%20%20%20%20%20%20%20%20_a%20%3D%20omega_cross(_alpha%2C%20_r)%20-%20_omega**2%20*%20_r%0A%20%20%20%20%20%20%20%20%20%20%20%20_to_bar%20%3D%20np.degrees(np.arccos(np.dot(_a%2C%20-_r)%20%2F%20(np.linalg.norm(_a)%20*%20np.linalg.norm(_r))))%0A%20%20%20%20%20%20%20%20%20%20%20%20print(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%20%20%7B_name%3A9s%7D%20%7Ca%7C%20%3D%20%7Bnp.linalg.norm(_a)%3A5.1f%7D%20m%2Fs2%20%3D%20%7Bnp.linalg.norm(_a)%20%2F%209.81%3A.1f%7D%20g%2C%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%20%20%7B_to_bar%3A4.1f%7D%20degrees%20from%20the%20line%20to%20the%20bar%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20return%20giant_distances%2C%20giant_instants%0A%0A%0A%40app.cell%0Adef%20_(giant_distances%2C%20giant_instants%2C%20np%2C%20plt)%3A%0A%20%20%20%20_fig%2C%20_axs%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(10%2C%205.5)%2C%20sharey%3DTrue)%0A%20%20%20%20for%20_ax%2C%20(_label%2C%20_angle%2C%20_omega%2C%20_alpha)%20in%20zip(_axs%2C%20giant_instants)%3A%0A%20%20%20%20%20%20%20%20_direction%20%3D%20np.array(%5Bnp.sin(np.radians(_angle))%2C%20-np.cos(np.radians(_angle))%5D)%0A%20%20%20%20%20%20%20%20_feet%20%3D%20giant_distances%5B%22feet%22%5D%20*%20_direction%0A%20%20%20%20%20%20%20%20_ax.plot(%5B0%2C%20_feet%5B0%5D%5D%2C%20%5B0%2C%20_feet%5B1%5D%5D%2C%20color%3D%22tab%3Agreen%22%2C%20alpha%3D0.35%2C%20linewidth%3D4%2C%20solid_capstyle%3D%22round%22)%0A%20%20%20%20%20%20%20%20_ax.plot(0%2C%200%2C%20%22ks%22%2C%20markersize%3D10)%0A%20%20%20%20%20%20%20%20for%20_d%20in%20giant_distances.values()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_r%20%3D%20_d%20*%20_direction%0A%20%20%20%20%20%20%20%20%20%20%20%20_a%20%3D%20omega_cross(_alpha%2C%20_r)%20-%20_omega**2%20*%20_r%0A%20%20%20%20%20%20%20%20%20%20%20%20_ax.plot(*_r%2C%20%22o%22%2C%20color%3D%22tab%3Agreen%22%2C%20markersize%3D7)%0A%20%20%20%20%20%20%20%20%20%20%20%20_ax.quiver(*_r%2C%20*(0.01%20*%20_a)%2C%20angles%3D%22xy%22%2C%20scale_units%3D%22xy%22%2C%20scale%3D1%2C%20width%3D0.012%2C%20color%3D%22tab%3Ablue%22%2C%20zorder%3D3)%0A%20%20%20%20%20%20%20%20_ax.set_aspect(%22equal%22)%0A%20%20%20%20%20%20%20%20_ax.set_xlim(-2.0%2C%201.2)%0A%20%20%20%20%20%20%20%20_ax.set_ylim(-2.5%2C%200.4)%0A%20%20%20%20%20%20%20%20_ax.set_xlabel(%22x%20%5Bm%5D%22)%0A%20%20%20%20%20%20%20%20_ax.set_title(_label)%0A%20%20%20%20_axs%5B0%5D.set_ylabel(%22y%20%5Bm%5D%22)%0A%20%20%20%20_fig.suptitle(%22Accelerations%20of%20the%20shoulders%2C%20hips%20and%20feet%20(arrows%3A%200.01%20m%20per%20m%2Fs%C2%B2)%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20At%20the%20bottom%20of%20the%20swing%20the%20accelerations%20point%20straight%20at%20the%20bar%2C%20and%20they%20grow%20in%20proportion%20to%20the%20distance%20from%20it%3A%201.5%20%24g%24%20at%20the%20shoulders%2C%203.2%20%24g%24%20at%20the%20hips%2C%205.6%20%24g%24%20at%20the%20feet.%20With%20%24%5Calpha%20%3D%200%24%20only%20the%20centripetal%20term%20is%20left%2C%20%24%5Comega%5E2%20r%24.%20The%20arms%2C%20which%20hold%20the%20whole%20body%2C%20must%20supply%20the%20force%20for%20these%20accelerations%20and%20support%20the%20body's%20weight%20as%20well%2C%20which%20is%20why%20the%20pull%20on%20the%20hands%20at%20the%20bottom%20of%20a%20giant%20swing%20reaches%20several%20times%20body%20weight.%0A%0A%20%20%20%20Before%20the%20bottom%20the%20accelerations%20are%20smaller%2C%20but%20they%20no%20longer%20point%20at%20the%20bar%3A%20every%20one%20of%20them%20is%20tilted%20by%20%2426.6%5E%5Ccirc%24%20from%20the%20line%20to%20the%20bar%2C%20towards%20the%20direction%20of%20motion.%20The%20tilt%20is%20the%20same%20for%20every%20point%2C%20because%20both%20terms%20are%20proportional%20to%20the%20distance%20%24r%24%3A%20the%20tangential%20term%20is%20%24%5Calpha%20r%24%2C%20the%20centripetal%20term%20%24%5Comega%5E2%20r%24%2C%20and%20the%20angle%20between%20their%20sum%20and%20the%20body%20satisfies%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Ctan%5Cvarphi%20%3D%20%5Cfrac%7B%5Calpha%7D%7B%5Comega%5E2%7D%20%3D%20%5Cfrac%7B8%7D%7B16%7D%20%3D%200.5%0A%20%20%20%20%24%24%0A%0A%20%20%20%20So%20for%20any%20body%20rotating%20about%20a%20fixed%20pivot%2C%20the%20acceleration%20of%20every%20point%20makes%20the%20same%20angle%20with%20the%20line%20to%20the%20pivot%2C%20and%20its%20magnitude%20is%20proportional%20to%20the%20distance%2C%20%24r%5Csqrt%7B%5Calpha%5E2%20%2B%20%5Comega%5E4%7D%24.%0A%0A%20%20%20%20**Exercise%205.**%20The%20forearm%20of%20Exercise%201%20is%20now%20slowing%20down%3A%20about%20the%20fixed%20elbow%2C%20%24%5Comega%24%20%3D%204%20rad%2Fs%20counterclockwise%20with%20%24%5Calpha%20%3D%20-20%24%20rad%2Fs%C2%B2.%20The%20wrist%20is%200.25%20m%20from%20the%20elbow%2C%20%2430%5E%5Ccirc%24%20above%20the%20%24%2Bx%24%20axis.%20Calculate%20the%20tangential%20and%20centripetal%20accelerations%20of%20the%20wrist%2C%20the%20total%20acceleration%20and%20its%20magnitude%2C%20and%20the%20angle%20between%20the%20acceleration%20and%20the%20line%20from%20the%20wrist%20to%20the%20elbow.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo%2C%20np%2C%20plt)%3A%0A%20%20%20%20_omega%2C%20_alpha%20%3D%204.0%2C%20-20.0%0A%20%20%20%20_r%20%3D%200.25%20*%20np.array(%5Bnp.cos(np.radians(30))%2C%20np.sin(np.radians(30))%5D)%0A%20%20%20%20_tangential%20%3D%20omega_cross(_alpha%2C%20_r)%0A%20%20%20%20_centripetal%20%3D%20-(_omega**2)%20*%20_r%0A%20%20%20%20_a%20%3D%20_tangential%20%2B%20_centripetal%0A%20%20%20%20_phi%20%3D%20np.degrees(np.arccos(np.dot(_a%2C%20-_r)%20%2F%20(np.linalg.norm(_a)%20*%20np.linalg.norm(_r))))%0A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(5%2C%205))%0A%20%20%20%20_ax.plot(%5B0%2C%20_r%5B0%5D%5D%2C%20%5B0%2C%20_r%5B1%5D%5D%2C%20color%3D%22tab%3Agreen%22%2C%20alpha%3D0.35%2C%20linewidth%3D3%2C%20solid_capstyle%3D%22round%22)%0A%20%20%20%20_ax.plot(0%2C%200%2C%20%22ko%22%2C%20markersize%3D8)%0A%20%20%20%20for%20_vec%2C%20_color%2C%20_name%20in%20%5B(_tangential%2C%20%22tab%3Aorange%22%2C%20%22tangential%22)%2C%20(_centripetal%2C%20%22tab%3Apurple%22%2C%20%22centripetal%22)%2C%20(_a%2C%20%22tab%3Ablue%22%2C%20%22total%22)%5D%3A%0A%20%20%20%20%20%20%20%20_ax.quiver(*_r%2C%20*(0.04%20*%20_vec)%2C%20angles%3D%22xy%22%2C%20scale_units%3D%22xy%22%2C%20scale%3D1%2C%20width%3D0.012%2C%20color%3D_color%2C%20label%3D_name%2C%20zorder%3D3)%0A%20%20%20%20_ax.set_aspect(%22equal%22)%0A%20%20%20%20_ax.set_xlim(-0.15%2C%200.4)%0A%20%20%20%20_ax.set_ylim(-0.2%2C%200.3)%0A%20%20%20%20_ax.set_xlabel(%22x%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_ylabel(%22y%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_title(%22Wrist%20acceleration%20(0.04%20m%20per%20m%2Fs%C2%B2)%22)%0A%20%20%20%20_ax.legend(loc%3D%22upper%20left%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20_figure%20%3D%20mo.as_html(_fig)%0A%20%20%20%20plt.close(_fig)%0A%0A%20%20%20%20mo.accordion(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Solution%20to%20Exercise%205%22%3A%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20With%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D%20%3D%20(0.2165%2C%200.125)%24%20m%20from%20Exercise%201%2C%20the%20two%20rotational%20terms%20are%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Ba%7D%7D_t%20%3D%20%5Calpha%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D%2C%20%5Cqquad%20%5Cvec%7B%5Cmathbf%7Ba%7D%7D_n%20%3D%20-%5Comega%5E2%5C%2C%5Cvec%7B%5Cmathbf%7Br%7D%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20f%22%22%22%0A%20%20%20%20-%20tangential%3A%20(%7B_tangential%5B0%5D%3A.3f%7D%2C%20%7B_tangential%5B1%5D%3A.3f%7D)%20m%2Fs%C2%B2%2C%20of%20magnitude%20%7C%CE%B1%7C%20r%20%3D%20%7Bnp.linalg.norm(_tangential)%3A.1f%7D%20m%2Fs%C2%B2.%20Because%20%CE%B1%20is%20negative%2C%20it%20points%20opposite%20to%20the%20velocity%20of%20Exercise%201%3A%20the%20forearm%20is%20braking.%0A%20%20%20%20-%20centripetal%3A%20(%7B_centripetal%5B0%5D%3A.3f%7D%2C%20%7B_centripetal%5B1%5D%3A.3f%7D)%20m%2Fs%C2%B2%2C%20of%20magnitude%20%CF%89%C2%B2%20r%20%3D%20%7Bnp.linalg.norm(_centripetal)%3A.1f%7D%20m%2Fs%C2%B2%2C%20pointing%20from%20the%20wrist%20to%20the%20elbow.%0A%20%20%20%20-%20total%3A%20(%7B_a%5B0%5D%3A.3f%7D%2C%20%7B_a%5B1%5D%3A.3f%7D)%20m%2Fs%C2%B2%2C%20of%20magnitude%20%7Bnp.linalg.norm(_a)%3A.2f%7D%20m%2Fs%C2%B2.%0A%0A%20%20%20%20The%20total%20makes%20an%20angle%20of%20%7B_phi%3A.1f%7D%C2%B0%20with%20the%20line%20from%20the%20wrist%20to%20the%20elbow%2C%20the%20angle%20whose%20tangent%20is%20%7C%CE%B1%7C%2F%CF%89%C2%B2%20%3D%2020%2F16.%20It%20is%20tilted%20away%20from%20the%20elbow%20on%20the%20side%20opposite%20to%20the%20motion%2C%20because%20the%20forearm%20is%20slowing%20down.%0A%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_figure%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Zero%20velocity%20is%20not%20zero%20acceleration%0A%0A%20%20%20%20Back%20to%20Guiding%20question%200.2.%20The%20contact%20point%20C%20of%20the%20rolling%20wheel%20has%20zero%20velocity.%20What%20about%20its%20acceleration%3F%0A%0A%20%20%20%20**Before%20you%20run%20the%20next%20cell**%2C%20make%20a%20prediction.%20Then%20apply%20the%20acceleration%20equation%20to%20C%20with%20the%20chair%20rolling%20at%20constant%20speed%3A%20%24%5Cvec%7B%5Cmathbf%7Ba%7D%7D_A%20%3D%200%24%20and%20%24%5Cdot%7B%5Comega%7D%20%3D%200%24%2C%20so%20only%20the%20centripetal%20term%20is%20left%2C%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Ba%7D%7D_C%20%3D%20-%5Comega%5E2%5C%2C%5Cvec%7B%5Cmathbf%7Br%7D%7D_%7BC%2FA%7D%20%3D%20-%5Comega%5E2(-R%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D)%20%3D%20%5Comega%5E2%20R%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%20%3D%20%5Cfrac%7Bv%5E2%7D%7BR%7D%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20Let's%20check%20it%20numerically%2C%20following%20a%20point%20of%20the%20tyre%20through%20the%20instant%20it%20touches%20the%20ground%2C%20sampled%20at%201%20kHz%3A%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(R_wheel%2C%20np%2C%20omega_wheel%2C%20v_chair)%3A%0A%20%20%20%20_dt%20%3D%200.001%0A%20%20%20%20_t%20%3D%20np.arange(-0.3%2C%200.3%20%2B%20_dt%20%2F%202%2C%20_dt)%20%20%23%20the%20point%20touches%20the%20ground%20at%20t%20%3D%200%0A%20%20%20%20_hub%20%3D%20np.column_stack((v_chair%20*%20_t%2C%20np.full_like(_t%2C%20R_wheel)))%0A%20%20%20%20_point%20%3D%20_hub%20%2B%20np.array(%5Brotation_matrix(omega_wheel%20*%20_ti)%20%40%20%5B0%2C%20-R_wheel%5D%20for%20_ti%20in%20_t%5D)%0A%0A%20%20%20%20_v%20%3D%20np.gradient(_point%2C%20_dt%2C%20axis%3D0%2C%20edge_order%3D2)%0A%20%20%20%20_a%20%3D%20np.gradient(_v%2C%20_dt%2C%20axis%3D0%2C%20edge_order%3D2)%0A%20%20%20%20_i%20%3D%20np.argmin(np.abs(_t))%0A%20%20%20%20print(f%22At%20contact%3A%20position%20%7B_point%5B_i%5D.round(4)%20%2B%200.0%7D%20m%22)%0A%20%20%20%20print(f%22%20%20%20%20%20%20%20%20%20%20%20%20velocity%20%7B_v%5B_i%5D.round(4)%20%2B%200.0%7D%20m%2Fs%22)%0A%20%20%20%20print(f%22%20%20%20%20%20%20%20%20%20%20%20%20acceleration%20%7B_a%5B_i%5D.round(3)%20%2B%200.0%7D%20m%2Fs2%22)%0A%20%20%20%20print(f%22v%5E2%20%2F%20R%20%3D%20%7Bv_chair**2%20%2F%20R_wheel%3A.2f%7D%20m%2Fs2%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Zero%20velocity%2C%20and%20an%20acceleration%20of%207.5%20m%2Fs%C2%B2%20straight%20up%2C%20three%20quarters%20of%20%24g%24.%20The%20contact%20point%20stops%20for%20an%20instant%20and%20immediately%20leaves%20the%20ground%20again%2C%20upwards.%20Its%20path%20shows%20why.%20Here%20are%20two%20turns%20of%20the%20wheel%2C%20centred%20on%20the%20instant%20%24t%20%3D%200%24%20when%20the%20point%20of%20the%20tyre%20touches%20the%20ground%2C%20with%20the%20path%20of%20that%20point%20and%20of%20the%20point%20of%20the%20push%20rim%20just%20above%20it%2C%20at%20the%20bottom%20of%20the%20rim%3A%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(R_wheel%2C%20np%2C%20omega_wheel%2C%20plt%2C%20r_rim%2C%20v_chair)%3A%0A%20%20%20%20_period%20%3D%202%20*%20np.pi%20*%20R_wheel%20%2F%20v_chair%20%20%23%20s%2C%20time%20for%20one%20turn%0A%20%20%20%20_t%20%3D%20np.linspace(-_period%2C%20_period%2C%20800)%0A%20%20%20%20_hub%20%3D%20np.column_stack((v_chair%20*%20_t%2C%20np.full_like(_t%2C%20R_wheel)))%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(10%2C%203))%0A%20%20%20%20_ax.axhline(0%2C%20color%3D%22k%22%2C%20linewidth%3D2)%0A%20%20%20%20_ax.plot(_hub%5B%3A%2C%200%5D%2C%20_hub%5B%3A%2C%201%5D%2C%20color%3D%22k%22%2C%20linestyle%3D%22--%22%2C%20linewidth%3D1%2C%20label%3D%22hub%22)%0A%20%20%20%20for%20_radius%2C%20_color%2C%20_label%20in%20%5B(R_wheel%2C%20%22tab%3Ablue%22%2C%20%22point%20of%20the%20tyre%22)%2C%20(r_rim%2C%20%22tab%3Ared%22%2C%20%22point%20of%20the%20push%20rim%22)%5D%3A%0A%20%20%20%20%20%20%20%20_path%20%3D%20_hub%20%2B%20np.array(%5Brotation_matrix(omega_wheel%20*%20_ti)%20%40%20%5B0%2C%20-_radius%5D%20for%20_ti%20in%20_t%5D)%0A%20%20%20%20%20%20%20%20_ax.plot(_path%5B%3A%2C%200%5D%2C%20_path%5B%3A%2C%201%5D%2C%20color%3D_color%2C%20linewidth%3D2%2C%20label%3D_label)%0A%20%20%20%20_ax.set_aspect(%22equal%22)%0A%20%20%20%20_ax.set_xlabel(%22x%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_ylabel(%22y%20%5Bm%5D%22)%0A%20%20%20%20_ax.set_title(%22Paths%20during%20two%20turns%20of%20the%20wheel%22)%0A%20%20%20%20_ax.legend(loc%3D%22center%20left%22%2C%20bbox_to_anchor%3D(1.01%2C%200.5))%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20point%20of%20the%20tyre%20traces%20a%20%5Bcycloid%5D(https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCycloid)%2C%20with%20a%20sharp%20cusp%20each%20time%20it%20touches%20the%20ground%3A%20it%20arrives%20moving%20straight%20down%2C%20stops%2C%20and%20leaves%20straight%20up.%20Its%20velocity%20passes%20through%20zero%20there%2C%20but%20the%20velocity%20is%20changing%20direction%20completely%2C%20and%20that%20takes%20an%20acceleration.%20The%20point%20of%20the%20push%20rim%20never%20stops%3A%20at%20the%20bottom%20of%20the%20rim%20it%20still%20moves%20forward%2C%20at%200.15%20m%2Fs.%0A%0A%20%20%20%20The%20lesson%20is%20about%20the%20instantaneous%20centre.%20It%20is%20the%20point%20of%20zero%20*velocity*%2C%20so%20velocities%20can%20be%20computed%20as%20if%20the%20body%20rotated%20about%20it.%20But%20it%20is%20not%20a%20fixed%20pivot%2C%20and%20it%20generally%20has%20an%20acceleration%2C%20so%20accelerations%20cannot%20be%20computed%20that%20way.%20For%20accelerations%2C%20use%20the%20full%20equation%20with%20a%20reference%20point%20whose%20acceleration%20you%20know%2C%20such%20as%20the%20hub.%0A%0A%20%20%20%20**Guiding%20questions%203.**%0A%0A%20%20%20%201.%20With%20the%20chair%20rolling%20at%20constant%20speed%2C%20what%20is%20the%20acceleration%20of%20the%20hub%3F%20Of%20the%20top%20of%20the%20push%20rim%3F%20(Use%20the%20acceleration%20equation.)%0A%20%20%20%202.%20If%20the%20chair%20speeds%20up%2C%20which%20terms%20of%20the%20acceleration%20equation%20appear%20for%20the%20contact%20point%20C%3F%20Do%20they%20change%20its%20acceleration%3F%0A%20%20%20%203.%20A%20sprinter's%20foot%20is%20flat%20on%20the%20track%20during%20stance.%20Is%20the%20instantaneous%20centre%20of%20the%20shank%20at%20rest%20in%20the%20laboratory%3F%20Is%20it%20accelerating%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exercise%206.**%20A%20cyclist%20rides%20at%20a%20constant%208%20m%2Fs%2C%20pedalling%20at%20a%20steady%2090%20revolutions%20per%20minute%20with%20cranks%200.17%20m%20long.%20Seen%20from%20the%20right%20side%2C%20with%20the%20bicycle%20moving%20in%20the%20%24%2Bx%24%20direction%2C%20the%20cranks%20turn%20clockwise.%20Calculate%20the%20velocity%2C%20relative%20to%20the%20ground%2C%20of%20a%20pedal%20at%20the%20lowest%20point%20of%20its%20circle%20and%20at%20the%20highest%20point%2C%20and%20the%20acceleration%20of%20the%20pedal%20at%20the%20lowest%20point.%20Does%20the%20cyclist's%20foot%20ever%20move%20backward%20relative%20to%20the%20ground%3F%0A%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solution%20to%20Exercise%206%0A%0A%20%20%20%20The%20angular%20velocity%20of%20the%20cranks%20is%20%24%5Comega%20%3D%20-90%20%5Ctimes%202%5Cpi%2F60%20%3D%20-9.42%24%20rad%2Fs%20(clockwise)%2C%20so%20the%20rotational%20part%20of%20the%20pedal's%20velocity%20has%20magnitude%20%24%7C%5Comega%7C%5C%2Cr%20%3D%209.42%20%5Ctimes%200.17%20%3D%201.60%24%20m%2Fs.%20Take%20the%20crank%20axle%2C%20which%20moves%20with%20the%20bicycle%20at%208%20m%2Fs%2C%20as%20the%20reference%20point.%20At%20the%20lowest%20point%2C%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D%20%3D%20-0.17%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%24%20m%20and%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Bv%7D%7D%20%3D%208%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%2B%20%5Comega%5C%2C%5Chat%7B%5Cmathbf%7Bk%7D%7D%20%5Ctimes%20(-0.17%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D)%20%3D%20(8%20%2B%200.17%5C%2C%5Comega)%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%20%3D%206.40%5C%2C%5Chat%7B%5Cmathbf%7Bi%7D%7D%5C%3B%5Cmathrm%7Bm%2Fs%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20At%20the%20highest%20point%20the%20rotational%20part%20adds%20instead%2C%20%248%20%2B%201.60%20%3D%209.60%24%20m%2Fs.%20The%20rotational%20part%20never%20exceeds%201.60%20m%2Fs%2C%20far%20below%20the%208%20m%2Fs%20of%20the%20bicycle%2C%20so%20the%20foot%20always%20moves%20forward%20relative%20to%20the%20ground%2C%20between%206.40%20and%209.60%20m%2Fs.%20(Compare%20it%20with%20the%20contact%20point%20of%20the%20bicycle's%20wheel%2C%20whose%20rotational%20part%20exactly%20cancels%20the%20speed%20of%20the%20bicycle.)%0A%0A%20%20%20%20The%20axle%20moves%20at%20constant%20velocity%20and%20the%20cranks%20turn%20at%20constant%20speed%2C%20so%20only%20the%20centripetal%20term%20is%20left.%20At%20the%20lowest%20point%20it%20points%20up%2C%20towards%20the%20axle%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvec%7B%5Cmathbf%7Ba%7D%7D%20%3D%20-%5Comega%5E2%5C%2C%5Cvec%7B%5Cmathbf%7Br%7D%7D%20%3D%209.42%5E2%20%5Ctimes%200.17%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%20%3D%2015.1%5C%2C%5Chat%7B%5Cmathbf%7Bj%7D%7D%5C%3B%5Cmathrm%7Bm%2Fs%5E2%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20That%20is%201.5%20%24g%24%2C%20at%20every%20point%20of%20the%20circle%2C%20always%20pointing%20at%20the%20axle.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Checkpoint%20questions%0A%0A%20%20%20%20Pause%20here%20before%20the%20problems.%0A%0A%20%20%20%201.%20Go%20back%20to%20your%20answers%20to%20Challenge%200.%20Was%20the%20point%20of%20the%20tyre%20touching%20the%20road%20at%20rest%20in%20your%20answer%3F%20Was%20the%20top%20moving%20at%206%20m%2Fs%3F%0A%20%20%20%202.%20Two%20markers%20on%20the%20same%20rigid%20segment%20have%20velocities%20whose%20components%20along%20the%20line%20between%20them%20differ%20by%200.2%20m%2Fs.%20What%20does%20that%20tell%20you%3F%0A%20%20%20%203.%20Why%20is%20one%20angular%20velocity%20enough%20for%20the%20whole%20body%2C%20while%20each%20point%20needs%20its%20own%20linear%20velocity%3F%0A%20%20%20%204.%20Give%20an%20example%2C%20other%20than%20a%20wheel%2C%20of%20a%20point%20of%20the%20body%20that%20has%20zero%20velocity%20and%20nonzero%20acceleration%20at%20some%20instant%20of%20a%20movement.%0A%20%20%20%205.%20Of%20the%20three%20terms%20of%20the%20acceleration%2C%20which%20one%20grows%20fastest%20when%20a%20limb%20rotates%20faster%2C%20and%20why%20does%20that%20matter%20for%20the%20forces%20at%20the%20joints%3F%0A%20%20%20%206.%20In%20three%20dimensions%2C%20%24%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20(%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D)%24%20is%20not%20always%20%24-%5Comega%5E2%5C%2C%5Cvec%7B%5Cmathbf%7Br%7D%7D%24.%20For%20which%20vectors%20%24%5Cvec%7B%5Cmathbf%7Br%7D%7D%24%20is%20it%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Problems%0A%0A%20%20%20%201.%20A%20wheelchair%20user%20rolls%20at%201.2%20m%2Fs%20on%20wheels%20of%20radius%200.30%20m%20with%20push%20rims%20of%20radius%200.27%20m.%3Cbr%3E%0A%20%20%20%20%20%20%20a.%20Calculate%20the%20angular%20velocity%20of%20the%20wheels.%3Cbr%3E%0A%20%20%20%20%20%20%20b.%20The%20hand%20grabs%20the%20push%20rim%2020%C2%B0%20behind%20its%20top.%20With%20what%20velocity%20(magnitude%20and%20direction)%20must%20the%20hand%20be%20moving%20at%20that%20instant%20so%20as%20not%20to%20slip%20on%20the%20rim%3F%3Cbr%3E%0A%20%20%20%20%20%20%20c.%20The%20user%20now%20accelerates%20the%20chair%20at%200.8%20m%2Fs%C2%B2%2C%20still%20rolling%20without%20slipping.%20Calculate%20the%20angular%20acceleration%20of%20the%20wheels%20and%20the%20acceleration%20of%20the%20point%20of%20the%20tyre%20touching%20the%20ground.%0A%0A%20%20%20%202.%20At%20one%20instant%20of%20a%20kick%2C%20a%20marker%20on%20the%20ankle%20is%20at%20(0%2C%200.05)%20m%20with%20a%20velocity%20of%20(0.5%2C%200.1)%20m%2Fs%2C%20and%20a%20marker%20on%20the%20knee%20is%20at%20(0.05%2C%200.45)%20m%20with%20a%20velocity%20of%20(%E2%88%920.7%2C%200.25)%20m%2Fs%2C%20both%20in%20the%20sagittal%20plane.%3Cbr%3E%0A%20%20%20%20%20%20%20a.%20Check%20that%20the%20two%20velocities%20are%20consistent%20with%20a%20rigid%20shank.%3Cbr%3E%0A%20%20%20%20%20%20%20b.%20Calculate%20the%20angular%20velocity%20of%20the%20shank.%3Cbr%3E%0A%20%20%20%20%20%20%20c.%20Find%20the%20instantaneous%20centre%20of%20rotation%20of%20the%20shank.%0A%0A%20%20%20%203.%20With%20the%20data%20of%20Table%20A.1%20of%20Winter%20(2009)%2C%20used%20in%20%5BAngular%20kinematics%20in%20a%20plane%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fkinematics_angular_2d.py)%2C%20calculate%20the%20velocity%20of%20the%20head%20of%20the%20fibula%20from%20the%20velocity%20of%20the%20ankle%20and%20the%20angular%20velocity%20of%20the%20leg%2C%20with%20the%20equation%20of%20this%20notebook%2C%20and%20compare%20it%20with%20the%20velocity%20obtained%20by%20differentiating%20the%20position%20of%20the%20head%20of%20the%20fibula.%20Where%20do%20they%20disagree%20the%20most%2C%20and%20why%3F%0A%0A%20%20%20%204.%20In%20late%20swing%2C%20the%20hip%20of%20a%20walker%20is%20at%20(0%2C%200.90)%20m%20and%20moves%20forward%20at%201.4%20m%2Fs.%20The%20thigh%20(0.42%20m)%20is%20flexed%2025%C2%B0%20forward%20of%20the%20vertical%20and%20turns%20forward%20at%200.5%20rad%2Fs%3B%20the%20shank%20(0.43%20m)%20is%2010%C2%B0%20forward%20of%20the%20vertical%20and%20turns%20forward%20at%207%20rad%2Fs.%3Cbr%3E%0A%20%20%20%20%20%20%20a.%20Calculate%20the%20velocities%20of%20the%20knee%20and%20the%20ankle.%3Cbr%3E%0A%20%20%20%20%20%20%20b.%20Find%20the%20instantaneous%20centre%20of%20the%20shank.%20Compare%20it%20with%20the%20one%20in%20mid-swing%20(Exercise%203)%2C%20and%20explain%20the%20difference.%0A%0A%20%20%20%205.%20For%20the%20giant%20swing%20of%20this%20notebook%2C%20at%20the%20bottom%20of%20the%20swing%3A%3Cbr%3E%0A%20%20%20%20%20%20%20a.%20At%20what%20angular%20velocity%20would%20the%20acceleration%20of%20the%20feet%20reach%2010%20%24g%24%3F%20And%20that%20of%20the%20hips%3F%3Cbr%3E%0A%20%20%20%20%20%20%20b.%20The%20gymnast%20flexes%20the%20arms%2C%20bringing%20every%20point%20of%20the%20body%200.2%20m%20closer%20to%20the%20bar.%20By%20what%20percentage%20does%20the%20acceleration%20of%20each%20point%20change%20at%20%24%5Comega%24%20%3D%205%20rad%2Fs%3F%20Why%20is%20the%20change%20not%20the%20same%20for%20all%20of%20them%3F%0A%0A%20%20%20%206.%20To%20turn%20on%20the%20spot%2C%20a%20wheelchair%20user%20pushes%20the%20left%20wheel%20forward%20and%20pulls%20the%20right%20wheel%20backward%2C%20so%20that%20the%20wheels%20move%20at%200.4%20m%2Fs%20in%20opposite%20directions.%20The%20wheels%20are%200.6%20m%20apart.%3Cbr%3E%0A%20%20%20%20%20%20%20a.%20Calculate%20the%20angular%20velocity%20of%20the%20chair%20and%20find%20its%20instantaneous%20centre.%3Cbr%3E%0A%20%20%20%20%20%20%20b.%20Calculate%20the%20velocity%20of%20the%20front%20of%20the%20footrest%2C%200.5%20m%20ahead%20of%20the%20midpoint%20of%20the%20axle.%0A%0A%20%20%20%207.%20Write%20a%20function%20that%20receives%20the%20positions%20and%20velocities%20of%20two%20markers%20on%20a%20segment%20moving%20in%20a%20plane%20and%20returns%20the%20angular%20velocity%20of%20the%20segment%20and%20its%20instantaneous%20centre.%20Use%20the%20component%20of%20the%20relative%20velocity%20perpendicular%20to%20the%20line%20between%20the%20markers%20to%20find%20%24%5Comega%24%2C%20and%20report%20the%20component%20along%20the%20line%20as%20a%20measure%20of%20how%20far%20the%20markers%20are%20from%20rigid.%20Test%20it%20on%20two%20points%20of%20the%20ellipse%20of%20this%20notebook%2C%20sampled%20from%20the%20body's%20outline.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Final%20answers%20to%20the%20problems%0A%0A%20%20%20%201.%20(a)%20%24%5Comega%3D-4%24%20rad%2Fs%20for%20forward%20motion%20to%20the%20right.%20(b)%20At%2020%C2%B0%20behind%20the%20top%2C%20the%20hand%20velocity%20is%20%24(2.21487%2C0.36938)%24%20m%2Fs%3A%20magnitude%202.24546%20m%2Fs%2C%209.468%C2%B0%20upward%20from%20forward.%20(c)%20%24%5Calpha%3D-2.66667%24%20rad%2Fs%C2%B2%3B%20the%20instantaneous%20ground-contact%20material%20point%20has%20acceleration%20%24(0%2C4.8)%24%20m%2Fs%C2%B2%2C%20upward.%0A%20%20%20%202.%20(a)%20The%20relative%20velocity%20is%20perpendicular%20to%20the%20marker%20separation%2C%20so%20the%20observations%20are%20rigid-compatible.%20(b)%20%24%5Comega%3D3%24%20rad%2Fs%20counterclockwise.%20(c)%20Instantaneous%20centre%20%24(-0.033333%2C0.216667)%24%20m.%0A%20%20%20%203.%20The%20predicted%20fibular%20velocity%20is%20%24%5Cmathbf%20v_F%3D%5Cmathbf%20v_A%2B%5Comega(-r_y%2Cr_x)%24.%20Differentiated%20measured%20positions%20additionally%20include%20the%20measured%20radial%20length-change%20component%20and%20differentiation%20error%3B%20discrepancies%20grow%20where%20noise%2C%20soft-tissue%20motion%20and%20end-of-record%20differentiation%20dominate.%20Equality%20is%20exact%20only%20for%20a%20rigid%20segment%20with%20consistently%20differentiated%20motion.%0A%20%20%20%204.%20With%20forward%20positive%20%24x%24%2C%20upward%20positive%20%24y%24%20and%20increasing%20forward%20flexion%2C%20knee%20velocity%20%24(1.59032%2C0.08875)%24%20m%2Fs%20and%20ankle%20velocity%20%24(4.55460%2C0.61143)%24%20m%2Fs.%20Shank%20instantaneous%20centre%20%24(0.16482%2C0.74654)%24%20m%3B%20it%20is%20near%20the%20knee%20because%20the%20shank%20rotates%20rapidly%20relative%20to%20the%20translating%20thigh.%0A%20%20%20%205.%20(a)%20Feet%3A%206.678%20rad%2Fs%3B%20hips%3A%208.859%20rad%2Fs.%20(b)%20At%20fixed%20angular%20speed%2C%20acceleration%20falls%20by%2033.33%25%20for%20shoulders%2C%2016.00%25%20for%20hips%20and%209.09%25%20for%20feet.%20Each%20radius%20shortens%20by%20the%20same%200.2%20m%20but%20by%20a%20different%20fraction.%0A%20%20%20%206.%20Magnitude%20of%20chair%20angular%20velocity%201.3333%20rad%2Fs%2C%20with%20centre%20at%20the%20axle%20midpoint.%20Footrest%20speed%200.6667%20m%2Fs%20perpendicular%20to%20the%20chair%E2%80%99s%20forward%20direction%2C%20toward%20the%20turning%20side.%0A%20%20%20%207.%20With%20%24r%3Dp_2-p_1%24%20and%20%24u%3Dv_2-v_1%24%2C%20final%20expressions%20are%20%24%5Comega%3D(r_xu_y-r_yu_x)%2F(r%5Ccdot%20r)%24%2C%20radial%20residual%20%24u%5Ccdot%20r%2F%5C%7Cr%5C%7C%24%2C%20and%20%24c%3Dp_1%2B(-v_%7B1y%7D%2Cv_%7B1x%7D)%2F%5Comega%24.%20Coincident%20markers%20are%20invalid%3B%20at%20%24%5Comega%3D0%24%20there%20is%20no%20finite%20instantaneous%20centre%20for%20nonzero%20translation.%0A%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Go%20deeper%0A%0A%20%20%20%20-%20Read%20chapter%2016%20(circular%20motion%20of%20a%20rigid%20object)%2C%20sections%2017.1%20(rigid%20object%20kinematics)%20and%2017.3%20(kinematics%20of%20rolling%20and%20sliding)%20of%20chapter%2017%2C%20and%20sections%2018.2%20(rotating%20frames%20and%20their%20base%20vectors)%20and%2018.3%20(general%20formulas%20for%20velocity%20and%20acceleration)%20of%20chapter%2018%20of%20%5BRuina%20and%20Pratap's%20book%5D(https%3A%2F%2Fruina.tam.cornell.edu%2FBook%2Findex.html).%0A%20%20%20%20-%20%5BAngular%20kinematics%20in%20a%20plane%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fkinematics_angular_2d.py)%3A%20angular%20velocity%20and%20acceleration%20from%20marker%20data%2C%20and%20%24v%20%3D%20r%5Comega%24%20on%20a%20real%20leg.%0A%20%20%20%20-%20%5BPolar%20basis%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fpolar_basis.py)%3A%20the%20rotating%20basis%20whose%20derivatives%20were%20used%20here.%0A%20%20%20%20-%20%5BRigid-body%20transformations%20in%20a%20plane%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Ftransformation_2d.py)%3A%20the%20rotation%20matrix%20used%20to%20move%20the%20body.%0A%20%20%20%20-%20%5BAngular%20velocity%20in%203D%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fangular_velocity_3d.py)%3A%20%24%5Cvec%7B%5Cmathbf%7Bv%7D%7D%20%3D%20%5Cvec%7B%5Cboldsymbol%7B%5Comega%7D%7D%20%5Ctimes%20%5Cvec%7B%5Cmathbf%7Br%7D%7D%24%20when%20the%20rotation%20is%20not%20confined%20to%20a%20plane.%0A%0A%20%20%20%20%23%23%23%20Video%20lectures%20on%20the%20Internet%0A%0A%20%20%20%20-%20%5BKinematics%20Of%20Rigid%20Bodies%20-%20General%20Plane%20Motion%20-%20Solved%20Problems%5D(https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D4LsLy9iJKFA)%0A%20%20%20%20-%20%5BKinematics%20of%20Rigid%20Bodies%20-Translation%20And%20Rotation%20About%20Fixed%20Axis%20-%20Rectilinear%20and%20Rotational%5D(https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DVnzsQmP6eMQ)%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Optional%20assignments%20from%20the%20original%20sources%0A%0A%20%20%20%20These%20original%20reading%20assignments%20remain%20available%20for%20further%20study.%20Their%20full%20statements%20and%20source-specific%20answer%20keys%20are%20external%20to%20this%20guide.%0A%0A%20%20%20%20-%20Solve%20the%20problems%2016.2.5%2C%2016.2.10%2C%2016.2.11%20and%2016.2.20%20from%20%5BRuina%20and%20Pratap's%20book%5D(https%3A%2F%2Fruina.tam.cornell.edu%2FBook%2Findex.html).%0A%0A%20%20%20%20-%20Solve%20the%20problems%2017.1.2%2C%2017.1.8%2C%2017.1.9%2C%2017.1.10%2C%2017.1.11%20and%2017.1.12%20from%20%5BRuina%20and%20Pratap's%20book%5D(https%3A%2F%2Fruina.tam.cornell.edu%2FBook%2Findex.html).%0A%0A%20%20%20%20-%20Solve%20the%20problems%202.1%2C%202.2%2C%202.7%2C%202.8%2C%202.17%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20References%0A%0A%20%20%20%20-%20Corke%20P%20(2017)%20%5BRobotics%2C%20Vision%20and%20Control%3A%20Fundamental%20Algorithms%20in%20MATLAB%5D(https%3A%2F%2Fpetercorke.com%2FRVC%2F).%202nd%20ed.%20Springer-Verlag%20Berlin.%0A%0A%20%20%20%20-%20Frankel%20VH%2C%20Burstein%20AH%2C%20Brooks%20DB%20(1971)%20%5BBiomechanics%20of%20internal%20derangement%20of%20the%20knee%3A%20pathomechanics%20as%20determined%20by%20analysis%20of%20the%20instant%20centers%20of%20motion%5D(https%3A%2F%2Fpubmed.ncbi.nlm.nih.gov%2F5109122%2F).%20Journal%20of%20Bone%20and%20Joint%20Surgery%2C%20American%20Volume%2C%2053(5)%2C%20945%E2%80%93962.%0A%0A%20%20%20%20-%20Ruina%20A%2C%20Pratap%20R%20(2019)%20%5BIntroduction%20to%20Statics%20and%20Dynamics%5D(https%3A%2F%2Fruina.tam.cornell.edu%2FBook%2Findex.html).%20Oxford%20University%20Press.%0A%0A%20%20%20%20-%20Winter%20DA%20(2009)%20%5BBiomechanics%20and%20Motor%20Control%20of%20Human%20Movement%5D(https%3A%2F%2Fbooks.google.com.br%2Fbooks%3Fid%3D_bFHL08IWfwC).%204th%20edition.%20Hoboken%2C%20USA%3A%20Wiley.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
879cacd9d5b43b9137a9f3c642ecfc81