OpenSimMirror/libraries/ode-0.9/docs/group__joints.html

2128 lines
119 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Open Dynamics Engine: Joints</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>Joints</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g2d23509f8d6c6066b361af4cf14166f7">dJointCreateBall</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the ball type. <a href="#g2d23509f8d6c6066b361af4cf14166f7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g2f18d431d48c905abc9d72ce011c00bd">dJointCreateHinge</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the hinge type. <a href="#g2f18d431d48c905abc9d72ce011c00bd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#geccc4c67b2d409016685a6a9163be539">dJointCreateSlider</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the slider type. <a href="#geccc4c67b2d409016685a6a9163be539"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gfa5e1543239ba44ecbdc178ebc7c3cc4">dJointCreateContact</a> (dWorldID, dJointGroupID, const dContact *)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the contact type. <a href="#gfa5e1543239ba44ecbdc178ebc7c3cc4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g6a6e32d35bdda9352d1be8d4df973f8f">dJointCreateHinge2</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the hinge2 type. <a href="#g6a6e32d35bdda9352d1be8d4df973f8f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g1cb2e7668242313b5d24acb5d43e5c62">dJointCreateUniversal</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the universal type. <a href="#g1cb2e7668242313b5d24acb5d43e5c62"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gdc867f10ba9931d191244fa879e43cb2">dJointCreatePR</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the PR (Prismatic and Rotoide) type. <a href="#gdc867f10ba9931d191244fa879e43cb2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ge568995d03077e1acb13882a627dcf32">dJointCreateFixed</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the fixed type. <a href="#ge568995d03077e1acb13882a627dcf32"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gf23195ce77e12031393e591abd0e28e6">dJointCreateAMotor</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the A-motor type. <a href="#gf23195ce77e12031393e591abd0e28e6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g21c8c99615269c5d9d3c57c674f6fd56">dJointCreateLMotor</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the L-motor type. <a href="#g21c8c99615269c5d9d3c57c674f6fd56"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g7e68f39530acad9c0e7a38c8a3799b38">dJointCreatePlane2D</a> (dWorldID, dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the plane-2d type. <a href="#g7e68f39530acad9c0e7a38c8a3799b38"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a">dJointDestroy</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a joint. <a href="#g2187ccbcf51c951f680eb6c9a210801a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointGroupID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gaaec687b184a1214133a41503e7c628f">dJointGroupCreate</a> (int max_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a joint group. <a href="#gaaec687b184a1214133a41503e7c628f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g49e664ee9a8bd7bfe5e6932bf936bb8f">dJointGroupDestroy</a> (dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a joint group. <a href="#g49e664ee9a8bd7bfe5e6932bf936bb8f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g6e055bac8a0a3261bda3b6d07499c4ea">dJointGroupEmpty</a> (dJointGroupID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Empty a joint group. <a href="#g6e055bac8a0a3261bda3b6d07499c4ea"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g8f1c9b1302c799a1b87bc29b76d0dcec">dJointAttach</a> (dJointID, dBodyID body1, dBodyID body2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Attach the joint to some new bodies. <a href="#g8f1c9b1302c799a1b87bc29b76d0dcec"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5ca72d8bd498ef1ba920b0b473e79d02"></a><!-- doxytag: member="joints::dJointSetData" ref="g5ca72d8bd498ef1ba920b0b473e79d02" args="(dJointID, void *data)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g5ca72d8bd498ef1ba920b0b473e79d02">dJointSetData</a> (dJointID, void *data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the user-data pointer. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g607702a11bae2d2613295f67088b0e82"></a><!-- doxytag: member="joints::dJointGetData" ref="g607702a11bae2d2613295f67088b0e82" args="(dJointID)" -->
ODE_API void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g607702a11bae2d2613295f67088b0e82">dJointGetData</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the user-data pointer. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g6f12f69d9b1a457428a28c2f77148174">dJointGetType</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the type of the joint. <a href="#g6f12f69d9b1a457428a28c2f77148174"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dBodyID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gff13cbb464f1bfdc225fc9202c2c54c3">dJointGetBody</a> (dJointID, int index)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the bodies that this joint connects. <a href="#gff13cbb464f1bfdc225fc9202c2c54c3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g87ddb9beb95e9383a4280cb8a4186f01">dJointSetFeedback</a> (dJointID, dJointFeedback *)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the datastructure that is to receive the feedback. <a href="#g87ddb9beb95e9383a4280cb8a4186f01"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gda1deef60d7afbb6b9375ddbf97e09a1"></a><!-- doxytag: member="joints::dJointGetFeedback" ref="gda1deef60d7afbb6b9375ddbf97e09a1" args="(dJointID)" -->
ODE_API dJointFeedback *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gda1deef60d7afbb6b9375ddbf97e09a1">dJointGetFeedback</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the datastructure that is to receive the feedback. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g058c33a3da1ff935a1125034f779dc4a">dJointSetBallAnchor</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the joint anchor point. <a href="#g058c33a3da1ff935a1125034f779dc4a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g51eb42782182a714be26bbd68f7a6d9a"></a><!-- doxytag: member="joints::dJointSetBallAnchor2" ref="g51eb42782182a714be26bbd68f7a6d9a" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g51eb42782182a714be26bbd68f7a6d9a">dJointSetBallAnchor2</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the joint anchor point. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge58f5e11c0829aa8615622a74dd11d85"></a><!-- doxytag: member="joints::dJointSetBallParam" ref="ge58f5e11c0829aa8615622a74dd11d85" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ge58f5e11c0829aa8615622a74dd11d85">dJointSetBallParam</a> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Param setting for Ball joints. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc5727a125de0abbe2abd61af7a55da26"></a><!-- doxytag: member="joints::dJointSetHingeAnchor" ref="gc5727a125de0abbe2abd61af7a55da26" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gc5727a125de0abbe2abd61af7a55da26">dJointSetHingeAnchor</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set hinge anchor parameter. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga434229f033472ec7aa031a01c6cabed"></a><!-- doxytag: member="joints::dJointSetHingeAxis" ref="ga434229f033472ec7aa031a01c6cabed" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ga434229f033472ec7aa031a01c6cabed">dJointSetHingeAxis</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set hinge axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6f9d34a01181e65639eb1f67da7a3e4c"></a><!-- doxytag: member="joints::dJointSetHingeParam" ref="g6f9d34a01181e65639eb1f67da7a3e4c" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g6f9d34a01181e65639eb1f67da7a3e4c">dJointSetHingeParam</a> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ga1725abe170f80b0731321ed38785019">dJointAddHingeTorque</a> (dJointID joint, dReal torque)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Applies the torque about the hinge axis. <a href="#ga1725abe170f80b0731321ed38785019"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb2f662b1190507551f49ffa29d276b61"></a><!-- doxytag: member="joints::dJointSetSliderAxis" ref="gb2f662b1190507551f49ffa29d276b61" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gb2f662b1190507551f49ffa29d276b61">dJointSetSliderAxis</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the joint axis <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2a055496df2812ad69d30e2653317f6a"></a><!-- doxytag: member="joints::dJointSetSliderAxisDelta" ref="g2a055496df2812ad69d30e2653317f6a" args="(dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><b>dJointSetSliderAxisDelta</b> (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g648964f4ca4122309e71a9cc6c24c985"></a><!-- doxytag: member="joints::dJointSetSliderParam" ref="g648964f4ca4122309e71a9cc6c24c985" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g648964f4ca4122309e71a9cc6c24c985">dJointSetSliderParam</a> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g8b0e018cc3df6ea5ddb42320913455e7">dJointAddSliderForce</a> (dJointID joint, dReal force)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Applies the given force in the slider's direction. <a href="#g8b0e018cc3df6ea5ddb42320913455e7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf839c13fa85aff0287a87986ff447d29"></a><!-- doxytag: member="joints::dJointSetHinge2Anchor" ref="gf839c13fa85aff0287a87986ff447d29" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gf839c13fa85aff0287a87986ff447d29">dJointSetHinge2Anchor</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set anchor <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gcdf78fbb0f5b0a09b4d3ac2059b07002"></a><!-- doxytag: member="joints::dJointSetHinge2Axis1" ref="gcdf78fbb0f5b0a09b4d3ac2059b07002" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gcdf78fbb0f5b0a09b4d3ac2059b07002">dJointSetHinge2Axis1</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gdfef9f6365c87dacb95b4850a9e9f0ee"></a><!-- doxytag: member="joints::dJointSetHinge2Axis2" ref="gdfef9f6365c87dacb95b4850a9e9f0ee" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gdfef9f6365c87dacb95b4850a9e9f0ee">dJointSetHinge2Axis2</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9a2d8d03776ccb22869667337457a7a9"></a><!-- doxytag: member="joints::dJointSetHinge2Param" ref="g9a2d8d03776ccb22869667337457a7a9" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g9a2d8d03776ccb22869667337457a7a9">dJointSetHinge2Param</a> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ga5ba1541d092f28c93b1bdc3bfb1b69f">dJointAddHinge2Torques</a> (dJointID joint, dReal torque1, dReal torque2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Applies torque1 about the hinge2's axis 1, torque2 about the hinge2's axis 2. <a href="#ga5ba1541d092f28c93b1bdc3bfb1b69f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gaf4657aed67f3cd7cce775215995c05d"></a><!-- doxytag: member="joints::dJointSetUniversalAnchor" ref="gaf4657aed67f3cd7cce775215995c05d" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gaf4657aed67f3cd7cce775215995c05d">dJointSetUniversalAnchor</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set anchor <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge0a831da9447ff65d76a0808502038e8"></a><!-- doxytag: member="joints::dJointSetUniversalAxis1" ref="ge0a831da9447ff65d76a0808502038e8" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ge0a831da9447ff65d76a0808502038e8">dJointSetUniversalAxis1</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf3668eed7dc5aaf8fee19d7f87347343"></a><!-- doxytag: member="joints::dJointSetUniversalAxis2" ref="gf3668eed7dc5aaf8fee19d7f87347343" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gf3668eed7dc5aaf8fee19d7f87347343">dJointSetUniversalAxis2</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3c58284c43e997a028b06dc250064e32"></a><!-- doxytag: member="joints::dJointSetUniversalParam" ref="g3c58284c43e997a028b06dc250064e32" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g3c58284c43e997a028b06dc250064e32">dJointSetUniversalParam</a> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g36607569e2ee26f39d3d42cba2397898">dJointAddUniversalTorques</a> (dJointID joint, dReal torque1, dReal torque2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Applies torque1 about the universal's axis 1, torque2 about the universal's axis 2. <a href="#g36607569e2ee26f39d3d42cba2397898"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge46251e2cea2d31521b1fb9b151f640f"></a><!-- doxytag: member="joints::dJointSetPRAnchor" ref="ge46251e2cea2d31521b1fb9b151f640f" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ge46251e2cea2d31521b1fb9b151f640f">dJointSetPRAnchor</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set anchor <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga2ae3ab1fa58ec22bd443476f786fa81"></a><!-- doxytag: member="joints::dJointSetPRAxis1" ref="ga2ae3ab1fa58ec22bd443476f786fa81" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ga2ae3ab1fa58ec22bd443476f786fa81">dJointSetPRAxis1</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the axis for the prismatic articulation <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc8c61c6dd7b28a58a4c0eaf2e91ecbd5"></a><!-- doxytag: member="joints::dJointSetPRAxis2" ref="gc8c61c6dd7b28a58a4c0eaf2e91ecbd5" args="(dJointID, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gc8c61c6dd7b28a58a4c0eaf2e91ecbd5">dJointSetPRAxis2</a> (dJointID, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the axis for the rotoide articulation <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gc08a28659605f17307d563f45db0824b">dJointSetPRParam</a> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <a href="#gc08a28659605f17307d563f45db0824b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ge675b0e0e332ddcd907ac9d1461b1961">dJointAddPRTorque</a> (dJointID j, dReal torque)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Applies the torque about the rotoide axis of the PR joint. <a href="#ge675b0e0e332ddcd907ac9d1461b1961"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8051a8232b4232f7b0d0fd57a3932072"></a><!-- doxytag: member="joints::dJointSetFixed" ref="g8051a8232b4232f7b0d0fd57a3932072" args="(dJointID)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g8051a8232b4232f7b0d0fd57a3932072">dJointSetFixed</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Call this on the fixed joint after it has been attached to remember the current desired relative offset and desired relative rotation between the bodies. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g1406f976045a1b7edffbb46bf626d04f">dJointSetAMotorNumAxes</a> (dJointID, int num)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the nr of axes <a href="#g1406f976045a1b7edffbb46bf626d04f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gbef7d92227b62e04b60eb9df02359603"></a><!-- doxytag: member="joints::dJointSetAMotorAxis" ref="gbef7d92227b62e04b60eb9df02359603" args="(dJointID, int anum, int rel, dReal x, dReal y, dReal z)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gbef7d92227b62e04b60eb9df02359603">dJointSetAMotorAxis</a> (dJointID, int anum, int rel, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g17b2089e6512e22d71340befb40100d2">dJointSetAMotorAngle</a> (dJointID, int anum, dReal angle)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tell the AMotor what the current angle is along axis anum. <a href="#g17b2089e6512e22d71340befb40100d2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gac3f00196ee0cdb772e00dc259ef639a"></a><!-- doxytag: member="joints::dJointSetAMotorParam" ref="gac3f00196ee0cdb772e00dc259ef639a" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gac3f00196ee0cdb772e00dc259ef639a">dJointSetAMotorParam</a> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb0a3a8527810717c62a2c68dc4dfa822"></a><!-- doxytag: member="joints::dJointSetAMotorMode" ref="gb0a3a8527810717c62a2c68dc4dfa822" args="(dJointID, int mode)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gb0a3a8527810717c62a2c68dc4dfa822">dJointSetAMotorMode</a> (dJointID, int mode)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set mode <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g69d13d54516716020d2adb841699b77b">dJointAddAMotorTorques</a> (dJointID, dReal torque1, dReal torque2, dReal torque3)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Applies torque0 about the AMotor's axis 0, torque1 about the AMotor's axis 1, and torque2 about the AMotor's axis 2. <a href="#g69d13d54516716020d2adb841699b77b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gcbfb4014567d69010aba3024d9b7bccd">dJointSetLMotorNumAxes</a> (dJointID, int num)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the number of axes that will be controlled by the LMotor. <a href="#gcbfb4014567d69010aba3024d9b7bccd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g080b7739f5b2b37a798742cee0ef38a4">dJointSetLMotorAxis</a> (dJointID, int anum, int rel, dReal x, dReal y, dReal z)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the AMotor axes. <a href="#g080b7739f5b2b37a798742cee0ef38a4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g791bfa6e65d0c3dce99ca0bcd3beb8d6"></a><!-- doxytag: member="joints::dJointSetLMotorParam" ref="g791bfa6e65d0c3dce99ca0bcd3beb8d6" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g791bfa6e65d0c3dce99ca0bcd3beb8d6">dJointSetLMotorParam</a> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1ec6e9ac6f92994cea1c9f9a2b50d69a"></a><!-- doxytag: member="joints::dJointSetPlane2DXParam" ref="g1ec6e9ac6f92994cea1c9f9a2b50d69a" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><b>dJointSetPlane2DXParam</b> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf47dece2a7b73762937bd7671d23c945"></a><!-- doxytag: member="joints::dJointSetPlane2DYParam" ref="gf47dece2a7b73762937bd7671d23c945" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><b>dJointSetPlane2DYParam</b> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2425ac42f0fe42e8b4a0d76b057070d1"></a><!-- doxytag: member="joints::dJointSetPlane2DAngleParam" ref="g2425ac42f0fe42e8b4a0d76b057070d1" args="(dJointID, int parameter, dReal value)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><b>dJointSetPlane2DAngleParam</b> (dJointID, int parameter, dReal value)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g20a27c479a75443552942059542f26ad"></a><!-- doxytag: member="joints::dJointGetBallParam" ref="g20a27c479a75443552942059542f26ad" args="(dJointID, int parameter)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g20a27c479a75443552942059542f26ad">dJointGetBallParam</a> (dJointID, int parameter)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g1d1c4f9b10c550f6fec550f9cc80c7ab">dJointGetHingeAnchor</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the hinge anchor point, in world coordinates. <a href="#g1d1c4f9b10c550f6fec550f9cc80c7ab"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gfdc1d9c7bd8824ec3e79cc5aa67ddfa1">dJointGetHingeAnchor2</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#gfdc1d9c7bd8824ec3e79cc5aa67ddfa1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g17b812897bc5faab33584cc5e3e4d3a4"></a><!-- doxytag: member="joints::dJointGetHingeAxis" ref="g17b812897bc5faab33584cc5e3e4d3a4" args="(dJointID, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g17b812897bc5faab33584cc5e3e4d3a4">dJointGetHingeAxis</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get axis <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g43416613e72d1b16a32331a0ba3c7d70"></a><!-- doxytag: member="joints::dJointGetHingeParam" ref="g43416613e72d1b16a32331a0ba3c7d70" args="(dJointID, int parameter)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g43416613e72d1b16a32331a0ba3c7d70">dJointGetHingeParam</a> (dJointID, int parameter)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g7ca6bdfe2b919b6bc2a27ba6f0e069f0">dJointGetHingeAngle</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the hinge angle. <a href="#g7ca6bdfe2b919b6bc2a27ba6f0e069f0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g0d92377b748eb468dc38252df12afc76"></a><!-- doxytag: member="joints::dJointGetHingeAngleRate" ref="g0d92377b748eb468dc38252df12afc76" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g0d92377b748eb468dc38252df12afc76">dJointGetHingeAngleRate</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the hinge angle time derivative. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g7f35449914cbc4a86b845dcd85a617c0">dJointGetSliderPosition</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the slider linear position (i.e. the slider's extension). <a href="#g7f35449914cbc4a86b845dcd85a617c0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g93378c9c2d0cd50c79cfb78ca881f8ec"></a><!-- doxytag: member="joints::dJointGetSliderPositionRate" ref="g93378c9c2d0cd50c79cfb78ca881f8ec" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g93378c9c2d0cd50c79cfb78ca881f8ec">dJointGetSliderPositionRate</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the slider linear position's time derivative. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g17e31e7a877446213c39d1431269788e"></a><!-- doxytag: member="joints::dJointGetSliderAxis" ref="g17e31e7a877446213c39d1431269788e" args="(dJointID, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g17e31e7a877446213c39d1431269788e">dJointGetSliderAxis</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the slider axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc76d8bb4bf8587af70ef5932025048fe"></a><!-- doxytag: member="joints::dJointGetSliderParam" ref="gc76d8bb4bf8587af70ef5932025048fe" args="(dJointID, int parameter)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gc76d8bb4bf8587af70ef5932025048fe">dJointGetSliderParam</a> (dJointID, int parameter)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g879999d011f82c73acf94029132cc198">dJointGetHinge2Anchor</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#g879999d011f82c73acf94029132cc198"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga67cde755a0c9b699859ead5b5c81d26"></a><!-- doxytag: member="joints::dJointGetHinge2Anchor2" ref="ga67cde755a0c9b699859ead5b5c81d26" args="(dJointID, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ga67cde755a0c9b699859ead5b5c81d26">dJointGetHinge2Anchor2</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. This returns the point on body 2. If the joint is perfectly satisfied, this will return the same value as dJointGetHinge2Anchor. If not, this value will be slightly different. This can be used, for example, to see how far the joint has come apart. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5d3e60c78ed85e8086dd60b13c3054f5"></a><!-- doxytag: member="joints::dJointGetHinge2Axis1" ref="g5d3e60c78ed85e8086dd60b13c3054f5" args="(dJointID, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g5d3e60c78ed85e8086dd60b13c3054f5">dJointGetHinge2Axis1</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get joint axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9459009e9370ea1a1e4de10f60053c87"></a><!-- doxytag: member="joints::dJointGetHinge2Axis2" ref="g9459009e9370ea1a1e4de10f60053c87" args="(dJointID, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g9459009e9370ea1a1e4de10f60053c87">dJointGetHinge2Axis2</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get joint axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9fe8b60ba59aa9451e5758491e34045a"></a><!-- doxytag: member="joints::dJointGetHinge2Param" ref="g9fe8b60ba59aa9451e5758491e34045a" args="(dJointID, int parameter)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g9fe8b60ba59aa9451e5758491e34045a">dJointGetHinge2Param</a> (dJointID, int parameter)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g430ed7cafe907e88929b28fdb17533c0"></a><!-- doxytag: member="joints::dJointGetHinge2Angle1" ref="g430ed7cafe907e88929b28fdb17533c0" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g430ed7cafe907e88929b28fdb17533c0">dJointGetHinge2Angle1</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get angle. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g61881501e905ec1072aba05464fe44fb"></a><!-- doxytag: member="joints::dJointGetHinge2Angle1Rate" ref="g61881501e905ec1072aba05464fe44fb" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g61881501e905ec1072aba05464fe44fb">dJointGetHinge2Angle1Rate</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time derivative of angle. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g028c47d8ff409f6856492d9eb0367c8a"></a><!-- doxytag: member="joints::dJointGetHinge2Angle2Rate" ref="g028c47d8ff409f6856492d9eb0367c8a" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g028c47d8ff409f6856492d9eb0367c8a">dJointGetHinge2Angle2Rate</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time derivative of angle. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ga768432c561cb76ba2490913f42d1aaf">dJointGetUniversalAnchor</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#ga768432c561cb76ba2490913f42d1aaf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g00d5018903a90d75c324c4f870b0e7ea">dJointGetUniversalAnchor2</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#g00d5018903a90d75c324c4f870b0e7ea"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="geaa8e546d93c304755a86ad3fa6d2abe"></a><!-- doxytag: member="joints::dJointGetUniversalAxis1" ref="geaa8e546d93c304755a86ad3fa6d2abe" args="(dJointID, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#geaa8e546d93c304755a86ad3fa6d2abe">dJointGetUniversalAxis1</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g13c01cbc9c5e918740bac0540f6473b3"></a><!-- doxytag: member="joints::dJointGetUniversalAxis2" ref="g13c01cbc9c5e918740bac0540f6473b3" args="(dJointID, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g13c01cbc9c5e918740bac0540f6473b3">dJointGetUniversalAxis2</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf96e70e676058b7eb385f5810fec641a"></a><!-- doxytag: member="joints::dJointGetUniversalParam" ref="gf96e70e676058b7eb385f5810fec641a" args="(dJointID, int parameter)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gf96e70e676058b7eb385f5810fec641a">dJointGetUniversalParam</a> (dJointID, int parameter)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g3c0fafbd1ccd8e450c01012ce600f6ab">dJointGetUniversalAngles</a> (dJointID, dReal *angle1, dReal *angle2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get both angles at the same time. <a href="#g3c0fafbd1ccd8e450c01012ce600f6ab"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3a08e2fed2e88eb0c964a33fb8c0c61f"></a><!-- doxytag: member="joints::dJointGetUniversalAngle1" ref="g3a08e2fed2e88eb0c964a33fb8c0c61f" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g3a08e2fed2e88eb0c964a33fb8c0c61f">dJointGetUniversalAngle1</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get angle. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4026a7331d7956eef31e72e20e0c703b"></a><!-- doxytag: member="joints::dJointGetUniversalAngle2" ref="g4026a7331d7956eef31e72e20e0c703b" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g4026a7331d7956eef31e72e20e0c703b">dJointGetUniversalAngle2</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get angle. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1f8ff99b6c33d3da2004a8846112427c"></a><!-- doxytag: member="joints::dJointGetUniversalAngle1Rate" ref="g1f8ff99b6c33d3da2004a8846112427c" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g1f8ff99b6c33d3da2004a8846112427c">dJointGetUniversalAngle1Rate</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time derivative of angle. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g94fb28ecb65cb0711b555558c22396cf"></a><!-- doxytag: member="joints::dJointGetUniversalAngle2Rate" ref="g94fb28ecb65cb0711b555558c22396cf" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g94fb28ecb65cb0711b555558c22396cf">dJointGetUniversalAngle2Rate</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time derivative of angle. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g88b176c70948c3f96e5c9173904b04fe">dJointGetPRAnchor</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#g88b176c70948c3f96e5c9173904b04fe"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gd8b95871e93525f44badcdaf8e521da7">dJointGetPRPosition</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the PR linear position (i.e. the prismatic's extension). <a href="#gd8b95871e93525f44badcdaf8e521da7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc3a434069c8bf31ae5140e2bff3bbb26"></a><!-- doxytag: member="joints::dJointGetPRPositionRate" ref="gc3a434069c8bf31ae5140e2bff3bbb26" args="(dJointID)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gc3a434069c8bf31ae5140e2bff3bbb26">dJointGetPRPositionRate</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the PR linear position's time derivative. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g826424aac5023739bb13426df672ab32"></a><!-- doxytag: member="joints::dJointGetPRAxis1" ref="g826424aac5023739bb13426df672ab32" args="(dJointID, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g826424aac5023739bb13426df672ab32">dJointGetPRAxis1</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the prismatic axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5f175ed66c5df1119a251fad8a51059d"></a><!-- doxytag: member="joints::dJointGetPRAxis2" ref="g5f175ed66c5df1119a251fad8a51059d" args="(dJointID, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g5f175ed66c5df1119a251fad8a51059d">dJointGetPRAxis2</a> (dJointID, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the Rotoide axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g968b868bd1598b24a3101a04320206c6"></a><!-- doxytag: member="joints::dJointGetPRParam" ref="g968b868bd1598b24a3101a04320206c6" args="(dJointID, int parameter)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g968b868bd1598b24a3101a04320206c6">dJointGetPRParam</a> (dJointID, int parameter)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g35f0392af69ece0d0c3ef7ed88b532bf">dJointGetAMotorNumAxes</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of angular axes that will be controlled by the AMotor. <a href="#g35f0392af69ece0d0c3ef7ed88b532bf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gef1af77cc19d81b24ad00025f3c9d5ec">dJointGetAMotorAxis</a> (dJointID, int anum, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the AMotor axes. <a href="#gef1af77cc19d81b24ad00025f3c9d5ec"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g1887538374f044e22f9742650d14ae69">dJointGetAMotorAxisRel</a> (dJointID, int anum)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get axis. <a href="#g1887538374f044e22f9742650d14ae69"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g3634444b00ac33a5f34a7af4fffda8b2">dJointGetAMotorAngle</a> (dJointID, int anum)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current angle for axis. <a href="#g3634444b00ac33a5f34a7af4fffda8b2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ga65abc36177390330037299b689b70c7">dJointGetAMotorAngleRate</a> (dJointID, int anum)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current angle rate for axis anum. <a href="#ga65abc36177390330037299b689b70c7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gfc4cd1046089baa4309d30ae7832d289"></a><!-- doxytag: member="joints::dJointGetAMotorParam" ref="gfc4cd1046089baa4309d30ae7832d289" args="(dJointID, int parameter)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gfc4cd1046089baa4309d30ae7832d289">dJointGetAMotorParam</a> (dJointID, int parameter)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gf2430c2062414bc28660bdc06a0d72d5">dJointGetAMotorMode</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the angular motor mode. <a href="#gf2430c2062414bc28660bdc06a0d72d5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6d7557b5e94e0ee37561cadc5bf85cb7"></a><!-- doxytag: member="joints::dJointGetLMotorNumAxes" ref="g6d7557b5e94e0ee37561cadc5bf85cb7" args="(dJointID)" -->
ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g6d7557b5e94e0ee37561cadc5bf85cb7">dJointGetLMotorNumAxes</a> (dJointID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get nr of axes. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4ef7e0ca633583e82d90679c8eb6d5c3"></a><!-- doxytag: member="joints::dJointGetLMotorAxis" ref="g4ef7e0ca633583e82d90679c8eb6d5c3" args="(dJointID, int anum, dVector3 result)" -->
ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g4ef7e0ca633583e82d90679c8eb6d5c3">dJointGetLMotorAxis</a> (dJointID, int anum, dVector3 result)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get axis. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gcbc48fd61857e3843923166abf81a7a0"></a><!-- doxytag: member="joints::dJointGetLMotorParam" ref="gcbc48fd61857e3843923166abf81a7a0" args="(dJointID, int parameter)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gcbc48fd61857e3843923166abf81a7a0">dJointGetLMotorParam</a> (dJointID, int parameter)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge433a5eac5f8600d8e6325666c2e12c2"></a><!-- doxytag: member="joints::dJointGetFixedParam" ref="ge433a5eac5f8600d8e6325666c2e12c2" args="(dJointID, int parameter)" -->
ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ge433a5eac5f8600d8e6325666c2e12c2">dJointGetFixedParam</a> (dJointID, int parameter)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4f5e75d2e10f4392d5046ef1ab119da2"></a><!-- doxytag: member="joints::dConnectingJoint" ref="g4f5e75d2e10f4392d5046ef1ab119da2" args="(dBodyID, dBodyID)" -->
ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><b>dConnectingJoint</b> (dBodyID, dBodyID)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gabe5f454e7679bb24d0037f1502861a5"></a><!-- doxytag: member="joints::dConnectingJointList" ref="gabe5f454e7679bb24d0037f1502861a5" args="(dBodyID, dBodyID, dJointID *)" -->
ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><b>dConnectingJointList</b> (dBodyID, dBodyID, dJointID *)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g68eb2f4daea03713db4d8b4daca663ae">dAreConnected</a> (dBodyID, dBodyID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility function. <a href="#g68eb2f4daea03713db4d8b4daca663ae"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gc1eafde1fde036633136be6fd254ca5d">dAreConnectedExcluding</a> (dBodyID body1, dBodyID body2, int joint_type)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility function. <a href="#gc1eafde1fde036633136be6fd254ca5d"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
In real life a joint is something like a hinge, that is used to connect two objects. In ODE a joint is very similar: It is a relationship that is enforced between two bodies so that they can only have certain positions and orientations relative to each other. This relationship is called a constraint -- the words joint and constraint are often used interchangeably.<p>
A joint has a set of parameters that can be set. These include:<p>
<ul>
<li>dParamLoStop Low stop angle or position. Setting this to -dInfinity (the default value) turns off the low stop. For rotational joints, this stop must be greater than -pi to be effective. </li>
<li>dParamHiStop High stop angle or position. Setting this to dInfinity (the default value) turns off the high stop. For rotational joints, this stop must be less than pi to be effective. If the high stop is less than the low stop then both stops will be ineffective. </li>
<li>dParamVel Desired motor velocity (this will be an angular or linear velocity). </li>
<li>dParamFMax The maximum force or torque that the motor will use to achieve the desired velocity. This must always be greater than or equal to zero. Setting this to zero (the default value) turns off the motor. </li>
<li>dParamFudgeFactor The current joint stop/motor implementation has a small problem: when the joint is at one stop and the motor is set to move it away from the stop, too much force may be applied for one time step, causing a ``jumping'' motion. This fudge factor is used to scale this excess force. It should have a value between zero and one (the default value). If the jumping motion is too visible in a joint, the value can be reduced. Making this value too small can prevent the motor from being able to move the joint away from a stop. </li>
<li>dParamBounce The bouncyness of the stops. This is a restitution parameter in the range 0..1. 0 means the stops are not bouncy at all, 1 means maximum bouncyness. </li>
<li>dParamCFM The constraint force mixing (CFM) value used when not at a stop. </li>
<li>dParamStopERP The error reduction parameter (ERP) used by the stops. </li>
<li>dParamStopCFM The constraint force mixing (CFM) value used by the stops. Together with the ERP value this can be used to get spongy or soft stops. Note that this is intended for unpowered joints, it does not really work as expected when a powered joint reaches its limit. </li>
<li>dParamSuspensionERP Suspension error reduction parameter (ERP). Currently this is only implemented on the hinge-2 joint. </li>
<li>dParamSuspensionCFM Suspension constraint force mixing (CFM) value. Currently this is only implemented on the hinge-2 joint.</li>
</ul>
If a particular parameter is not implemented by a given joint, setting it will have no effect. These parameter names can be optionally followed by a digit (2 or 3) to indicate the second or third set of parameters, e.g. for the second axis in a hinge-2 joint, or the third axis in an AMotor joint. <hr><h2>Function Documentation</h2>
<a class="anchor" name="g68eb2f4daea03713db4d8b4daca663ae"></a><!-- doxytag: member="objects.h::dAreConnected" ref="g68eb2f4daea03713db4d8b4daca663ae" args="(dBodyID, dBodyID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API int dAreConnected </td>
<td>(</td>
<td class="paramtype">dBodyID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dBodyID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Utility function.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the two bodies are connected together by a joint, otherwise return 0. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gc1eafde1fde036633136be6fd254ca5d"></a><!-- doxytag: member="objects.h::dAreConnectedExcluding" ref="gc1eafde1fde036633136be6fd254ca5d" args="(dBodyID body1, dBodyID body2, int joint_type)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API int dAreConnectedExcluding </td>
<td>(</td>
<td class="paramtype">dBodyID&nbsp;</td>
<td class="paramname"> <em>body1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dBodyID&nbsp;</td>
<td class="paramname"> <em>body2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>joint_type</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Utility function.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the two bodies are connected together by a joint that does not have type <ul>
<li>{joint_type}, otherwise return 0. </li>
</ul>
</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>body1</em>&nbsp;</td><td>A body to check. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>body2</em>&nbsp;</td><td>A body to check. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>joint_type</em>&nbsp;</td><td>is a dJointTypeXXX constant. This is useful for deciding whether to add contact joints between two bodies: if they are already connected by non-contact joints then it may not be appropriate to add contacts, however it is okay to add more contact between- bodies that already have contacts. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g69d13d54516716020d2adb841699b77b"></a><!-- doxytag: member="objects.h::dJointAddAMotorTorques" ref="g69d13d54516716020d2adb841699b77b" args="(dJointID, dReal torque1, dReal torque2, dReal torque3)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointAddAMotorTorques </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>torque1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>torque2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>torque3</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Applies torque0 about the AMotor's axis 0, torque1 about the AMotor's axis 1, and torque2 about the AMotor's axis 2.
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>If the motor has fewer than three axes, the higher torques are ignored. This function is just a wrapper for <a class="el" href="group__bodies.html#g8378560dd168ee8d7a4b74e3de510ebc" title="Add torque at centre of mass of body in absolute coordinates.">dBodyAddTorque()</a>. </dd></dl>
</div>
</div><p>
<a class="anchor" name="ga5ba1541d092f28c93b1bdc3bfb1b69f"></a><!-- doxytag: member="objects.h::dJointAddHinge2Torques" ref="ga5ba1541d092f28c93b1bdc3bfb1b69f" args="(dJointID joint, dReal torque1, dReal torque2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointAddHinge2Torques </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> <em>joint</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>torque1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>torque2</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Applies torque1 about the hinge2's axis 1, torque2 about the hinge2's axis 2.
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This function is just a wrapper for <a class="el" href="group__bodies.html#g8378560dd168ee8d7a4b74e3de510ebc" title="Add torque at centre of mass of body in absolute coordinates.">dBodyAddTorque()</a>. </dd></dl>
</div>
</div><p>
<a class="anchor" name="ga1725abe170f80b0731321ed38785019"></a><!-- doxytag: member="objects.h::dJointAddHingeTorque" ref="ga1725abe170f80b0731321ed38785019" args="(dJointID joint, dReal torque)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointAddHingeTorque </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> <em>joint</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>torque</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Applies the torque about the hinge axis.
<p>
That is, it applies a torque with specified magnitude in the direction of the hinge axis, to body 1, and with the same magnitude but in opposite direction to body 2. This function is just a wrapper for <a class="el" href="group__bodies.html#g8378560dd168ee8d7a4b74e3de510ebc" title="Add torque at centre of mass of body in absolute coordinates.">dBodyAddTorque()</a>}
</div>
</div><p>
<a class="anchor" name="ge675b0e0e332ddcd907ac9d1461b1961"></a><!-- doxytag: member="objects.h::dJointAddPRTorque" ref="ge675b0e0e332ddcd907ac9d1461b1961" args="(dJointID j, dReal torque)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointAddPRTorque </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> <em>j</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>torque</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Applies the torque about the rotoide axis of the PR joint.
<p>
That is, it applies a torque with specified magnitude in the direction of the rotoide axis, to body 1, and with the same magnitude but in opposite direction to body 2. This function is just a wrapper for <a class="el" href="group__bodies.html#g8378560dd168ee8d7a4b74e3de510ebc" title="Add torque at centre of mass of body in absolute coordinates.">dBodyAddTorque()</a>}
</div>
</div><p>
<a class="anchor" name="g8b0e018cc3df6ea5ddb42320913455e7"></a><!-- doxytag: member="objects.h::dJointAddSliderForce" ref="g8b0e018cc3df6ea5ddb42320913455e7" args="(dJointID joint, dReal force)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointAddSliderForce </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> <em>joint</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>force</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Applies the given force in the slider's direction.
<p>
That is, it applies a force with specified magnitude, in the direction of slider's axis, to body1, and with the same magnitude but opposite direction to body2. This function is just a wrapper for <a class="el" href="group__bodies.html#g1e1352dc350ad42bff5818f2200ba792" title="Add force at centre of mass of body in absolute coordinates.">dBodyAddForce()</a>.
</div>
</div><p>
<a class="anchor" name="g36607569e2ee26f39d3d42cba2397898"></a><!-- doxytag: member="objects.h::dJointAddUniversalTorques" ref="g36607569e2ee26f39d3d42cba2397898" args="(dJointID joint, dReal torque1, dReal torque2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointAddUniversalTorques </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> <em>joint</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>torque1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>torque2</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Applies torque1 about the universal's axis 1, torque2 about the universal's axis 2.
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This function is just a wrapper for <a class="el" href="group__bodies.html#g8378560dd168ee8d7a4b74e3de510ebc" title="Add torque at centre of mass of body in absolute coordinates.">dBodyAddTorque()</a>. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g8f1c9b1302c799a1b87bc29b76d0dcec"></a><!-- doxytag: member="objects.h::dJointAttach" ref="g8f1c9b1302c799a1b87bc29b76d0dcec" args="(dJointID, dBodyID body1, dBodyID body2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointAttach </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dBodyID&nbsp;</td>
<td class="paramname"> <em>body1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dBodyID&nbsp;</td>
<td class="paramname"> <em>body2</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Attach the joint to some new bodies.
<p>
If the joint is already attached, it will be detached from the old bodies first. To attach this joint to only one body, set body1 or body2 to zero - a zero body refers to the static environment. Setting both bodies to zero puts the joint into "limbo", i.e. it will have no effect on the simulation. <dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Some joints, like hinge-2 need to be attached to two bodies to work. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gf23195ce77e12031393e591abd0e28e6"></a><!-- doxytag: member="objects.h::dJointCreateAMotor" ref="gf23195ce77e12031393e591abd0e28e6" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreateAMotor </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the A-motor type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g2d23509f8d6c6066b361af4cf14166f7"></a><!-- doxytag: member="objects.h::dJointCreateBall" ref="g2d23509f8d6c6066b361af4cf14166f7" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreateBall </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the ball type.
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The joint is initially in "limbo" (i.e. it has no effect on the simulation) because it does not connect to any bodies. </dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="gfa5e1543239ba44ecbdc178ebc7c3cc4"></a><!-- doxytag: member="objects.h::dJointCreateContact" ref="gfa5e1543239ba44ecbdc178ebc7c3cc4" args="(dWorldID, dJointGroupID, const dContact *)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreateContact </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const dContact *&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the contact type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="ge568995d03077e1acb13882a627dcf32"></a><!-- doxytag: member="objects.h::dJointCreateFixed" ref="ge568995d03077e1acb13882a627dcf32" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreateFixed </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the fixed type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g2f18d431d48c905abc9d72ce011c00bd"></a><!-- doxytag: member="objects.h::dJointCreateHinge" ref="g2f18d431d48c905abc9d72ce011c00bd" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreateHinge </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the hinge type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g6a6e32d35bdda9352d1be8d4df973f8f"></a><!-- doxytag: member="objects.h::dJointCreateHinge2" ref="g6a6e32d35bdda9352d1be8d4df973f8f" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreateHinge2 </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the hinge2 type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g21c8c99615269c5d9d3c57c674f6fd56"></a><!-- doxytag: member="objects.h::dJointCreateLMotor" ref="g21c8c99615269c5d9d3c57c674f6fd56" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreateLMotor </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the L-motor type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g7e68f39530acad9c0e7a38c8a3799b38"></a><!-- doxytag: member="objects.h::dJointCreatePlane2D" ref="g7e68f39530acad9c0e7a38c8a3799b38" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreatePlane2D </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the plane-2d type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="gdc867f10ba9931d191244fa879e43cb2"></a><!-- doxytag: member="objects.h::dJointCreatePR" ref="gdc867f10ba9931d191244fa879e43cb2" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreatePR </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the PR (Prismatic and Rotoide) type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="geccc4c67b2d409016685a6a9163be539"></a><!-- doxytag: member="objects.h::dJointCreateSlider" ref="geccc4c67b2d409016685a6a9163be539" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreateSlider </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the slider type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g1cb2e7668242313b5d24acb5d43e5c62"></a><!-- doxytag: member="objects.h::dJointCreateUniversal" ref="g1cb2e7668242313b5d24acb5d43e5c62" args="(dWorldID, dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointID dJointCreateUniversal </td>
<td>(</td>
<td class="paramtype">dWorldID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a new joint of the universal type.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>dJointGroupID</em>&nbsp;</td><td>set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g2187ccbcf51c951f680eb6c9a210801a"></a><!-- doxytag: member="objects.h::dJointDestroy" ref="g2187ccbcf51c951f680eb6c9a210801a" args="(dJointID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointDestroy </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Destroy a joint.
<p>
disconnects it from its attached bodies and removing it from the world. However, if the joint is a member of a group then this function has no effect - to destroy that joint the group must be emptied or destroyed.
</div>
</div><p>
<a class="anchor" name="g3634444b00ac33a5f34a7af4fffda8b2"></a><!-- doxytag: member="objects.h::dJointGetAMotorAngle" ref="g3634444b00ac33a5f34a7af4fffda8b2" args="(dJointID, int anum)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dReal dJointGetAMotorAngle </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>anum</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the current angle for axis.
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>In dAMotorUser mode this is simply the value that was set with <a class="el" href="group__joints.html#g17b2089e6512e22d71340befb40100d2" title="Tell the AMotor what the current angle is along axis anum.">dJointSetAMotorAngle()</a>. In dAMotorEuler mode this is the corresponding euler angle. </dd></dl>
</div>
</div><p>
<a class="anchor" name="ga65abc36177390330037299b689b70c7"></a><!-- doxytag: member="objects.h::dJointGetAMotorAngleRate" ref="ga65abc36177390330037299b689b70c7" args="(dJointID, int anum)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dReal dJointGetAMotorAngleRate </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>anum</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the current angle rate for axis anum.
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>In dAMotorUser mode this is always zero, as not enough information is available. In dAMotorEuler mode this is the corresponding euler angle rate. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gef1af77cc19d81b24ad00025f3c9d5ec"></a><!-- doxytag: member="objects.h::dJointGetAMotorAxis" ref="gef1af77cc19d81b24ad00025f3c9d5ec" args="(dJointID, int anum, dVector3 result)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGetAMotorAxis </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>anum</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dVector3&nbsp;</td>
<td class="paramname"> <em>result</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the AMotor axes.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>anum</em>&nbsp;</td><td>selects the axis to change (0,1 or 2). </td></tr>
<tr><td valign="top"></td><td valign="top"><em>rel</em>&nbsp;</td><td>Each axis can have one of three ``relative orientation'' modes. <ul>
<li>0: The axis is anchored to the global frame. </li>
<li>1: The axis is anchored to the first body. </li>
<li>2: The axis is anchored to the second body. </li>
</ul>
</td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g1887538374f044e22f9742650d14ae69"></a><!-- doxytag: member="objects.h::dJointGetAMotorAxisRel" ref="g1887538374f044e22f9742650d14ae69" args="(dJointID, int anum)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API int dJointGetAMotorAxisRel </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>anum</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get axis.
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The axis vector is always specified in global coordinates regardless of the setting of rel. There are two GetAMotorAxis functions, one to return the axis and one to return the relative mode.</dd></dl>
For dAMotorEuler mode: <ul>
<li>Only axes 0 and 2 need to be set. Axis 1 will be determined automatically at each time step. </li>
<li>Axes 0 and 2 must be perpendicular to each other. </li>
<li>Axis 0 must be anchored to the first body, axis 2 must be anchored to the second body. </li>
</ul>
</div>
</div><p>
<a class="anchor" name="gf2430c2062414bc28660bdc06a0d72d5"></a><!-- doxytag: member="objects.h::dJointGetAMotorMode" ref="gf2430c2062414bc28660bdc06a0d72d5" args="(dJointID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API int dJointGetAMotorMode </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the angular motor mode.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>must be one of the following constants: <ul>
<li>dAMotorUser The AMotor axes and joint angle settings are entirely controlled by the user. This is the default mode. </li>
<li>dAMotorEuler Euler angles are automatically computed. The axis a1 is also automatically computed. The AMotor axes must be set correctly when in this mode, as described below. When this mode is initially set the current relative orientations of the bodies will correspond to all euler angles at zero. </li>
</ul>
</td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g35f0392af69ece0d0c3ef7ed88b532bf"></a><!-- doxytag: member="objects.h::dJointGetAMotorNumAxes" ref="g35f0392af69ece0d0c3ef7ed88b532bf" args="(dJointID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API int dJointGetAMotorNumAxes </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the number of angular axes that will be controlled by the AMotor.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>num</em>&nbsp;</td><td>can range from 0 (which effectively deactivates the joint) to 3. This is automatically set to 3 in dAMotorEuler mode. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="gff13cbb464f1bfdc225fc9202c2c54c3"></a><!-- doxytag: member="objects.h::dJointGetBody" ref="gff13cbb464f1bfdc225fc9202c2c54c3" args="(dJointID, int index)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dBodyID dJointGetBody </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>index</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Return the bodies that this joint connects.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>return the first (0) or second (1) body. </td></tr>
</table>
</dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>If one of these returned body IDs is zero, the joint connects the other body to the static environment. If both body IDs are zero, the joint is in ``limbo'' and has no effect on the simulation. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g879999d011f82c73acf94029132cc198"></a><!-- doxytag: member="objects.h::dJointGetHinge2Anchor" ref="g879999d011f82c73acf94029132cc198" args="(dJointID, dVector3 result)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGetHinge2Anchor </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dVector3&nbsp;</td>
<td class="paramname"> <em>result</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the joint anchor point, in world coordinates.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the point on body 1. If the joint is perfectly satisfied, this will be the same as the point on body 2. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g1d1c4f9b10c550f6fec550f9cc80c7ab"></a><!-- doxytag: member="objects.h::dJointGetHingeAnchor" ref="g1d1c4f9b10c550f6fec550f9cc80c7ab" args="(dJointID, dVector3 result)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGetHingeAnchor </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dVector3&nbsp;</td>
<td class="paramname"> <em>result</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the hinge anchor point, in world coordinates.
<p>
This returns the point on body 1. If the joint is perfectly satisfied, this will be the same as the point on body 2.
</div>
</div><p>
<a class="anchor" name="gfdc1d9c7bd8824ec3e79cc5aa67ddfa1"></a><!-- doxytag: member="objects.h::dJointGetHingeAnchor2" ref="gfdc1d9c7bd8824ec3e79cc5aa67ddfa1" args="(dJointID, dVector3 result)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGetHingeAnchor2 </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dVector3&nbsp;</td>
<td class="paramname"> <em>result</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the joint anchor point, in world coordinates.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The point on body 2. If the joint is perfectly satisfied, this will return the same value as <a class="el" href="group__joints.html#g1d1c4f9b10c550f6fec550f9cc80c7ab" title="Get the hinge anchor point, in world coordinates.">dJointGetHingeAnchor()</a>. If not, this value will be slightly different. This can be used, for example, to see how far the joint has come apart. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g7ca6bdfe2b919b6bc2a27ba6f0e069f0"></a><!-- doxytag: member="objects.h::dJointGetHingeAngle" ref="g7ca6bdfe2b919b6bc2a27ba6f0e069f0" args="(dJointID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dReal dJointGetHingeAngle </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the hinge angle.
<p>
The angle is measured between the two bodies, or between the body and the static environment. The angle will be between -pi..pi. When the hinge anchor or axis is set, the current position of the attached bodies is examined and that position will be the zero angle.
</div>
</div><p>
<a class="anchor" name="g88b176c70948c3f96e5c9173904b04fe"></a><!-- doxytag: member="objects.h::dJointGetPRAnchor" ref="g88b176c70948c3f96e5c9173904b04fe" args="(dJointID, dVector3 result)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGetPRAnchor </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dVector3&nbsp;</td>
<td class="paramname"> <em>result</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the joint anchor point, in world coordinates.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the point on body 1. If the joint is perfectly satisfied, this will be the same as the point on body 2. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gd8b95871e93525f44badcdaf8e521da7"></a><!-- doxytag: member="objects.h::dJointGetPRPosition" ref="gd8b95871e93525f44badcdaf8e521da7" args="(dJointID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dReal dJointGetPRPosition </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the PR linear position (i.e. the prismatic's extension).
<p>
When the axis is set, the current position of the attached bodies is examined and that position will be the zero position.<p>
The position is the "oriented" length between the position = (Prismatic axis) dot_product [(body1 + offset) - (body2 + anchor2)]
</div>
</div><p>
<a class="anchor" name="g7f35449914cbc4a86b845dcd85a617c0"></a><!-- doxytag: member="objects.h::dJointGetSliderPosition" ref="g7f35449914cbc4a86b845dcd85a617c0" args="(dJointID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dReal dJointGetSliderPosition </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the slider linear position (i.e. the slider's extension).
<p>
When the axis is set, the current position of the attached bodies is examined and that position will be the zero position.
</div>
</div><p>
<a class="anchor" name="g6f12f69d9b1a457428a28c2f77148174"></a><!-- doxytag: member="objects.h::dJointGetType" ref="g6f12f69d9b1a457428a28c2f77148174" args="(dJointID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API int dJointGetType </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the type of the joint.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the type, being one of these: <ul>
<li>JointTypeBall </li>
<li>JointTypeHinge </li>
<li>JointTypeSlider </li>
<li>JointTypeContact </li>
<li>JointTypeUniversal </li>
<li>JointTypeHinge2 </li>
<li>JointTypeFixed </li>
<li>JointTypeAMotor </li>
<li>JointTypeLMotor </li>
</ul>
</dd></dl>
</div>
</div><p>
<a class="anchor" name="ga768432c561cb76ba2490913f42d1aaf"></a><!-- doxytag: member="objects.h::dJointGetUniversalAnchor" ref="ga768432c561cb76ba2490913f42d1aaf" args="(dJointID, dVector3 result)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGetUniversalAnchor </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dVector3&nbsp;</td>
<td class="paramname"> <em>result</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the joint anchor point, in world coordinates.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the point on body 1. If the joint is perfectly satisfied, this will be the same as the point on body 2. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g00d5018903a90d75c324c4f870b0e7ea"></a><!-- doxytag: member="objects.h::dJointGetUniversalAnchor2" ref="g00d5018903a90d75c324c4f870b0e7ea" args="(dJointID, dVector3 result)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGetUniversalAnchor2 </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dVector3&nbsp;</td>
<td class="paramname"> <em>result</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the joint anchor point, in world coordinates.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>This returns the point on body 2. </dd></dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>You can think of the ball and socket part of a universal joint as trying to keep the result of dJointGetBallAnchor() and dJointGetBallAnchor2() the same. If the joint is perfectly satisfied, this function will return the same value as <a class="el" href="group__joints.html#ga768432c561cb76ba2490913f42d1aaf" title="Get the joint anchor point, in world coordinates.">dJointGetUniversalAnchor()</a> to within roundoff errors. <a class="el" href="group__joints.html#g00d5018903a90d75c324c4f870b0e7ea" title="Get the joint anchor point, in world coordinates.">dJointGetUniversalAnchor2()</a> can be used, along with <a class="el" href="group__joints.html#ga768432c561cb76ba2490913f42d1aaf" title="Get the joint anchor point, in world coordinates.">dJointGetUniversalAnchor()</a>, to see how far the joint has come apart. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g3c0fafbd1ccd8e450c01012ce600f6ab"></a><!-- doxytag: member="objects.h::dJointGetUniversalAngles" ref="g3c0fafbd1ccd8e450c01012ce600f6ab" args="(dJointID, dReal *angle1, dReal *angle2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGetUniversalAngles </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal *&nbsp;</td>
<td class="paramname"> <em>angle1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal *&nbsp;</td>
<td class="paramname"> <em>angle2</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get both angles at the same time.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>joint</em>&nbsp;</td><td>The universal joint for which we want to calculate the angles </td></tr>
<tr><td valign="top"></td><td valign="top"><em>angle1</em>&nbsp;</td><td>The angle between the body1 and the axis 1 </td></tr>
<tr><td valign="top"></td><td valign="top"><em>angle2</em>&nbsp;</td><td>The angle between the body2 and the axis 2</td></tr>
</table>
</dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>This function combine getUniversalAngle1 and getUniversalAngle2 together and try to avoid redundant calculation </dd></dl>
</div>
</div><p>
<a class="anchor" name="gaaec687b184a1214133a41503e7c628f"></a><!-- doxytag: member="objects.h::dJointGroupCreate" ref="gaaec687b184a1214133a41503e7c628f" args="(int max_size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API dJointGroupID dJointGroupCreate </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>max_size</em> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Create a joint group.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>max_size</em>&nbsp;</td><td>deprecated. Set to 0. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g49e664ee9a8bd7bfe5e6932bf936bb8f"></a><!-- doxytag: member="objects.h::dJointGroupDestroy" ref="g49e664ee9a8bd7bfe5e6932bf936bb8f" args="(dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGroupDestroy </td>
<td>(</td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Destroy a joint group.
<p>
All joints in the joint group will be destroyed.
</div>
</div><p>
<a class="anchor" name="g6e055bac8a0a3261bda3b6d07499c4ea"></a><!-- doxytag: member="objects.h::dJointGroupEmpty" ref="g6e055bac8a0a3261bda3b6d07499c4ea" args="(dJointGroupID)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointGroupEmpty </td>
<td>(</td>
<td class="paramtype">dJointGroupID&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Empty a joint group.
<p>
All joints in the joint group will be destroyed, but the joint group itself will not be destroyed.
</div>
</div><p>
<a class="anchor" name="g17b2089e6512e22d71340befb40100d2"></a><!-- doxytag: member="objects.h::dJointSetAMotorAngle" ref="g17b2089e6512e22d71340befb40100d2" args="(dJointID, int anum, dReal angle)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointSetAMotorAngle </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>anum</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>angle</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Tell the AMotor what the current angle is along axis anum.
<p>
This function should only be called in dAMotorUser mode, because in this mode the AMotor has no other way of knowing the joint angles. The angle information is needed if stops have been set along the axis, but it is not needed for axis motors.
</div>
</div><p>
<a class="anchor" name="g1406f976045a1b7edffbb46bf626d04f"></a><!-- doxytag: member="objects.h::dJointSetAMotorNumAxes" ref="g1406f976045a1b7edffbb46bf626d04f" args="(dJointID, int num)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointSetAMotorNumAxes </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>num</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
set the nr of axes
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>num</em>&nbsp;</td><td>0..3 </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g058c33a3da1ff935a1125034f779dc4a"></a><!-- doxytag: member="objects.h::dJointSetBallAnchor" ref="g058c33a3da1ff935a1125034f779dc4a" args="(dJointID, dReal x, dReal y, dReal z)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointSetBallAnchor </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>z</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Set the joint anchor point.
<p>
The joint will try to keep this point on each body together. The input is specified in world coordinates.
</div>
</div><p>
<a class="anchor" name="g87ddb9beb95e9383a4280cb8a4186f01"></a><!-- doxytag: member="objects.h::dJointSetFeedback" ref="g87ddb9beb95e9383a4280cb8a4186f01" args="(dJointID, dJointFeedback *)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointSetFeedback </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dJointFeedback *&nbsp;</td>
<td class="paramname"></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the datastructure that is to receive the feedback.
<p>
The feedback can be used by the user, so that it is known how much force an individual joint exerts.
</div>
</div><p>
<a class="anchor" name="g080b7739f5b2b37a798742cee0ef38a4"></a><!-- doxytag: member="objects.h::dJointSetLMotorAxis" ref="g080b7739f5b2b37a798742cee0ef38a4" args="(dJointID, int anum, int rel, dReal x, dReal y, dReal z)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointSetLMotorAxis </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>anum</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>rel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>z</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Set the AMotor axes.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>anum</em>&nbsp;</td><td>selects the axis to change (0,1 or 2). </td></tr>
<tr><td valign="top"></td><td valign="top"><em>rel</em>&nbsp;</td><td>Each axis can have one of three ``relative orientation'' modes <ul>
<li>0: The axis is anchored to the global frame. </li>
<li>1: The axis is anchored to the first body. </li>
<li>2: The axis is anchored to the second body. </li>
</ul>
</td></tr>
</table>
</dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The axis vector is always specified in global coordinates regardless of the setting of rel. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gcbfb4014567d69010aba3024d9b7bccd"></a><!-- doxytag: member="objects.h::dJointSetLMotorNumAxes" ref="gcbfb4014567d69010aba3024d9b7bccd" args="(dJointID, int num)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointSetLMotorNumAxes </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>num</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Set the number of axes that will be controlled by the LMotor.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>num</em>&nbsp;</td><td>can range from 0 (which effectively deactivates the joint) to 3. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="gc08a28659605f17307d563f45db0824b"></a><!-- doxytag: member="objects.h::dJointSetPRParam" ref="gc08a28659605f17307d563f45db0824b" args="(dJointID, int parameter, dReal value)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ODE_API void dJointSetPRParam </td>
<td>(</td>
<td class="paramtype">dJointID&nbsp;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>parameter</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">dReal&nbsp;</td>
<td class="paramname"> <em>value</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
set joint parameter
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>parameterX where X equal 2 refer to parameter for the rotoide articulation </dd></dl>
</div>
</div><p>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
</body>
</html>