(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 4.2' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 202644, 6815]*) (*NotebookOutlinePosition[ 203600, 6846]*) (* CellTagsIndexPosition[ 203556, 6842]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell[TextData[{ "The Dynamics Workbench\n", StyleBox["Documentation Notebook\n Copyright \[Copyright] 1994 Arthur D. \ Kuo", FontSize->14], "" }], "Title", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ "The Dynamics Workbench is a ", StyleBox["Mathematica", FontSlant->"Italic"], " package for doing dynamics. It enables the user to generate equations of \ motion primarily for rigid body mechanical systems. These equations may then \ be exported for use in other programs, or may be integrated directly in ", StyleBox["Mathematica", FontSlant->"Italic"], ". The Workbench provides just a few basic commands which are sufficient \ for generating equations of motion. Lower level commands give advanced users \ access to a the actual steps involved, but are not necessary in the majority \ of cases. This package uses Kane's method to generate equations, but can be \ used to implement the method of Lagrange as well." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell["How to Get Started", "Section", Evaluatable->False, AspectRatioFixed->True, FontFamily->"Times"], Cell[TextData[ "To begin learning to use the Dynamics Workbench, read the sections below up \ to and including Basic Commands. Skip the sections on Intermediate and Lower \ Level Commands, and proceed directly to the example. At this point you are \ ready to try your own models. Refer back to the sections you skipped if you \ require more information."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell["Initialization", "Section", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True, FontFamily->"Times"], Cell[TextData[ "Load the Dynamics Workbench package using a command like the following:"], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(Needs["\"]\)], "Input", PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True], Cell[TextData[{ "You must configure your system so that the package DynamicsWorkbench.m is \ in ", StyleBox["Mathematica", FontSlant->"Italic"], "'s path.\n\nAn alternative is to load the Dynamics Workbench directly from \ a directory of your choice, for example c:/yourdirectory. Use the following:" }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(\(SetDirectory["\"];\)\), "\[IndentingNewLine]", \(<< DynamicsWorkbench.m\)}], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Configuration", "Section", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True, FontFamily->"Times"], Cell[CellGroupData[{ Cell[TextData["Bodies and Frames"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ "The Dynamics Workbench describes a mechanical system using ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s and reference ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s. One or more ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s may be used to describe a rigid body to be modeled, and one or more \ reference ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s may be attached to that ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ". Most often, there will be a single ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " and reference ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " associated with a rigid body.\n\n", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s are organized relative to each other in the description of a system. \ Each ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is defined with respect to an ", StyleBox["inboard", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " body which precedes it. These two ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s are connected by a joint, of which there are many types. The Dynamics \ Workbench requires information regarding the location of that joint relative \ to both ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s. On ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", the vector ", StyleBox["BodyToJnt", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " describes the joint location with respect to body's center of mass. On \ the ", StyleBox["inboard", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " body, the vector ", StyleBox["InbToJnt", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " describes the joint location with respect to ", StyleBox["inboard", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s center of mass. The figure below illustrates these vectors and the two \ bodies with their joints separated." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[GraphicsData["PostScript", "\<\ %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 4 4 458 265 %%HiResBoundingBox: 4 4 458 265 %%Creator: (Mathematica Macintosh 3.0) %%Title: Clipboard %%CreationDate: (Tuesday, January 13, 1998) (1:09:50 PM) %%DocumentNeededResources: (atend) %%DocumentFonts: (atend) %%DocumentNeededFonts: (atend) %%EndComments 0 269 translate 1 -1 scale 0 setlinewidth 0.5625 setgray 801 50 moveto 801 50 lineto stroke 0 setgray 801 50 moveto 801 50 lineto stroke 801 50 moveto 801 50 lineto stroke 801 50 moveto 801 50 lineto stroke 1 setlinewidth 88.5 119.5 moveto 100.5 129.5 lineto 115.5 135.5 lineto 131.5 137.5 lineto 149.5 135.5 lineto 166.5 130.5 lineto 183.5 126.5 lineto 190.5 123.5 lineto 198.5 123.5 lineto 206.5 123.5 lineto 214.5 125.5 lineto 220.5 126.5 lineto 224.5 130.5 lineto 228.5 135.5 lineto 230.5 140.5 lineto 231.5 152.5 lineto 229.5 165.5 lineto 225.5 171.5 lineto 220.5 176.5 lineto 213.5 180.5 lineto 207.5 183.5 lineto 199.5 185.5 lineto 192.5 185.5 lineto 184.5 185.5 lineto 177.5 185.5 lineto 168.5 182.5 lineto 160.5 179.5 lineto 138.5 175.5 lineto 117.5 173.5 lineto 96.5 171.5 lineto 76.5 171.5 lineto 70.5 169.5 lineto 64.5 166.5 lineto 60.5 163.5 lineto 57.5 159.5 lineto 54.5 151.5 lineto 51.5 143.5 lineto 50.5 136.5 lineto 52.5 128.5 lineto 59.5 119.5 lineto 69.5 115.5 lineto 74.5 114.5 lineto 79.5 115.5 lineto 84.5 116.5 lineto 88.5 119.5 lineto stroke 341.5 121.5 moveto 359.5 118.5 lineto 377.5 116.5 lineto 396.5 116.5 lineto 419.5 118.5 lineto 428.5 121.5 lineto 437.5 127.5 lineto 445.5 134.5 lineto 451.5 143.5 lineto 454.5 153.5 lineto 456.5 162.5 lineto 455.5 171.5 lineto 451.5 178.5 lineto 442.5 183.5 lineto 434.5 187.5 lineto 425.5 189.5 lineto 417.5 190.5 lineto 398.5 189.5 lineto 379.5 190.5 lineto 367.5 191.5 lineto 353.5 193.5 lineto 340.5 194.5 lineto 328.5 193.5 lineto 318.5 194.5 lineto 308.5 196.5 lineto 299.5 197.5 lineto 289.5 196.5 lineto 280.5 191.5 lineto 273.5 185.5 lineto 268.5 177.5 lineto 265.5 168.5 lineto 264.5 158.5 lineto 266.5 149.5 lineto 275.5 136.5 lineto 287.5 124.5 lineto 292.5 119.5 lineto 298.5 117.5 lineto 307.5 116.5 lineto 319.5 118.5 lineto 331.5 120.5 lineto 341.5 121.5 lineto stroke 81.5 152.5 moveto 85.5 150.5 lineto 87.5 145.5 lineto 85.5 140.5 lineto 81.5 138.5 lineto 76.5 140.5 lineto 74.5 145.5 lineto 76.5 150.5 lineto 81.5 152.5 lineto stroke 87.5 145.5 moveto 85.5 150.5 lineto 81.5 152.5 lineto 81.5 145.5 lineto 87.5 145.5 lineto fill 74.5 145.5 moveto 76.5 140.5 lineto 81.5 138.5 lineto 81.5 145.5 lineto 74.5 145.5 lineto fill 432.5 167.5 moveto 437.5 165.5 lineto 439.5 160.5 lineto 437.5 155.5 lineto 432.5 153.5 lineto 427.5 155.5 lineto 425.5 160.5 lineto 427.5 165.5 lineto 432.5 167.5 lineto stroke 439.5 160.5 moveto 437.5 165.5 lineto 432.5 167.5 lineto 432.5 160.5 lineto 439.5 160.5 lineto fill 425.5 160.5 moveto 427.5 155.5 lineto 432.5 153.5 lineto 432.5 160.5 lineto 425.5 160.5 lineto fill /Courier-Bold findfont 12 scalefont setfont 101 110 moveto (inboard) show /Times-Roman findfont 12 scalefont setfont 151 110 moveto ( body) show /Courier-Bold findfont 12 scalefont setfont 331 107 moveto (body) show 215.5 152.5 moveto 216.5 152.5 lineto 217.5 150.5 lineto 216.5 149.5 lineto 215.5 149.5 lineto 214.5 149.5 lineto 213.5 150.5 lineto 214.5 152.5 lineto 215.5 152.5 lineto fill 281.5 163.5 moveto 282.5 162.5 lineto 283.5 161.5 lineto 282.5 160.5 lineto 281.5 159.5 lineto 280.5 160.5 lineto 279.5 161.5 lineto 280.5 162.5 lineto 281.5 163.5 lineto fill 215.5 157.5 moveto 216.5 164.5 lineto 215.5 170.5 lineto 216.5 176.5 lineto 217.5 182.5 lineto 219.5 184.5 lineto 223.5 184.5 lineto 224.5 183.5 lineto 228.5 183.5 lineto 229.5 186.5 lineto 229.5 190.5 lineto 229.5 194.5 lineto stroke 97.5 153.5 moveto 96.5 159.5 lineto 95.5 165.5 lineto 94.5 172.5 lineto 92.5 178.5 lineto 90.5 179.5 lineto 86.5 179.5 lineto 85.5 178.5 lineto 85.5 177.5 lineto 83.5 176.5 lineto 81.5 177.5 lineto 80.5 178.5 lineto 79.5 181.5 lineto 78.5 186.5 lineto 77.5 190.5 lineto stroke 275.5 165.5 moveto 270.5 174.5 lineto 264.5 181.5 lineto 262.5 182.5 lineto 260.5 181.5 lineto 259.5 177.5 lineto 259.5 173.5 lineto 256.5 172.5 lineto 253.5 173.5 lineto 248.5 178.5 lineto 243.5 184.5 lineto 239.5 190.5 lineto 235.5 195.5 lineto stroke /Times-Roman findfont 12 scalefont setfont 220 206 moveto (joint) show /Times-Italic findfont 12 scalefont setfont 280 156 moveto (P) show /Times-Italic findfont 12 scalefont setfont 214 144 moveto (P') show 80.5 144.5 moveto 205.5 150.5 lineto stroke 208.5 149.5 moveto 206.5 148.5 lineto 204.5 148.5 lineto 203.5 153.5 lineto 205.5 152.5 lineto 208.5 151.5 lineto 210.5 151.5 lineto 212.5 151.5 lineto 210.5 150.5 lineto 208.5 149.5 lineto fill /Courier-Bold findfont 12 scalefont setfont 43 199 moveto (InbToJnt) show /Times-Roman findfont 12 scalefont setfont 57 209 moveto (vector) show /Courier-Bold findfont 12 scalefont setfont 251 214 moveto (BodyToJnt) show /Times-Roman findfont 12 scalefont setfont 268 224 moveto (vector) show /Times-Roman findfont 12 scalefont setfont 5 180 moveto (center of mass) show 73.5 153.5 moveto 73.5 155.5 lineto 72.5 156.5 lineto 69.5 156.5 lineto 66.5 157.5 lineto 63.5 160.5 lineto 61.5 165.5 lineto 60.5 168.5 lineto 57.5 170.5 lineto stroke 431.5 160.5 moveto 290.5 160.5 lineto stroke 288.5 162.5 moveto 290.5 162.5 lineto 292.5 163.5 lineto 292.5 158.5 lineto 290.5 159.5 lineto 288.5 160.5 lineto 286.5 160.5 lineto 284.5 161.5 lineto 286.5 161.5 lineto 288.5 162.5 lineto fill 296.5 165.5 moveto 294.5 168.5 lineto 290.5 173.5 lineto 287.5 179.5 lineto 287.5 184.5 lineto 288.5 185.5 lineto 290.5 185.5 lineto 293.5 184.5 lineto 295.5 184.5 lineto 296.5 187.5 lineto 296.5 190.5 lineto 293.5 197.5 lineto 288.5 204.5 lineto stroke 156.5 236.5 moveto 134.5 236.5 lineto 134.5 210.5 lineto stroke 133.5 209.5 moveto 133.5 210.5 lineto 133.5 211.5 lineto 135.5 211.5 lineto 135.5 210.5 lineto 135.5 209.5 lineto 134.5 208.5 lineto 134.5 207.5 lineto 134.5 208.5 lineto 133.5 209.5 lineto fill 158.5 235.5 moveto 157.5 235.5 lineto 156.5 235.5 lineto 156.5 237.5 lineto 157.5 237.5 lineto 158.5 237.5 lineto 159.5 236.5 lineto 160.5 236.5 lineto 159.5 236.5 lineto 158.5 235.5 lineto fill 133.5 209.5 moveto 133.5 210.5 lineto 133.5 211.5 lineto 135.5 211.5 lineto 135.5 210.5 lineto 135.5 209.5 lineto 134.5 208.5 lineto 134.5 207.5 lineto 134.5 208.5 lineto 133.5 209.5 lineto fill 134.5 236.5 moveto 120.5 250.5 lineto stroke 120.5 252.5 moveto 121.5 251.5 lineto 120.5 249.5 lineto 119.5 250.5 lineto 119.5 251.5 lineto 118.5 252.5 lineto 118.5 253.5 lineto 120.5 252.5 lineto fill 120.5 252.5 moveto 121.5 251.5 lineto 120.5 249.5 lineto 119.5 250.5 lineto 119.5 251.5 lineto 118.5 252.5 lineto 118.5 253.5 lineto 120.5 252.5 lineto fill /Courier-Bold findfont 10 scalefont setfont 163 239 moveto (inboard[1]) show /Courier-Bold findfont 10 scalefont setfont 139 211 moveto (inboard[2]) show /Courier-Bold findfont 10 scalefont setfont 84 262 moveto (inboard[3]) show 405.5 230.5 moveto 383.5 230.5 lineto 383.5 204.5 lineto stroke 382.5 203.5 moveto 382.5 204.5 lineto 382.5 205.5 lineto 384.5 205.5 lineto 384.5 204.5 lineto 384.5 203.5 lineto 383.5 202.5 lineto 383.5 201.5 lineto 383.5 202.5 lineto 382.5 203.5 lineto fill 407.5 229.5 moveto 406.5 229.5 lineto 405.5 229.5 lineto 405.5 231.5 lineto 406.5 231.5 lineto 407.5 231.5 lineto 408.5 230.5 lineto 409.5 230.5 lineto 408.5 230.5 lineto 407.5 229.5 lineto fill 382.5 203.5 moveto 382.5 204.5 lineto 382.5 205.5 lineto 384.5 205.5 lineto 384.5 204.5 lineto 384.5 203.5 lineto 383.5 202.5 lineto 383.5 201.5 lineto 383.5 202.5 lineto 382.5 203.5 lineto fill 383.5 230.5 moveto 369.5 244.5 lineto stroke 369.5 246.5 moveto 370.5 245.5 lineto 369.5 243.5 lineto 368.5 244.5 lineto 368.5 245.5 lineto 367.5 246.5 lineto 367.5 247.5 lineto 369.5 246.5 lineto fill 369.5 246.5 moveto 370.5 245.5 lineto 369.5 243.5 lineto 368.5 244.5 lineto 368.5 245.5 lineto 367.5 246.5 lineto 367.5 247.5 lineto 369.5 246.5 lineto fill /Courier-Bold findfont 10 scalefont setfont 412 233 moveto (body[1]) show /Courier-Bold findfont 10 scalefont setfont 388 205 moveto (body[2]) show /Courier-Bold findfont 10 scalefont setfont 333 256 moveto (body[3]) show 398.5 44.5 moveto 375.5 44.5 lineto 375.5 18.5 lineto stroke 375.5 17.5 moveto 374.5 18.5 lineto 374.5 19.5 lineto 377.5 19.5 lineto 376.5 18.5 lineto 376.5 17.5 lineto 376.5 16.5 lineto 375.5 15.5 lineto 375.5 16.5 lineto 375.5 17.5 lineto fill 399.5 44.5 moveto 398.5 44.5 lineto 397.5 43.5 lineto 397.5 46.5 lineto 398.5 45.5 lineto 399.5 45.5 lineto 400.5 45.5 lineto 401.5 44.5 lineto 400.5 44.5 lineto 399.5 44.5 lineto fill 375.5 17.5 moveto 374.5 18.5 lineto 374.5 19.5 lineto 377.5 19.5 lineto 376.5 18.5 lineto 376.5 17.5 lineto 376.5 16.5 lineto 375.5 15.5 lineto 375.5 16.5 lineto 375.5 17.5 lineto fill 375.5 44.5 moveto 361.5 59.5 lineto stroke 361.5 60.5 moveto 362.5 60.5 lineto 363.5 59.5 lineto 361.5 58.5 lineto 360.5 60.5 lineto 360.5 61.5 lineto 359.5 62.5 lineto 360.5 61.5 lineto 361.5 60.5 lineto fill 361.5 60.5 moveto 362.5 60.5 lineto 363.5 59.5 lineto 361.5 58.5 lineto 360.5 60.5 lineto 360.5 61.5 lineto 359.5 62.5 lineto 360.5 61.5 lineto 361.5 60.5 lineto fill /Courier-Bold findfont 10 scalefont setfont 404 47 moveto (ground[1]) show /Courier-Bold findfont 10 scalefont setfont 381 19 moveto (ground[2]) show /Courier-Bold findfont 10 scalefont setfont 326 70 moveto (ground[3]) show /Times-Bold findfont 12 scalefont setfont 22 14 moveto (Configuration of bodies and frames) show 0 setlinewidth 4 4 moveto 4 4 lineto stroke 458 265 moveto 458 265 lineto stroke %%Trailer %%EOF \ \>"], "Graphics", Evaluatable->False, PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True, ImageSize->{454, 261}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[oooclo5H/1EGooj[ooc/k>gYjN[Vi^OShn03o oclo?ginO[fm_Oclo5D00:X00?l00000EED0EJX00=d81Slo?ginO[fm_Oclo0<30d92@X61PL30`000 EED0EJX0EOl0E@00ZUD0ZZX0E@<30d92@X61PL30`000E@L71dI6AXF5QLC4a000ZUD0ZZX0Z_l0ZP00 e5D0ojX0ZPL71dI6AXF5QLC4a000ZP/;2dY:BXV9RLS8b000oeD0ojX0ool0o`1E05EE0:X0o`/;2dY: BXV9RLS8b000o`l?3di>CXf=SLcCXf=SLc0000M`000ol0003o04d0 001h0003o`000?000_mI0000N@000ol0003`00;oF00007X000?o0000k`02oeP0001k0003o`000>l0 0_mG0000O0000ol0003`0003o`0005@0001m0003o`000?0000?o0000D`0007h000?o0000BP02o`T0 0_nI0003o`000580001o0003o`0004T000?o00002@000ol0002H0003o`00054000200003o`0001`0 1Ol200;o00@0ool01?l200?o0P05o`801?l200Go0P000ol0000300?o0`000ol0002I0003o`000500 00210003o`0001d000?o00000P001?l00?l20004o`0000;o0`000ol0o`020003o`00008000Go0000 o`030005o`000?l01P000ol000020003o`0009X000?o0000C`0008806Ol60003o`00008000Co003o 0P001?l00002o`<000?o0?l00ol40005o`000?l00`001Ol0003o00H000?o00000P000ol0002K0003 o`0004h000220003o`0001<00ol60003o`00008000Co003o0P001?l00002o`<000?o00000P000ol0 00020005o`000?l00`001Ol0003o00H000?o00000P000ol0002L0003o`0004d000220003o`0001/0 0_l300Go0P04o`800ol200Co0`05o`030?oo00;o0`000ol000040003o`00008000?o0000W@000ol0 000a00?o1002o`T00_l70000PP000ol0000W0003o`0001P000Co00000_l400;o0`02oj0000?o0000 0000ol000020004o`00o`8000Co00000_l30003o`00008000?o0000 0P001Ol0003o00<000Go0000o`070005o`000?l06@000ol0000K00Ko3002o`X01_l900Go2P02odH0 00?o0000B00003H000?o0?l00P000ol000020003o`0000@000?o0?l00`001?l00?lg00;o0`05o`80 1?l200?o0P04o`<01Ol00`3oo`02o`<000?o00001@001Ol0003o01T000?o0000;003og0000?o0000 5@03o`@00_l900;o7`0003H000?o0?l00P04o`030?l000D000?o0?l00`001?l00?m30003o`0001P0 00Co00000_l300?o0`02oaT000?o00000ol200?o00D0oooo0002o`8000?o0000R`000ol0000G0003 o`00008000?o00002@000ol0000M0000=P000ol0o`020006o`00o`3o0P001ol0003o0?l00`001?l0 0?lh0003o`0000L00_lI00;o:@000ol0o`030004o`00o`<000Co003o0P000ol0000]0003o`0005/0 0_l500Co0P03o`<01Ol30003o`00008000?o00000P04o`<000?o00007@0003D00_l00`3oo`0200;o 0`03o`800ol0103oool200Co=P000ol0001=0003o`3o00<000Co003o0`001?l00?l20003o`0002d0 00?o0000F`02o`D000Co00000_l30003o`3o00<000Co00000ol30003o`0000<000?o00000`000ol0 000M0000A`000ol0002?0003o`3o00<000Co003o0`001?l00?l20003o`0002h000?o0000F`000ol0 00030004o`0000;o0`000ol0o`030007o`000?l0o`030003o`0000@000?o00000P000ol0000M0000 A`000ol0002?0003o`3o00<000Co003o0`02o`050?l00?l0<@000ol0001P0004o`0000;o0`000ol0 o`030007o`000?l0o`030003o`0000D000Go0000o`0O0000f002o`800ol200;o0P02o`040?l000?o <@000ol0001O00Co0P03o`<01?l200;o00<0ool00P000ol000050005o`000?l07`000>`000?o0000 <0000ol0001O0003o`0000`000?o00001`02o`<00ol300;o7`0002P04ol300Ko00<0ool00_l300Co 0P07o`<00omj0003o`0000H000?o00001`000ol0000a0003o`0005d00_l=00;o=@0002X00_l300;o 00<0ool00P02o`800_l400;o0P02o`800_l20003o`0000;o0P02o`030?oo00<00_l20003o`000;l0 3?nI0000:P02o`<00_l00`3oo`0200;o0P02o`@00_l200;o0P02o`8000?o00000_l200;o00<0ool0 0`02okl01_l;00OoTP0002X00_l300;o00<0ool00P02o`800_l400;o0P02o`800_l500;o0P02o`03 0?oo00<00_n:0003o`0003000_l60003o`0000l01On=0000:P02o`801_l200Go0`001ol0ool0o`00 1?l600;o00<0ool01?l200GoPP000ol000030003o`0002h00_l80003o`0001@01ol:00koKP0002X0 0_l:00;o1P001_l0ool0o`/00_l:00;oQ0000ol000040003o`0002`000?o00002@000ol0000J00[o 3P0:of@0000X00Ko2002o`H01_l900Go2@02oh@000?o00001@000ol0000Y00;o30000ol0000l00Oo G@0003D00onY0003o`0000H000?o00009P02o`h000?o0000@`09oe@000190003o`0009D000?o0000 1`000ol0000T0003o`0000l000?o0000B`0@oa803_lT0000B@000ol0002E0003o`0000L000?o0000 8`000ol0000@0003o`0005/04_l>00Ko7P0004T000?o0000U@000ol000080003o`00024000?o0000 4@000ol0002100Go6@0004X000?o0000U0000ol000090003o`0001l000?o00004P000ol0002600?o 5P0004X000?o0000U0000ol000090003o`0001h000?o00004`000ol0002900;o500004X000?o0000 G`0Joa/000?o00002P000ol0000L0003o`0000`01Ol20003o`0008`00_lB0000BP000ol0001L00?o 6P04o`d01Ol40003o`0000`000?o00006`000ol0000;0003o`0000<00on@00;o400004/000?o0000 F003ob400ol90003o`0000<01Ol>0003o`0001X000?o000030000ol0002H00;o3P0004/000?o0000 E@03obL00_l60003o`0001P000?o00003P03o`L000?o00003@000ol0002J00;o300004/000?o0000 DP03ob`00_l40003o`0001T000?o000030001Ol0003o00H000?o00003@000ol0002L00;o2P0004/0 00?o0000C`03oc400_l20003o`0001X000?o00002`001Ol0003o00D000?o00003P000ol0002N0003 o`0000L0000200;o0`02o`<00ol00`3oo`020004o`3oo`800ol500?o0P03o`@00ol0103oo`02o`80 1ol200?o1`000ol0000300Ko@@04ocH00olM0003o`0000X000?o00000P000ol000020003o`0000h0 00?o0000W`02o`L000001`3o003o0?l00P001Ol0003o008000Ko003o0?l20004o`00o`D000Go0000 o`020003o`0000@000Co003o0P001?l00?l20003o`3o008000?o0?l00P000ol000040003o`000080 00?o000010000ol0000i00Go>`02oah000?o000020000ol000040004o`00oa4000?o0000X@000ol0 0004000000<0o`000`000ol000040004o`00o`8000?o0?l01@000ol000030005o`000?l00P000ol0 00040004o`00o`8000Co003o0P001?l00002o`<00_l700;o00<0ool01P000ol0000c00Ko@0001?l0 oolM0003o`0000L000?o00001@02oa<000?o0000X0000ol00004000000<0o`000`04o`<000Co003o 0P000ol0o`03o`8000?o00000`001Ol0003o008000?o000010001?l00?l20004o`0000?o0P000ol0 00020003o`0000T000?o00001`000ol0000]00GoAP001Ol0003o01d000?o00001P000ol000060003 o`00014000?o0000X@000ol00003000000L0o`00o`3o008000Co00000_l01`3o003o0?l00P001?l0 0?l50005o`000?l00P000ol0000400;o00D0ool0o`050003o`3o008000?o0?l00P000ol0000A0003 o`0002D02?m;0003o`00008000?o00006`000ol000050003o`0000D000?o0?l04`000ol0002P0003 o`0000<0000200?o0P02o`<00_l0103o0003o`030?oo00801?l400?o0P04o`<00_l01@3o003o00<0 0ol300?o0P03oa<000?o00006P0;oe<000?o00000`000ol0000K0003o`0000@000?o00001@001?l0 0?lB0003o`000:4000?o00000P0001<000?o00004P000ol0000_0003o`0000l02_mN0003o`0000@0 00?o00006`03o`800_l70004o`00oa<000?o0000X@000ol0000100004`000ol0000C00;o;`000ol0 000400_oI`000ol000060003o`0001d00_l80003o`00008000?o000040000ol0002Q0003o`000040 001701[oLP000ol000070003o`0002H000?o00000P000ol0000A0003o`000:400Ol10040000e00;o 3@03oa<000?o0000MP000ol000070003o`0002H000?o00000`000ol0000A0003o`000:000Ol10040 000g0003o`0000L00olF0003o`0007H000?o000020000ol0000T0003o`0000D000?o00004@000ol0 002O007o0@010000>0000ol0000400;o6P000ol0001e0003o`0000T000?o00008`000ol000050003 o`00018000?o0000WP01o`400@0003P000?o00000P02oa`000?o0000M@000ol000090003o`0002<0 00?o00001P000ol0000A0003o`0008H00olE007o0@010000>@001?l0oolN0003o`0007H000?o0000 2@000ol0000R0003o`0000H000?o00004P000ol0002200?o00<0ool00olC007o0@0003T00_lP0003 o`0007H000?o00002P000ol0000Q0003o`0000L000?o00004P000ol000200003o`0000801_lB007o 0@0003T000?o00007`000ol0001f0003o`0000X000?o00008@000ol0002O0003o`0000801_lB007o 0@0003P000?o0?l080000ol0001f0003o`0000X000?o00008@000ol0002N0003o`0000<01olA007o 0@0003P000?o0?l080000ol0001f0003o`0000X000?o000080000ol0000>0003o`0000L000?o0000 Q0000ol0000300Oo4@01o`40000g0004o`00ob4000?o0000M@000ol0000;0003o`0001l000?o0000 3@03o`@01On60003o`0000<01olA007o0@0003H000?o00000P000ol0000N0003o`0007@000?o0000 30000ol0000O0003o`0000d00ol309[o4001o`40000e0003o`0000@000?o00007@000ol0001d0003 o`0000`000?o00007`000ol0000>0003o`0000H00_n500Oo1`000ol0000=007o0@010000=@000ol0 00050003o`0001`000?o0000M0000ol0000<0003o`0001l000?o0000W`06o`H000?o00003P01o`40 0@0003@000?o00001`03oa/000?o0000M0000ol0000<0003o`0001l000?o0000W`06o`H000?o0000 3P01o`400@0003@000?o00002P04oaL000?o0000P`000ol0000O0003o`0009l01_l60003o`0000h0 0Ol10040000d0003o`0000h000?o00005@000ol000220003o`00020000?o00003003oi001Ol400;o 4@01o`400@0003<000?o00003`000ol0000E0003o`0008<000?o00007`000ol0000=0003o`000940 0ol0103ooolB0003o`000040000c0003o`0000l000?o00005@000ol000230003o`0001l000?o0000 3P000ol0002C0003o`0001<000?o00000@0003<000?o00005P03ogP00_lJ0003o`0001l000?o0000 3P04ojP000?o00000@00038000?o00005003o`030?oo00;oMP05o`H00_l?0003o`0001l000?o0000 3P001Ol0003o0:L000?o00000@00038000?o00004`000ol0000200GoK@0@o`<00ol>0003o`000200 00?o00003@001Ol0003o0:H000?o00000P00034000?o000050000ol0000200GoF00Eo`T01Ol500?o 3P000ol0000P0003o`0000h000Co003oYP000ol000020000<@000ol0000C0003o`0000<01_m201Go 7P03oaP000?o000080000ol0000=00CoY`000ol000020000<@000ol0000C0003o`0000<01_l]01Go CP000ol0000Q0003o`000;H000?o00000`00030000?o000050000ol0000300Ko600Eof<000?o0000 8P000ol0002e0003o`0000<0000`0003o`0001<000?o00001007o`805Omg0003o`0002<000?o0000 ]@000ol000030000<0000ol0000C013oS0000ol0000T0003o`000;<000?o0000100002l000?o0000 5@06o`D000?o0000O@03o`d000?o00009@000ol0002b0003o`0000@0000_0003o`0001D01_l50003 o`0007h000?o000030000ol0000V0003o`000;4000?o0000100002l000?o00005@06o`D000?o0000 O`000ol0000;0003o`0002H000?o0000/0000ol000050000;`000ol0000F00Go0`02oh801?l:0003 o`0002L000?o0000[P000ol000060000;P000ol0000I00?o00<0ool0Q0001Ol0003o00T000?o0000 :0000ol0002]0003o`0000H0000^0003o`0001`000?o0000Q0001Ol0003o008000?o00000`000ol0 000Y0003o`000:`000?o00001`0002h000?o0000BP0:oe0000Co003o0P000ol000030003o`0002X0 00?o0000ZP000ol000080000;P000ol0001200So2P09odH01?l30003o`0000<000?o0000:`000ol0 002Y0003o`0000P0000^0003o`0003d01OlK00KoC0000ol0000]0003o`000:L000?o00002@0002h0 00?o0000>P03obH00om90003o`0002h000?o0000Y002o``0000_0003o`0003L00_l/00CoA0000ol0 000`0003o`000:8000?o0000300002l000?o0000=003oc800om00003o`00038000?o0000X0000ol0 000=0000;`000ol0000b00;o>003oc`000?o0000=0000ol0002N0003o`0000h0000_0003o`0002l0 0olm00Co=`000ol0000f0003o`0009`000?o00003`00030000?o0000;002od@01?lb0003o`0003P0 00?o0000VP000ol0000@0000<0000ol0000[0003o`0004P01Ol/0003o`0003X000?o0000V0000ol0 000A0000<0000ol0000Z0003o`0004h01?lW0003o`0003`000?o0000U@02oa@0000a0003o`0002P0 00?o0000D`03ob001?m00003o`0009<000?o00005000038000?o00009P000ol0001G00?o6005odD0 00?o0000T002oaL0000c0003o`0002<00_mM00;o4P04od/000?o0000SP000ol0000G0000=0000ol0 000Q0003o`0005l04_m@0003o`0008/00_lJ0000=0000ol0000P0003o`000<<000?o0000R@000ol0 000J0000=@000ol0000N0003o`00000?o4P06ob<02?l`00So9@0003`00_lC0003o`000=801_l600Ko<@09oa`02ol]0000?P03o`d0 0ooK00Ko@00LocP0001100Co1005ool0N@0004D01?oo07h0003o0"]], Cell[TextData[{ "The Dynamics Workbench uses reference ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s to describe vectors fixed to certain ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s. Each ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " generally has one or more ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s fixed to it. Any point fixed to a ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " can be described using any of these ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s. Associated with a ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is a set of three mutually-orthogonal unit vectors, labeled with names of \ the form frame[", StyleBox["i", FontSlant->"Italic"], "] where ", StyleBox["i", FontSlant->"Italic"], " takes on value 1, 2, or 3.\n\nThere is a single default ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " and associated ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " defined in the Dynamics Workbench, corresponding to the Newtonian \ reference frame and called ", StyleBox["ground", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ". All additional ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s and ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "'s are defined relative to ", StyleBox["ground", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", using a variety of joint types to describe the kinematic relationship." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Notation", "Section", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True, FontFamily->"Times"], Cell[TextData[ "The Dynamics Workbench uses a very simple notation for refering to \ generalized coordinates, vectors, and reference frames."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData["Generalized coordinates and speeds"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ "Generalized coordinates are referred to as ", StyleBox["q[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["n", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", and generalized speeds as ", StyleBox["u[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["n", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ". Both of these variables are implicitly functions of time." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData["Vectors in reference frames"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ "A reference ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " named, for example, ", StyleBox["a", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", will generally be fixed to a ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " also named ", StyleBox["a", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", which will have axes ", StyleBox["a[1]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", ", StyleBox["a[2]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", ", StyleBox["a[3]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ". These axes will be aligned respectively with the axes of the inboard \ body, when the generalized coordinates for ", StyleBox["a", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " are set to zero. Thus, a vector in reference frame ", StyleBox["a", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " might be ", StyleBox["0.5 a[1] + 0.3 a[2]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData["Dyadics"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[ "A dyadic is expressed using the ** symbol, which normally signifies \ NonCommutativeMultiply. In this case, the dyadic is not commutative, and is \ of the form I11 a[1]**a[1] + I12 a[1]**a[2] + I22 a[2]**a[2] + I33 \ a[3]**a[3]."], "Text", Evaluatable->False, AspectRatioFixed->True] }, Closed]], Cell[CellGroupData[{ Cell["Basic Commands", "Section", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True, FontFamily->"Times"], Cell[CellGroupData[{ Cell["NewModel", "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ "The command ", StyleBox["NewModel[]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is used to clear the internal variables storing parameters of a model." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData["Example"], "Subsubsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[BoxData[ \(NewModel[]\)], "Input", PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData["AddBody"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ StyleBox["AddBody[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["new_body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["inboard_body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["joint_type", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox[" ", FontWeight->"Bold"], "adds a body, ", StyleBox["new_body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], ", which is attached to the previously-defined ", StyleBox["inboard_body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " with a joint specified by ", StyleBox["joint_type", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], ". After a call to ", StyleBox["NewModel[]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", the only existing body is ", StyleBox["ground", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", the Newtonian reference frame. Currently supported joint types are ", StyleBox["Hinge", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", ", StyleBox["Slider, UJoint, Ball, and SixDOF", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " (see section on joints). The output of AddBody is a list of two lists \ containing the generalized coordinates and generalized speeds for the new \ body." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData["Options"], "Subsubsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ StyleBox["BodyToJnt->0 | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["bodytojoint", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " is the vector, specified in any reference frame or frames, from the new \ body\[CloseCurlyQuote]s center of mass to the joint connecting it to the \ inboard body." }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["InbToJnt->0 | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["inboardtojoint", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " is the vector, specified in any reference frame or frames, from the \ inboard body's center of mass to the joint connecting it to the new body." }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Mass-> 0 | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["mass", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " is the mass of the new body." }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Inertia-> 0 | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["inertia", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " is the central inertia dyadic of the new body. There are three possible \ forms for this dyadic: a full dyadic representation such as ", StyleBox["I12 a[1]**a[2]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "; an inertia matrix for the body's reference frame; and a list of the \ diagonal entries of that matrix, if the reference frame's axes are principal \ axes." }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Qdof->Automatic | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["qdof_#", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " is the number to be given to the generalized coordinate for the new \ degree of freedom. If ", StyleBox["Automatic", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", the Workbench automatically chooses a number. If the joint type has more \ than one generalized coordinate, these are named ", StyleBox["Qdof1, Qdof2", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ",..." }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Udof->Automatic | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["udof_#", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " is the number to be given to the generalized speed for the new degree of \ freedom. If ", StyleBox["Automatic", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", the Workbench automatically chooses a number. If the joint type has more \ than one degree of freedom, these are named ", StyleBox["Udof1, Udof2", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ",..." }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["RelativeTo->Automatic | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " specifies the reference frame which the new reference frame is relative \ to. If ", StyleBox["Automatic", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", the inboard body's reference frame is used. It is common to use ", StyleBox["ground", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", so that the generalized coordinate for a hinge joint would be a segment \ angle." }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Axis->{0,0,1} | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["dir_cos", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " gives the axis of the joint using direction cosines in the new body's \ reference frame. Alternative expressions for Axis are the coordinate number (\ \[PlusMinus]1, \[PlusMinus]2, \[PlusMinus]3) with the sign signifying \ counter-clockwise (+) or clockwise (-) rotation, or a vector in the inboard \ body's reference frame. If the joint type has more than one axis, these are \ named ", StyleBox["Axis1", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", ", StyleBox["Axis2", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ",\[Ellipsis]" }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["TAxis->{0,0,1} | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["dir_cos", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " gives the translational axis of the joint using direction cosines in the \ new body's reference ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", as used for Slider or SixDOF joints. Alternative expressions for ", StyleBox["TAxis", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " are the coordinate number (\[PlusMinus]1, \[PlusMinus]2, \[PlusMinus]3) \ with the sign signifying movement measured in the positive or negative \ direction of the axis, or a vector in the ", StyleBox["inboard", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " body's reference ", StyleBox["frame", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ". If the joint type has more than one translational axis, these are named \ ", StyleBox["TAxis1", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", ", StyleBox["TAxis2", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ",\[Ellipsis]" }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Frme->Automatic | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["frme_name", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " sets the name of the reference frame which is fixed to the new body. By \ default, the frame is given the same name as the body." }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Basefrm->Automatic | ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["base_frame", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " sets the reference frame which the new reference frame is relative to, as \ in ", StyleBox["RelativeTo", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ". Options ", StyleBox["Frme", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " and ", StyleBox["Basefrm", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " are rarely necessary." }], "Text", CellMargins->{{16, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Joint Types"], "Subsubsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Fixed", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is a zero degree-of-freedom joint, in which the inboard and reference \ bodies do not move relative to each other. It is often used to perform a \ change of coordinates or to accomodate an unusual geometric arrangement of \ bodies. Its axes can be offset from those of the base reference frame using \ the Offset option. Offset may be a matrix of direction cosines or a list of \ vectors specifying the offset axes in terms of the base frame. Examples: \ Offset-> {{0,1,0},{1,0,0},{0,0,1}}, Offset->{body[2],body[1],body[3]}. A \ Fixed joint has no generalized speeds or coordinates associated with it." }], "Text", CellMargins->{{17, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Hinge", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is a single degree-of-freedom rotatory joint. The axis about which the \ joint rotates is specified by the option Axis, which may be the coordinate \ number, a list of direction cosines, or a vector in the base reference frame \ (the frame of the inboard body). Examples: Axis->3, Axis->{0,0,1}, \ Axis->body[1]. The generalized speed, Udof, is defined to be the \ time-derivative of generalized coordinate Qdof." }], "Text", CellMargins->{{17, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Slider", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is a single degree-of-freedom prismatic joint. Its location and home \ position are specified by the BodyToJoint option. The slider joint is at a \ home position when its generalized coordinate has a value of zero. In this \ position, the joints for the inboard and outboard bodies are coincident. As \ the generalized coordinate changes in value, these two joints separate along \ a translational axis specified by TAxis, which may be a coordinate number, a \ list of direction cosines, or a vector in the base reference frame. Examples: \ TAxis->3, TAxis->{0,0,1}, TAxis->body[1]. The generalized speed, Udof, is \ defined to be the time-derivative of generalized coordinate Qdof." }], "Text", CellMargins->{{17, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["UJoint", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is a two degree-of-freedom rotatory joint. Its home position is \ coincident with the base reference frame (the frame of the inboard body). The \ generalized coordinates describing the rotations are the successive rotation \ angles about the two specified rotation axes, Axis1 and Axis2. The \ generalized speeds, Udof1 and Udof2, are defined to be the time-derivatives \ of the respective generalized coordinates, Qdof1 and Qdof2." }], "Text", CellMargins->{{17, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Ball", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is a three degree-of-freedom rotatory joint with orientation described by \ euler parameters. Its home position is coincident with the base reference \ frame (the frame of the inboard body). The generalized coordinates Qdof1 \ through Qdof4 describing the rotations are in the form of euler parameters \ {e1,e2,e3,e4}, where e4 is the cosine of the half-rotational angle. Use ", StyleBox["Gimbal", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " if different generalized coordinates are desired. The generalized speeds \ Udof1 through Udof3 are the angular velocities about the body's reference \ frame axes." }], "Text", CellMargins->{{17, Inherited}, {Inherited, Inherited}}, Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Gimbal", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is a three degree-of-freedom rotatory joint with orientation described by \ euler angles. Its home position is coincident with the base reference frame \ (the frame of the inboard body). The generalized coordinates describing the \ rotations are the successive rotation angles about the three specified \ rotation axes, described by options Axis1, Axis2, and Axis3. Use ", StyleBox["Ball", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " if euler parameters are preferred as generalized coordinates. Axes may be \ specified by coordinate number, or a list of direction cosines. Examples: \ Axis1->3, Axis2->1, Axis3->2; Axis1->{0,0,1}, Axis2->{0,.707,.707}, \ Axis3->{.707,0,.707}." }], "Text", CellMargins->{{17, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["SixDOF", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is a six degree-of- freedom joint which allows for full translational and \ rotational movement between bodies. Its location ahd home position are \ specified by the BodyToJoint option. The translational axes are specified by \ TAxis1, TAxis2, and TAxis3. The translations along those axes are specified \ by generalized coordinates Qdof1, Qdof2, and Qdof3, and by generalized speeds \ Udof1, Udof2, and Udof3. The rotational orientation is described by four \ euler parameters, specified by generalized coordinates Qdof4 through Qdof7. \ The angular velocities about the base frame's axes are specified by \ generalized speeds Udof1, Udof2, and Udof3." }], "Text", CellMargins->{{17, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Example"], "Subsubsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[BoxData[ \(AddBody[a, ground, Hinge]\)], "Input", PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True], Cell[BoxData[ \({{1}, {1}}\)], "Output", Evaluatable->False, PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True] }, Open ]], Cell[TextData[ "In this example, Qdof1 and Udof1 are not specified by the user. The Dynamics \ Workbench has automatically selected values of 1 for each."], "Text", CellMargins->{{18, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData["AppFrc"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ StyleBox["AppFrc[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["force", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["point", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " applies a force specified by vector ", StyleBox["force", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " (in any reference frame or frames) at a point specified by vector", StyleBox["force", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " (relative to the center of mass) of ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], "." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Example"], "Subsubsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[BoxData[ \(AppFrc[a, \(-ground[1]\), 2\ a[1]]\)], "Input", PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True], Cell[BoxData[ \(1\)], "Output", Evaluatable->False, PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True] }, Open ]], Cell[TextData[ "A force of magnitude 1 directed in the negative direction of the ground[1] \ axis, is applied to body a. The point of application is specified by the \ vector 2 a[1] from body a's center of mass."], "Text", CellMargins->{{18, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["AppTrq"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ StyleBox["AppTrq[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["torque", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " applies a torque (or moment) specified by vector ", StyleBox["torque", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " (in any reference frame or frames) to ", StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], "." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Example"], "Subsubsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[BoxData[ \(AppTrq[a, 10\ a[3]]\)], "Input", PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True], Cell[BoxData[ \(1\)], "Output", Evaluatable->False, PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True] }, Open ]], Cell[TextData[ "A torque of magnitude 10 directed in the direction of the ground[3] axis, \ is applied to body a."], "Text", CellMargins->{{18, Inherited}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell["EOM", "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ "The command ", StyleBox["EOM[]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " assembles equations of motion for the system with previously entered \ bodies, forces, and torques." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "The command ", StyleBox["AtT0[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["expr", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is used to set initial conditions by applying to an expression such as ", StyleBox["q[1] == 0", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", and making that expression valid for time zero." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Kinematics"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Kinematics", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the set of kinematical differential equations. The Dynamics \ Workbench usually uses equations ", StyleBox["q[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["n", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]'[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["t", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["] == u[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["n", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["][", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["t", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", but the user may define arbitrary relationships, e.g., for complex \ kinematical joints." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Intermediate Level Commands", "Section", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True, FontFamily->"Times"], Cell[TextData[ "The Dynamics Workbench provides several useful intermediate level commands, \ which are not required for formulation of equations of motion, but aid \ analysis or rearrangement of these equations. "], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData["CollectE"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ "The command ", StyleBox["CollectE[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["equations", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " collects together terms in eq", StyleBox["equations", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], "uations which are linear in the time-derivative of the generalized speeds, \ making the equations somewhat more readable." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "The command ", StyleBox["CollectE[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["equations", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["expr", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " collects together terms in ", StyleBox["equations", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " which are linear in ", StyleBox["expr", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], ", making the equations somewhat more readable." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["AddFrame"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ "The command ", StyleBox["AddFrame[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["frame", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["baseframe", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["jointtype", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["options", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " adds a new reference frame to the system, just as ", StyleBox["AddBody", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], ", but without a body attached to the reference frame. This command is \ useful for defining custom joints or body configurations, by decoupling body \ specifications from reference frame specifications." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["AsmStateEqn"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ StyleBox["AsmStateEqn[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["eom", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["kinematics", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " assembles the state equations, using input arguments corresponding to the \ equations of motion and the kinematical differential equations. The resulting \ equations are differential equations in the generalized coordinates and \ speeds, and are suitable for use by ", StyleBox["RungeKutta", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["RHS"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ StyleBox["RHS[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["eqns", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the right-hand-side of each equation in a list of equations." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["SolveEqn"], "Subsection", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True], Cell[TextData[{ StyleBox["SolveEqn[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["eqn, vars", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " rearranges a list of equations in terms of the variables vars. The \ command also sorts this list. " }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["MassMatrix"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "Given the equations of motion, ", StyleBox["MassMatrix[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["eom", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " provides a list of two outputs: the mass matrix (terms linear in the \ time-derivatives of generalized speeds u), and the right-hand side. These \ outputs can be used in the linear system M.udot == rhs, as when integrating \ the equations of motion." }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["AtT0"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["AtT0[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["expr", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns expr set at time zero. This command is useful for providing \ initial conditions to ", StyleBox["NDSolve", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], "." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["FindEquil"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["FindEquil[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["eqn", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", {", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["x", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["x0", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["} ]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " finds the equilibrium point in the given equation, for variable ", StyleBox["x", FontSlant->"Italic"], ". The initial guess of ", StyleBox["x0", FontSlant->"Italic"], " is used to start a Newton search. For a list of equations, use ", StyleBox["FindEquil[ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["eqns", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[", {", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["x", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["x0", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["}, {", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["y", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["y0", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["},...]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " to find equilibrium points in several variables x, y, etc." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["PosCOM"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["PosCOM[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns a vector describing the position of the center of mass of body \ with respect to the ground reference frame." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["PosPnt"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["PosPnt[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["point", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the vector describing the position of point (entered as a vector \ relative to the center of mass) fixed to body." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Tmtx"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Tmtx[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["frame", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is the transformation matrix which maps between frame and the inertial \ (ground) reference frame. Tmtx returns a list of coordinates of the three \ axes of frame, each in the form of a sublist comprising coefficients for axes \ of reference frame." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Lower Level Commands", "Section", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True, FontFamily->"Times"], Cell[TextData[ "At the lowest level of simplification, the Dynamics Workbench provides \ routines which enable one to assemble equations of motion \"by hand,\" save \ for the most basic mathematical operations. The Workbench makes it easy to \ manipulate vectors in various reference frames by providing a simple notation \ and framework for these operations."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData["Accelerations"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["AccCOM[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns a vector describing the acceleration of the center of mass of \ body with respect to the ground reference frame." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["AccJnt[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the velocity of the point on the inboard body which corresponds \ to the location of the joint connecting the two." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["AngAcc[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the angular acceleration of the body with respect to ground." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Velocities"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["AngVel[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the angular velocity of the body with respect to ground." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["VelCOM[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns a vector describing the velocity of the center of mass of body \ with respect to the ground reference frame." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["VelJnt[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the velocity of the point on the inboard body which corresponds \ to the location of the joint connecting the two." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["VelJnt2[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the velocity of the point on body which instantaneously \ corresponds to the location of the joint between body and the inboard body. \ Used in slider joints." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Model Structure"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Bodies", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns a list of the currently defined bodies." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Force[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns a list of the forces acting on the body." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Frames", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns a list of the currently defined reference frames." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Inboard[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the name of the body inboard to the argument." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Inertia[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is the inertia dyadic of the body." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Kids[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["frame", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns a list of reference frames below the argument's entry in the \ frame tree." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Mass[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is the mass of the body." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Parents[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["frame", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns a list of reference frames above the argument's entry in the \ frame tree." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]], Cell[TextData[{ StyleBox["Torque[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns a list of the torques acting on the body." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData["Kane's Method"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["PrtVel[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["expr", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["n", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " or ", StyleBox["PrtVel[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["expr", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",u[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["n", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the partial velocity of expression with respective to the nth \ generalized speed." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["ResltF[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the resultant of the forces acting on the body." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["ResltT[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the resultant of the torques or moments acting on the body." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Rstar[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the inertia forces acting on body." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Tstar[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the inertia torque acting on body." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["GActFrc[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["n", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the generalized active force of body with respect to the nth \ generalized speed. ", StyleBox["GActFrc[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the generalized active forces for body with respect to each of \ the generalized speeds. ", StyleBox["GActFrc[All]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the sum of the generalized active forces for all bodies, with \ respect to each of the generalized speeds." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["GInerFrc[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["n", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the generalized inertia force of body with respect to the nth \ generalized speed. ", StyleBox["GInerFrc[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["body", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the generalized inertia forces for body with respect to each of \ the generalized speeds. ", StyleBox["GInerFrc[All]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the sum of the generalized inertia forces for all bodies, with \ respect to each of the generalized speeds." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Transformation between reference frames"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["CastMtx[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["from", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["to", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the transformation\nmatrix needed to cast a vector from one \ reference frame to\nanother." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["CastV[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["vector", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["frame", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " will cast any vector into a specified reference frame." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Tmtx[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["frame", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " is the transformation matrix which maps between frame and the inertial \ (ground) reference frame. Tmtx returns a list of coordinates of the three \ axes of frame, each in the form of a sublist comprising coefficients for axes \ of reference frame." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]], Cell[CellGroupData[{ Cell[TextData["Vector Operations"], "Subsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Cross[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["vector1", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["vector2", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " or ", StyleBox["(", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["vector1", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ~X~ ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["vector2", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[")", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " performs the cross product of two vectors." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Dot[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["vector1", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["vector2", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " or ", StyleBox["vector1", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " ", StyleBox[".", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " ", StyleBox["vector2", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], " performs the dot product of two vectors (or a vector and a dyadic)." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ "A ", StyleBox["dyadic", FontWeight->"Bold"], " may be performed by using ", StyleBox["vector1", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[" ** ", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["vector2", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[".", FontSlant->"Italic"], " The symbol ** denotes a noncommutative multiply within ", StyleBox["Mathematica", FontSlant->"Italic"], ", in accordance with the fact that dyadics are not commutative." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True], Cell[TextData[{ StyleBox["Dist[", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["point1", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox[",", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], StyleBox["point2", FontFamily->"Courier", FontSize->12, FontSlant->"Italic"], StyleBox["]", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " returns the distance between two points, which need not be described in \ the same reference frames." }], "Text", Evaluatable->False, InitializationCell->True, AspectRatioFixed->True] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Example: Ballistic walker", "Section", Evaluatable->False, PageBreakWithin->Automatic, PageBreakBelow->Automatic, AspectRatioFixed->True, FontFamily->"Times"], Cell[TextData[ "This example is an analysis of ballistic walking, described by Mochon & \ McMahon (1980). Given the correct initial conditions, it is possible for a \ biped to walk one step with no external input. This ballistic motion \ resembles actual human walking to a surprising degree. The model consists of \ three segments, including a stance leg and the thigh and shank of the swing \ leg. Segments are joined by Hinge joints. All motion is planar.\nRef: Mochon \ & McMahon, J. Biomech. 13:49-57, 1980."], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[GraphicsData["PostScript", "\<\ %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 4 4 277 204 %%HiResBoundingBox: 4 4 277 204 %%Creator: (Mathematica Macintosh 3.0) %%Title: Clipboard %%CreationDate: (Tuesday, January 13, 1998) (1:15:21 PM) %%DocumentNeededResources: (atend) %%DocumentFonts: (atend) %%DocumentNeededFonts: (atend) %%EndComments 0 208 translate 1 -1 scale 0 setlinewidth 0.5625 setgray 540 363 moveto 540 363 lineto stroke 0 setgray 540 363 moveto 540 363 lineto stroke 540 363 moveto 540 363 lineto stroke 540 363 moveto 540 363 lineto stroke 1 setlinewidth 8.5 193.5 moveto 267.5 193.5 lineto stroke 19.5 192.5 moveto 20.5 185.5 lineto stroke 22.5 181.5 moveto 24.5 174.5 lineto stroke 25.5 170.5 moveto 27.5 163.5 lineto stroke 28.5 159.5 moveto 30.5 152.5 lineto stroke 31.5 148.5 moveto 33.5 141.5 lineto stroke 34.5 137.5 moveto 36.5 130.5 lineto stroke 38.5 126.5 moveto 40.5 119.5 lineto stroke 41.5 114.5 moveto 43.5 108.5 lineto stroke 44.5 103.5 moveto 46.5 96.5 lineto stroke 47.5 92.5 moveto 49.5 85.5 lineto stroke 50.5 81.5 moveto 52.5 74.5 lineto stroke 53.5 70.5 moveto 55.5 63.5 lineto stroke 57.5 59.5 moveto 59.5 52.5 lineto stroke 60.5 48.5 moveto 62.5 41.5 lineto stroke 63.5 37.5 moveto 65.5 30.5 lineto stroke 66.5 26.5 moveto 68.5 19.5 lineto stroke 2 setlinewidth 120 193 moveto 170 18 lineto stroke 1 setlinewidth 119.5 191.5 moveto 117.5 184.5 lineto stroke 116.5 179.5 moveto 114.5 173.5 lineto stroke 113.5 168.5 moveto 111.5 161.5 lineto stroke 109.5 157.5 moveto 107.5 150.5 lineto stroke 106.5 146.5 moveto 104.5 139.5 lineto stroke 103.5 135.5 moveto 101.5 128.5 lineto stroke 100.5 124.5 moveto 98.5 117.5 lineto stroke 97.5 113.5 moveto 95.5 106.5 lineto stroke 94.5 102.5 moveto 92.5 95.5 lineto stroke 90.5 91.5 moveto 88.5 84.5 lineto stroke 87.5 80.5 moveto 85.5 73.5 lineto stroke 84.5 69.5 moveto 82.5 62.5 lineto stroke 81.5 58.5 moveto 79.5 51.5 lineto stroke 78.5 47.5 moveto 76.5 40.5 lineto stroke 75.5 35.5 moveto 73.5 29.5 lineto stroke 71.5 24.5 moveto 69.5 17.5 lineto stroke 2 setlinewidth 221 191 moveto 171 17 lineto stroke 120 191 moveto 92 12 lineto stroke 92 12 moveto 82 111 lineto stroke 82 112 moveto 29 168 lineto stroke 121 192 moveto 151 192 lineto stroke 221 192 moveto 250 192 lineto stroke 28 168 moveto 49 191 lineto stroke 1 setlinewidth 13.5 193.5 moveto 10.5 203.5 lineto stroke 21.5 193.5 moveto 17.5 203.5 lineto stroke 28.5 193.5 moveto 25.5 203.5 lineto stroke 36.5 193.5 moveto 32.5 203.5 lineto stroke 43.5 193.5 moveto 40.5 203.5 lineto stroke 51.5 193.5 moveto 47.5 203.5 lineto stroke 58.5 193.5 moveto 55.5 203.5 lineto stroke 66.5 193.5 moveto 62.5 203.5 lineto stroke 73.5 193.5 moveto 70.5 203.5 lineto stroke 81.5 193.5 moveto 77.5 203.5 lineto stroke 88.5 193.5 moveto 85.5 203.5 lineto stroke 96.5 193.5 moveto 92.5 203.5 lineto stroke 103.5 193.5 moveto 100.5 203.5 lineto stroke 111.5 193.5 moveto 107.5 203.5 lineto stroke 118.5 193.5 moveto 115.5 203.5 lineto stroke 126.5 193.5 moveto 122.5 203.5 lineto stroke 133.5 193.5 moveto 130.5 203.5 lineto stroke 141.5 193.5 moveto 137.5 203.5 lineto stroke 148.5 193.5 moveto 145.5 203.5 lineto stroke 156.5 193.5 moveto 152.5 203.5 lineto stroke 163.5 193.5 moveto 160.5 203.5 lineto stroke 171.5 193.5 moveto 167.5 203.5 lineto stroke 178.5 193.5 moveto 175.5 203.5 lineto stroke 186.5 193.5 moveto 182.5 203.5 lineto stroke 193.5 193.5 moveto 190.5 203.5 lineto stroke 201.5 193.5 moveto 197.5 203.5 lineto stroke 208.5 193.5 moveto 205.5 203.5 lineto stroke 216.5 193.5 moveto 212.5 203.5 lineto stroke 223.5 193.5 moveto 220.5 203.5 lineto stroke 231.5 193.5 moveto 227.5 203.5 lineto stroke 238.5 193.5 moveto 235.5 203.5 lineto stroke 246.5 193.5 moveto 242.5 203.5 lineto stroke 253.5 193.5 moveto 250.5 203.5 lineto stroke 261.5 193.5 moveto 257.5 203.5 lineto stroke /Courier-Bold findfont 12 scalefont setfont 111 14 moveto (a) show /Courier-Bold findfont 12 scalefont setfont 166 101 moveto (b) show /Courier-Bold findfont 12 scalefont setfont 187 171 moveto (c) show 1 setgray matrix currentmatrix 196.5 113.5 translate 3 0 scale 0.5 0.5 0.5 0 360 arc setmatrix fill 0 setgray matrix currentmatrix 196.5 113.5 translate 3 0 scale 0.5 0.5 0.5 0 360 arc setmatrix stroke 1 setgray matrix currentmatrix 79.5 113.5 translate 3 0 scale 0.5 0.5 0.5 0 360 arc setmatrix fill 0 setgray matrix currentmatrix 79.5 113.5 translate 3 0 scale 0.5 0.5 0.5 0 360 arc setmatrix stroke /Courier-Bold findfont 9 scalefont setfont 128 52 moveto (a[1]) show /Courier-Bold findfont 9 scalefont setfont 100 31 moveto (a[2]) show /Courier-Bold findfont 9 scalefont setfont 105 65 moveto (a[3]) show /Courier-Bold findfont 9 scalefont setfont 235 57 moveto (b[1]) show /Courier-Bold findfont 9 scalefont setfont 207 39 moveto (b[2]) show /Courier-Bold findfont 9 scalefont setfont 217 72 moveto (b[3]) show 231.5 127.5 moveto 233.5 130.5 lineto 231.5 131.5 lineto 231.5 127.5 lineto fill 232.5 130.5 moveto 236.5 146.5 lineto stroke 255.5 141.5 moveto 252.5 143.5 lineto 251.5 141.5 lineto 255.5 141.5 lineto fill 252.5 142.5 moveto 236.5 146.5 lineto stroke /Courier-Bold findfont 9 scalefont setfont 257 143 moveto (c[1]) show /Courier-Bold findfont 9 scalefont setfont 229 126 moveto (c[2]) show /Courier-Bold findfont 9 scalefont setfont 239 158 moveto (c[3]) show 103.5 33.5 moveto 105.5 36.5 lineto 103.5 37.5 lineto 103.5 33.5 lineto fill 104.5 37.5 moveto 106.5 52.5 lineto stroke 126.5 49.5 moveto 123.5 51.5 lineto 122.5 48.5 lineto 126.5 49.5 lineto fill 123.5 50.5 moveto 107.5 52.5 lineto stroke 99.5 46.5 moveto 102.5 39.5 lineto 103.5 42.5 lineto 105.5 42.5 lineto 99.5 46.5 lineto fill matrix currentmatrix 98.5 59.5 translate 16 0 scale 0.5 0.5 0.5 5.34255e-315 0 arc setmatrix stroke matrix currentmatrix 227.5 154.5 translate 17 0 scale 0.5 0.5 0.5 5.34255e-315 0 arc setmatrix stroke 209.5 40.5 moveto 211.5 44.5 lineto 209.5 44.5 lineto 209.5 40.5 lineto fill 210.5 44.5 moveto 213.5 59.5 lineto stroke 233.5 55.5 moveto 230.5 57.5 lineto 229.5 54.5 lineto 233.5 55.5 lineto fill 229.5 55.5 moveto 214.5 59.5 lineto stroke 206.5 55.5 moveto 209.5 48.5 lineto 210.5 50.5 lineto 212.5 51.5 lineto 206.5 54.5 lineto fill matrix currentmatrix 205.5 67.5 translate 17 0 scale 0.5 0.5 0.5 5.34255e-315 0 arc setmatrix stroke 1 setgray 94.5 13.5 moveto 97.5 10.5 lineto 99.5 9.5 lineto 100.5 10.5 lineto 100.5 12.5 lineto 101.5 14.5 lineto 102.5 16.5 lineto 104.5 15.5 lineto 109.5 12.5 lineto fill 0 setgray 94.5 13.5 moveto 97.5 10.5 lineto 99.5 9.5 lineto 100.5 10.5 lineto 100.5 12.5 lineto 101.5 14.5 lineto 102.5 16.5 lineto 104.5 15.5 lineto 109.5 12.5 lineto stroke 1 setgray 188.5 94.5 moveto 185.5 97.5 lineto 183.5 98.5 lineto 182.5 97.5 lineto 182.5 94.5 lineto 182.5 92.5 lineto 181.5 91.5 lineto 178.5 91.5 lineto 173.5 94.5 lineto fill 0 setgray 188.5 94.5 moveto 185.5 97.5 lineto 183.5 98.5 lineto 182.5 97.5 lineto 182.5 94.5 lineto 182.5 92.5 lineto 181.5 91.5 lineto 178.5 91.5 lineto 173.5 94.5 lineto stroke 1 setgray 194.5 167.5 moveto 197.5 164.5 lineto 199.5 163.5 lineto 200.5 164.5 lineto 200.5 166.5 lineto 201.5 169.5 lineto 202.5 170.5 lineto 204.5 169.5 lineto 209.5 166.5 lineto fill 0 setgray 194.5 167.5 moveto 197.5 164.5 lineto 199.5 163.5 lineto 200.5 164.5 lineto 200.5 166.5 lineto 201.5 169.5 lineto 202.5 170.5 lineto 204.5 169.5 lineto 209.5 166.5 lineto stroke 55.5 15.5 moveto 55.5 21.5 lineto 52.5 20.5 lineto 55.5 15.5 lineto fill 5.5 189.5 moveto 5.5 183.5 lineto 8.5 184.5 lineto 5.5 189.5 lineto fill 7.5 183.5 moveto 53.5 20.5 lineto stroke 165.5 14.5 moveto 165.5 20.5 lineto 162.5 19.5 lineto 165.5 14.5 lineto fill 140.5 101.5 moveto 140.5 95.5 lineto 143.5 96.5 lineto 140.5 101.5 lineto fill 142.5 95.5 moveto 163.5 19.5 lineto stroke 1 setgray matrix currentmatrix 143.5 104.5 translate 5 0 scale 0.5 0.5 0.5 0 360 arc setmatrix fill 0 setgray matrix currentmatrix 143.5 104.5 translate 5 0 scale 0.5 0.5 0.5 0 360 arc setmatrix stroke matrix currentmatrix 143.5 104.5 translate 5 0 scale 0.5 0.5 moveto 0.5 0.5 0.5 5.33818e-315 0 arc setmatrix fill matrix currentmatrix 143.5 104.5 translate 5 0 scale 0.5 0.5 moveto 0.5 0.5 0.5 0 0 arc setmatrix fill 1 setgray matrix currentmatrix 182.5 68.5 translate 5 0 scale 0.5 0.5 0.5 0 360 arc setmatrix fill 0 setgray matrix currentmatrix 182.5 68.5 translate 5 0 scale 0.5 0.5 0.5 0 360 arc setmatrix stroke matrix currentmatrix 182.5 68.5 translate 5 0 scale 0.5 0.5 moveto 0.5 0.5 0.5 5.33818e-315 0 arc setmatrix fill matrix currentmatrix 182.5 68.5 translate 5 0 scale 0.5 0.5 moveto 0.5 0.5 0.5 0 0 arc setmatrix fill 1 setgray matrix currentmatrix 206.5 152.5 translate 5 0 scale 0.5 0.5 0.5 0 360 arc setmatrix fill 0 setgray matrix currentmatrix 206.5 152.5 translate 5 0 scale 0.5 0.5 0.5 0 360 arc setmatrix stroke matrix currentmatrix 206.5 152.5 translate 5 0 scale 0.5 0.5 moveto 0.5 0.5 0.5 5.33818e-315 0 arc setmatrix fill matrix currentmatrix 206.5 153.5 translate 5 0 scale 0.5 0.5 moveto 0.5 0.5 0.5 0 0 arc setmatrix fill 1 setgray 25.5 110.5 moveto 33.5 110.5 lineto 33.5 97.5 lineto 25.5 97.5 lineto closepath fill /Courier findfont 9 scalefont setfont 24 106 moveto (l0) show 144.5 68.5 moveto 152.5 68.5 lineto 152.5 55.5 lineto 144.5 55.5 lineto closepath fill /Courier findfont 9 scalefont setfont 141 66 moveto (lc0) show 0 setgray 191.5 65.5 moveto 187.5 59.5 lineto 191.5 59.5 lineto 191.5 65.5 lineto fill 176.5 14.5 moveto 179.5 19.5 lineto 176.5 19.5 lineto 176.5 14.5 lineto fill 178.5 19.5 moveto 189.5 59.5 lineto stroke 214.5 147.5 moveto 211.5 141.5 lineto 214.5 141.5 lineto 214.5 147.5 lineto fill 204.5 109.5 moveto 207.5 114.5 lineto 204.5 115.5 lineto 204.5 109.5 lineto fill 205.5 115.5 moveto 212.5 141.5 lineto stroke 214.5 107.5 moveto 210.5 102.5 lineto 214.5 101.5 lineto 214.5 107.5 lineto fill 187.5 11.5 moveto 190.5 16.5 lineto 187.5 17.5 lineto 187.5 11.5 lineto fill 188.5 16.5 moveto 212.5 101.5 lineto stroke 236.5 187.5 moveto 233.5 182.5 lineto 236.5 181.5 lineto 236.5 187.5 lineto fill 214.5 107.5 moveto 217.5 112.5 lineto 214.5 113.5 lineto 214.5 107.5 lineto fill 215.5 112.5 moveto 234.5 181.5 lineto stroke 1 setgray 181.5 42.5 moveto 189.5 42.5 lineto 189.5 33.5 lineto 181.5 33.5 lineto closepath fill /Courier findfont 9 scalefont setfont 179 40 moveto (lc1) show 198.5 68.5 moveto 206.5 68.5 lineto 206.5 59.5 lineto 198.5 59.5 lineto closepath fill /Courier findfont 9 scalefont setfont 197 66 moveto (l1) show 223.5 160.5 moveto 232.5 160.5 lineto 232.5 150.5 lineto 223.5 150.5 lineto closepath fill /Courier findfont 9 scalefont setfont 221 158 moveto (l2) show 207.5 132.5 moveto 215.5 132.5 lineto 215.5 123.5 lineto 207.5 123.5 lineto closepath fill /Courier findfont 9 scalefont setfont 205 130 moveto (lc2) show 0 setlinewidth 0 setgray 4 4 moveto 4 4 lineto stroke 277 204 moveto 277 204 lineto stroke %%Trailer %%EOF \ \>"], "Graphics", Evaluatable->False, AspectRatioFixed->True, ImageSize->{273, 200}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[oooclo5H/1EGooj[ooc/k>gYjN[Vi^OShn03o oclo?ginO[fm_Oclo5D00:X00?l00000EED0EJX00=d81Slo?ginO[fm_Oclo0<30d92@X61PL30`000 EED0EJX0EOl0E@00ZUD0ZZX0E@<30d92@X61PL30`000E@L71dI6AXF5QLC4a000ZUD0ZZX0Z_l0ZP00 e5D0ojX0ZPL71dI6AXF5QLC4a000ZP/;2dY:BXV9RLS8b000oeD0ojX0ool0o`1E05EE0:X0o`/;2dY: BXV9RLS8b000o`l?3di>CXf=SLcCXf=SLc00000030?oo00d000?o00005@03odL00_l00`3oo`1P00;o>00000030?oo00d000?o0000 5003odL00ol00`3oo`1O00?o>00000040?ooob800om800?o00<0ool0G`02o`l000?o00009`000004 0?ooob400om:00;o00@0ooooGP02o`h00_lY00000`000ol0000N00?oB`02o`800_mN00;o3P02obT0 00030003o`0000`000?o00003P03od`00_l200;oG@03o`h000?o0000:00000@000?o00002`000ol0 000=00?oC003o`800omL00;o3`000ol0000X000010000ol0000;0003o`0000`00om<00?o1002oe`0 0_l?0003o`0002P000040003o`0000`000?o00002`02odd00ol400;oF`03o`h000?o0000:@0000D0 00?o00002`000ol0000:00?oC0001?l0ool400;oF`02o`l000?o0000:@0000D000?o00002`000ol0 000900?oC@001?l0ool400?oFP02o`l000?o0000:@0000D000?o000030000ol0000700?oCP001?l0 ool500;oFP02o`h000?o0000:P0000D000?o000030000ol0000600?oCP000ol0o`02o`D00_mI00?o 3P000ol0000Z00001P000ol0000C00?oC`001?l0ool600?oF002o`l000?o0000:P0000H000?o0000 4P03oe800_l700;oF002o`l000?o0000:P0000H000?o00004@03oe<00_l700;oE`03o`h000?o0000 :`0000L000?o00002`001?l00003oe@00_l700;o?@05o`T00_l:00;o3`000ol0000[00001`000ol0 000;0003o`0000?oE@02o`L00olk00;o30000ol00002o`P00_l?0003o`0002/000070003o`0000/0 00?o0?l00_mC0003o`3o00;o2002oc/00_l<0003o`0000800_l600;o3`000ol0000[00001`000ol0 000<00CoD`001?l0ool900;o>`02o`<000?o0?l01@000ol000050003o`0000800ol>0003o`0002`0 00080003o`0000/000?o0?l00_mB0004o`3oo`T00olk00Go0P000ol000020003o`0000H000Co0000 0_l?0003o`0002`000080003o`0000/000?o00000om@0003o`0000;o2P02od<000Go0000o`0<00;o 3`000ol0000/000020000ol0000<0003o`0000?oC`000ol00002o`X00_m400;o00<0o`002P03o`h0 00?o0000;@0000T000?o00002`001?l00003odh000?o00000_l:00;oAP000ol0000:00;o3`000ol0 000]00002@000ol0000@00?oC0001?l00002o`X00omB00;o3`000ol0000]00002@000ol0000A00?o B`000ol00003o`/00_mB00;o3`000ol0000]00002@000ol0000B00?oC@02o``00_mA00?o3P000ol0 000^00002P000ol0000;0003o`0000@00om<00;o3003oe000_m000002P000ol0000;0003o`0000D0 0om;00;o3@02oe000_lQ00;o2002oa<0000:0003o`0000/000?o00001P03odD000?o00000P02o`d0 0_m?00?o6`03o`<000?o00000P03o`<000?o00004@0000X000?o000030000ol0000600?oA0000ol0 000200;o3@02odl00_lK0003o`0000@000?o00001@001?l00?lC00002`000ol0000;0003o`0000L0 0om30004o`0000?o3@03odh00_lK0003o`0000@000?o00001@001?l00?lC00002`000ol0000;0003 o`0000P00om10003o`0000800_l?00;oCP02oa/000So003o0?l0o`D00_l30003o`000140000;0003 o`0000`000?o00002003od0000?o00000P02o`l00_m=00?o7003o`<000?o00001@001?l00?lC0000 30000ol0000;0003o`0000T00olo0003o`0000800_l?00?oB@06ob800_l300?o0P02oa<0000<0003 o`0001P00olm0003o`0000<00_l@00;oC002od80000<0003o`0001T00oll0003o`0000<00_l@00;o B`03od80000<0003o`0001X00om100;o4002od/00_l?0003o`000340000=0003o`0000/000?o0000 3002od000ol@00?oBP02o`l000?o0000<@0000d000?o00002`000ol0000<00?o?`02oa800_m900?o 3`000ol0000a00003@000ol0000;0003o`0000d00olh0003o`0000<00_lB00;oB@02o`l000?o0000 2@03obH0000>0003o`0000/000?o00003@03ocL000?o00000`02oa800om800;o3`000ol000090003 o`0000Co8P0000h000?o00002`000ol0000>00?o=P000ol0000300;o4`02odP00_l40003o`0000P0 00?o00002@000ol0000400Co7P0000h000?o00002`000ol0000?00?o=0000ol0000400;o4`02odL0 0ol40003o`0000P000?o000020000ol0000900Co3@02o`P00_l100003P000ol0000<0003o`0000l0 0olc0003o`0000<00olC00;oA`02o`@00_l90003o`0000T000?o00003@03o`@00ol30003o`0000<0 0ol2007o0@0000l000?o00002`000ol0000@00?o00;o2002oad0000C0003o`0000`000?o00006P03obL00_lK00;o?@02oa00 00?o00002003o`<000?o00000P04o`8000?o00006`0001@000?o00002`000ol0000K00?o7@000ol0 000600;o6`03oc`00_lJ0003o`0000@000?o00000`000ol000020003o`0001/0000D0003o`0000`0 00?o00006`03oa`000?o00001@03oa`00_ll00;o3`000ol000080003o`0000@000?o000010001Ol0 003o01d0000D0003o`0000`000?o00007003oa/000?o00001@02oad00_lk00?o10000ol000080003 o`0000P000Co003o0`000ol000050004o`00oad0000D0003o`0000`000?o00007@03oaT000?o0000 1P02oad00_lk00;o1@000ol000080003o`0000T00ol30003o`0000D000Co003o7@0001D000?o0000 30000ol0000M00?o60000ol0000600;o7@03ocX00_l40003o`0000P000?o00004002o`<00ol200;o 7@0001D000?o000030000ol0000N00?o5`000ol0000600;o7P02ocT00ol40003o`0000P000?o0000 >@0001D000?o0000;P03oaD000?o00001`02oah00_li00;o1@000ol000080003o`0003T0000E0003 o`0002l00olD0003o`0000L00_lN00?o>002o`D000?o000020000ol0000i00005P000ol0000_00?o 7003oal00_lh00;o10000ol000080003o`0003X0000F0003o`0003000olK00;o8002ocP00_l40003 o`0000P000?o0000>P0001H000?o000030000ol0000R00?o6P02ob000_lh0003o`0000800ol90003 o`0003X0000G0003o`0000/000?o00008`04o`h000?o00001`02ob000old00Co1003o`P000?o0000 >`0001L000?o000030000ol0000S00?o3P000ol0000700;o8@02ocD00ol400?o1`03oc`0000G0003 o`0000`000?o00009002o`h000?o00001`02ob400_le00;o1@02o`P00oll00005`000ol0000<0003 o`0002@00_l=0003o`0000L00olQ00?o=002o`D000?o00001`03oc`0000W0003o`0002<00_l=0003 o`0000L00_lS00;o=002o`D000?o00001`02ocd0000W0003o`0002<00_l=0003o`0000L00_lS00;o <`03o`l000?o0000?00004d00_l<0003o`0000P00_lS00;o<`02oa0000?o0000?00004d00_l<0003 o`0000P00_lS00?o00;o;0000ol0000200;o8@02oa00 00?o0000A@00024000?o000030000ol0000M00?o3P02ob`000?o00000P03ob000_l@0003o`0004D0 000R0003o`0000/000?o00007P02o`h00_l]0003o`0000800_lP00;o40000ol0001500008P000ol0 000/00;o3P02obd000?o00000P02oal00ol?0003o`0004H0000R0003o`0002`00_l=00?o;@000ol0 000200;o7`02oa0000?o00004@02o`P00_lY00008P000ol0000/00;o3@02obh000?o00000P03oah0 0_l@0003o`0000/00ol30003o`0000800ol30003o`0002L0000S0003o`0000/000?o00007@02o`d0 0_l_0003o`0000800_lM00?o3`000ol0000<0004o`00o`8000?o00001@001?l00?lY00008`000ol0 000;0003o`0001`00ol=00;o;`000ol0000200;o7@02oa0000?o000030001?l00?l20003o`0000D0 00Co003o:@0002<000?o00002`000ol0000L00?o3@02obl000?o00000P03oaT01_l?0003o`0000`0 00Co003o0P000ol0000300;o0`000ol0000W000090000ol0000;0003o`0001/00ol=00;o=@02oa`0 0_lO00?o00@0o`3o1`001?l00?lY000090000ol0000;0003o`0001X000Co0?oo3@02ocD00_lK00?o 7`000ol0000300;o0`03o`800_lY000090000ol0000;0003o`0001X000?o0?l00_l;00?o2P02o`P0 0_lP0003o`0001T00_lO00;o>P0002@000?o000030000ol0000I0003o`0000;o2`02o`@01?l30003 o`0000800ol30003o`0001d000?o0?l06P02oe/0000U0003o`0000/000?o000060001?l00002o`/0 0_l40004o`00o`<000?o00001@001?l00?lQ0003o`0001L00omK00009@000ol0000V0004o`0000;o 2`02o`@01?l30003o`0000D000Co003o8@000ol0000G00;o1@000ol0001D00009@000ol0000Z00;o 2`02o`L000Go0000o`0500;o0`000ol0000O00;o6002o`@00_mF00009P000ol0000Y00;o2`02o`@0 1?l30003o`0000D000Co003o70000ol0000200;o5`03o`@00_mF00009P000ol0000<0003o`0001X0 0_l:00?o2`03o`800ol200;o70000ol0000200;o5`02o`@00olF00Co?00002H000?o000030000ol0 000E0003o`0000800_l:00;o=0000ol0000200;o5`02o`D000?o000020000ol0000:0004o`0000Co >00002H000?o000030000ol0000E0003o`0000800_l:00;o=0000ol0000200?o5P02o`D000?o0000 20000ol0000:0003o`0000D00olB00;o2002oaL0000W0003o`0000`000?o000050000ol0000200?o 2@02ocD000?o00000P02oaD00ol40003o`0000P000?o00002P000ol0000900Co0P02o`@00ol30003 o`0000<00ol20003o`0001D0000W0003o`0000`000?o00004`000ol0000400;o2@02ocD000?o0000 0P02oaD00_l50003o`0000P000?o00002P000ol0000=00Go0`001?l00?l20003o`0000@000Go0000 o`0G00009`000ol0000<0003o`0001<000?o00001002o`T00_le0003o`0000800olD00;o1@000ol0 00080003o`0000X000?o00003P02o`D000Co003o0P000ol000040005o`000?l05`0002P000?o0000 30000ol0000B0003o`0000@00_l800?o=@000ol0000300;o4`03o`@000?o00002@000ol000050003 o`00008000?o00005@001?l00?l20003o`0000@000Go0000o`0G0000:0000ol0000<0003o`000140 00?o00001@02o`P00_l700Ko5`02o`P00_l70003o`0000800_lC00;o1@000ol000080003o`0000H0 0ol20003o`0001D00ol30003o`0000@000Go0000o`0G0000:0000ol0000P0003o`0000D00_l800;o 1`000ol0000300So2004o`<000?o00000`03o`8000?o00001@000ol0000200;o4`02o`D000?o0000 20000ol0000700Co60000ol0000300;o1002o`800_lG0000:0000ol0000X00;o2002o`L000?o0000 2`05o`<000Co003o0`000ol000040005o`000?l01`000ol0000200?o4P02o`D000?o000020000ol0 000700Co5`02obP0000Y0003o`0002L00_l800;o1`000ol0000>00?o0P04o`<000?o000010001Ol0 003o00P000?o00000P02oa400ol40003o`0000P000?o00002002o`030?l00400000Y0003o`0000`0 00?o00006002o`P00_l70003o`0000d00_l70005o`000?l01P001Ol0003o00P000?o00000P02oa40 0_l50003o`0000P000?o00002@000ol0o`110000:@000ol0000<0003o`0000l000?o00001P02o`P0 0_l60003o`0001@01?l30003o`0000@000Go0000o`080003o`0000800ol@00;o1@000ol000080003 o`0000/000?o0000?`0002X000?o00002`000ol0000?0003o`0000H00ol600?o1P000ol0000K00;o 1002o`800_l80003o`0000<00_l?00?o1@000ol000080003o`0000X000?o0000@00002X000?o0000 30000ol0000>0003o`0000L00_l600;o00<0ool010000ol0000`0003o`0000800_l?00;o1@000ol0 00080003o`0000/000?o0000@00002X000?o000030000ol0000=0003o`0000P00_l600;o0P02o`<0 00?o0000<0000ol0000200;o3`02o`D000?o000020000ol0000;0003o`000400000Z0003o`0000`0 00?o00003@000ol0000800;o1P02o`801?l00`3o000a0003o`0000800ol>00;o1@000ol000080003 o`0000X00_m20000:`000ol0000<0003o`0000`000?o00002002o`H00_l300Go<`000ol0000200;o 3@03o`@000?o000020000ol0000;00;o@P0002/000?o000030000ol0000;0003o`0000T00_l600;o 0`02o`8000?o0000<@000ol0000200;o3@02oa0000?o00002`000ol000110000:`000ol0000J0003 o`0000T00_l500?o0`02o`030?l003<000?o00000P03o``00_l@0003o`0000/000?o0000@@0002/0 00?o00009P02o`D00_l70003o`00038000?o00000`02o`/00ol@0003o`0001000_l800;o<`0002`0 00?o00009@02o`D00_l70003o`0003<000?o00000P02o`/00_l@0003o`0000/00ol30003o`000080 1?l20003o`000340000/0003o`0000`000?o00005P02o`D00_l70003o`0003<000?o00000P02o`/0 0_l@0003o`0000/000Co003o0P000ol000030003o`00008000?o0000<@0002`000?o000030000ol0 000F00?o1002o`H00_le0003o`0000800ol:00;o40000ol0000;0004o`00o`8000?o000010001Ol0 003o03<0000]0003o`0000/000?o00002@000ol0000;00;o1002o`H00_le0003o`0000<00_l900?o 40000ol0000;0004o`00o`8000?o00001@001?l00?lc0000;@000ol0000<0003o`0000P000?o0000 2`02o`@00_l600;o=P000ol0000200;o2@02oal00ol30003o`0000D000Co003o<`0002d000?o0000 30000ol000070003o`0000`00_l300?o1P000ol0000e0003o`0000800ol800;o40000ol0000<0003 o`0000<00_l300?o0P02oc<0000]0003o`0000`000?o00001`000ol0000<00;o0`02ocl000?o0000 0`02o`L00ol50003o`0000P000?o00002`02od@0000^0003o`0000`000?o00001P000ol0000<00;o 0`02o`/00_l800;o:@000ol0000200;o1`02o`D000?o000020000ol0001B0000;P000ol0000<0003 o`0000D000?o00003@02o`<00_l400Co0`000ol0000200Co0P000ol0000W0003o`0000800_l700;o 1@000ol000080003o`000580000^0003o`0001@000?o00003@02o`<00_l40004o`00o`<000?o0000 0`000ol000020003o`0002L000?o00000P03o`H00_l50003o`0000P000?o0000DP0002l000?o0000 8`02o`<00_l400Co0`000ol000040005o`000?l0:@000ol0000300;o1@03o`D000?o000020000ol0 001B0000;`000ol0000S00;o0P03o`L000Go0000o`070004o`00obX000?o00000P02o`D00_l50003 o`0000P000?o0000D`0002l000?o000030000ol0000D00?o00<0ool01@04o`<000?o00001@001?l0 0?lZ0003o`0000800ol400;o1@000ol000080003o`0005<0000_0003o`0000`000?o00005@02o`03 0?oo00`00_l300?o0P02obX000?o00000`02o`<00ol50003o`0000P000?o0000D`00030000?o0000 2`000ol000020003o`0001000_l00`3oo`120003o`0000<00_l300;o1P000ol000070003o`0005@0 000`0003o`0000`000Go0000o`0B00;o00<0ool0@`000ol0000200;o0`02o`D000?o000020000ol0 001D0000<0000ol0000<0005o`000?l04P02o`030?oo04<000?o00000P03o`800_l50003o`0000P0 00?o0000E000034000?o00002`001?l00?lC00Go@`000ol0000300;o00@0oooo1@000ol000080003 o`0005@0000a00;o3@000ol0o`0C00CoA@000ol0000200;o00<0ool01@000ol000080003o`0005D0 000`00?o3@000ol0o`0C00CoA@02o`<01Ol50003o`0000P000?o0000E@0003400_l>0003o`000180 1?m400?o1004o`<00ol:0003o`0005D0000b0003o`0000`000?o00004P04odD00_l400?o1003o`T0 00?o0000EP00038000?o00008@04o`P00_ll0003o`0000<00_l400;o2@03oeL0001G00?o20001?l0 oolj0003o`0000T000?o00002003oeL0001G00?o1`000ol0000200;oA0000ol0000800?oE`0005L0 0_l00`3o00050003o`0000@000?o00001_m600;oF00005L00_l20003o`00008000?o00001P001Ol0 ool000;oA`000ol0001G0000E`02o`<000Go0000o`0:00GoA`000ol0001G0000G@02o`030?l000`0 0_nQ0000G`000ol0000900CoXP000?l04P000?l04P000?l04P000?l04P000003o`000?l03`000001 \ \>"]], Cell[TextData[ "If you haven't already, be sure to load the Dynamics Workbench (but don't \ execute this command if the Workbench is already loaded):"], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(Needs["\"]\)], "Input", AspectRatioFixed->True], Cell[TextData["Initialize variables by using this command:"], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(NewModel[]\)], "Input", PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True], Cell[TextData[{ "Add rigid bodies to the model by specifying a new body name, which is \ connected to the specified inboard body. Here we are attaching body ", StyleBox["a", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " to ", StyleBox["ground", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " with a ", StyleBox["Hinge", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " joint. The central moment of inertia is specified in dyadic form. Vectors \ specify the location of the joint relative to the body's center of mass, and \ relative to the inboard body's center of mass. The axis of the hinge joint is \ also specified." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[BoxData[ \(AddBody[a, ground, Hinge, Mass \[Rule] M0, Inertia \[Rule] I0\ a[3] ** a[3], BodyToJnt \[Rule] \((lc0 - l0)\)\ a[2], InbToJnt \[Rule] 0, Axis \[Rule] {0, 0, 1}]\)], "Input", PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True], Cell[BoxData[ \({{1}, {1}}\)], "Output"] }, Open ]], Cell[TextData[{ "The output of ", StyleBox["AddBody", FontFamily->"Courier", FontSize->12, FontWeight->"Bold"], " includes the generalized coordinate and the generalized speed for the new \ body." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData["Now we add second and third bodies:"], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[BoxData[ \(AddBody[b, a, Hinge, RelativeTo \[Rule] ground, Mass \[Rule] M1, Inertia \[Rule] I1\ b[3] ** b[3], BodyToJnt \[Rule] lc1\ b[2], InbToJnt \[Rule] lc0\ a[2], Axis \[Rule] {0, 0, 1}]\)], "Input", PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True], Cell[BoxData[ \({{2}, {2}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(AddBody[c, b, Hinge, RelativeTo \[Rule] ground, Mass \[Rule] M2, Inertia \[Rule] I2\ c[3] ** c[3], BodyToJnt \[Rule] lc2\ c[2], InbToJnt \[Rule] \((lc1 - l1)\)\ b[2], Axis \[Rule] {0, 0, 1}]\)], "Input", PageBreakWithin->Automatic, GroupPageBreakWithin->Automatic, AspectRatioFixed->True], Cell[BoxData[ \({{3}, {3}}\)], "Output"] }, Open ]], Cell[TextData