aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ode-0.9/docs
diff options
context:
space:
mode:
authordan miller2007-10-19 05:20:48 +0000
committerdan miller2007-10-19 05:20:48 +0000
commitd48ea5bb797037069d641da41da0f195f0124491 (patch)
tree40ff433d94859d629aac933d5ec73b382f62ba1a /libraries/ode-0.9/docs
parentdont ask (diff)
downloadopensim-SC_OLD-d48ea5bb797037069d641da41da0f195f0124491.zip
opensim-SC_OLD-d48ea5bb797037069d641da41da0f195f0124491.tar.gz
opensim-SC_OLD-d48ea5bb797037069d641da41da0f195f0124491.tar.bz2
opensim-SC_OLD-d48ea5bb797037069d641da41da0f195f0124491.tar.xz
one more for the gipper
Diffstat (limited to 'libraries/ode-0.9/docs')
-rw-r--r--libraries/ode-0.9/docs/annotated.html30
-rw-r--r--libraries/ode-0.9/docs/collision_8h-source.html417
-rw-r--r--libraries/ode-0.9/docs/collision__space_8h-source.html81
-rw-r--r--libraries/ode-0.9/docs/collision__trimesh_8h-source.html220
-rw-r--r--libraries/ode-0.9/docs/common_8h-source.html408
-rw-r--r--libraries/ode-0.9/docs/compatibility_8h-source.html60
-rw-r--r--libraries/ode-0.9/docs/config_8h-source.html196
-rw-r--r--libraries/ode-0.9/docs/contact_8h-source.html109
-rw-r--r--libraries/ode-0.9/docs/doxygen.css358
-rw-r--r--libraries/ode-0.9/docs/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--libraries/ode-0.9/docs/drawstuff_8h-source.html166
-rw-r--r--libraries/ode-0.9/docs/error_8h-source.html83
-rw-r--r--libraries/ode-0.9/docs/export-dif_8h-source.html52
-rw-r--r--libraries/ode-0.9/docs/files.html44
-rw-r--r--libraries/ode-0.9/docs/functions.html46
-rw-r--r--libraries/ode-0.9/docs/functions_vars.html46
-rw-r--r--libraries/ode-0.9/docs/group__bodies.html1827
-rw-r--r--libraries/ode-0.9/docs/group__collide.html2452
-rw-r--r--libraries/ode-0.9/docs/group__collide__box.html182
-rw-r--r--libraries/ode-0.9/docs/group__collide__sphere.html199
-rw-r--r--libraries/ode-0.9/docs/group__disable.html563
-rw-r--r--libraries/ode-0.9/docs/group__drawstuff.html668
-rw-r--r--libraries/ode-0.9/docs/group__joints.html2127
-rw-r--r--libraries/ode-0.9/docs/group__world.html697
-rw-r--r--libraries/ode-0.9/docs/index.html27
-rw-r--r--libraries/ode-0.9/docs/mass_8h-source.html137
-rw-r--r--libraries/ode-0.9/docs/matrix_8h-source.html214
-rw-r--r--libraries/ode-0.9/docs/memory_8h-source.html79
-rw-r--r--libraries/ode-0.9/docs/misc_8h-source.html105
-rw-r--r--libraries/ode-0.9/docs/modules.html32
-rw-r--r--libraries/ode-0.9/docs/objects_8h-source.html563
-rw-r--r--libraries/ode-0.9/docs/ode_8h-source.html67
-rw-r--r--libraries/ode-0.9/docs/odecpp_8h-source.html732
-rw-r--r--libraries/ode-0.9/docs/odecpp__collision_8h-source.html366
-rw-r--r--libraries/ode-0.9/docs/odemath_8h-source.html350
-rw-r--r--libraries/ode-0.9/docs/rotation_8h-source.html90
-rw-r--r--libraries/ode-0.9/docs/structd_contact_geom.html70
-rw-r--r--libraries/ode-0.9/docs/structds_functions.html59
-rw-r--r--libraries/ode-0.9/docs/tab_b.gifbin0 -> 35 bytes
-rw-r--r--libraries/ode-0.9/docs/tab_l.gifbin0 -> 706 bytes
-rw-r--r--libraries/ode-0.9/docs/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--libraries/ode-0.9/docs/tabs.css102
-rw-r--r--libraries/ode-0.9/docs/timer_8h-source.html96
-rw-r--r--libraries/ode-0.9/docs/version_8h-source.html49
44 files changed, 14169 insertions, 0 deletions
diff --git a/libraries/ode-0.9/docs/annotated.html b/libraries/ode-0.9/docs/annotated.html
new file mode 100644
index 0000000..3b3c2f6
--- /dev/null
+++ b/libraries/ode-0.9/docs/annotated.html
@@ -0,0 +1,30 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Data Structures</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<div class="tabs">
17 <ul>
18 <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
19 <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
20 </ul>
21</div>
22<h1>Open Dynamics Engine Data Structures</h1>Here are the data structures with brief descriptions:<table>
23 <tr><td class="indexkey"><a class="el" href="structd_contact_geom.html">dContactGeom</a></td><td class="indexvalue">Describe the contact point between two geoms </td></tr>
24 <tr><td class="indexkey"><a class="el" href="structds_functions.html">dsFunctions</a></td><td class="indexvalue">Set of functions to be used as callbacks by the simulation loop </td></tr>
25</table>
26<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by&nbsp;
27<a href="http://www.doxygen.org/index.html">
28<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
29</body>
30</html>
diff --git a/libraries/ode-0.9/docs/collision_8h-source.html b/libraries/ode-0.9/docs/collision_8h-source.html
new file mode 100644
index 0000000..b6ff3b7
--- /dev/null
+++ b/libraries/ode-0.9/docs/collision_8h-source.html
@@ -0,0 +1,417 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: collision.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>collision.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_COLLISION_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_COLLISION_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
42<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;ode/collision_space.h&gt;</span>
43<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ode/contact.h&gt;</span>
44<a name="l00029"></a>00029
45<a name="l00030"></a>00030 <span class="preprocessor">#ifdef __cplusplus</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
47<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
48<a name="l00033"></a>00033 <span class="preprocessor"></span>
49<a name="l00049"></a>00049 <span class="comment">/* ************************************************************************ */</span>
50<a name="l00050"></a>00050 <span class="comment">/* general functions */</span>
51<a name="l00051"></a>00051
52<a name="l00065"></a>00065 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> (dGeomID geom);
53<a name="l00066"></a>00066
54<a name="l00067"></a>00067
55<a name="l00075"></a>00075 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#gf68eb443d5c66ab1aaa8a7d38d1dbc4f" title="Set the user-defined data pointer stored in the geom.">dGeomSetData</a> (dGeomID geom, <span class="keywordtype">void</span>* data);
56<a name="l00076"></a>00076
57<a name="l00077"></a>00077
58<a name="l00084"></a>00084 ODE_API <span class="keywordtype">void</span> *<a class="code" href="group__collide.html#gc1a185e22b136814fd3afc8469d98996" title="Get the user-defined data pointer stored in the geom.">dGeomGetData</a> (dGeomID geom);
59<a name="l00085"></a>00085
60<a name="l00086"></a>00086
61<a name="l00105"></a>00105 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g97cad1194789477eac19fe364d986505" title="Set the body associated with a placeable geom.">dGeomSetBody</a> (dGeomID geom, dBodyID body);
62<a name="l00106"></a>00106
63<a name="l00107"></a>00107
64<a name="l00114"></a>00114 ODE_API dBodyID <a class="code" href="group__collide.html#gd6cedf77fde0dddf751c5d42fcc8eebf" title="Get the body associated with a placeable geom.">dGeomGetBody</a> (dGeomID geom);
65<a name="l00115"></a>00115
66<a name="l00116"></a>00116
67<a name="l00131"></a>00131 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g71043b70a735e8f5451c3e13cef345fe" title="Set the position vector of a placeable geom.">dGeomSetPosition</a> (dGeomID geom, dReal x, dReal y, dReal z);
68<a name="l00132"></a>00132
69<a name="l00133"></a>00133
70<a name="l00146"></a>00146 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g76c510f4b7d5a036d8a36f2d60d670e5" title="Set the rotation matrix of a placeable geom.">dGeomSetRotation</a> (dGeomID geom, <span class="keyword">const</span> dMatrix3 R);
71<a name="l00147"></a>00147
72<a name="l00148"></a>00148
73<a name="l00162"></a>00162 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g989149d93162264d699444a57b045150" title="Set the rotation of a placeable geom.">dGeomSetQuaternion</a> (dGeomID geom, <span class="keyword">const</span> dQuaternion Q);
74<a name="l00163"></a>00163
75<a name="l00164"></a>00164
76<a name="l00181"></a>00181 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__collide.html#g95b93f803880cac2619fe2635aa93ad8" title="Get the position vector of a placeable geom.">dGeomGetPosition</a> (dGeomID geom);
77<a name="l00182"></a>00182
78<a name="l00183"></a>00183
79<a name="l00191"></a>00191 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#gd2cccf2b4c62bec58720d4f5fab8108d" title="Copy the position of a geom into a vector.">dGeomCopyPosition</a> (dGeomID geom, dVector3 pos);
80<a name="l00192"></a>00192
81<a name="l00193"></a>00193
82<a name="l00210"></a>00210 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__collide.html#g293b2264cefb12f9a6659cacc6a722f7" title="Get the rotation matrix of a placeable geom.">dGeomGetRotation</a> (dGeomID geom);
83<a name="l00211"></a>00211
84<a name="l00212"></a>00212
85<a name="l00226"></a>00226 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g800b702e148a8c279596f591b910cfbd" title="Get the rotation matrix of a placeable geom.">dGeomCopyRotation</a>(dGeomID geom, dMatrix3 R);
86<a name="l00227"></a>00227
87<a name="l00228"></a>00228
88<a name="l00242"></a>00242 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g11ad7f0098639b06f4bcd2d681122842" title="Get the rotation quaternion of a placeable geom.">dGeomGetQuaternion</a> (dGeomID geom, dQuaternion result);
89<a name="l00243"></a>00243
90<a name="l00244"></a>00244
91<a name="l00261"></a>00261 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g904e360ac6e9e85a05e67929990e5b72" title="Return the axis-aligned bounding box.">dGeomGetAABB</a> (dGeomID geom, dReal aabb[6]);
92<a name="l00262"></a>00262
93<a name="l00263"></a>00263
94<a name="l00270"></a>00270 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__collide.html#ge5a58bdc78fb4f163a0e9c3ecabf64c9" title="Determing if a geom is a space.">dGeomIsSpace</a> (dGeomID geom);
95<a name="l00271"></a>00271
96<a name="l00272"></a>00272
97<a name="l00280"></a>00280 ODE_API dSpaceID <a class="code" href="group__collide.html#gfdc35eade2cbd0b6886ce957325d7c03" title="Query for the space containing a particular geom.">dGeomGetSpace</a> (dGeomID);
98<a name="l00281"></a>00281
99<a name="l00282"></a>00282
100<a name="l00307"></a>00307 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__collide.html#g07b5ed5b915f756f419a4a7ce69dc67e" title="Given a geom, this returns its class.">dGeomGetClass</a> (dGeomID geom);
101<a name="l00308"></a>00308
102<a name="l00309"></a>00309
103<a name="l00322"></a>00322 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g80fd5741701eb48472521780d5e2f9b9" title="Set the &amp;quot;category&amp;quot; bitfield for the given geom.">dGeomSetCategoryBits</a> (dGeomID geom, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> bits);
104<a name="l00323"></a>00323
105<a name="l00324"></a>00324
106<a name="l00337"></a>00337 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#ga55b4de01a61be41668685857b78455d" title="Set the &amp;quot;collide&amp;quot; bitfield for the given geom.">dGeomSetCollideBits</a> (dGeomID geom, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> bits);
107<a name="l00338"></a>00338
108<a name="l00339"></a>00339
109<a name="l00348"></a>00348 ODE_API <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__collide.html#gfb62d3493b6789382f65776ab931e78d" title="Get the &amp;quot;category&amp;quot; bitfield for the given geom.">dGeomGetCategoryBits</a> (dGeomID);
110<a name="l00349"></a>00349
111<a name="l00350"></a>00350
112<a name="l00359"></a>00359 ODE_API <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__collide.html#g5591e5c496a5a6f8b66dc57e03d0cd8d" title="Get the &amp;quot;collide&amp;quot; bitfield for the given geom.">dGeomGetCollideBits</a> (dGeomID);
113<a name="l00360"></a>00360
114<a name="l00361"></a>00361
115<a name="l00374"></a>00374 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#ga7c64b8fcae37ee9541208a0351f3d05" title="Enable a geom.">dGeomEnable</a> (dGeomID geom);
116<a name="l00375"></a>00375
117<a name="l00376"></a>00376
118<a name="l00389"></a>00389 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g6cb32b4161435fe491859680b463fc12" title="Disable a geom.">dGeomDisable</a> (dGeomID geom);
119<a name="l00390"></a>00390
120<a name="l00391"></a>00391
121<a name="l00405"></a>00405 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e" title="Check to see if a geom is enabled.">dGeomIsEnabled</a> (dGeomID geom);
122<a name="l00406"></a>00406
123<a name="l00407"></a>00407 <span class="comment">/* ************************************************************************ */</span>
124<a name="l00408"></a>00408 <span class="comment">/* geom offset from body */</span>
125<a name="l00409"></a>00409
126<a name="l00425"></a>00425 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#gdc292bc01d5bed32f145ee42760d73b4" title="Set the local offset position of a geom from its body.">dGeomSetOffsetPosition</a> (dGeomID geom, dReal x, dReal y, dReal z);
127<a name="l00426"></a>00426
128<a name="l00427"></a>00427
129<a name="l00441"></a>00441 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g805d896b4bc79ceb40e70aadb9629cab" title="Set the local offset rotation matrix of a geom from its body.">dGeomSetOffsetRotation</a> (dGeomID geom, <span class="keyword">const</span> dMatrix3 R);
130<a name="l00442"></a>00442
131<a name="l00443"></a>00443
132<a name="l00457"></a>00457 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g9eba87b7598eb6b3a9b6bde1abbeaa1a" title="Set the local offset rotation of a geom from its body.">dGeomSetOffsetQuaternion</a> (dGeomID geom, <span class="keyword">const</span> dQuaternion Q);
133<a name="l00458"></a>00458
134<a name="l00459"></a>00459
135<a name="l00476"></a>00476 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g934fe31c543d588991d28cd8571e52ed" title="Set the offset position of a geom from its body.">dGeomSetOffsetWorldPosition</a> (dGeomID geom, dReal x, dReal y, dReal z);
136<a name="l00477"></a>00477
137<a name="l00478"></a>00478
138<a name="l00493"></a>00493 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g2c1ef27e7e8ced6eb8488221a1a7c200" title="Set the offset rotation of a geom from its body.">dGeomSetOffsetWorldRotation</a> (dGeomID geom, <span class="keyword">const</span> dMatrix3 R);
139<a name="l00494"></a>00494
140<a name="l00495"></a>00495
141<a name="l00510"></a>00510 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#ga04f2117ab18a1d3e27270defdad83a8" title="Set the offset rotation of a geom from its body.">dGeomSetOffsetWorldQuaternion</a> (dGeomID geom, <span class="keyword">const</span> dQuaternion);
142<a name="l00511"></a>00511
143<a name="l00512"></a>00512
144<a name="l00526"></a>00526 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#gc81929d988b21c4e5338017f2e92a6f2" title="Clear any offset from the geom.">dGeomClearOffset</a>(dGeomID geom);
145<a name="l00527"></a>00527
146<a name="l00528"></a>00528
147<a name="l00544"></a>00544 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__collide.html#g46260e0668373aa600b1cf8f83276e10" title="Check to see whether the geom has an offset.">dGeomIsOffset</a>(dGeomID geom);
148<a name="l00545"></a>00545
149<a name="l00546"></a>00546
150<a name="l00560"></a>00560 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__collide.html#gb200f73800d253ab3a87f9856d4e18d2" title="Get the offset position vector of a geom.">dGeomGetOffsetPosition</a> (dGeomID geom);
151<a name="l00561"></a>00561
152<a name="l00562"></a>00562
153<a name="l00573"></a>00573 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#gd4a1e59ecc3c570e3c37c5b8fad71220" title="Copy the offset position vector of a geom.">dGeomCopyOffsetPosition</a> (dGeomID geom, dVector3 pos);
154<a name="l00574"></a>00574
155<a name="l00575"></a>00575
156<a name="l00590"></a>00590 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__collide.html#gba28cf4ca8f552c782fc30ce3073dc73" title="Get the offset rotation matrix of a geom.">dGeomGetOffsetRotation</a> (dGeomID geom);
157<a name="l00591"></a>00591
158<a name="l00592"></a>00592
159<a name="l00604"></a>00604 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#gcf96cd4f9913dc258e6f29da9979388c" title="Copy the offset rotation matrix of a geom.">dGeomCopyOffsetRotation</a> (dGeomID geom, dMatrix3 R);
160<a name="l00605"></a>00605
161<a name="l00606"></a>00606
162<a name="l00617"></a>00617 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g8fc20f761daf36976e50d057cf2650ca" title="Get the offset rotation quaternion of a geom.">dGeomGetOffsetQuaternion</a> (dGeomID geom, dQuaternion result);
163<a name="l00618"></a>00618
164<a name="l00619"></a>00619
165<a name="l00620"></a>00620 <span class="comment">/* ************************************************************************ */</span>
166<a name="l00621"></a>00621 <span class="comment">/* collision detection */</span>
167<a name="l00622"></a>00622
168<a name="l00623"></a>00623 <span class="comment">/*</span>
169<a name="l00624"></a>00624 <span class="comment"> * Just generate any contacts (disables any contact refining).</span>
170<a name="l00625"></a>00625 <span class="comment"> */</span>
171<a name="l00626"></a>00626 <span class="preprocessor">#define CONTACTS_UNIMPORTANT 0x80000000</span>
172<a name="l00627"></a>00627 <span class="preprocessor"></span>
173<a name="l00675"></a>00675 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__collide.html#g08508345384abb95e25d674b39157bf8" title="Given two geoms o1 and o2 that potentially intersect, generate contact information...">dCollide</a> (dGeomID o1, dGeomID o2, <span class="keywordtype">int</span> flags, <a class="code" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> *contact,
174<a name="l00676"></a>00676 <span class="keywordtype">int</span> skip);
175<a name="l00677"></a>00677
176<a name="l00705"></a>00705 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#gfd185829b6940e2b3238517e1acd2fbb" title="Determines which pairs of geoms in a space may potentially intersect, and calls the...">dSpaceCollide</a> (dSpaceID space, <span class="keywordtype">void</span> *data, <a class="code" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0" title="User callback for geom-geom collision testing.">dNearCallback</a> *callback);
177<a name="l00706"></a>00706
178<a name="l00707"></a>00707
179<a name="l00742"></a>00742 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g72a6bb0b550d3e181f8b7a9be7179db5" title="Determines which geoms from one space may potentially intersect with geoms from another...">dSpaceCollide2</a> (dGeomID space1, dGeomID space2, <span class="keywordtype">void</span> *data, <a class="code" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0" title="User callback for geom-geom collision testing.">dNearCallback</a> *callback);
180<a name="l00743"></a>00743
181<a name="l00744"></a>00744
182<a name="l00745"></a>00745 <span class="comment">/* ************************************************************************ */</span>
183<a name="l00746"></a>00746 <span class="comment">/* standard classes */</span>
184<a name="l00747"></a>00747
185<a name="l00748"></a>00748 <span class="comment">/* the maximum number of user classes that are supported */</span>
186<a name="l00749"></a>00749 <span class="keyword">enum</span> {
187<a name="l00750"></a>00750 dMaxUserClasses = 4
188<a name="l00751"></a>00751 };
189<a name="l00752"></a>00752
190<a name="l00753"></a>00753 <span class="comment">/* class numbers - each geometry object needs a unique number */</span>
191<a name="l00754"></a>00754 <span class="keyword">enum</span> {
192<a name="l00755"></a>00755 dSphereClass = 0,
193<a name="l00756"></a>00756 dBoxClass,
194<a name="l00757"></a>00757 dCapsuleClass,
195<a name="l00758"></a>00758 dCylinderClass,
196<a name="l00759"></a>00759 dPlaneClass,
197<a name="l00760"></a>00760 dRayClass,
198<a name="l00761"></a>00761 dConvexClass,
199<a name="l00762"></a>00762 dGeomTransformClass,
200<a name="l00763"></a>00763 dTriMeshClass,
201<a name="l00764"></a>00764 dHeightfieldClass,
202<a name="l00765"></a>00765
203<a name="l00766"></a>00766 dFirstSpaceClass,
204<a name="l00767"></a>00767 dSimpleSpaceClass = dFirstSpaceClass,
205<a name="l00768"></a>00768 dHashSpaceClass,
206<a name="l00769"></a>00769 dQuadTreeSpaceClass,
207<a name="l00770"></a>00770 dLastSpaceClass = dQuadTreeSpaceClass,
208<a name="l00771"></a>00771
209<a name="l00772"></a>00772 dFirstUserClass,
210<a name="l00773"></a>00773 dLastUserClass = dFirstUserClass + dMaxUserClasses - 1,
211<a name="l00774"></a>00774 dGeomNumClasses
212<a name="l00775"></a>00775 };
213<a name="l00776"></a>00776
214<a name="l00777"></a>00777
215<a name="l00797"></a>00797 ODE_API dGeomID <a class="code" href="group__collide__sphere.html#g53c79c860638ca3600744a193da68474" title="Create a sphere geom of the given radius, and return its ID.">dCreateSphere</a> (dSpaceID space, dReal radius);
216<a name="l00798"></a>00798
217<a name="l00799"></a>00799
218<a name="l00809"></a>00809 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide__sphere.html#g2341ae9b3b733571eff7a1857109f394" title="Set the radius of a sphere geom.">dGeomSphereSetRadius</a> (dGeomID sphere, dReal radius);
219<a name="l00810"></a>00810
220<a name="l00811"></a>00811
221<a name="l00820"></a>00820 ODE_API dReal <a class="code" href="group__collide__sphere.html#g0e7f664deb9f557a6a24f93705b29fa9" title="Retrieves the radius of a sphere geom.">dGeomSphereGetRadius</a> (dGeomID sphere);
222<a name="l00821"></a>00821
223<a name="l00822"></a>00822
224<a name="l00837"></a>00837 ODE_API dReal <a class="code" href="group__collide__sphere.html#gee86d3744471e447ffc85f85ee6578b1" title="Calculate the depth of the a given point within a sphere.">dGeomSpherePointDepth</a> (dGeomID sphere, dReal x, dReal y, dReal z);
225<a name="l00838"></a>00838
226<a name="l00839"></a>00839
227<a name="l00840"></a>00840 <span class="comment">//--&gt; Convex Functions</span>
228<a name="l00841"></a>00841 ODE_API dGeomID dCreateConvex (dSpaceID space,
229<a name="l00842"></a>00842 dReal *_planes,
230<a name="l00843"></a>00843 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _planecount,
231<a name="l00844"></a>00844 dReal *_points,
232<a name="l00845"></a>00845 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _pointcount,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *_polygons);
233<a name="l00846"></a>00846
234<a name="l00847"></a>00847 ODE_API <span class="keywordtype">void</span> dGeomSetConvex (dGeomID g,
235<a name="l00848"></a>00848 dReal *_planes,
236<a name="l00849"></a>00849 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _count,
237<a name="l00850"></a>00850 dReal *_points,
238<a name="l00851"></a>00851 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _pointcount,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *_polygons);
239<a name="l00852"></a>00852 <span class="comment">//&lt;-- Convex Functions</span>
240<a name="l00853"></a>00853
241<a name="l00875"></a>00875 ODE_API dGeomID <a class="code" href="group__collide__box.html#g3e3b0b249a8ccd40a9969e3a26548397" title="Create a box geom with the provided side lengths.">dCreateBox</a> (dSpaceID space, dReal lx, dReal ly, dReal lz);
242<a name="l00876"></a>00876
243<a name="l00877"></a>00877
244<a name="l00889"></a>00889 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide__box.html#g4c7060780be9eaf74228565910168273" title="Set the side lengths of the given box.">dGeomBoxSetLengths</a> (dGeomID box, dReal lx, dReal ly, dReal lz);
245<a name="l00890"></a>00890
246<a name="l00891"></a>00891
247<a name="l00901"></a>00901 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide__box.html#ge24d9264235d2487b2e2d52b2c62c879" title="Get the side lengths of a box.">dGeomBoxGetLengths</a> (dGeomID box, dVector3 result);
248<a name="l00902"></a>00902
249<a name="l00903"></a>00903
250<a name="l00916"></a>00916 ODE_API dReal dGeomBoxPointDepth (dGeomID box, dReal x, dReal y, dReal z);
251<a name="l00917"></a>00917
252<a name="l00918"></a>00918
253<a name="l00919"></a>00919 ODE_API dGeomID dCreatePlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d);
254<a name="l00920"></a>00920 ODE_API <span class="keywordtype">void</span> dGeomPlaneSetParams (dGeomID plane, dReal a, dReal b, dReal c, dReal d);
255<a name="l00921"></a>00921 ODE_API <span class="keywordtype">void</span> dGeomPlaneGetParams (dGeomID plane, dVector4 result);
256<a name="l00922"></a>00922 ODE_API dReal dGeomPlanePointDepth (dGeomID plane, dReal x, dReal y, dReal z);
257<a name="l00923"></a>00923
258<a name="l00924"></a>00924 ODE_API dGeomID dCreateCapsule (dSpaceID space, dReal radius, dReal length);
259<a name="l00925"></a>00925 ODE_API <span class="keywordtype">void</span> dGeomCapsuleSetParams (dGeomID ccylinder, dReal radius, dReal length);
260<a name="l00926"></a>00926 ODE_API <span class="keywordtype">void</span> dGeomCapsuleGetParams (dGeomID ccylinder, dReal *radius, dReal *length);
261<a name="l00927"></a>00927 ODE_API dReal dGeomCapsulePointDepth (dGeomID ccylinder, dReal x, dReal y, dReal z);
262<a name="l00928"></a>00928
263<a name="l00929"></a>00929 <span class="comment">// For now we want to have a backwards compatible C-API, note: C++ API is not.</span>
264<a name="l00930"></a>00930 <span class="preprocessor">#define dCreateCCylinder dCreateCapsule</span>
265<a name="l00931"></a>00931 <span class="preprocessor"></span><span class="preprocessor">#define dGeomCCylinderSetParams dGeomCapsuleSetParams</span>
266<a name="l00932"></a>00932 <span class="preprocessor"></span><span class="preprocessor">#define dGeomCCylinderGetParams dGeomCapsuleGetParams</span>
267<a name="l00933"></a>00933 <span class="preprocessor"></span><span class="preprocessor">#define dGeomCCylinderPointDepth dGeomCapsulePointDepth</span>
268<a name="l00934"></a>00934 <span class="preprocessor"></span><span class="preprocessor">#define dCCylinderClass dCapsuleClass</span>
269<a name="l00935"></a>00935 <span class="preprocessor"></span>
270<a name="l00936"></a>00936 ODE_API dGeomID dCreateCylinder (dSpaceID space, dReal radius, dReal length);
271<a name="l00937"></a>00937 ODE_API <span class="keywordtype">void</span> dGeomCylinderSetParams (dGeomID cylinder, dReal radius, dReal length);
272<a name="l00938"></a>00938 ODE_API <span class="keywordtype">void</span> dGeomCylinderGetParams (dGeomID cylinder, dReal *radius, dReal *length);
273<a name="l00939"></a>00939
274<a name="l00940"></a>00940 ODE_API dGeomID dCreateRay (dSpaceID space, dReal length);
275<a name="l00941"></a>00941 ODE_API <span class="keywordtype">void</span> dGeomRaySetLength (dGeomID ray, dReal length);
276<a name="l00942"></a>00942 ODE_API dReal dGeomRayGetLength (dGeomID ray);
277<a name="l00943"></a>00943 ODE_API <span class="keywordtype">void</span> dGeomRaySet (dGeomID ray, dReal px, dReal py, dReal pz,
278<a name="l00944"></a>00944 dReal dx, dReal dy, dReal dz);
279<a name="l00945"></a>00945 ODE_API <span class="keywordtype">void</span> dGeomRayGet (dGeomID ray, dVector3 start, dVector3 dir);
280<a name="l00946"></a>00946
281<a name="l00947"></a>00947 <span class="comment">/*</span>
282<a name="l00948"></a>00948 <span class="comment"> * Set/get ray flags that influence ray collision detection.</span>
283<a name="l00949"></a>00949 <span class="comment"> * These flags are currently only noticed by the trimesh collider, because</span>
284<a name="l00950"></a>00950 <span class="comment"> * they can make a major differences there.</span>
285<a name="l00951"></a>00951 <span class="comment"> */</span>
286<a name="l00952"></a>00952 ODE_API <span class="keywordtype">void</span> dGeomRaySetParams (dGeomID g, <span class="keywordtype">int</span> FirstContact, <span class="keywordtype">int</span> BackfaceCull);
287<a name="l00953"></a>00953 ODE_API <span class="keywordtype">void</span> dGeomRayGetParams (dGeomID g, <span class="keywordtype">int</span> *FirstContact, <span class="keywordtype">int</span> *BackfaceCull);
288<a name="l00954"></a>00954 ODE_API <span class="keywordtype">void</span> dGeomRaySetClosestHit (dGeomID g, <span class="keywordtype">int</span> closestHit);
289<a name="l00955"></a>00955 ODE_API <span class="keywordtype">int</span> dGeomRayGetClosestHit (dGeomID g);
290<a name="l00956"></a>00956
291<a name="l00957"></a>00957 <span class="preprocessor">#include "collision_trimesh.h"</span>
292<a name="l00958"></a>00958
293<a name="l00959"></a>00959 ODE_API dGeomID dCreateGeomTransform (dSpaceID space);
294<a name="l00960"></a>00960 ODE_API <span class="keywordtype">void</span> dGeomTransformSetGeom (dGeomID g, dGeomID obj);
295<a name="l00961"></a>00961 ODE_API dGeomID dGeomTransformGetGeom (dGeomID g);
296<a name="l00962"></a>00962 ODE_API <span class="keywordtype">void</span> dGeomTransformSetCleanup (dGeomID g, <span class="keywordtype">int</span> mode);
297<a name="l00963"></a>00963 ODE_API <span class="keywordtype">int</span> dGeomTransformGetCleanup (dGeomID g);
298<a name="l00964"></a>00964 ODE_API <span class="keywordtype">void</span> dGeomTransformSetInfo (dGeomID g, <span class="keywordtype">int</span> mode);
299<a name="l00965"></a>00965 ODE_API <span class="keywordtype">int</span> dGeomTransformGetInfo (dGeomID g);
300<a name="l00966"></a>00966
301<a name="l00967"></a>00967
302<a name="l00968"></a>00968 <span class="comment">/* ************************************************************************ */</span>
303<a name="l00969"></a>00969 <span class="comment">/* heightfield functions */</span>
304<a name="l00970"></a>00970
305<a name="l00971"></a>00971
306<a name="l00972"></a>00972 <span class="comment">// Data storage for heightfield data.</span>
307<a name="l00973"></a>00973 <span class="keyword">struct </span>dxHeightfieldData;
308<a name="l00974"></a>00974 <span class="keyword">typedef</span> <span class="keyword">struct </span>dxHeightfieldData* dHeightfieldDataID;
309<a name="l00975"></a>00975
310<a name="l00976"></a>00976
311<a name="l00994"></a><a class="code" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9">00994</a> <span class="keyword">typedef</span> dReal <a class="code" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9" title="Callback prototype.">dHeightfieldGetHeight</a>( <span class="keywordtype">void</span>* p_user_data, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> z );
312<a name="l00995"></a>00995
313<a name="l00996"></a>00996
314<a name="l00997"></a>00997
315<a name="l01017"></a>01017 ODE_API dGeomID <a class="code" href="group__collide.html#gd50d5cd5fea5bfc12584e60d4a936cfb" title="Creates a heightfield geom.">dCreateHeightfield</a>( dSpaceID space,
316<a name="l01018"></a>01018 dHeightfieldDataID data, <span class="keywordtype">int</span> bPlaceable );
317<a name="l01019"></a>01019
318<a name="l01020"></a>01020
319<a name="l01033"></a>01033 ODE_API dHeightfieldDataID <a class="code" href="group__collide.html#g7de82d5cf9aa10bb3144d51f4360eea1" title="Creates a new empty dHeightfieldDataID.">dGeomHeightfieldDataCreate</a>();
320<a name="l01034"></a>01034
321<a name="l01035"></a>01035
322<a name="l01044"></a>01044 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#gf98fc1f3d1784df5a5dff114b483d408" title="Destroys a dHeightfieldDataID.">dGeomHeightfieldDataDestroy</a>( dHeightfieldDataID d );
323<a name="l01045"></a>01045
324<a name="l01046"></a>01046
325<a name="l01047"></a>01047
326<a name="l01088"></a>01088 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g34566000a5a2673cc013294f0ed85926" title="Configures a dHeightfieldDataID to use a callback to retrieve height data.">dGeomHeightfieldDataBuildCallback</a>( dHeightfieldDataID d,
327<a name="l01089"></a>01089 <span class="keywordtype">void</span>* pUserData, <a class="code" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9" title="Callback prototype.">dHeightfieldGetHeight</a>* pCallback,
328<a name="l01090"></a>01090 dReal width, dReal depth, <span class="keywordtype">int</span> widthSamples, <span class="keywordtype">int</span> depthSamples,
329<a name="l01091"></a>01091 dReal scale, dReal offset, dReal thickness, <span class="keywordtype">int</span> bWrap );
330<a name="l01092"></a>01092
331<a name="l01136"></a>01136 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g2c15b7c1a36c7526b66911beab1b7934" title="Configures a dHeightfieldDataID to use height data in byte format.">dGeomHeightfieldDataBuildByte</a>( dHeightfieldDataID d,
332<a name="l01137"></a>01137 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* pHeightData, <span class="keywordtype">int</span> bCopyHeightData,
333<a name="l01138"></a>01138 dReal width, dReal depth, <span class="keywordtype">int</span> widthSamples, <span class="keywordtype">int</span> depthSamples,
334<a name="l01139"></a>01139 dReal scale, dReal offset, dReal thickness, <span class="keywordtype">int</span> bWrap );
335<a name="l01140"></a>01140
336<a name="l01184"></a>01184 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g2f7582d64cc8219141bc10efeca86d17" title="Configures a dHeightfieldDataID to use height data in short format.">dGeomHeightfieldDataBuildShort</a>( dHeightfieldDataID d,
337<a name="l01185"></a>01185 <span class="keyword">const</span> <span class="keywordtype">short</span>* pHeightData, <span class="keywordtype">int</span> bCopyHeightData,
338<a name="l01186"></a>01186 dReal width, dReal depth, <span class="keywordtype">int</span> widthSamples, <span class="keywordtype">int</span> depthSamples,
339<a name="l01187"></a>01187 dReal scale, dReal offset, dReal thickness, <span class="keywordtype">int</span> bWrap );
340<a name="l01188"></a>01188
341<a name="l01234"></a>01234 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g8da529419317e7bd4e01dabbe94daa09" title="Configures a dHeightfieldDataID to use height data in single precision floating point...">dGeomHeightfieldDataBuildSingle</a>( dHeightfieldDataID d,
342<a name="l01235"></a>01235 <span class="keyword">const</span> <span class="keywordtype">float</span>* pHeightData, <span class="keywordtype">int</span> bCopyHeightData,
343<a name="l01236"></a>01236 dReal width, dReal depth, <span class="keywordtype">int</span> widthSamples, <span class="keywordtype">int</span> depthSamples,
344<a name="l01237"></a>01237 dReal scale, dReal offset, dReal thickness, <span class="keywordtype">int</span> bWrap );
345<a name="l01238"></a>01238
346<a name="l01284"></a>01284 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g98ec0c952b3b4e0fb3cd8cf66e267c86" title="Configures a dHeightfieldDataID to use height data in double precision floating point...">dGeomHeightfieldDataBuildDouble</a>( dHeightfieldDataID d,
347<a name="l01285"></a>01285 <span class="keyword">const</span> <span class="keywordtype">double</span>* pHeightData, <span class="keywordtype">int</span> bCopyHeightData,
348<a name="l01286"></a>01286 dReal width, dReal depth, <span class="keywordtype">int</span> widthSamples, <span class="keywordtype">int</span> depthSamples,
349<a name="l01287"></a>01287 dReal scale, dReal offset, dReal thickness, <span class="keywordtype">int</span> bWrap );
350<a name="l01288"></a>01288
351<a name="l01306"></a>01306 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#gcdef420e65e3751388b315f5de2804b2" title="Manually set the minimum and maximum height bounds.">dGeomHeightfieldDataSetBounds</a>( dHeightfieldDataID d,
352<a name="l01307"></a>01307 dReal minHeight, dReal maxHeight );
353<a name="l01308"></a>01308
354<a name="l01309"></a>01309
355<a name="l01320"></a>01320 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g6c1ae1f3ca652d6410e7804cdf8f8491" title="Assigns a dHeightfieldDataID to a heightfield geom.">dGeomHeightfieldSetHeightfieldData</a>( dGeomID g, dHeightfieldDataID d );
356<a name="l01321"></a>01321
357<a name="l01322"></a>01322
358<a name="l01332"></a>01332 ODE_API dHeightfieldDataID <a class="code" href="group__collide.html#g747176d26ce4f9b10ebfa6c865ef1cca" title="Gets the dHeightfieldDataID bound to a heightfield geom.">dGeomHeightfieldGetHeightfieldData</a>( dGeomID g );
359<a name="l01333"></a>01333
360<a name="l01334"></a>01334
361<a name="l01335"></a>01335
362<a name="l01336"></a>01336 <span class="comment">/* ************************************************************************ */</span>
363<a name="l01337"></a>01337 <span class="comment">/* utility functions */</span>
364<a name="l01338"></a>01338
365<a name="l01339"></a>01339 ODE_API <span class="keywordtype">void</span> dClosestLineSegmentPoints (<span class="keyword">const</span> dVector3 a1, <span class="keyword">const</span> dVector3 a2,
366<a name="l01340"></a>01340 <span class="keyword">const</span> dVector3 b1, <span class="keyword">const</span> dVector3 b2,
367<a name="l01341"></a>01341 dVector3 cp1, dVector3 cp2);
368<a name="l01342"></a>01342
369<a name="l01343"></a>01343 ODE_API <span class="keywordtype">int</span> dBoxTouchesBox (<span class="keyword">const</span> dVector3 _p1, <span class="keyword">const</span> dMatrix3 R1,
370<a name="l01344"></a>01344 <span class="keyword">const</span> dVector3 side1, <span class="keyword">const</span> dVector3 _p2,
371<a name="l01345"></a>01345 <span class="keyword">const</span> dMatrix3 R2, <span class="keyword">const</span> dVector3 side2);
372<a name="l01346"></a>01346
373<a name="l01347"></a>01347 <span class="comment">// The meaning of flags parameter is the same as in dCollide()</span>
374<a name="l01348"></a>01348 ODE_API <span class="keywordtype">int</span> dBoxBox (<span class="keyword">const</span> dVector3 p1, <span class="keyword">const</span> dMatrix3 R1,
375<a name="l01349"></a>01349 <span class="keyword">const</span> dVector3 side1, <span class="keyword">const</span> dVector3 p2,
376<a name="l01350"></a>01350 <span class="keyword">const</span> dMatrix3 R2, <span class="keyword">const</span> dVector3 side2,
377<a name="l01351"></a>01351 dVector3 normal, dReal *depth, <span class="keywordtype">int</span> *return_code,
378<a name="l01352"></a>01352 <span class="keywordtype">int</span> flags, <a class="code" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> *contact, <span class="keywordtype">int</span> skip);
379<a name="l01353"></a>01353
380<a name="l01354"></a>01354 ODE_API <span class="keywordtype">void</span> dInfiniteAABB (dGeomID geom, dReal aabb[6]);
381<a name="l01355"></a>01355 ODE_API <span class="keywordtype">void</span> dInitODE(<span class="keywordtype">void</span>);
382<a name="l01356"></a>01356 ODE_API <span class="keywordtype">void</span> dCloseODE(<span class="keywordtype">void</span>);
383<a name="l01357"></a>01357
384<a name="l01358"></a>01358 <span class="comment">/* ************************************************************************ */</span>
385<a name="l01359"></a>01359 <span class="comment">/* custom classes */</span>
386<a name="l01360"></a>01360
387<a name="l01361"></a>01361 <span class="keyword">typedef</span> <span class="keywordtype">void</span> dGetAABBFn (dGeomID, dReal aabb[6]);
388<a name="l01362"></a>01362 <span class="keyword">typedef</span> <span class="keywordtype">int</span> dColliderFn (dGeomID o1, dGeomID o2,
389<a name="l01363"></a>01363 <span class="keywordtype">int</span> flags, <a class="code" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> *contact, <span class="keywordtype">int</span> skip);
390<a name="l01364"></a>01364 <span class="keyword">typedef</span> dColliderFn * dGetColliderFnFn (<span class="keywordtype">int</span> num);
391<a name="l01365"></a>01365 <span class="keyword">typedef</span> <span class="keywordtype">void</span> dGeomDtorFn (dGeomID o);
392<a name="l01366"></a>01366 <span class="keyword">typedef</span> <span class="keywordtype">int</span> dAABBTestFn (dGeomID o1, dGeomID o2, dReal aabb[6]);
393<a name="l01367"></a>01367
394<a name="l01368"></a>01368 <span class="keyword">typedef</span> <span class="keyword">struct </span>dGeomClass {
395<a name="l01369"></a>01369 <span class="keywordtype">int</span> bytes;
396<a name="l01370"></a>01370 dGetColliderFnFn *collider;
397<a name="l01371"></a>01371 dGetAABBFn *aabb;
398<a name="l01372"></a>01372 dAABBTestFn *aabb_test;
399<a name="l01373"></a>01373 dGeomDtorFn *dtor;
400<a name="l01374"></a>01374 } dGeomClass;
401<a name="l01375"></a>01375
402<a name="l01376"></a>01376 ODE_API <span class="keywordtype">int</span> dCreateGeomClass (<span class="keyword">const</span> dGeomClass *classptr);
403<a name="l01377"></a>01377 ODE_API <span class="keywordtype">void</span> * dGeomGetClassData (dGeomID);
404<a name="l01378"></a>01378 ODE_API dGeomID dCreateGeom (<span class="keywordtype">int</span> classnum);
405<a name="l01379"></a>01379
406<a name="l01380"></a>01380 <span class="comment">/* ************************************************************************ */</span>
407<a name="l01381"></a>01381
408<a name="l01382"></a>01382 <span class="preprocessor">#ifdef __cplusplus</span>
409<a name="l01383"></a>01383 <span class="preprocessor"></span>}
410<a name="l01384"></a>01384 <span class="preprocessor">#endif</span>
411<a name="l01385"></a>01385 <span class="preprocessor"></span>
412<a name="l01386"></a>01386 <span class="preprocessor">#endif</span>
413</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
414<a href="http://www.doxygen.org/index.html">
415<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
416</body>
417</html>
diff --git a/libraries/ode-0.9/docs/collision__space_8h-source.html b/libraries/ode-0.9/docs/collision__space_8h-source.html
new file mode 100644
index 0000000..dbece3d
--- /dev/null
+++ b/libraries/ode-0.9/docs/collision__space_8h-source.html
@@ -0,0 +1,81 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: collision_space.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>collision_space.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_COLLISION_SPACE_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_COLLISION_SPACE_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
42<a name="l00027"></a>00027
43<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __cplusplus</span>
44<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
45<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span>
47<a name="l00032"></a>00032 <span class="keyword">struct </span><a class="code" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a>;
48<a name="l00033"></a>00033
49<a name="l00049"></a><a class="code" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">00049</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0" title="User callback for geom-geom collision testing.">dNearCallback</a> (<span class="keywordtype">void</span> *data, dGeomID o1, dGeomID o2);
50<a name="l00050"></a>00050
51<a name="l00051"></a>00051
52<a name="l00052"></a>00052 ODE_API dSpaceID dSimpleSpaceCreate (dSpaceID space);
53<a name="l00053"></a>00053 ODE_API dSpaceID dHashSpaceCreate (dSpaceID space);
54<a name="l00054"></a>00054 ODE_API dSpaceID dQuadTreeSpaceCreate (dSpaceID space, dVector3 Center, dVector3 Extents, <span class="keywordtype">int</span> Depth);
55<a name="l00055"></a>00055
56<a name="l00056"></a>00056 ODE_API <span class="keywordtype">void</span> dSpaceDestroy (dSpaceID);
57<a name="l00057"></a>00057
58<a name="l00058"></a>00058 ODE_API <span class="keywordtype">void</span> dHashSpaceSetLevels (dSpaceID space, <span class="keywordtype">int</span> minlevel, <span class="keywordtype">int</span> maxlevel);
59<a name="l00059"></a>00059 ODE_API <span class="keywordtype">void</span> dHashSpaceGetLevels (dSpaceID space, <span class="keywordtype">int</span> *minlevel, <span class="keywordtype">int</span> *maxlevel);
60<a name="l00060"></a>00060
61<a name="l00061"></a>00061 ODE_API <span class="keywordtype">void</span> dSpaceSetCleanup (dSpaceID space, <span class="keywordtype">int</span> mode);
62<a name="l00062"></a>00062 ODE_API <span class="keywordtype">int</span> dSpaceGetCleanup (dSpaceID space);
63<a name="l00063"></a>00063
64<a name="l00064"></a>00064 ODE_API <span class="keywordtype">void</span> dSpaceAdd (dSpaceID, dGeomID);
65<a name="l00065"></a>00065 ODE_API <span class="keywordtype">void</span> dSpaceRemove (dSpaceID, dGeomID);
66<a name="l00066"></a>00066 ODE_API <span class="keywordtype">int</span> dSpaceQuery (dSpaceID, dGeomID);
67<a name="l00067"></a>00067 ODE_API <span class="keywordtype">void</span> dSpaceClean (dSpaceID);
68<a name="l00068"></a>00068 ODE_API <span class="keywordtype">int</span> dSpaceGetNumGeoms (dSpaceID);
69<a name="l00069"></a>00069 ODE_API dGeomID dSpaceGetGeom (dSpaceID, <span class="keywordtype">int</span> i);
70<a name="l00070"></a>00070
71<a name="l00071"></a>00071
72<a name="l00072"></a>00072 <span class="preprocessor">#ifdef __cplusplus</span>
73<a name="l00073"></a>00073 <span class="preprocessor"></span>}
74<a name="l00074"></a>00074 <span class="preprocessor">#endif</span>
75<a name="l00075"></a>00075 <span class="preprocessor"></span>
76<a name="l00076"></a>00076 <span class="preprocessor">#endif</span>
77</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
78<a href="http://www.doxygen.org/index.html">
79<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
80</body>
81</html>
diff --git a/libraries/ode-0.9/docs/collision__trimesh_8h-source.html b/libraries/ode-0.9/docs/collision__trimesh_8h-source.html
new file mode 100644
index 0000000..488925c
--- /dev/null
+++ b/libraries/ode-0.9/docs/collision__trimesh_8h-source.html
@@ -0,0 +1,220 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: collision_trimesh.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>collision_trimesh.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="comment">/*</span>
39<a name="l00024"></a>00024 <span class="comment"> * TriMesh code by Erwin de Vries.</span>
40<a name="l00025"></a>00025 <span class="comment"> *</span>
41<a name="l00026"></a>00026 <span class="comment"> * Trimesh data.</span>
42<a name="l00027"></a>00027 <span class="comment"> * This is where the actual vertexdata (pointers), and BV tree is stored.</span>
43<a name="l00028"></a>00028 <span class="comment"> * Vertices should be single precision!</span>
44<a name="l00029"></a>00029 <span class="comment"> * This should be more sophisticated, so that the user can easyly implement</span>
45<a name="l00030"></a>00030 <span class="comment"> * another collision library, but this is a lot of work, and also costs some</span>
46<a name="l00031"></a>00031 <span class="comment"> * performance because some data has to be copied.</span>
47<a name="l00032"></a>00032 <span class="comment"> */</span>
48<a name="l00033"></a>00033
49<a name="l00034"></a>00034 <span class="preprocessor">#ifndef _ODE_COLLISION_TRIMESH_H_</span>
50<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_COLLISION_TRIMESH_H_</span>
51<a name="l00036"></a>00036 <span class="preprocessor"></span>
52<a name="l00037"></a>00037 <span class="preprocessor">#ifdef __cplusplus</span>
53<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
54<a name="l00039"></a>00039 <span class="preprocessor">#endif</span>
55<a name="l00040"></a>00040 <span class="preprocessor"></span>
56<a name="l00041"></a>00041 <span class="comment">/*</span>
57<a name="l00042"></a>00042 <span class="comment"> * Data storage for triangle meshes.</span>
58<a name="l00043"></a>00043 <span class="comment"> */</span>
59<a name="l00044"></a>00044 <span class="keyword">struct </span>dxTriMeshData;
60<a name="l00045"></a>00045 <span class="keyword">typedef</span> <span class="keyword">struct </span>dxTriMeshData* dTriMeshDataID;
61<a name="l00046"></a>00046
62<a name="l00047"></a>00047 <span class="comment">/*</span>
63<a name="l00048"></a>00048 <span class="comment"> * These dont make much sense now, but they will later when we add more</span>
64<a name="l00049"></a>00049 <span class="comment"> * features.</span>
65<a name="l00050"></a>00050 <span class="comment"> */</span>
66<a name="l00051"></a>00051 ODE_API dTriMeshDataID dGeomTriMeshDataCreate(<span class="keywordtype">void</span>);
67<a name="l00052"></a>00052 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataDestroy(dTriMeshDataID g);
68<a name="l00053"></a>00053
69<a name="l00054"></a>00054
70<a name="l00055"></a>00055
71<a name="l00056"></a>00056 <span class="keyword">enum</span> { TRIMESH_FACE_NORMALS };
72<a name="l00057"></a>00057 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataSet(dTriMeshDataID g, <span class="keywordtype">int</span> data_id, <span class="keywordtype">void</span>* in_data);
73<a name="l00058"></a>00058 ODE_API <span class="keywordtype">void</span>* dGeomTriMeshDataGet(dTriMeshDataID g, <span class="keywordtype">int</span> data_id);
74<a name="l00059"></a>00059
75<a name="l00060"></a>00060
76<a name="l00061"></a>00061
77<a name="l00067"></a>00067 ODE_API <span class="keywordtype">void</span> dGeomTriMeshSetLastTransform( dGeomID g, dMatrix4 last_trans );
78<a name="l00068"></a>00068 ODE_API dReal* dGeomTriMeshGetLastTransform( dGeomID g );
79<a name="l00069"></a>00069
80<a name="l00070"></a>00070 <span class="comment">/*</span>
81<a name="l00071"></a>00071 <span class="comment"> * Build TriMesh data with single precision used in vertex data .</span>
82<a name="l00072"></a>00072 <span class="comment"> */</span>
83<a name="l00073"></a>00073 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataBuildSingle(dTriMeshDataID g,
84<a name="l00074"></a>00074 <span class="keyword">const</span> <span class="keywordtype">void</span>* Vertices, <span class="keywordtype">int</span> VertexStride, <span class="keywordtype">int</span> VertexCount,
85<a name="l00075"></a>00075 <span class="keyword">const</span> <span class="keywordtype">void</span>* Indices, <span class="keywordtype">int</span> IndexCount, <span class="keywordtype">int</span> TriStride);
86<a name="l00076"></a>00076 <span class="comment">/* same again with a normals array (used as trimesh-trimesh optimization) */</span>
87<a name="l00077"></a>00077 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataBuildSingle1(dTriMeshDataID g,
88<a name="l00078"></a>00078 <span class="keyword">const</span> <span class="keywordtype">void</span>* Vertices, <span class="keywordtype">int</span> VertexStride, <span class="keywordtype">int</span> VertexCount,
89<a name="l00079"></a>00079 <span class="keyword">const</span> <span class="keywordtype">void</span>* Indices, <span class="keywordtype">int</span> IndexCount, <span class="keywordtype">int</span> TriStride,
90<a name="l00080"></a>00080 <span class="keyword">const</span> <span class="keywordtype">void</span>* Normals);
91<a name="l00081"></a>00081 <span class="comment">/*</span>
92<a name="l00082"></a>00082 <span class="comment">* Build TriMesh data with double pricision used in vertex data .</span>
93<a name="l00083"></a>00083 <span class="comment">*/</span>
94<a name="l00084"></a>00084 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataBuildDouble(dTriMeshDataID g,
95<a name="l00085"></a>00085 <span class="keyword">const</span> <span class="keywordtype">void</span>* Vertices, <span class="keywordtype">int</span> VertexStride, <span class="keywordtype">int</span> VertexCount,
96<a name="l00086"></a>00086 <span class="keyword">const</span> <span class="keywordtype">void</span>* Indices, <span class="keywordtype">int</span> IndexCount, <span class="keywordtype">int</span> TriStride);
97<a name="l00087"></a>00087 <span class="comment">/* same again with a normals array (used as trimesh-trimesh optimization) */</span>
98<a name="l00088"></a>00088 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataBuildDouble1(dTriMeshDataID g,
99<a name="l00089"></a>00089 <span class="keyword">const</span> <span class="keywordtype">void</span>* Vertices, <span class="keywordtype">int</span> VertexStride, <span class="keywordtype">int</span> VertexCount,
100<a name="l00090"></a>00090 <span class="keyword">const</span> <span class="keywordtype">void</span>* Indices, <span class="keywordtype">int</span> IndexCount, <span class="keywordtype">int</span> TriStride,
101<a name="l00091"></a>00091 <span class="keyword">const</span> <span class="keywordtype">void</span>* Normals);
102<a name="l00092"></a>00092
103<a name="l00093"></a>00093 <span class="comment">/*</span>
104<a name="l00094"></a>00094 <span class="comment"> * Simple build. Single/double precision based on dSINGLE/dDOUBLE!</span>
105<a name="l00095"></a>00095 <span class="comment"> */</span>
106<a name="l00096"></a>00096 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataBuildSimple(dTriMeshDataID g,
107<a name="l00097"></a>00097 <span class="keyword">const</span> dReal* Vertices, <span class="keywordtype">int</span> VertexCount,
108<a name="l00098"></a>00098 <span class="keyword">const</span> <span class="keywordtype">int</span>* Indices, <span class="keywordtype">int</span> IndexCount);
109<a name="l00099"></a>00099 <span class="comment">/* same again with a normals array (used as trimesh-trimesh optimization) */</span>
110<a name="l00100"></a>00100 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataBuildSimple1(dTriMeshDataID g,
111<a name="l00101"></a>00101 <span class="keyword">const</span> dReal* Vertices, <span class="keywordtype">int</span> VertexCount,
112<a name="l00102"></a>00102 <span class="keyword">const</span> <span class="keywordtype">int</span>* Indices, <span class="keywordtype">int</span> IndexCount,
113<a name="l00103"></a>00103 <span class="keyword">const</span> <span class="keywordtype">int</span>* Normals);
114<a name="l00104"></a>00104
115<a name="l00105"></a>00105 <span class="comment">/* Preprocess the trimesh data to remove mark unnecessary edges and vertices */</span>
116<a name="l00106"></a>00106 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataPreprocess(dTriMeshDataID g);
117<a name="l00107"></a>00107 <span class="comment">/* Get and set the internal preprocessed trimesh data buffer, for loading and saving */</span>
118<a name="l00108"></a>00108 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataGetBuffer(dTriMeshDataID g, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>** buf, <span class="keywordtype">int</span>* bufLen);
119<a name="l00109"></a>00109 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataSetBuffer(dTriMeshDataID g, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buf);
120<a name="l00110"></a>00110
121<a name="l00111"></a>00111
122<a name="l00112"></a>00112 <span class="comment">/*</span>
123<a name="l00113"></a>00113 <span class="comment"> * Per triangle callback. Allows the user to say if he wants a collision with</span>
124<a name="l00114"></a>00114 <span class="comment"> * a particular triangle.</span>
125<a name="l00115"></a>00115 <span class="comment"> */</span>
126<a name="l00116"></a>00116 <span class="keyword">typedef</span> <span class="keywordtype">int</span> dTriCallback(dGeomID TriMesh, dGeomID RefObject, <span class="keywordtype">int</span> TriangleIndex);
127<a name="l00117"></a>00117 ODE_API <span class="keywordtype">void</span> dGeomTriMeshSetCallback(dGeomID g, dTriCallback* Callback);
128<a name="l00118"></a>00118 ODE_API dTriCallback* dGeomTriMeshGetCallback(dGeomID g);
129<a name="l00119"></a>00119
130<a name="l00120"></a>00120 <span class="comment">/*</span>
131<a name="l00121"></a>00121 <span class="comment"> * Per object callback. Allows the user to get the list of triangles in 1</span>
132<a name="l00122"></a>00122 <span class="comment"> * shot. Maybe we should remove this one.</span>
133<a name="l00123"></a>00123 <span class="comment"> */</span>
134<a name="l00124"></a>00124 <span class="keyword">typedef</span> <span class="keywordtype">void</span> dTriArrayCallback(dGeomID TriMesh, dGeomID RefObject, <span class="keyword">const</span> <span class="keywordtype">int</span>* TriIndices, <span class="keywordtype">int</span> TriCount);
135<a name="l00125"></a>00125 ODE_API <span class="keywordtype">void</span> dGeomTriMeshSetArrayCallback(dGeomID g, dTriArrayCallback* ArrayCallback);
136<a name="l00126"></a>00126 ODE_API dTriArrayCallback* dGeomTriMeshGetArrayCallback(dGeomID g);
137<a name="l00127"></a>00127
138<a name="l00128"></a>00128 <span class="comment">/*</span>
139<a name="l00129"></a>00129 <span class="comment"> * Ray callback.</span>
140<a name="l00130"></a>00130 <span class="comment"> * Allows the user to say if a ray collides with a triangle on barycentric</span>
141<a name="l00131"></a>00131 <span class="comment"> * coords. The user can for example sample a texture with alpha transparency</span>
142<a name="l00132"></a>00132 <span class="comment"> * to determine if a collision should occur.</span>
143<a name="l00133"></a>00133 <span class="comment"> */</span>
144<a name="l00134"></a>00134 <span class="keyword">typedef</span> <span class="keywordtype">int</span> dTriRayCallback(dGeomID TriMesh, dGeomID Ray, <span class="keywordtype">int</span> TriangleIndex, dReal u, dReal v);
145<a name="l00135"></a>00135 ODE_API <span class="keywordtype">void</span> dGeomTriMeshSetRayCallback(dGeomID g, dTriRayCallback* Callback);
146<a name="l00136"></a>00136 ODE_API dTriRayCallback* dGeomTriMeshGetRayCallback(dGeomID g);
147<a name="l00137"></a>00137
148<a name="l00138"></a>00138 <span class="comment">/*</span>
149<a name="l00139"></a>00139 <span class="comment"> * Trimesh class</span>
150<a name="l00140"></a>00140 <span class="comment"> * Construction. Callbacks are optional.</span>
151<a name="l00141"></a>00141 <span class="comment"> */</span>
152<a name="l00142"></a>00142 ODE_API dGeomID dCreateTriMesh(dSpaceID space, dTriMeshDataID Data, dTriCallback* Callback, dTriArrayCallback* ArrayCallback, dTriRayCallback* RayCallback);
153<a name="l00143"></a>00143
154<a name="l00144"></a>00144 ODE_API <span class="keywordtype">void</span> dGeomTriMeshSetData(dGeomID g, dTriMeshDataID Data);
155<a name="l00145"></a>00145 ODE_API dTriMeshDataID dGeomTriMeshGetData(dGeomID g);
156<a name="l00146"></a>00146
157<a name="l00147"></a>00147
158<a name="l00148"></a>00148 <span class="comment">// enable/disable/check temporal coherence</span>
159<a name="l00149"></a>00149 ODE_API <span class="keywordtype">void</span> dGeomTriMeshEnableTC(dGeomID g, <span class="keywordtype">int</span> geomClass, <span class="keywordtype">int</span> enable);
160<a name="l00150"></a>00150 ODE_API <span class="keywordtype">int</span> dGeomTriMeshIsTCEnabled(dGeomID g, <span class="keywordtype">int</span> geomClass);
161<a name="l00151"></a>00151
162<a name="l00152"></a>00152 <span class="comment">/*</span>
163<a name="l00153"></a>00153 <span class="comment"> * Clears the internal temporal coherence caches. When a geom has its</span>
164<a name="l00154"></a>00154 <span class="comment"> * collision checked with a trimesh once, data is stored inside the trimesh.</span>
165<a name="l00155"></a>00155 <span class="comment"> * With large worlds with lots of seperate objects this list could get huge.</span>
166<a name="l00156"></a>00156 <span class="comment"> * We should be able to do this automagically.</span>
167<a name="l00157"></a>00157 <span class="comment"> */</span>
168<a name="l00158"></a>00158 ODE_API <span class="keywordtype">void</span> dGeomTriMeshClearTCCache(dGeomID g);
169<a name="l00159"></a>00159
170<a name="l00160"></a>00160
171<a name="l00161"></a>00161 <span class="comment">/*</span>
172<a name="l00162"></a>00162 <span class="comment"> * returns the TriMeshDataID</span>
173<a name="l00163"></a>00163 <span class="comment"> */</span>
174<a name="l00164"></a>00164 ODE_API dTriMeshDataID dGeomTriMeshGetTriMeshDataID(dGeomID g);
175<a name="l00165"></a>00165
176<a name="l00166"></a>00166 <span class="comment">/*</span>
177<a name="l00167"></a>00167 <span class="comment"> * Gets a triangle.</span>
178<a name="l00168"></a>00168 <span class="comment"> */</span>
179<a name="l00169"></a>00169 ODE_API <span class="keywordtype">void</span> dGeomTriMeshGetTriangle(dGeomID g, <span class="keywordtype">int</span> Index, dVector3* v0, dVector3* v1, dVector3* v2);
180<a name="l00170"></a>00170
181<a name="l00171"></a>00171 <span class="comment">/*</span>
182<a name="l00172"></a>00172 <span class="comment"> * Gets the point on the requested triangle and the given barycentric</span>
183<a name="l00173"></a>00173 <span class="comment"> * coordinates.</span>
184<a name="l00174"></a>00174 <span class="comment"> */</span>
185<a name="l00175"></a>00175 ODE_API <span class="keywordtype">void</span> dGeomTriMeshGetPoint(dGeomID g, <span class="keywordtype">int</span> Index, dReal u, dReal v, dVector3 Out);
186<a name="l00176"></a>00176
187<a name="l00177"></a>00177 <span class="comment">/*</span>
188<a name="l00178"></a>00178 <span class="comment"></span>
189<a name="l00179"></a>00179 <span class="comment">This is how the strided data works:</span>
190<a name="l00180"></a>00180 <span class="comment"></span>
191<a name="l00181"></a>00181 <span class="comment">struct StridedVertex{</span>
192<a name="l00182"></a>00182 <span class="comment"> dVector3 Vertex;</span>
193<a name="l00183"></a>00183 <span class="comment"> // Userdata</span>
194<a name="l00184"></a>00184 <span class="comment">};</span>
195<a name="l00185"></a>00185 <span class="comment">int VertexStride = sizeof(StridedVertex);</span>
196<a name="l00186"></a>00186 <span class="comment"></span>
197<a name="l00187"></a>00187 <span class="comment">struct StridedTri{</span>
198<a name="l00188"></a>00188 <span class="comment"> int Indices[3];</span>
199<a name="l00189"></a>00189 <span class="comment"> // Userdata</span>
200<a name="l00190"></a>00190 <span class="comment">};</span>
201<a name="l00191"></a>00191 <span class="comment">int TriStride = sizeof(StridedTri);</span>
202<a name="l00192"></a>00192 <span class="comment"></span>
203<a name="l00193"></a>00193 <span class="comment">*/</span>
204<a name="l00194"></a>00194
205<a name="l00195"></a>00195
206<a name="l00196"></a>00196 ODE_API <span class="keywordtype">int</span> dGeomTriMeshGetTriangleCount (dGeomID g);
207<a name="l00197"></a>00197
208<a name="l00198"></a>00198 ODE_API <span class="keywordtype">void</span> dGeomTriMeshDataUpdate(dTriMeshDataID g);
209<a name="l00199"></a>00199
210<a name="l00200"></a>00200 <span class="preprocessor">#ifdef __cplusplus</span>
211<a name="l00201"></a>00201 <span class="preprocessor"></span>}
212<a name="l00202"></a>00202 <span class="preprocessor">#endif</span>
213<a name="l00203"></a>00203 <span class="preprocessor"></span>
214<a name="l00204"></a>00204 <span class="preprocessor">#endif </span><span class="comment">/* _ODE_COLLISION_TRIMESH_H_ */</span>
215<a name="l00205"></a>00205
216</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
217<a href="http://www.doxygen.org/index.html">
218<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
219</body>
220</html>
diff --git a/libraries/ode-0.9/docs/common_8h-source.html b/libraries/ode-0.9/docs/common_8h-source.html
new file mode 100644
index 0000000..8b29b64
--- /dev/null
+++ b/libraries/ode-0.9/docs/common_8h-source.html
@@ -0,0 +1,408 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: common.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>common.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_COMMON_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_COMMON_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include &lt;ode/config.h&gt;</span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/error.h&gt;</span>
42<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;math.h&gt;</span>
43<a name="l00028"></a>00028
44<a name="l00029"></a>00029 <span class="preprocessor">#ifdef __cplusplus</span>
45<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
46<a name="l00031"></a>00031 <span class="preprocessor">#endif</span>
47<a name="l00032"></a>00032 <span class="preprocessor"></span>
48<a name="l00033"></a>00033
49<a name="l00034"></a>00034 <span class="comment">/* configuration stuff */</span>
50<a name="l00035"></a>00035
51<a name="l00036"></a>00036 <span class="comment">/* the efficient alignment. most platforms align data structures to some</span>
52<a name="l00037"></a>00037 <span class="comment"> * number of bytes, but this is not always the most efficient alignment.</span>
53<a name="l00038"></a>00038 <span class="comment"> * for example, many x86 compilers align to 4 bytes, but on a pentium it</span>
54<a name="l00039"></a>00039 <span class="comment"> * is important to align doubles to 8 byte boundaries (for speed), and</span>
55<a name="l00040"></a>00040 <span class="comment"> * the 4 floats in a SIMD register to 16 byte boundaries. many other</span>
56<a name="l00041"></a>00041 <span class="comment"> * platforms have similar behavior. setting a larger alignment can waste</span>
57<a name="l00042"></a>00042 <span class="comment"> * a (very) small amount of memory. NOTE: this number must be a power of</span>
58<a name="l00043"></a>00043 <span class="comment"> * two. this is set to 16 by default.</span>
59<a name="l00044"></a>00044 <span class="comment"> */</span>
60<a name="l00045"></a>00045 <span class="preprocessor">#define EFFICIENT_ALIGNMENT 16</span>
61<a name="l00046"></a>00046 <span class="preprocessor"></span>
62<a name="l00047"></a>00047
63<a name="l00048"></a>00048 <span class="comment">/* constants */</span>
64<a name="l00049"></a>00049
65<a name="l00050"></a>00050 <span class="comment">/* pi and 1/sqrt(2) are defined here if necessary because they don't get</span>
66<a name="l00051"></a>00051 <span class="comment"> * defined in &lt;math.h&gt; on some platforms (like MS-Windows)</span>
67<a name="l00052"></a>00052 <span class="comment"> */</span>
68<a name="l00053"></a>00053
69<a name="l00054"></a>00054 <span class="preprocessor">#ifndef M_PI</span>
70<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#define M_PI REAL(3.1415926535897932384626433832795029)</span>
71<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
72<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#ifndef M_SQRT1_2</span>
73<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#define M_SQRT1_2 REAL(0.7071067811865475244008443621048490)</span>
74<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
75<a name="l00060"></a>00060 <span class="preprocessor"></span>
76<a name="l00061"></a>00061
77<a name="l00062"></a>00062 <span class="comment">/* debugging:</span>
78<a name="l00063"></a>00063 <span class="comment"> * IASSERT is an internal assertion, i.e. a consistency check. if it fails</span>
79<a name="l00064"></a>00064 <span class="comment"> * we want to know where.</span>
80<a name="l00065"></a>00065 <span class="comment"> * UASSERT is a user assertion, i.e. if it fails a nice error message</span>
81<a name="l00066"></a>00066 <span class="comment"> * should be printed for the user.</span>
82<a name="l00067"></a>00067 <span class="comment"> * AASSERT is an arguments assertion, i.e. if it fails "bad argument(s)"</span>
83<a name="l00068"></a>00068 <span class="comment"> * is printed.</span>
84<a name="l00069"></a>00069 <span class="comment"> * DEBUGMSG just prints out a message</span>
85<a name="l00070"></a>00070 <span class="comment"> */</span>
86<a name="l00071"></a>00071
87<a name="l00072"></a>00072 <span class="preprocessor">#ifndef dNODEBUG</span>
88<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#ifdef __GNUC__</span>
89<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="preprocessor">#define dIASSERT(a) if (!(a)) dDebug (d_ERR_IASSERT, \</span>
90<a name="l00075"></a>00075 <span class="preprocessor"> "assertion \"" #a "\" failed in %s() [%s]",__FUNCTION__,__FILE__);</span>
91<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="preprocessor">#define dUASSERT(a,msg) if (!(a)) dDebug (d_ERR_UASSERT, \</span>
92<a name="l00077"></a>00077 <span class="preprocessor"> msg " in %s()", __FUNCTION__);</span>
93<a name="l00078"></a>00078 <span class="preprocessor"></span><span class="preprocessor">#define dDEBUGMSG(msg) dMessage (d_ERR_UASSERT, \</span>
94<a name="l00079"></a>00079 <span class="preprocessor">msg " in %s() File %s Line %d", __FUNCTION__, __FILE__,__LINE__);</span>
95<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="preprocessor">#else</span>
96<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#define dIASSERT(a) if (!(a)) dDebug (d_ERR_IASSERT, \</span>
97<a name="l00082"></a>00082 <span class="preprocessor"> "assertion \"" #a "\" failed in %s:%d",__FILE__,__LINE__);</span>
98<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor">#define dUASSERT(a,msg) if (!(a)) dDebug (d_ERR_UASSERT, \</span>
99<a name="l00084"></a>00084 <span class="preprocessor"> msg " (%s:%d)", __FILE__,__LINE__);</span>
100<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#define dDEBUGMSG(msg) dMessage (d_ERR_UASSERT, \</span>
101<a name="l00086"></a>00086 <span class="preprocessor"> msg " (%s:%d)", __FILE__,__LINE__);</span>
102<a name="l00087"></a>00087 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
103<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#else</span>
104<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">#define dIASSERT(a) ;</span>
105<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#define dUASSERT(a,msg) ;</span>
106<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="preprocessor">#define dDEBUGMSG(msg) ;</span>
107<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
108<a name="l00093"></a>00093 <span class="preprocessor"></span><span class="preprocessor">#define dAASSERT(a) dUASSERT(a,"Bad argument(s)")</span>
109<a name="l00094"></a>00094 <span class="preprocessor"></span>
110<a name="l00095"></a>00095 <span class="comment">// Macro used to suppress unused variable warning</span>
111<a name="l00096"></a>00096 <span class="preprocessor">#define dVARIABLEUSED(a) ((void)a)</span>
112<a name="l00097"></a>00097 <span class="preprocessor"></span>
113<a name="l00098"></a>00098 <span class="comment">/* floating point data type, vector, matrix and quaternion types */</span>
114<a name="l00099"></a>00099
115<a name="l00100"></a>00100 <span class="preprocessor">#if defined(dSINGLE)</span>
116<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">float</span> dReal;
117<a name="l00102"></a>00102 <span class="preprocessor">#ifdef dDOUBLE</span>
118<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#error You can only #define dSINGLE or dDOUBLE, not both.</span>
119<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#endif // dDOUBLE</span>
120<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#elif defined(dDOUBLE)</span>
121<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">double</span> dReal;
122<a name="l00107"></a>00107 <span class="preprocessor">#else</span>
123<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="preprocessor">#error You must #define dSINGLE or dDOUBLE</span>
124<a name="l00109"></a>00109 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
125<a name="l00110"></a>00110 <span class="preprocessor"></span>
126<a name="l00111"></a>00111 <span class="comment">// Detect if we've got both trimesh engines enabled.</span>
127<a name="l00112"></a>00112 <span class="preprocessor">#if dTRIMESH_ENABLED</span>
128<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor">#if dTRIMESH_OPCODE &amp;&amp; dTRIMESH_GIMPACT</span>
129<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#error You can only #define dTRIMESH_OPCODE or dTRIMESH_GIMPACT, not both.</span>
130<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
131<a name="l00116"></a>00116 <span class="preprocessor"></span><span class="preprocessor">#endif // dTRIMESH_ENABLED</span>
132<a name="l00117"></a>00117 <span class="preprocessor"></span>
133<a name="l00118"></a>00118 <span class="comment">/* round an integer up to a multiple of 4, except that 0 and 1 are unmodified</span>
134<a name="l00119"></a>00119 <span class="comment"> * (used to compute matrix leading dimensions)</span>
135<a name="l00120"></a>00120 <span class="comment"> */</span>
136<a name="l00121"></a>00121 <span class="preprocessor">#define dPAD(a) (((a) &gt; 1) ? ((((a)-1)|3)+1) : (a))</span>
137<a name="l00122"></a>00122 <span class="preprocessor"></span>
138<a name="l00123"></a>00123 <span class="comment">/* these types are mainly just used in headers */</span>
139<a name="l00124"></a>00124 <span class="keyword">typedef</span> dReal dVector3[4];
140<a name="l00125"></a>00125 <span class="keyword">typedef</span> dReal dVector4[4];
141<a name="l00126"></a>00126 <span class="keyword">typedef</span> dReal dMatrix3[4*3];
142<a name="l00127"></a>00127 <span class="keyword">typedef</span> dReal dMatrix4[4*4];
143<a name="l00128"></a>00128 <span class="keyword">typedef</span> dReal dMatrix6[8*6];
144<a name="l00129"></a>00129 <span class="keyword">typedef</span> dReal dQuaternion[4];
145<a name="l00130"></a>00130
146<a name="l00131"></a>00131
147<a name="l00132"></a>00132 <span class="comment">/* precision dependent scalar math functions */</span>
148<a name="l00133"></a>00133
149<a name="l00134"></a>00134 <span class="preprocessor">#if defined(dSINGLE)</span>
150<a name="l00135"></a>00135 <span class="preprocessor"></span>
151<a name="l00136"></a>00136 <span class="preprocessor">#define REAL(x) (x ## f) </span><span class="comment">/* form a constant */</span>
152<a name="l00137"></a>00137 <span class="preprocessor">#define dRecip(x) ((1.0f/(x))) </span><span class="comment">/* reciprocal */</span>
153<a name="l00138"></a>00138 <span class="preprocessor">#define dSqrt(x) (sqrtf(x)) </span><span class="comment">/* square root */</span>
154<a name="l00139"></a>00139 <span class="preprocessor">#define dRecipSqrt(x) ((1.0f/sqrtf(x))) </span><span class="comment">/* reciprocal square root */</span>
155<a name="l00140"></a>00140 <span class="preprocessor">#define dSin(x) (sinf(x)) </span><span class="comment">/* sine */</span>
156<a name="l00141"></a>00141 <span class="preprocessor">#define dCos(x) (cosf(x)) </span><span class="comment">/* cosine */</span>
157<a name="l00142"></a>00142 <span class="preprocessor">#define dFabs(x) (fabsf(x)) </span><span class="comment">/* absolute value */</span>
158<a name="l00143"></a>00143 <span class="preprocessor">#define dAtan2(y,x) (atan2f(y,x)) </span><span class="comment">/* arc tangent with 2 args */</span>
159<a name="l00144"></a>00144 <span class="preprocessor">#define dFMod(a,b) (fmodf(a,b)) </span><span class="comment">/* modulo */</span>
160<a name="l00145"></a>00145 <span class="preprocessor">#define dFloor(x) floorf(x) </span><span class="comment">/* floor */</span>
161<a name="l00146"></a>00146
162<a name="l00147"></a>00147 <span class="preprocessor">#ifdef HAVE___ISNANF</span>
163<a name="l00148"></a>00148 <span class="preprocessor"></span><span class="preprocessor">#define dIsNan(x) (__isnanf(x))</span>
164<a name="l00149"></a>00149 <span class="preprocessor"></span><span class="preprocessor">#elif defined(HAVE__ISNANF)</span>
165<a name="l00150"></a>00150 <span class="preprocessor"></span><span class="preprocessor">#define dIsNan(x) (_isnanf(x))</span>
166<a name="l00151"></a>00151 <span class="preprocessor"></span><span class="preprocessor">#elif defined(HAVE_ISNANF)</span>
167<a name="l00152"></a>00152 <span class="preprocessor"></span><span class="preprocessor">#define dIsNan(x) (isnanf(x))</span>
168<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="preprocessor">#else</span>
169<a name="l00154"></a>00154 <span class="preprocessor"></span> <span class="comment">/*</span>
170<a name="l00155"></a>00155 <span class="comment"> fall back to _isnan which is the VC way,</span>
171<a name="l00156"></a>00156 <span class="comment"> this may seem redundant since we already checked</span>
172<a name="l00157"></a>00157 <span class="comment"> for _isnan before, but if isnan is detected by</span>
173<a name="l00158"></a>00158 <span class="comment"> configure but is not found during compilation</span>
174<a name="l00159"></a>00159 <span class="comment"> we should always make sure we check for __isnanf,</span>
175<a name="l00160"></a>00160 <span class="comment"> _isnanf and isnanf in that order before falling</span>
176<a name="l00161"></a>00161 <span class="comment"> back to a default</span>
177<a name="l00162"></a>00162 <span class="comment"> */</span>
178<a name="l00163"></a>00163 <span class="preprocessor">#define dIsNan(x) (_isnan(x))</span>
179<a name="l00164"></a>00164 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
180<a name="l00165"></a>00165 <span class="preprocessor"></span>
181<a name="l00166"></a>00166 <span class="preprocessor">#define dCopySign(a,b) ((dReal)copysignf(a,b))</span>
182<a name="l00167"></a>00167 <span class="preprocessor"></span>
183<a name="l00168"></a>00168 <span class="preprocessor">#elif defined(dDOUBLE)</span>
184<a name="l00169"></a>00169 <span class="preprocessor"></span>
185<a name="l00170"></a>00170 <span class="preprocessor">#define REAL(x) (x)</span>
186<a name="l00171"></a>00171 <span class="preprocessor"></span><span class="preprocessor">#define dRecip(x) (1.0/(x))</span>
187<a name="l00172"></a>00172 <span class="preprocessor"></span><span class="preprocessor">#define dSqrt(x) sqrt(x)</span>
188<a name="l00173"></a>00173 <span class="preprocessor"></span><span class="preprocessor">#define dRecipSqrt(x) (1.0/sqrt(x))</span>
189<a name="l00174"></a>00174 <span class="preprocessor"></span><span class="preprocessor">#define dSin(x) sin(x)</span>
190<a name="l00175"></a>00175 <span class="preprocessor"></span><span class="preprocessor">#define dCos(x) cos(x)</span>
191<a name="l00176"></a>00176 <span class="preprocessor"></span><span class="preprocessor">#define dFabs(x) fabs(x)</span>
192<a name="l00177"></a>00177 <span class="preprocessor"></span><span class="preprocessor">#define dAtan2(y,x) atan2((y),(x))</span>
193<a name="l00178"></a>00178 <span class="preprocessor"></span><span class="preprocessor">#define dFMod(a,b) (fmod((a),(b)))</span>
194<a name="l00179"></a>00179 <span class="preprocessor"></span><span class="preprocessor">#define dFloor(x) floor(x)</span>
195<a name="l00180"></a>00180 <span class="preprocessor"></span>
196<a name="l00181"></a>00181 <span class="preprocessor">#ifdef HAVE___ISNAN</span>
197<a name="l00182"></a>00182 <span class="preprocessor"></span><span class="preprocessor">#define dIsNan(x) (__isnan(x))</span>
198<a name="l00183"></a>00183 <span class="preprocessor"></span><span class="preprocessor">#elif defined(HAVE__ISNAN)</span>
199<a name="l00184"></a>00184 <span class="preprocessor"></span><span class="preprocessor">#define dIsNan(x) (_isnan(x))</span>
200<a name="l00185"></a>00185 <span class="preprocessor"></span><span class="preprocessor">#elif defined(HAVE_ISNAN)</span>
201<a name="l00186"></a>00186 <span class="preprocessor"></span><span class="preprocessor">#define dIsNan(x) (isnan(x))</span>
202<a name="l00187"></a>00187 <span class="preprocessor"></span><span class="preprocessor">#else</span>
203<a name="l00188"></a>00188 <span class="preprocessor"></span><span class="preprocessor">#define dIsNan(x) (_isnan(x))</span>
204<a name="l00189"></a>00189 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
205<a name="l00190"></a>00190 <span class="preprocessor"></span>
206<a name="l00191"></a>00191 <span class="preprocessor">#define dCopySign(a,b) (copysign((a),(b)))</span>
207<a name="l00192"></a>00192 <span class="preprocessor"></span>
208<a name="l00193"></a>00193 <span class="preprocessor">#else</span>
209<a name="l00194"></a>00194 <span class="preprocessor"></span><span class="preprocessor">#error You must #define dSINGLE or dDOUBLE</span>
210<a name="l00195"></a>00195 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
211<a name="l00196"></a>00196 <span class="preprocessor"></span>
212<a name="l00197"></a>00197
213<a name="l00198"></a>00198 <span class="comment">/* utility */</span>
214<a name="l00199"></a>00199
215<a name="l00200"></a>00200
216<a name="l00201"></a>00201 <span class="comment">/* round something up to be a multiple of the EFFICIENT_ALIGNMENT */</span>
217<a name="l00202"></a>00202
218<a name="l00203"></a>00203 <span class="preprocessor">#define dEFFICIENT_SIZE(x) ((((x)-1)|(EFFICIENT_ALIGNMENT-1))+1)</span>
219<a name="l00204"></a>00204 <span class="preprocessor"></span>
220<a name="l00205"></a>00205
221<a name="l00206"></a>00206 <span class="comment">/* alloca aligned to the EFFICIENT_ALIGNMENT. note that this can waste</span>
222<a name="l00207"></a>00207 <span class="comment"> * up to 15 bytes per allocation, depending on what alloca() returns.</span>
223<a name="l00208"></a>00208 <span class="comment"> */</span>
224<a name="l00209"></a>00209
225<a name="l00210"></a>00210 <span class="preprocessor">#define dALLOCA16(n) \</span>
226<a name="l00211"></a>00211 <span class="preprocessor"> ((char*)dEFFICIENT_SIZE(((size_t)(alloca((n)+(EFFICIENT_ALIGNMENT-1))))))</span>
227<a name="l00212"></a>00212 <span class="preprocessor"></span>
228<a name="l00213"></a>00213
229<a name="l00214"></a>00214 <span class="comment">// Use the error-checking memory allocation system. Because this system uses heap</span>
230<a name="l00215"></a>00215 <span class="comment">// (malloc) instead of stack (alloca), it is slower. However, it allows you to</span>
231<a name="l00216"></a>00216 <span class="comment">// simulate larger scenes, as well as handle out-of-memory errors in a somewhat</span>
232<a name="l00217"></a>00217 <span class="comment">// graceful manner</span>
233<a name="l00218"></a>00218
234<a name="l00219"></a>00219 <span class="comment">// #define dUSE_MALLOC_FOR_ALLOCA</span>
235<a name="l00220"></a>00220
236<a name="l00221"></a>00221 <span class="preprocessor">#ifdef dUSE_MALLOC_FOR_ALLOCA</span>
237<a name="l00222"></a>00222 <span class="preprocessor"></span><span class="keyword">enum</span> {
238<a name="l00223"></a>00223 d_MEMORY_OK = 0, <span class="comment">/* no memory errors */</span>
239<a name="l00224"></a>00224 d_MEMORY_OUT_OF_MEMORY <span class="comment">/* malloc failed due to out of memory error */</span>
240<a name="l00225"></a>00225 };
241<a name="l00226"></a>00226
242<a name="l00227"></a>00227 <span class="preprocessor">#endif</span>
243<a name="l00228"></a>00228 <span class="preprocessor"></span>
244<a name="l00229"></a>00229
245<a name="l00230"></a>00230
246<a name="l00231"></a>00231 <span class="comment">/* internal object types (all prefixed with `dx') */</span>
247<a name="l00232"></a>00232
248<a name="l00233"></a>00233 <span class="keyword">struct </span>dxWorld; <span class="comment">/* dynamics world */</span>
249<a name="l00234"></a>00234 <span class="keyword">struct </span>dxSpace; <span class="comment">/* collision space */</span>
250<a name="l00235"></a>00235 <span class="keyword">struct </span>dxBody; <span class="comment">/* rigid body (dynamics object) */</span>
251<a name="l00236"></a>00236 <span class="keyword">struct </span>dxGeom; <span class="comment">/* geometry (collision object) */</span>
252<a name="l00237"></a>00237 <span class="keyword">struct </span>dxJoint;
253<a name="l00238"></a>00238 <span class="keyword">struct </span>dxJointNode;
254<a name="l00239"></a>00239 <span class="keyword">struct </span>dxJointGroup;
255<a name="l00240"></a>00240
256<a name="l00241"></a>00241 <span class="keyword">typedef</span> <span class="keyword">struct </span>dxWorld *dWorldID;
257<a name="l00242"></a>00242 <span class="keyword">typedef</span> <span class="keyword">struct </span>dxSpace *dSpaceID;
258<a name="l00243"></a>00243 <span class="keyword">typedef</span> <span class="keyword">struct </span>dxBody *dBodyID;
259<a name="l00244"></a>00244 <span class="keyword">typedef</span> <span class="keyword">struct </span>dxGeom *dGeomID;
260<a name="l00245"></a>00245 <span class="keyword">typedef</span> <span class="keyword">struct </span>dxJoint *dJointID;
261<a name="l00246"></a>00246 <span class="keyword">typedef</span> <span class="keyword">struct </span>dxJointGroup *dJointGroupID;
262<a name="l00247"></a>00247
263<a name="l00248"></a>00248
264<a name="l00249"></a>00249 <span class="comment">/* error numbers */</span>
265<a name="l00250"></a>00250
266<a name="l00251"></a>00251 <span class="keyword">enum</span> {
267<a name="l00252"></a>00252 d_ERR_UNKNOWN = 0, <span class="comment">/* unknown error */</span>
268<a name="l00253"></a>00253 d_ERR_IASSERT, <span class="comment">/* internal assertion failed */</span>
269<a name="l00254"></a>00254 d_ERR_UASSERT, <span class="comment">/* user assertion failed */</span>
270<a name="l00255"></a>00255 d_ERR_LCP <span class="comment">/* user assertion failed */</span>
271<a name="l00256"></a>00256 };
272<a name="l00257"></a>00257
273<a name="l00258"></a>00258
274<a name="l00259"></a>00259 <span class="comment">/* joint type numbers */</span>
275<a name="l00260"></a>00260
276<a name="l00261"></a>00261 <span class="keyword">enum</span> {
277<a name="l00262"></a>00262 dJointTypeNone = 0, <span class="comment">/* or "unknown" */</span>
278<a name="l00263"></a>00263 dJointTypeBall,
279<a name="l00264"></a>00264 dJointTypeHinge,
280<a name="l00265"></a>00265 dJointTypeSlider,
281<a name="l00266"></a>00266 dJointTypeContact,
282<a name="l00267"></a>00267 dJointTypeUniversal,
283<a name="l00268"></a>00268 dJointTypeHinge2,
284<a name="l00269"></a>00269 dJointTypeFixed,
285<a name="l00270"></a>00270 dJointTypeNull,
286<a name="l00271"></a>00271 dJointTypeAMotor,
287<a name="l00272"></a>00272 dJointTypeLMotor,
288<a name="l00273"></a>00273 dJointTypePlane2D,
289<a name="l00274"></a>00274 dJointTypePR
290<a name="l00275"></a>00275 };
291<a name="l00276"></a>00276
292<a name="l00277"></a>00277
293<a name="l00278"></a>00278 <span class="comment">/* an alternative way of setting joint parameters, using joint parameter</span>
294<a name="l00279"></a>00279 <span class="comment"> * structures and member constants. we don't actually do this yet.</span>
295<a name="l00280"></a>00280 <span class="comment"> */</span>
296<a name="l00281"></a>00281
297<a name="l00282"></a>00282 <span class="comment">/*</span>
298<a name="l00283"></a>00283 <span class="comment">typedef struct dLimot {</span>
299<a name="l00284"></a>00284 <span class="comment"> int mode;</span>
300<a name="l00285"></a>00285 <span class="comment"> dReal lostop, histop;</span>
301<a name="l00286"></a>00286 <span class="comment"> dReal vel, fmax;</span>
302<a name="l00287"></a>00287 <span class="comment"> dReal fudge_factor;</span>
303<a name="l00288"></a>00288 <span class="comment"> dReal bounce, soft;</span>
304<a name="l00289"></a>00289 <span class="comment"> dReal suspension_erp, suspension_cfm;</span>
305<a name="l00290"></a>00290 <span class="comment">} dLimot;</span>
306<a name="l00291"></a>00291 <span class="comment"></span>
307<a name="l00292"></a>00292 <span class="comment">enum {</span>
308<a name="l00293"></a>00293 <span class="comment"> dLimotLoStop = 0x0001,</span>
309<a name="l00294"></a>00294 <span class="comment"> dLimotHiStop = 0x0002,</span>
310<a name="l00295"></a>00295 <span class="comment"> dLimotVel = 0x0004,</span>
311<a name="l00296"></a>00296 <span class="comment"> dLimotFMax = 0x0008,</span>
312<a name="l00297"></a>00297 <span class="comment"> dLimotFudgeFactor = 0x0010,</span>
313<a name="l00298"></a>00298 <span class="comment"> dLimotBounce = 0x0020,</span>
314<a name="l00299"></a>00299 <span class="comment"> dLimotSoft = 0x0040</span>
315<a name="l00300"></a>00300 <span class="comment">};</span>
316<a name="l00301"></a>00301 <span class="comment">*/</span>
317<a name="l00302"></a>00302
318<a name="l00303"></a>00303
319<a name="l00304"></a>00304 <span class="comment">/* standard joint parameter names. why are these here? - because we don't want</span>
320<a name="l00305"></a>00305 <span class="comment"> * to include all the joint function definitions in joint.cpp. hmmmm.</span>
321<a name="l00306"></a>00306 <span class="comment"> * MSVC complains if we call D_ALL_PARAM_NAMES_X with a blank second argument,</span>
322<a name="l00307"></a>00307 <span class="comment"> * which is why we have the D_ALL_PARAM_NAMES macro as well. please copy and</span>
323<a name="l00308"></a>00308 <span class="comment"> * paste between these two.</span>
324<a name="l00309"></a>00309 <span class="comment"> */</span>
325<a name="l00310"></a>00310
326<a name="l00311"></a>00311 <span class="preprocessor">#define D_ALL_PARAM_NAMES(start) \</span>
327<a name="l00312"></a>00312 <span class="preprocessor"> </span><span class="comment">/* parameters for limits and motors */</span> \
328<a name="l00313"></a>00313 dParamLoStop = start, \
329<a name="l00314"></a>00314 dParamHiStop, \
330<a name="l00315"></a>00315 dParamVel, \
331<a name="l00316"></a>00316 dParamFMax, \
332<a name="l00317"></a>00317 dParamFudgeFactor, \
333<a name="l00318"></a>00318 dParamBounce, \
334<a name="l00319"></a>00319 dParamCFM, \
335<a name="l00320"></a>00320 dParamStopERP, \
336<a name="l00321"></a>00321 dParamStopCFM, \
337<a name="l00322"></a>00322 <span class="comment">/* parameters for suspension */</span> \
338<a name="l00323"></a>00323 dParamSuspensionERP, \
339<a name="l00324"></a>00324 dParamSuspensionCFM, \
340<a name="l00325"></a>00325 dParamERP, \
341<a name="l00326"></a>00326
342<a name="l00327"></a>00327 <span class="preprocessor">#define D_ALL_PARAM_NAMES_X(start,x) \</span>
343<a name="l00328"></a>00328 <span class="preprocessor"> </span><span class="comment">/* parameters for limits and motors */</span> \
344<a name="l00329"></a>00329 dParamLoStop ## x = start, \
345<a name="l00330"></a>00330 dParamHiStop ## x, \
346<a name="l00331"></a>00331 dParamVel ## x, \
347<a name="l00332"></a>00332 dParamFMax ## x, \
348<a name="l00333"></a>00333 dParamFudgeFactor ## x, \
349<a name="l00334"></a>00334 dParamBounce ## x, \
350<a name="l00335"></a>00335 dParamCFM ## x, \
351<a name="l00336"></a>00336 dParamStopERP ## x, \
352<a name="l00337"></a>00337 dParamStopCFM ## x, \
353<a name="l00338"></a>00338 <span class="comment">/* parameters for suspension */</span> \
354<a name="l00339"></a>00339 dParamSuspensionERP ## x, \
355<a name="l00340"></a>00340 dParamSuspensionCFM ## x, \
356<a name="l00341"></a>00341 dParamERP ## x,
357<a name="l00342"></a>00342
358<a name="l00343"></a>00343 <span class="keyword">enum</span> {
359<a name="l00344"></a>00344 D_ALL_PARAM_NAMES(0)
360<a name="l00345"></a>00345 D_ALL_PARAM_NAMES_X(0x100,2)
361<a name="l00346"></a>00346 D_ALL_PARAM_NAMES_X(0x200,3)
362<a name="l00347"></a>00347
363<a name="l00348"></a>00348 <span class="comment">/* add a multiple of this constant to the basic parameter numbers to get</span>
364<a name="l00349"></a>00349 <span class="comment"> * the parameters for the second, third etc axes.</span>
365<a name="l00350"></a>00350 <span class="comment"> */</span>
366<a name="l00351"></a>00351 dParamGroup=0x100
367<a name="l00352"></a>00352 };
368<a name="l00353"></a>00353
369<a name="l00354"></a>00354
370<a name="l00355"></a>00355 <span class="comment">/* angular motor mode numbers */</span>
371<a name="l00356"></a>00356
372<a name="l00357"></a>00357 enum{
373<a name="l00358"></a>00358 dAMotorUser = 0,
374<a name="l00359"></a>00359 dAMotorEuler = 1
375<a name="l00360"></a>00360 };
376<a name="l00361"></a>00361
377<a name="l00362"></a>00362
378<a name="l00363"></a>00363 <span class="comment">/* joint force feedback information */</span>
379<a name="l00364"></a>00364
380<a name="l00365"></a>00365 <span class="keyword">typedef</span> <span class="keyword">struct </span>dJointFeedback {
381<a name="l00366"></a>00366 dVector3 f1; <span class="comment">/* force applied to body 1 */</span>
382<a name="l00367"></a>00367 dVector3 t1; <span class="comment">/* torque applied to body 1 */</span>
383<a name="l00368"></a>00368 dVector3 f2; <span class="comment">/* force applied to body 2 */</span>
384<a name="l00369"></a>00369 dVector3 t2; <span class="comment">/* torque applied to body 2 */</span>
385<a name="l00370"></a>00370 } dJointFeedback;
386<a name="l00371"></a>00371
387<a name="l00372"></a>00372
388<a name="l00373"></a>00373 <span class="comment">/* private functions that must be implemented by the collision library:</span>
389<a name="l00374"></a>00374 <span class="comment"> * (1) indicate that a geom has moved, (2) get the next geom in a body list.</span>
390<a name="l00375"></a>00375 <span class="comment"> * these functions are called whenever the position of geoms connected to a</span>
391<a name="l00376"></a>00376 <span class="comment"> * body have changed, e.g. with dBodySetPosition(), dBodySetRotation(), or</span>
392<a name="l00377"></a>00377 <span class="comment"> * when the ODE step function updates the body state.</span>
393<a name="l00378"></a>00378 <span class="comment"> */</span>
394<a name="l00379"></a>00379
395<a name="l00380"></a>00380 <span class="keywordtype">void</span> dGeomMoved (dGeomID);
396<a name="l00381"></a>00381 dGeomID dGeomGetBodyNext (dGeomID);
397<a name="l00382"></a>00382
398<a name="l00383"></a>00383
399<a name="l00384"></a>00384 <span class="preprocessor">#ifdef __cplusplus</span>
400<a name="l00385"></a>00385 <span class="preprocessor"></span>}
401<a name="l00386"></a>00386 <span class="preprocessor">#endif</span>
402<a name="l00387"></a>00387 <span class="preprocessor"></span>
403<a name="l00388"></a>00388 <span class="preprocessor">#endif</span>
404</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
405<a href="http://www.doxygen.org/index.html">
406<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
407</body>
408</html>
diff --git a/libraries/ode-0.9/docs/compatibility_8h-source.html b/libraries/ode-0.9/docs/compatibility_8h-source.html
new file mode 100644
index 0000000..859554b
--- /dev/null
+++ b/libraries/ode-0.9/docs/compatibility_8h-source.html
@@ -0,0 +1,60 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: compatibility.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>compatibility.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_COMPATIBILITY_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_COMPATIBILITY_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="comment">/*</span>
42<a name="l00027"></a>00027 <span class="comment"> * ODE's backward compatibility system ensures that as ODE's API</span>
43<a name="l00028"></a>00028 <span class="comment"> * evolves, user code will not break.</span>
44<a name="l00029"></a>00029 <span class="comment"> */</span>
45<a name="l00030"></a>00030
46<a name="l00031"></a>00031 <span class="comment">/*</span>
47<a name="l00032"></a>00032 <span class="comment"> * These new rotation function names are more consistent with the</span>
48<a name="l00033"></a>00033 <span class="comment"> * rest of the API.</span>
49<a name="l00034"></a>00034 <span class="comment"> */</span>
50<a name="l00035"></a>00035 <span class="preprocessor">#define dQtoR(q,R) dRfromQ((R),(q))</span>
51<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor">#define dRtoQ(R,q) dQfromR((q),(R))</span>
52<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#define dWtoDQ(w,q,dq) dDQfromW((dq),(w),(q))</span>
53<a name="l00038"></a>00038 <span class="preprocessor"></span>
54<a name="l00039"></a>00039
55<a name="l00040"></a>00040 <span class="preprocessor">#endif</span>
56</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
57<a href="http://www.doxygen.org/index.html">
58<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
59</body>
60</html>
diff --git a/libraries/ode-0.9/docs/config_8h-source.html b/libraries/ode-0.9/docs/config_8h-source.html
new file mode 100644
index 0000000..2844063
--- /dev/null
+++ b/libraries/ode-0.9/docs/config_8h-source.html
@@ -0,0 +1,196 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: config.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>config.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* This file was autogenerated by Premake */</span>
17<a name="l00002"></a>00002 <span class="preprocessor">#ifndef _ODE_CONFIG_H_</span>
18<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_CONFIG_H_</span>
19<a name="l00004"></a>00004 <span class="preprocessor"></span>
20<a name="l00005"></a>00005
21<a name="l00006"></a>00006 <span class="comment">/******************************************************************</span>
22<a name="l00007"></a>00007 <span class="comment"> * CONFIGURATON SETTINGS - you can change these, and then rebuild</span>
23<a name="l00008"></a>00008 <span class="comment"> * ODE to modify the behavior of the library.</span>
24<a name="l00009"></a>00009 <span class="comment"> *</span>
25<a name="l00010"></a>00010 <span class="comment"> * dSINGLE/dDOUBLE - force ODE to use single-precision (float)</span>
26<a name="l00011"></a>00011 <span class="comment"> * or double-precision (double) for numbers.</span>
27<a name="l00012"></a>00012 <span class="comment"> * Only one should be defined.</span>
28<a name="l00013"></a>00013 <span class="comment"> *</span>
29<a name="l00014"></a>00014 <span class="comment"> * dTRIMESH_ENABLED - enable/disable trimesh support</span>
30<a name="l00015"></a>00015 <span class="comment"> * dTRIMESH_OPCODE - use the OPCODE trimesh engine</span>
31<a name="l00016"></a>00016 <span class="comment"> * dTRIMESH_GIMPACT - use the GIMPACT trimesh engine</span>
32<a name="l00017"></a>00017 <span class="comment"> * Only one trimesh engine should be enabled.</span>
33<a name="l00018"></a>00018 <span class="comment"> *</span>
34<a name="l00019"></a>00019 <span class="comment"> * dUSE_MALLOC_FOR_ALLOCA (experimental)-</span>
35<a name="l00020"></a>00020 <span class="comment"> * Use malloc() instead of alloca(). Slower,</span>
36<a name="l00021"></a>00021 <span class="comment"> * but allows for larger systems and more</span>
37<a name="l00022"></a>00022 <span class="comment"> * graceful out-of-memory handling.</span>
38<a name="l00023"></a>00023 <span class="comment"> *</span>
39<a name="l00024"></a>00024 <span class="comment"> * dTRIMESH_OPCODE_USE_NEW_TRIMESH_TRIMESH_COLLIDER (experimental)-</span>
40<a name="l00025"></a>00025 <span class="comment"> * Use an alternative trimesh-trimesh collider</span>
41<a name="l00026"></a>00026 <span class="comment"> * which should yield better results.</span>
42<a name="l00027"></a>00027 <span class="comment"> *</span>
43<a name="l00028"></a>00028 <span class="comment"> ******************************************************************/</span>
44<a name="l00029"></a>00029
45<a name="l00030"></a>00030 <span class="preprocessor">#define dSINGLE</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="comment">/* #define dDOUBLE */</span>
47<a name="l00032"></a>00032
48<a name="l00033"></a>00033 <span class="preprocessor">#define dTRIMESH_ENABLED 1</span>
49<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#define dTRIMESH_OPCODE 1</span>
50<a name="l00035"></a>00035 <span class="preprocessor"></span>
51<a name="l00036"></a>00036 <span class="preprocessor">#define dTRIMESH_OPCODE_USE_NEW_TRIMESH_TRIMESH_COLLIDER 0</span>
52<a name="l00037"></a>00037 <span class="preprocessor"></span>
53<a name="l00038"></a>00038 <span class="comment">/* #define dUSE_MALLOC_FOR_ALLOCA */</span>
54<a name="l00039"></a>00039
55<a name="l00040"></a>00040
56<a name="l00041"></a>00041 <span class="comment">/******************************************************************</span>
57<a name="l00042"></a>00042 <span class="comment"> * SYSTEM SETTINGS - you shouldn't need to change these. If you</span>
58<a name="l00043"></a>00043 <span class="comment"> * run into an issue with these settings, please report it to</span>
59<a name="l00044"></a>00044 <span class="comment"> * the ODE bug tracker at:</span>
60<a name="l00045"></a>00045 <span class="comment"> * http://sf.net/tracker/?group_id=24884&amp;atid=382799</span>
61<a name="l00046"></a>00046 <span class="comment"> ******************************************************************/</span>
62<a name="l00047"></a>00047
63<a name="l00048"></a>00048 <span class="comment">/* Try to identify the platform */</span>
64<a name="l00049"></a>00049 <span class="preprocessor">#if defined(_XENON)</span>
65<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_PLATFORM_XBOX360</span>
66<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#elif defined(SN_TARGET_PSP_HW)</span>
67<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_PLATFORM_PSP</span>
68<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#elif defined(SN_TARGET_PS3)</span>
69<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_PLATFORM_PS3</span>
70<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#elif defined(_MSC_VER) || defined(__CYGWIN32__) || defined(__MINGW32__)</span>
71<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_PLATFORM_WINDOWS</span>
72<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__linux__)</span>
73<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_PLATFORM_LINUX</span>
74<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__APPLE__) &amp;&amp; defined(__MACH__)</span>
75<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_PLATFORM_OSX</span>
76<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor">#else</span>
77<a name="l00062"></a>00062 <span class="preprocessor"></span><span class="preprocessor"> #error "Need some help identifying the platform!"</span>
78<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
79<a name="l00064"></a>00064 <span class="preprocessor"></span>
80<a name="l00065"></a>00065 <span class="comment">/* Additional platform defines used in the code */</span>
81<a name="l00066"></a>00066 <span class="preprocessor">#if defined(ODE_PLATFORM_WINDOWS) &amp;&amp; !defined(WIN32)</span>
82<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="preprocessor"> #define WIN32</span>
83<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
84<a name="l00069"></a>00069 <span class="preprocessor"></span>
85<a name="l00070"></a>00070 <span class="preprocessor">#if defined(__CYGWIN32__) || defined(__MINGW32__)</span>
86<a name="l00071"></a>00071 <span class="preprocessor"></span><span class="preprocessor"> #define CYGWIN</span>
87<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
88<a name="l00073"></a>00073 <span class="preprocessor"></span>
89<a name="l00074"></a>00074 <span class="preprocessor">#if defined(ODE_PLATFORM_OSX)</span>
90<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor"> #define macintosh</span>
91<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
92<a name="l00077"></a>00077 <span class="preprocessor"></span>
93<a name="l00078"></a>00078
94<a name="l00079"></a>00079 <span class="comment">/* Define a DLL export symbol for those platforms that need it */</span>
95<a name="l00080"></a>00080 <span class="preprocessor">#if defined(ODE_PLATFORM_WINDOWS)</span>
96<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor"> #if defined(ODE_DLL)</span>
97<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_API __declspec(dllexport)</span>
98<a name="l00083"></a>00083 <span class="preprocessor"></span><span class="preprocessor"> #elif !defined(ODE_LIB)</span>
99<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_DLL_API __declspec(dllimport)</span>
100<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
101<a name="l00086"></a>00086 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
102<a name="l00087"></a>00087 <span class="preprocessor"></span>
103<a name="l00088"></a>00088 <span class="preprocessor">#if !defined(ODE_API)</span>
104<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_API</span>
105<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
106<a name="l00091"></a>00091 <span class="preprocessor"></span>
107<a name="l00092"></a>00092
108<a name="l00093"></a>00093 <span class="comment">/* Pull in the standard headers */</span>
109<a name="l00094"></a>00094 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
110<a name="l00095"></a>00095 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
111<a name="l00096"></a>00096 <span class="preprocessor">#include &lt;stdarg.h&gt;</span>
112<a name="l00097"></a>00097 <span class="preprocessor">#include &lt;math.h&gt;</span>
113<a name="l00098"></a>00098 <span class="preprocessor">#include &lt;string.h&gt;</span>
114<a name="l00099"></a>00099 <span class="preprocessor">#include &lt;float.h&gt;</span>
115<a name="l00100"></a>00100
116<a name="l00101"></a>00101 <span class="preprocessor">#if !defined(ODE_PLATFORM_PS3)</span>
117<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;malloc.h&gt;</span>
118<a name="l00103"></a>00103 <span class="preprocessor">#endif</span>
119<a name="l00104"></a>00104 <span class="preprocessor"></span>
120<a name="l00105"></a>00105 <span class="preprocessor">#if !defined(ODE_PLATFORM_WINDOWS)</span>
121<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;alloca.h&gt;</span>
122<a name="l00107"></a>00107 <span class="preprocessor">#endif</span>
123<a name="l00108"></a>00108 <span class="preprocessor"></span>
124<a name="l00109"></a>00109
125<a name="l00110"></a>00110 <span class="comment">/* Visual C does not define these functions */</span>
126<a name="l00111"></a>00111 <span class="preprocessor">#if defined(_MSC_VER)</span>
127<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor"> #define copysignf _copysign</span>
128<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor"> #define copysign _copysign</span>
129<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
130<a name="l00115"></a>00115 <span class="preprocessor"></span>
131<a name="l00116"></a>00116
132<a name="l00117"></a>00117 <span class="comment">/* Define a value for infinity */</span>
133<a name="l00118"></a>00118 <span class="preprocessor">#if defined(HUGE_VALF)</span>
134<a name="l00119"></a>00119 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_INFINITY4 HUGE_VALF</span>
135<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_INFINITY8 HUGE_VAL</span>
136<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor">#elif defined(FLT_MAX)</span>
137<a name="l00122"></a>00122 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_INFINITY4 FLT_MAX</span>
138<a name="l00123"></a>00123 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_INFINITY8 DBL_MAX</span>
139<a name="l00124"></a>00124 <span class="preprocessor"></span><span class="preprocessor">#else</span>
140<a name="l00125"></a>00125 <span class="preprocessor"></span> <span class="keyword">static</span> <span class="keyword">union </span>{ <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> __c[4]; <span class="keywordtype">float</span> __f; } __ode_huge_valf = {{0,0,0x80,0x7f}};
141<a name="l00126"></a>00126 <span class="keyword">static</span> <span class="keyword">union </span>{ <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> __c[8]; <span class="keywordtype">double</span> __d; } __ode_huge_val = {{0,0,0,0,0,0,0xf0,0x7f}};
142<a name="l00127"></a>00127 <span class="preprocessor"> #define ODE_INFINITY4 (__ode_huge_valf.__f)</span>
143<a name="l00128"></a>00128 <span class="preprocessor"></span><span class="preprocessor"> #define ODE_INFINITY8 (__ode_huge_val.__d)</span>
144<a name="l00129"></a>00129 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
145<a name="l00130"></a>00130 <span class="preprocessor"></span>
146<a name="l00131"></a>00131 <span class="preprocessor">#ifdef dSINGLE</span>
147<a name="l00132"></a>00132 <span class="preprocessor"></span><span class="preprocessor"> #define dInfinity ODE_INFINITY4</span>
148<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="preprocessor"> #define dEpsilon FLT_EPSILON</span>
149<a name="l00134"></a>00134 <span class="preprocessor"></span><span class="preprocessor">#else</span>
150<a name="l00135"></a>00135 <span class="preprocessor"></span><span class="preprocessor"> #define dInfinity ODE_INFINITY8</span>
151<a name="l00136"></a>00136 <span class="preprocessor"></span><span class="preprocessor"> #define dEpsilon DBL_EPSILON</span>
152<a name="l00137"></a>00137 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
153<a name="l00138"></a>00138 <span class="preprocessor"></span>
154<a name="l00139"></a>00139
155<a name="l00140"></a>00140 <span class="comment">/* Well-defined common data types...need to define for 64 bit systems */</span>
156<a name="l00141"></a>00141 <span class="preprocessor">#if defined(_M_IA64) || defined(__ia64__) || defined(_M_AMD64) || defined(__x86_64__)</span>
157<a name="l00142"></a>00142 <span class="preprocessor"></span><span class="preprocessor"> #define X86_64_SYSTEM 1</span>
158<a name="l00143"></a>00143 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">int</span> int32;
159<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uint32;
160<a name="l00145"></a>00145 <span class="keyword">typedef</span> <span class="keywordtype">short</span> int16;
161<a name="l00146"></a>00146 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> uint16;
162<a name="l00147"></a>00147 <span class="keyword">typedef</span> <span class="keywordtype">char</span> int8;
163<a name="l00148"></a>00148 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> uint8;
164<a name="l00149"></a>00149 <span class="preprocessor">#else</span>
165<a name="l00150"></a>00150 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">int</span> int32;
166<a name="l00151"></a>00151 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uint32;
167<a name="l00152"></a>00152 <span class="keyword">typedef</span> <span class="keywordtype">short</span> int16;
168<a name="l00153"></a>00153 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> uint16;
169<a name="l00154"></a>00154 <span class="keyword">typedef</span> <span class="keywordtype">char</span> int8;
170<a name="l00155"></a>00155 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> uint8;
171<a name="l00156"></a>00156 <span class="preprocessor">#endif</span>
172<a name="l00157"></a>00157 <span class="preprocessor"></span>
173<a name="l00158"></a>00158 <span class="comment">/* An integer type that can be safely cast to a pointer. This definition</span>
174<a name="l00159"></a>00159 <span class="comment"> * should be safe even on 64-bit systems */</span>
175<a name="l00160"></a>00160 <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> intP;
176<a name="l00161"></a>00161
177<a name="l00162"></a>00162
178<a name="l00163"></a>00163 <span class="comment">/* The efficient alignment. most platforms align data structures to some</span>
179<a name="l00164"></a>00164 <span class="comment"> * number of bytes, but this is not always the most efficient alignment.</span>
180<a name="l00165"></a>00165 <span class="comment"> * for example, many x86 compilers align to 4 bytes, but on a pentium it is</span>
181<a name="l00166"></a>00166 <span class="comment"> * important to align doubles to 8 byte boundaries (for speed), and the 4</span>
182<a name="l00167"></a>00167 <span class="comment"> * floats in a SIMD register to 16 byte boundaries. many other platforms have</span>
183<a name="l00168"></a>00168 <span class="comment"> * similar behavior. setting a larger alignment can waste a (very) small</span>
184<a name="l00169"></a>00169 <span class="comment"> * amount of memory. NOTE: this number must be a power of two. */</span>
185<a name="l00170"></a>00170 <span class="preprocessor">#define EFFICIENT_ALIGNMENT 16</span>
186<a name="l00171"></a>00171 <span class="preprocessor"></span>
187<a name="l00172"></a>00172
188<a name="l00173"></a>00173 <span class="comment">/* Define this if your system supports anonymous memory maps (linux does) */</span>
189<a name="l00174"></a>00174 <span class="preprocessor">#define MMAP_ANONYMOUS</span>
190<a name="l00175"></a>00175 <span class="preprocessor"></span>
191<a name="l00176"></a>00176 <span class="preprocessor">#endif</span>
192</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
193<a href="http://www.doxygen.org/index.html">
194<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
195</body>
196</html>
diff --git a/libraries/ode-0.9/docs/contact_8h-source.html b/libraries/ode-0.9/docs/contact_8h-source.html
new file mode 100644
index 0000000..0339e51
--- /dev/null
+++ b/libraries/ode-0.9/docs/contact_8h-source.html
@@ -0,0 +1,109 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: contact.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>contact.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_CONTACT_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_CONTACT_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
42<a name="l00027"></a>00027
43<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __cplusplus</span>
44<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
45<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span>
47<a name="l00032"></a>00032
48<a name="l00033"></a>00033 <span class="keyword">enum</span> {
49<a name="l00034"></a>00034 dContactMu2 = 0x001,
50<a name="l00035"></a>00035 dContactFDir1 = 0x002,
51<a name="l00036"></a>00036 dContactBounce = 0x004,
52<a name="l00037"></a>00037 dContactSoftERP = 0x008,
53<a name="l00038"></a>00038 dContactSoftCFM = 0x010,
54<a name="l00039"></a>00039 dContactMotion1 = 0x020,
55<a name="l00040"></a>00040 dContactMotion2 = 0x040,
56<a name="l00041"></a>00041 dContactSlip1 = 0x080,
57<a name="l00042"></a>00042 dContactSlip2 = 0x100,
58<a name="l00043"></a>00043
59<a name="l00044"></a>00044 dContactApprox0 = 0x0000,
60<a name="l00045"></a>00045 dContactApprox1_1 = 0x1000,
61<a name="l00046"></a>00046 dContactApprox1_2 = 0x2000,
62<a name="l00047"></a>00047 dContactApprox1 = 0x3000
63<a name="l00048"></a>00048 };
64<a name="l00049"></a>00049
65<a name="l00050"></a>00050
66<a name="l00051"></a>00051 <span class="keyword">typedef</span> <span class="keyword">struct </span>dSurfaceParameters {
67<a name="l00052"></a>00052 <span class="comment">/* must always be defined */</span>
68<a name="l00053"></a>00053 <span class="keywordtype">int</span> mode;
69<a name="l00054"></a>00054 dReal mu;
70<a name="l00055"></a>00055
71<a name="l00056"></a>00056 <span class="comment">/* only defined if the corresponding flag is set in mode */</span>
72<a name="l00057"></a>00057 dReal mu2;
73<a name="l00058"></a>00058 dReal bounce;
74<a name="l00059"></a>00059 dReal bounce_vel;
75<a name="l00060"></a>00060 dReal soft_erp;
76<a name="l00061"></a>00061 dReal soft_cfm;
77<a name="l00062"></a>00062 dReal motion1,motion2;
78<a name="l00063"></a>00063 dReal slip1,slip2;
79<a name="l00064"></a>00064 } dSurfaceParameters;
80<a name="l00065"></a>00065
81<a name="l00066"></a>00066
82<a name="l00081"></a><a class="code" href="structd_contact_geom.html">00081</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> {
83<a name="l00082"></a><a class="code" href="structd_contact_geom.html#2fa7323ee3826d1f55c8cad6157e38a5">00082</a> dVector3 <a class="code" href="structd_contact_geom.html#2fa7323ee3826d1f55c8cad6157e38a5" title="contact position">pos</a>;
84<a name="l00083"></a><a class="code" href="structd_contact_geom.html#7665d3379904821bbdb7b7d1028fcda3">00083</a> dVector3 <a class="code" href="structd_contact_geom.html#7665d3379904821bbdb7b7d1028fcda3" title="normal vector">normal</a>;
85<a name="l00084"></a><a class="code" href="structd_contact_geom.html#29c32c1cb4355186d4110b7abeb58bf0">00084</a> dReal <a class="code" href="structd_contact_geom.html#29c32c1cb4355186d4110b7abeb58bf0" title="penetration depth">depth</a>;
86<a name="l00085"></a><a class="code" href="structd_contact_geom.html#7dd16e7bbc0c5b5e17116c1e5179281b">00085</a> dGeomID g1,<a class="code" href="structd_contact_geom.html#7dd16e7bbc0c5b5e17116c1e5179281b" title="the colliding geoms">g2</a>;
87<a name="l00086"></a><a class="code" href="structd_contact_geom.html#7a8a080b98c12e0d1f52c86d2738552e">00086</a> <span class="keywordtype">int</span> side1,<a class="code" href="structd_contact_geom.html#7a8a080b98c12e0d1f52c86d2738552e" title="(to be documented)">side2</a>;
88<a name="l00087"></a>00087 } <a class="code" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a>;
89<a name="l00088"></a>00088
90<a name="l00089"></a>00089
91<a name="l00090"></a>00090 <span class="comment">/* contact info used by contact joint */</span>
92<a name="l00091"></a>00091
93<a name="l00092"></a>00092 <span class="keyword">typedef</span> <span class="keyword">struct </span>dContact {
94<a name="l00093"></a>00093 dSurfaceParameters surface;
95<a name="l00094"></a>00094 <a class="code" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> geom;
96<a name="l00095"></a>00095 dVector3 fdir1;
97<a name="l00096"></a>00096 } dContact;
98<a name="l00097"></a>00097
99<a name="l00098"></a>00098
100<a name="l00099"></a>00099 <span class="preprocessor">#ifdef __cplusplus</span>
101<a name="l00100"></a>00100 <span class="preprocessor"></span>}
102<a name="l00101"></a>00101 <span class="preprocessor">#endif</span>
103<a name="l00102"></a>00102 <span class="preprocessor"></span>
104<a name="l00103"></a>00103 <span class="preprocessor">#endif</span>
105</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
106<a href="http://www.doxygen.org/index.html">
107<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
108</body>
109</html>
diff --git a/libraries/ode-0.9/docs/doxygen.css b/libraries/ode-0.9/docs/doxygen.css
new file mode 100644
index 0000000..c7db1a8
--- /dev/null
+++ b/libraries/ode-0.9/docs/doxygen.css
@@ -0,0 +1,358 @@
1BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
2 font-family: Geneva, Arial, Helvetica, sans-serif;
3}
4BODY,TD {
5 font-size: 90%;
6}
7H1 {
8 text-align: center;
9 font-size: 160%;
10}
11H2 {
12 font-size: 120%;
13}
14H3 {
15 font-size: 100%;
16}
17CAPTION { font-weight: bold }
18DIV.qindex {
19 width: 100%;
20 background-color: #e8eef2;
21 border: 1px solid #84b0c7;
22 text-align: center;
23 margin: 2px;
24 padding: 2px;
25 line-height: 140%;
26}
27DIV.nav {
28 width: 100%;
29 background-color: #e8eef2;
30 border: 1px solid #84b0c7;
31 text-align: center;
32 margin: 2px;
33 padding: 2px;
34 line-height: 140%;
35}
36DIV.navtab {
37 background-color: #e8eef2;
38 border: 1px solid #84b0c7;
39 text-align: center;
40 margin: 2px;
41 margin-right: 15px;
42 padding: 2px;
43}
44TD.navtab {
45 font-size: 70%;
46}
47A.qindex {
48 text-decoration: none;
49 font-weight: bold;
50 color: #1A419D;
51}
52A.qindex:visited {
53 text-decoration: none;
54 font-weight: bold;
55 color: #1A419D
56}
57A.qindex:hover {
58 text-decoration: none;
59 background-color: #ddddff;
60}
61A.qindexHL {
62 text-decoration: none;
63 font-weight: bold;
64 background-color: #6666cc;
65 color: #ffffff;
66 border: 1px double #9295C2;
67}
68A.qindexHL:hover {
69 text-decoration: none;
70 background-color: #6666cc;
71 color: #ffffff;
72}
73A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
74A.el { text-decoration: none; font-weight: bold }
75A.elRef { font-weight: bold }
76A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
77A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
78A.codeRef:link { font-weight: normal; color: #0000FF}
79A.codeRef:visited { font-weight: normal; color: #0000FF}
80A:hover { text-decoration: none; background-color: #f2f2ff }
81DL.el { margin-left: -1cm }
82.fragment {
83 font-family: monospace, fixed;
84 font-size: 95%;
85}
86PRE.fragment {
87 border: 1px solid #CCCCCC;
88 background-color: #f5f5f5;
89 margin-top: 4px;
90 margin-bottom: 4px;
91 margin-left: 2px;
92 margin-right: 8px;
93 padding-left: 6px;
94 padding-right: 6px;
95 padding-top: 4px;
96 padding-bottom: 4px;
97}
98DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
99
100DIV.groupHeader {
101 margin-left: 16px;
102 margin-top: 12px;
103 margin-bottom: 6px;
104 font-weight: bold;
105}
106DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
107BODY {
108 background: white;
109 color: black;
110 margin-right: 20px;
111 margin-left: 20px;
112}
113TD.indexkey {
114 background-color: #e8eef2;
115 font-weight: bold;
116 padding-right : 10px;
117 padding-top : 2px;
118 padding-left : 10px;
119 padding-bottom : 2px;
120 margin-left : 0px;
121 margin-right : 0px;
122 margin-top : 2px;
123 margin-bottom : 2px;
124 border: 1px solid #CCCCCC;
125}
126TD.indexvalue {
127 background-color: #e8eef2;
128 font-style: italic;
129 padding-right : 10px;
130 padding-top : 2px;
131 padding-left : 10px;
132 padding-bottom : 2px;
133 margin-left : 0px;
134 margin-right : 0px;
135 margin-top : 2px;
136 margin-bottom : 2px;
137 border: 1px solid #CCCCCC;
138}
139TR.memlist {
140 background-color: #f0f0f0;
141}
142P.formulaDsp { text-align: center; }
143IMG.formulaDsp { }
144IMG.formulaInl { vertical-align: middle; }
145SPAN.keyword { color: #008000 }
146SPAN.keywordtype { color: #604020 }
147SPAN.keywordflow { color: #e08000 }
148SPAN.comment { color: #800000 }
149SPAN.preprocessor { color: #806020 }
150SPAN.stringliteral { color: #002080 }
151SPAN.charliteral { color: #008080 }
152.mdescLeft {
153 padding: 0px 8px 4px 8px;
154 font-size: 80%;
155 font-style: italic;
156 background-color: #FAFAFA;
157 border-top: 1px none #E0E0E0;
158 border-right: 1px none #E0E0E0;
159 border-bottom: 1px none #E0E0E0;
160 border-left: 1px none #E0E0E0;
161 margin: 0px;
162}
163.mdescRight {
164 padding: 0px 8px 4px 8px;
165 font-size: 80%;
166 font-style: italic;
167 background-color: #FAFAFA;
168 border-top: 1px none #E0E0E0;
169 border-right: 1px none #E0E0E0;
170 border-bottom: 1px none #E0E0E0;
171 border-left: 1px none #E0E0E0;
172 margin: 0px;
173}
174.memItemLeft {
175 padding: 1px 0px 0px 8px;
176 margin: 4px;
177 border-top-width: 1px;
178 border-right-width: 1px;
179 border-bottom-width: 1px;
180 border-left-width: 1px;
181 border-top-color: #E0E0E0;
182 border-right-color: #E0E0E0;
183 border-bottom-color: #E0E0E0;
184 border-left-color: #E0E0E0;
185 border-top-style: solid;
186 border-right-style: none;
187 border-bottom-style: none;
188 border-left-style: none;
189 background-color: #FAFAFA;
190 font-size: 80%;
191}
192.memItemRight {
193 padding: 1px 8px 0px 8px;
194 margin: 4px;
195 border-top-width: 1px;
196 border-right-width: 1px;
197 border-bottom-width: 1px;
198 border-left-width: 1px;
199 border-top-color: #E0E0E0;
200 border-right-color: #E0E0E0;
201 border-bottom-color: #E0E0E0;
202 border-left-color: #E0E0E0;
203 border-top-style: solid;
204 border-right-style: none;
205 border-bottom-style: none;
206 border-left-style: none;
207 background-color: #FAFAFA;
208 font-size: 80%;
209}
210.memTemplItemLeft {
211 padding: 1px 0px 0px 8px;
212 margin: 4px;
213 border-top-width: 1px;
214 border-right-width: 1px;
215 border-bottom-width: 1px;
216 border-left-width: 1px;
217 border-top-color: #E0E0E0;
218 border-right-color: #E0E0E0;
219 border-bottom-color: #E0E0E0;
220 border-left-color: #E0E0E0;
221 border-top-style: none;
222 border-right-style: none;
223 border-bottom-style: none;
224 border-left-style: none;
225 background-color: #FAFAFA;
226 font-size: 80%;
227}
228.memTemplItemRight {
229 padding: 1px 8px 0px 8px;
230 margin: 4px;
231 border-top-width: 1px;
232 border-right-width: 1px;
233 border-bottom-width: 1px;
234 border-left-width: 1px;
235 border-top-color: #E0E0E0;
236 border-right-color: #E0E0E0;
237 border-bottom-color: #E0E0E0;
238 border-left-color: #E0E0E0;
239 border-top-style: none;
240 border-right-style: none;
241 border-bottom-style: none;
242 border-left-style: none;
243 background-color: #FAFAFA;
244 font-size: 80%;
245}
246.memTemplParams {
247 padding: 1px 0px 0px 8px;
248 margin: 4px;
249 border-top-width: 1px;
250 border-right-width: 1px;
251 border-bottom-width: 1px;
252 border-left-width: 1px;
253 border-top-color: #E0E0E0;
254 border-right-color: #E0E0E0;
255 border-bottom-color: #E0E0E0;
256 border-left-color: #E0E0E0;
257 border-top-style: solid;
258 border-right-style: none;
259 border-bottom-style: none;
260 border-left-style: none;
261 color: #606060;
262 background-color: #FAFAFA;
263 font-size: 80%;
264}
265.search { color: #003399;
266 font-weight: bold;
267}
268FORM.search {
269 margin-bottom: 0px;
270 margin-top: 0px;
271}
272INPUT.search { font-size: 75%;
273 color: #000080;
274 font-weight: normal;
275 background-color: #e8eef2;
276}
277TD.tiny { font-size: 75%;
278}
279a {
280 color: #1A41A8;
281}
282a:visited {
283 color: #2A3798;
284}
285.dirtab { padding: 4px;
286 border-collapse: collapse;
287 border: 1px solid #84b0c7;
288}
289TH.dirtab { background: #e8eef2;
290 font-weight: bold;
291}
292HR { height: 1px;
293 border: none;
294 border-top: 1px solid black;
295}
296
297/* Style for detailed member documentation */
298.memtemplate {
299 font-size: 80%;
300 color: #606060;
301 font-weight: normal;
302}
303.memnav {
304 background-color: #e8eef2;
305 border: 1px solid #84b0c7;
306 text-align: center;
307 margin: 2px;
308 margin-right: 15px;
309 padding: 2px;
310}
311.memitem {
312 padding: 4px;
313 background-color: #eef3f5;
314 border-width: 1px;
315 border-style: solid;
316 border-color: #dedeee;
317 -moz-border-radius: 8px 8px 8px 8px;
318}
319.memname {
320 white-space: nowrap;
321 font-weight: bold;
322}
323.memdoc{
324 padding-left: 10px;
325}
326.memproto {
327 background-color: #d5e1e8;
328 width: 100%;
329 border-width: 1px;
330 border-style: solid;
331 border-color: #84b0c7;
332 font-weight: bold;
333 -moz-border-radius: 8px 8px 8px 8px;
334}
335.paramkey {
336 text-align: right;
337}
338.paramtype {
339 white-space: nowrap;
340}
341.paramname {
342 color: #602020;
343 font-style: italic;
344 white-space: nowrap;
345}
346/* End Styling for detailed member documentation */
347
348/* for the tree view */
349.ftvtree {
350 font-family: sans-serif;
351 margin:0.5em;
352}
353.directory { font-size: 9pt; font-weight: bold; }
354.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
355.directory > h3 { margin-top: 0; }
356.directory p { margin: 0px; white-space: nowrap; }
357.directory div { display: none; margin: 0px; }
358.directory img { vertical-align: -30%; }
diff --git a/libraries/ode-0.9/docs/doxygen.png b/libraries/ode-0.9/docs/doxygen.png
new file mode 100644
index 0000000..f0a274b
--- /dev/null
+++ b/libraries/ode-0.9/docs/doxygen.png
Binary files differ
diff --git a/libraries/ode-0.9/docs/drawstuff_8h-source.html b/libraries/ode-0.9/docs/drawstuff_8h-source.html
new file mode 100644
index 0000000..e08e6c2
--- /dev/null
+++ b/libraries/ode-0.9/docs/drawstuff_8h-source.html
@@ -0,0 +1,166 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: drawstuff.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>drawstuff.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00041"></a>00041 <span class="preprocessor">#ifndef __DRAWSTUFF_H__</span>
39<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#define __DRAWSTUFF_H__</span>
40<a name="l00043"></a>00043 <span class="preprocessor"></span>
41<a name="l00044"></a>00044 <span class="comment">/* Define a DLL export symbol for those platforms that need it */</span>
42<a name="l00045"></a>00045 <span class="preprocessor">#if defined(ODE_PLATFORM_WINDOWS)</span>
43<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor"> #if defined(DS_DLL)</span>
44<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor"> #define DS_API __declspec(dllexport)</span>
45<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor"> #elif !defined(DS_LIB)</span>
46<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor"> #define DS_DLL_API __declspec(dllimport)</span>
47<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
48<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
49<a name="l00052"></a>00052 <span class="preprocessor"></span>
50<a name="l00053"></a>00053 <span class="preprocessor">#if !defined(DS_API)</span>
51<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor"> #define DS_API</span>
52<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
53<a name="l00056"></a>00056 <span class="preprocessor"></span>
54<a name="l00057"></a>00057 <span class="preprocessor">#ifdef __cplusplus</span>
55<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
56<a name="l00059"></a>00059 <span class="preprocessor">#endif</span>
57<a name="l00060"></a>00060 <span class="preprocessor"></span>
58<a name="l00061"></a>00061
59<a name="l00062"></a>00062 <span class="preprocessor">#include &lt;drawstuff/version.h&gt;</span>
60<a name="l00063"></a>00063
61<a name="l00064"></a>00064
62<a name="l00065"></a>00065 <span class="comment">/* texture numbers */</span>
63<a name="l00066"></a>00066 <span class="preprocessor">#define DS_NONE 0 </span><span class="comment">/* uses the current color instead of a texture */</span>
64<a name="l00067"></a>00067 <span class="preprocessor">#define DS_WOOD 1</span>
65<a name="l00068"></a>00068 <span class="preprocessor"></span>
66<a name="l00069"></a>00069
67<a name="l00075"></a><a class="code" href="structds_functions.html">00075</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structds_functions.html" title="Set of functions to be used as callbacks by the simulation loop.">dsFunctions</a> {
68<a name="l00076"></a>00076 <span class="keywordtype">int</span> version; <span class="comment">/* put DS_VERSION here */</span>
69<a name="l00077"></a>00077 <span class="comment">/* version 1 data */</span>
70<a name="l00078"></a>00078 void (*start)(); <span class="comment">/* called before sim loop starts */</span>
71<a name="l00079"></a>00079 void (*step) (<span class="keywordtype">int</span> pause); <span class="comment">/* called before every frame */</span>
72<a name="l00080"></a>00080 void (*command) (<span class="keywordtype">int</span> cmd); <span class="comment">/* called if a command key is pressed */</span>
73<a name="l00081"></a>00081 void (*stop)(); <span class="comment">/* called after sim loop exits */</span>
74<a name="l00082"></a>00082 <span class="comment">/* version 2 data */</span>
75<a name="l00083"></a>00083 <span class="keywordtype">char</span> *path_to_textures; <span class="comment">/* if nonzero, path to texture files */</span>
76<a name="l00084"></a>00084 } <a class="code" href="structds_functions.html" title="Set of functions to be used as callbacks by the simulation loop.">dsFunctions</a>;
77<a name="l00085"></a>00085
78<a name="l00086"></a>00086
79<a name="l00095"></a>00095 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g28560ea1b64c1d83095bcdfce9caf9dc" title="Does the complete simulation.">dsSimulationLoop</a> (<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv,
80<a name="l00096"></a>00096 <span class="keywordtype">int</span> window_width, <span class="keywordtype">int</span> window_height,
81<a name="l00097"></a>00097 <span class="keyword">struct</span> <a class="code" href="structds_functions.html" title="Set of functions to be used as callbacks by the simulation loop.">dsFunctions</a> *fn);
82<a name="l00098"></a>00098
83<a name="l00105"></a>00105 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g7a2a69ac611d5dc6ffc8e43b0a743472" title="exit with error message.">dsError</a> (<span class="keywordtype">char</span> *msg, ...);
84<a name="l00106"></a>00106
85<a name="l00113"></a>00113 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#ga84175b14c3c31daae08a9c88acc2b02" title="exit with error message and core dump.">dsDebug</a> (<span class="keywordtype">char</span> *msg, ...);
86<a name="l00114"></a>00114
87<a name="l00120"></a>00120 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#gbca5fa4076aa9e45caa049f33e8cf168" title="print log message">dsPrint</a> (<span class="keywordtype">char</span> *msg, ...);
88<a name="l00121"></a>00121
89<a name="l00130"></a>00130 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g8e4ea933c31d207ec57949fbb3a75815" title="Sets the viewpoint.">dsSetViewpoint</a> (<span class="keywordtype">float</span> xyz[3], <span class="keywordtype">float</span> hpr[3]);
90<a name="l00131"></a>00131
91<a name="l00132"></a>00132
92<a name="l00139"></a>00139 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#gaa22f45ad00e0010a1440985ac51b18b" title="Gets the viewpoint.">dsGetViewpoint</a> (<span class="keywordtype">float</span> xyz[3], <span class="keywordtype">float</span> hpr[3]);
93<a name="l00140"></a>00140
94<a name="l00149"></a>00149 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g6c13a5a310b9e00c45150058e669ebad" title="Stop the simulation loop.">dsStop</a>();
95<a name="l00150"></a>00150
96<a name="l00156"></a>00156 DS_API <span class="keywordtype">double</span> <a class="code" href="group__drawstuff.html#g02f3f096703d49f5a9e497aec0b85f75" title="Get the elapsed time (on wall-clock).">dsElapsedTime</a>();
97<a name="l00157"></a>00157
98<a name="l00168"></a>00168 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g8a3d6f8fecc8c7d5a206bed35f17ba7a" title="Toggle the rendering of textures.">dsSetTexture</a> (<span class="keywordtype">int</span> texture_number);
99<a name="l00169"></a>00169
100<a name="l00177"></a>00177 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g3221a0d1360621eaad7c54597671c092" title="Set the color with which geometry is drawn.">dsSetColor</a> (<span class="keywordtype">float</span> red, <span class="keywordtype">float</span> green, <span class="keywordtype">float</span> blue);
101<a name="l00178"></a>00178
102<a name="l00185"></a>00185 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g440940cfaef61775e37c33b055b832af" title="Set the color and transparency with which geometry is drawn.">dsSetColorAlpha</a> (<span class="keywordtype">float</span> red, <span class="keywordtype">float</span> green, <span class="keywordtype">float</span> blue, <span class="keywordtype">float</span> alpha);
103<a name="l00186"></a>00186
104<a name="l00197"></a>00197 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#gfba4fde6b0b74f6cd422036dedd08836" title="Draw a box.">dsDrawBox</a> (<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">float</span> R[12], <span class="keyword">const</span> <span class="keywordtype">float</span> sides[3]);
105<a name="l00198"></a>00198
106<a name="l00206"></a>00206 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g0802e7641f8028182b69fabc729a6704" title="Draw a sphere.">dsDrawSphere</a> (<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">float</span> R[12], <span class="keywordtype">float</span> radius);
107<a name="l00207"></a>00207
108<a name="l00218"></a>00218 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#gcfcbae15cee67eceb45cd96bf01484d4" title="Draw a triangle.">dsDrawTriangle</a> (<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">float</span> R[12],
109<a name="l00219"></a>00219 <span class="keyword">const</span> <span class="keywordtype">float</span> *v0, <span class="keyword">const</span> <span class="keywordtype">float</span> *v1, <span class="keyword">const</span> <span class="keywordtype">float</span> *v2, <span class="keywordtype">int</span> solid);
110<a name="l00220"></a>00220
111<a name="l00225"></a>00225 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g0b09b41f1f6500b293678aa1691f1537" title="Draw a z-aligned cylinder.">dsDrawCylinder</a> (<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">float</span> R[12],
112<a name="l00226"></a>00226 <span class="keywordtype">float</span> length, <span class="keywordtype">float</span> radius);
113<a name="l00227"></a>00227
114<a name="l00232"></a>00232 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#gce8f6c8a9f2871dac2f5e7f159b96feb" title="Draw a z-aligned capsule.">dsDrawCapsule</a> (<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">float</span> R[12],
115<a name="l00233"></a>00233 <span class="keywordtype">float</span> length, <span class="keywordtype">float</span> radius);
116<a name="l00234"></a>00234
117<a name="l00239"></a>00239 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g61b166a9b7c04063a27be982051f4af5" title="Draw a line.">dsDrawLine</a> (<span class="keyword">const</span> <span class="keywordtype">float</span> pos1[3], <span class="keyword">const</span> <span class="keywordtype">float</span> pos2[3]);
118<a name="l00240"></a>00240
119<a name="l00245"></a>00245 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g4b8754994a4cca9d51fce16445f0d612" title="Draw a convex shape.">dsDrawConvex</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">float</span> R[12],
120<a name="l00246"></a>00246 <span class="keywordtype">float</span> *_planes,
121<a name="l00247"></a>00247 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _planecount,
122<a name="l00248"></a>00248 <span class="keywordtype">float</span> *_points,
123<a name="l00249"></a>00249 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _pointcount,
124<a name="l00250"></a>00250 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *_polygons);
125<a name="l00251"></a>00251
126<a name="l00252"></a>00252 <span class="comment">/* these drawing functions are identical to the ones above, except they take</span>
127<a name="l00253"></a>00253 <span class="comment"> * double arrays for `pos' and `R'.</span>
128<a name="l00254"></a>00254 <span class="comment"> */</span>
129<a name="l00255"></a>00255 DS_API <span class="keywordtype">void</span> dsDrawBoxD (<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">double</span> R[12],
130<a name="l00256"></a>00256 <span class="keyword">const</span> <span class="keywordtype">double</span> sides[3]);
131<a name="l00257"></a>00257 DS_API <span class="keywordtype">void</span> dsDrawSphereD (<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">double</span> R[12],
132<a name="l00258"></a>00258 <span class="keyword">const</span> <span class="keywordtype">float</span> radius);
133<a name="l00259"></a>00259 DS_API <span class="keywordtype">void</span> dsDrawTriangleD (<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">double</span> R[12],
134<a name="l00260"></a>00260 <span class="keyword">const</span> <span class="keywordtype">double</span> *v0, <span class="keyword">const</span> <span class="keywordtype">double</span> *v1, <span class="keyword">const</span> <span class="keywordtype">double</span> *v2, <span class="keywordtype">int</span> solid);
135<a name="l00261"></a>00261 DS_API <span class="keywordtype">void</span> dsDrawCylinderD (<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">double</span> R[12],
136<a name="l00262"></a>00262 <span class="keywordtype">float</span> length, <span class="keywordtype">float</span> radius);
137<a name="l00263"></a>00263 DS_API <span class="keywordtype">void</span> dsDrawCapsuleD (<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">double</span> R[12],
138<a name="l00264"></a>00264 <span class="keywordtype">float</span> length, <span class="keywordtype">float</span> radius);
139<a name="l00265"></a>00265 DS_API <span class="keywordtype">void</span> dsDrawLineD (<span class="keyword">const</span> <span class="keywordtype">double</span> pos1[3], <span class="keyword">const</span> <span class="keywordtype">double</span> pos2[3]);
140<a name="l00266"></a>00266 DS_API <span class="keywordtype">void</span> dsDrawConvexD(<span class="keyword">const</span> <span class="keywordtype">double</span> pos[3], <span class="keyword">const</span> <span class="keywordtype">double</span> R[12],
141<a name="l00267"></a>00267 <span class="keywordtype">double</span> *_planes,
142<a name="l00268"></a>00268 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _planecount,
143<a name="l00269"></a>00269 <span class="keywordtype">double</span> *_points,
144<a name="l00270"></a>00270 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _pointcount,
145<a name="l00271"></a>00271 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *_polygons);
146<a name="l00272"></a>00272
147<a name="l00280"></a>00280 DS_API <span class="keywordtype">void</span> <a class="code" href="group__drawstuff.html#g211aa83d5c5d102cdda303cc7aeb2fd5" title="Set the quality with which curved objects are rendered.">dsSetSphereQuality</a> (<span class="keywordtype">int</span> n); <span class="comment">/* default = 1 */</span>
148<a name="l00281"></a>00281 DS_API <span class="keywordtype">void</span> dsSetCapsuleQuality (<span class="keywordtype">int</span> n); <span class="comment">/* default = 3 */</span>
149<a name="l00282"></a>00282
150<a name="l00283"></a>00283 <span class="comment">// Backwards compatible API</span>
151<a name="l00284"></a>00284 <span class="preprocessor">#define dsDrawCappedCylinder dsDrawCapsule</span>
152<a name="l00285"></a>00285 <span class="preprocessor"></span><span class="preprocessor">#define dsDrawCappedCylinderD dsDrawCapsuleD</span>
153<a name="l00286"></a>00286 <span class="preprocessor"></span><span class="preprocessor">#define dsSetCappedCylinderQuality dsSetCapsuleQuality</span>
154<a name="l00287"></a>00287 <span class="preprocessor"></span>
155<a name="l00288"></a>00288 <span class="comment">/* closing bracket for extern "C" */</span>
156<a name="l00289"></a>00289 <span class="preprocessor">#ifdef __cplusplus</span>
157<a name="l00290"></a>00290 <span class="preprocessor"></span>}
158<a name="l00291"></a>00291 <span class="preprocessor">#endif</span>
159<a name="l00292"></a>00292 <span class="preprocessor"></span>
160<a name="l00293"></a>00293 <span class="preprocessor">#endif</span>
161<a name="l00294"></a>00294 <span class="preprocessor"></span>
162</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
163<a href="http://www.doxygen.org/index.html">
164<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
165</body>
166</html>
diff --git a/libraries/ode-0.9/docs/error_8h-source.html b/libraries/ode-0.9/docs/error_8h-source.html
new file mode 100644
index 0000000..bb8e44a
--- /dev/null
+++ b/libraries/ode-0.9/docs/error_8h-source.html
@@ -0,0 +1,83 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: error.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>error.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="comment">/* this comes from the `reuse' library. copy any changes back to the source */</span>
39<a name="l00024"></a>00024
40<a name="l00025"></a>00025 <span class="preprocessor">#ifndef _ODE_ERROR_H_</span>
41<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_ERROR_H_</span>
42<a name="l00027"></a>00027 <span class="preprocessor"></span>
43<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ode/config.h&gt;</span>
44<a name="l00029"></a>00029
45<a name="l00030"></a>00030 <span class="preprocessor">#ifdef __cplusplus</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
47<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
48<a name="l00033"></a>00033 <span class="preprocessor"></span>
49<a name="l00034"></a>00034 <span class="comment">/* all user defined error functions have this type. error and debug functions</span>
50<a name="l00035"></a>00035 <span class="comment"> * should not return.</span>
51<a name="l00036"></a>00036 <span class="comment"> */</span>
52<a name="l00037"></a>00037 <span class="keyword">typedef</span> <span class="keywordtype">void</span> dMessageFunction (<span class="keywordtype">int</span> errnum, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg, va_list ap);
53<a name="l00038"></a>00038
54<a name="l00039"></a>00039 <span class="comment">/* set a new error, debug or warning handler. if fn is 0, the default handlers</span>
55<a name="l00040"></a>00040 <span class="comment"> * are used.</span>
56<a name="l00041"></a>00041 <span class="comment"> */</span>
57<a name="l00042"></a>00042 ODE_API <span class="keywordtype">void</span> dSetErrorHandler (dMessageFunction *fn);
58<a name="l00043"></a>00043 ODE_API <span class="keywordtype">void</span> dSetDebugHandler (dMessageFunction *fn);
59<a name="l00044"></a>00044 ODE_API <span class="keywordtype">void</span> dSetMessageHandler (dMessageFunction *fn);
60<a name="l00045"></a>00045
61<a name="l00046"></a>00046 <span class="comment">/* return the current error, debug or warning handler. if the return value is</span>
62<a name="l00047"></a>00047 <span class="comment"> * 0, the default handlers are in place.</span>
63<a name="l00048"></a>00048 <span class="comment"> */</span>
64<a name="l00049"></a>00049 ODE_API dMessageFunction *dGetErrorHandler(<span class="keywordtype">void</span>);
65<a name="l00050"></a>00050 ODE_API dMessageFunction *dGetDebugHandler(<span class="keywordtype">void</span>);
66<a name="l00051"></a>00051 ODE_API dMessageFunction *dGetMessageHandler(<span class="keywordtype">void</span>);
67<a name="l00052"></a>00052
68<a name="l00053"></a>00053 <span class="comment">/* generate a fatal error, debug trap or a message. */</span>
69<a name="l00054"></a>00054 ODE_API <span class="keywordtype">void</span> dError (<span class="keywordtype">int</span> num, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg, ...);
70<a name="l00055"></a>00055 ODE_API <span class="keywordtype">void</span> dDebug (<span class="keywordtype">int</span> num, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg, ...);
71<a name="l00056"></a>00056 ODE_API <span class="keywordtype">void</span> dMessage (<span class="keywordtype">int</span> num, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg, ...);
72<a name="l00057"></a>00057
73<a name="l00058"></a>00058
74<a name="l00059"></a>00059 <span class="preprocessor">#ifdef __cplusplus</span>
75<a name="l00060"></a>00060 <span class="preprocessor"></span>}
76<a name="l00061"></a>00061 <span class="preprocessor">#endif</span>
77<a name="l00062"></a>00062 <span class="preprocessor"></span>
78<a name="l00063"></a>00063 <span class="preprocessor">#endif</span>
79</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
80<a href="http://www.doxygen.org/index.html">
81<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
82</body>
83</html>
diff --git a/libraries/ode-0.9/docs/export-dif_8h-source.html b/libraries/ode-0.9/docs/export-dif_8h-source.html
new file mode 100644
index 0000000..9a5084e
--- /dev/null
+++ b/libraries/ode-0.9/docs/export-dif_8h-source.html
@@ -0,0 +1,52 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: export-dif.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>export-dif.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_EXPORT_DIF_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_EXPORT_DIF_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
42<a name="l00027"></a>00027
43<a name="l00028"></a>00028
44<a name="l00029"></a>00029 ODE_API <span class="keywordtype">void</span> dWorldExportDIF (dWorldID w, FILE *file, <span class="keyword">const</span> <span class="keywordtype">char</span> *world_name);
45<a name="l00030"></a>00030
46<a name="l00031"></a>00031
47<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
48</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
49<a href="http://www.doxygen.org/index.html">
50<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
51</body>
52</html>
diff --git a/libraries/ode-0.9/docs/files.html b/libraries/ode-0.9/docs/files.html
new file mode 100644
index 0000000..29d3e77
--- /dev/null
+++ b/libraries/ode-0.9/docs/files.html
@@ -0,0 +1,44 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: File Index</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>Open Dynamics Engine File List</h1>Here is a list of all documented files with brief descriptions:<table>
17 <tr><td class="indexkey"><b>collision.h</b> <a href="collision_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
18 <tr><td class="indexkey"><b>collision_space.h</b> <a href="collision__space_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
19 <tr><td class="indexkey"><b>collision_trimesh.h</b> <a href="collision__trimesh_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
20 <tr><td class="indexkey"><b>common.h</b> <a href="common_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
21 <tr><td class="indexkey"><b>compatibility.h</b> <a href="compatibility_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
22 <tr><td class="indexkey"><b>config.h</b> <a href="config_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
23 <tr><td class="indexkey"><b>contact.h</b> <a href="contact_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
24 <tr><td class="indexkey"><b>drawstuff.h</b> <a href="drawstuff_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
25 <tr><td class="indexkey"><b>error.h</b> <a href="error_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
26 <tr><td class="indexkey"><b>export-dif.h</b> <a href="export-dif_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
27 <tr><td class="indexkey"><b>mass.h</b> <a href="mass_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
28 <tr><td class="indexkey"><b>matrix.h</b> <a href="matrix_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
29 <tr><td class="indexkey"><b>memory.h</b> <a href="memory_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
30 <tr><td class="indexkey"><b>misc.h</b> <a href="misc_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
31 <tr><td class="indexkey"><b>objects.h</b> <a href="objects_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
32 <tr><td class="indexkey"><b>ode.h</b> <a href="ode_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
33 <tr><td class="indexkey"><b>odecpp.h</b> <a href="odecpp_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
34 <tr><td class="indexkey"><b>odecpp_collision.h</b> <a href="odecpp__collision_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
35 <tr><td class="indexkey"><b>odemath.h</b> <a href="odemath_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
36 <tr><td class="indexkey"><b>rotation.h</b> <a href="rotation_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
37 <tr><td class="indexkey"><b>timer.h</b> <a href="timer_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
38 <tr><td class="indexkey"><b>version.h</b> <a href="version_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
39</table>
40<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by&nbsp;
41<a href="http://www.doxygen.org/index.html">
42<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
43</body>
44</html>
diff --git a/libraries/ode-0.9/docs/functions.html b/libraries/ode-0.9/docs/functions.html
new file mode 100644
index 0000000..0d321d4
--- /dev/null
+++ b/libraries/ode-0.9/docs/functions.html
@@ -0,0 +1,46 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Data Fields</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<div class="tabs">
17 <ul>
18 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
19 <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
20 </ul>
21</div>
22<div class="tabs">
23 <ul>
24 <li class="current"><a href="functions.html"><span>All</span></a></li>
25 <li><a href="functions_vars.html"><span>Variables</span></a></li>
26 </ul>
27</div>
28Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
29<p>
30<ul>
31<li>depth
32: <a class="el" href="structd_contact_geom.html#29c32c1cb4355186d4110b7abeb58bf0">dContactGeom</a>
33<li>g2
34: <a class="el" href="structd_contact_geom.html#7dd16e7bbc0c5b5e17116c1e5179281b">dContactGeom</a>
35<li>normal
36: <a class="el" href="structd_contact_geom.html#7665d3379904821bbdb7b7d1028fcda3">dContactGeom</a>
37<li>pos
38: <a class="el" href="structd_contact_geom.html#2fa7323ee3826d1f55c8cad6157e38a5">dContactGeom</a>
39<li>side2
40: <a class="el" href="structd_contact_geom.html#7a8a080b98c12e0d1f52c86d2738552e">dContactGeom</a>
41</ul>
42<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by&nbsp;
43<a href="http://www.doxygen.org/index.html">
44<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
45</body>
46</html>
diff --git a/libraries/ode-0.9/docs/functions_vars.html b/libraries/ode-0.9/docs/functions_vars.html
new file mode 100644
index 0000000..2b5702b
--- /dev/null
+++ b/libraries/ode-0.9/docs/functions_vars.html
@@ -0,0 +1,46 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Data Fields - Variables</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<div class="tabs">
17 <ul>
18 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
19 <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
20 </ul>
21</div>
22<div class="tabs">
23 <ul>
24 <li><a href="functions.html"><span>All</span></a></li>
25 <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
26 </ul>
27</div>
28&nbsp;
29<p>
30<ul>
31<li>depth
32: <a class="el" href="structd_contact_geom.html#29c32c1cb4355186d4110b7abeb58bf0">dContactGeom</a>
33<li>g2
34: <a class="el" href="structd_contact_geom.html#7dd16e7bbc0c5b5e17116c1e5179281b">dContactGeom</a>
35<li>normal
36: <a class="el" href="structd_contact_geom.html#7665d3379904821bbdb7b7d1028fcda3">dContactGeom</a>
37<li>pos
38: <a class="el" href="structd_contact_geom.html#2fa7323ee3826d1f55c8cad6157e38a5">dContactGeom</a>
39<li>side2
40: <a class="el" href="structd_contact_geom.html#7a8a080b98c12e0d1f52c86d2738552e">dContactGeom</a>
41</ul>
42<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by&nbsp;
43<a href="http://www.doxygen.org/index.html">
44<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
45</body>
46</html>
diff --git a/libraries/ode-0.9/docs/group__bodies.html b/libraries/ode-0.9/docs/group__bodies.html
new file mode 100644
index 0000000..951ff2b
--- /dev/null
+++ b/libraries/ode-0.9/docs/group__bodies.html
@@ -0,0 +1,1827 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Rigid Bodies</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>Rigid Bodies</h1><table border="0" cellpadding="0" cellspacing="0">
17<tr><td></td></tr>
18<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
19<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g57c1e1b1bd50fdcafc5140c1ed89c7d7">dBodyGetAutoDisableLinearThreshold</a> (dBodyID)</td></tr>
20
21<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable linear average threshold. <a href="#g57c1e1b1bd50fdcafc5140c1ed89c7d7"></a><br></td></tr>
22<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gb8f6e736830cfea86c35e7a0cdfa3112">dBodySetAutoDisableLinearThreshold</a> (dBodyID, dReal linear_average_threshold)</td></tr>
23
24<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable linear average threshold. <a href="#gb8f6e736830cfea86c35e7a0cdfa3112"></a><br></td></tr>
25<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g5b988719423e9bc3af1be2146872e2d6">dBodyGetAutoDisableAngularThreshold</a> (dBodyID)</td></tr>
26
27<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable angular average threshold. <a href="#g5b988719423e9bc3af1be2146872e2d6"></a><br></td></tr>
28<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g206ccf22f027a62aaf5e45a16ddc4040">dBodySetAutoDisableAngularThreshold</a> (dBodyID, dReal angular_average_threshold)</td></tr>
29
30<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable angular average threshold. <a href="#g206ccf22f027a62aaf5e45a16ddc4040"></a><br></td></tr>
31<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gf398254a02ab5bedcdf7e4fb2918a902">dBodyGetAutoDisableAverageSamplesCount</a> (dBodyID)</td></tr>
32
33<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable average size (samples count). <a href="#gf398254a02ab5bedcdf7e4fb2918a902"></a><br></td></tr>
34<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g4bce13aaa5ffb7d4b3452191974c3be6">dBodySetAutoDisableAverageSamplesCount</a> (dBodyID, unsigned int average_samples_count)</td></tr>
35
36<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable average buffer size (average steps). <a href="#g4bce13aaa5ffb7d4b3452191974c3be6"></a><br></td></tr>
37<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g797ad84c737a2ae4ef3f8a37dfa02183">dBodyGetAutoDisableSteps</a> (dBodyID)</td></tr>
38
39<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto steps a body must be thought of as idle to disable. <a href="#g797ad84c737a2ae4ef3f8a37dfa02183"></a><br></td></tr>
40<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g03cc329bdc8e19e59c4bfe62cf736578">dBodySetAutoDisableSteps</a> (dBodyID, int steps)</td></tr>
41
42<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable steps. <a href="#g03cc329bdc8e19e59c4bfe62cf736578"></a><br></td></tr>
43<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#ga2f4d01a8fb5c4d7e77efd5f0e4dd72b">dBodyGetAutoDisableTime</a> (dBodyID)</td></tr>
44
45<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable time. <a href="#ga2f4d01a8fb5c4d7e77efd5f0e4dd72b"></a><br></td></tr>
46<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g0ae2f08bb38359934151f9420cdef341">dBodySetAutoDisableTime</a> (dBodyID, dReal time)</td></tr>
47
48<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable time. <a href="#g0ae2f08bb38359934151f9420cdef341"></a><br></td></tr>
49<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gfe44b3ae620abb1091472089cb07f64e">dBodyGetAutoDisableFlag</a> (dBodyID)</td></tr>
50
51<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable flag. <a href="#gfe44b3ae620abb1091472089cb07f64e"></a><br></td></tr>
52<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#ge352fdcd8851224f07da53f35691ceb7">dBodySetAutoDisableFlag</a> (dBodyID, int do_auto_disable)</td></tr>
53
54<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable flag. <a href="#ge352fdcd8851224f07da53f35691ceb7"></a><br></td></tr>
55<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g00969db4aebc2e8629cd9c45f3b7385e">dBodySetAutoDisableDefaults</a> (dBodyID)</td></tr>
56
57<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable defaults. <a href="#g00969db4aebc2e8629cd9c45f3b7385e"></a><br></td></tr>
58<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dWorldID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gb044b0a466f2ec2af3fd29ae399e822e">dBodyGetWorld</a> (dBodyID)</td></tr>
59
60<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrives the world attached to te given body. <a href="#gb044b0a466f2ec2af3fd29ae399e822e"></a><br></td></tr>
61<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dBodyID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g578137bbaf82d4b8896d2baee3a032a6">dBodyCreate</a> (dWorldID)</td></tr>
62
63<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a body in given world. <a href="#g578137bbaf82d4b8896d2baee3a032a6"></a><br></td></tr>
64<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gc1a0ee96898f14017a29b2afa0eafe13">dBodyDestroy</a> (dBodyID)</td></tr>
65
66<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a body. <a href="#gc1a0ee96898f14017a29b2afa0eafe13"></a><br></td></tr>
67<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gf9cbe9e1ed1bd4559bb5603b8d0f92f2">dBodySetData</a> (dBodyID, void *data)</td></tr>
68
69<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the body's user-data pointer. <a href="#gf9cbe9e1ed1bd4559bb5603b8d0f92f2"></a><br></td></tr>
70<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g68d3d80c7476776dd4512d577bf70325">dBodyGetData</a> (dBodyID)</td></tr>
71
72<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the body's user-data pointer. <a href="#g68d3d80c7476776dd4512d577bf70325"></a><br></td></tr>
73<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gb84612b793366f18ff5b5cbdbed092da">dBodySetPosition</a> (dBodyID, dReal x, dReal y, dReal z)</td></tr>
74
75<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set position of a body. <a href="#gb84612b793366f18ff5b5cbdbed092da"></a><br></td></tr>
76<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gb5f04968ec37ef46d2aaffad6c344468">dBodySetRotation</a> (dBodyID, const dMatrix3 R)</td></tr>
77
78<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the orientation of a body. <a href="#gb5f04968ec37ef46d2aaffad6c344468"></a><br></td></tr>
79<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#ga5f51dd3605c402320e9eae4231d7ad4">dBodySetQuaternion</a> (dBodyID, const dQuaternion q)</td></tr>
80
81<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the orientation of a body. <a href="#ga5f51dd3605c402320e9eae4231d7ad4"></a><br></td></tr>
82<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gafe72e03c1df0f2150e2d7b8677e1460"></a><!-- doxytag: member="bodies::dBodySetLinearVel" ref="gafe72e03c1df0f2150e2d7b8677e1460" args="(dBodyID, dReal x, dReal y, dReal z)" -->
83ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gafe72e03c1df0f2150e2d7b8677e1460">dBodySetLinearVel</a> (dBodyID, dReal x, dReal y, dReal z)</td></tr>
84
85<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the linear velocity of a body. <br></td></tr>
86<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7b4f90c1986333395375c086c4f3ec41"></a><!-- doxytag: member="bodies::dBodySetAngularVel" ref="g7b4f90c1986333395375c086c4f3ec41" args="(dBodyID, dReal x, dReal y, dReal z)" -->
87ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g7b4f90c1986333395375c086c4f3ec41">dBodySetAngularVel</a> (dBodyID, dReal x, dReal y, dReal z)</td></tr>
88
89<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the angular velocity of a body. <br></td></tr>
90<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g2bddae29591b9f14c5175411b783d570">dBodyGetPosition</a> (dBodyID)</td></tr>
91
92<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the position of a body. <a href="#g2bddae29591b9f14c5175411b783d570"></a><br></td></tr>
93<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gf69c1ebd1c8d7d165fe740c9f1146217">dBodyCopyPosition</a> (dBodyID body, dVector3 pos)</td></tr>
94
95<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy the position of a body into a vector. <a href="#gf69c1ebd1c8d7d165fe740c9f1146217"></a><br></td></tr>
96<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g2374da7ff88a2bac607e2fbce529ad27">dBodyGetRotation</a> (dBodyID)</td></tr>
97
98<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the rotation of a body. <a href="#g2374da7ff88a2bac607e2fbce529ad27"></a><br></td></tr>
99<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#ga992006681bc720c6c6ef644768226e5">dBodyCopyRotation</a> (dBodyID, dMatrix3 R)</td></tr>
100
101<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy the rotation of a body. <a href="#ga992006681bc720c6c6ef644768226e5"></a><br></td></tr>
102<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g36b7e19622ed47fe6b9dcfbac20237e7">dBodyGetQuaternion</a> (dBodyID)</td></tr>
103
104<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the rotation of a body. <a href="#g36b7e19622ed47fe6b9dcfbac20237e7"></a><br></td></tr>
105<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gd906c3ad061b7f70d1c60d6957aa2d0f">dBodyCopyQuaternion</a> (dBodyID body, dQuaternion quat)</td></tr>
106
107<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy the orientation of a body into a quaternion. <a href="#gd906c3ad061b7f70d1c60d6957aa2d0f"></a><br></td></tr>
108<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2a0a986c12d53efd5a3753dd4b509cac"></a><!-- doxytag: member="bodies::dBodyGetLinearVel" ref="g2a0a986c12d53efd5a3753dd4b509cac" args="(dBodyID)" -->
109ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g2a0a986c12d53efd5a3753dd4b509cac">dBodyGetLinearVel</a> (dBodyID)</td></tr>
110
111<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the linear velocity of a body. <br></td></tr>
112<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g54dc73be9562cdece52d0a7d8decd1d0"></a><!-- doxytag: member="bodies::dBodyGetAngularVel" ref="g54dc73be9562cdece52d0a7d8decd1d0" args="(dBodyID)" -->
113ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g54dc73be9562cdece52d0a7d8decd1d0">dBodyGetAngularVel</a> (dBodyID)</td></tr>
114
115<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the angular velocity of a body. <br></td></tr>
116<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf3609b58548e34471ef8ad4727b33e52"></a><!-- doxytag: member="bodies::dBodySetMass" ref="gf3609b58548e34471ef8ad4727b33e52" args="(dBodyID, const dMass *mass)" -->
117ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gf3609b58548e34471ef8ad4727b33e52">dBodySetMass</a> (dBodyID, const dMass *mass)</td></tr>
118
119<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the mass of a body. <br></td></tr>
120<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7aa7944f6e36a96d3e578f3369ac4171"></a><!-- doxytag: member="bodies::dBodyGetMass" ref="g7aa7944f6e36a96d3e578f3369ac4171" args="(dBodyID, dMass *mass)" -->
121ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g7aa7944f6e36a96d3e578f3369ac4171">dBodyGetMass</a> (dBodyID, dMass *mass)</td></tr>
122
123<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the mass of a body. <br></td></tr>
124<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1e1352dc350ad42bff5818f2200ba792"></a><!-- doxytag: member="bodies::dBodyAddForce" ref="g1e1352dc350ad42bff5818f2200ba792" args="(dBodyID, dReal fx, dReal fy, dReal fz)" -->
125ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g1e1352dc350ad42bff5818f2200ba792">dBodyAddForce</a> (dBodyID, dReal fx, dReal fy, dReal fz)</td></tr>
126
127<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add force at centre of mass of body in absolute coordinates. <br></td></tr>
128<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8378560dd168ee8d7a4b74e3de510ebc"></a><!-- doxytag: member="bodies::dBodyAddTorque" ref="g8378560dd168ee8d7a4b74e3de510ebc" args="(dBodyID, dReal fx, dReal fy, dReal fz)" -->
129ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g8378560dd168ee8d7a4b74e3de510ebc">dBodyAddTorque</a> (dBodyID, dReal fx, dReal fy, dReal fz)</td></tr>
130
131<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add torque at centre of mass of body in absolute coordinates. <br></td></tr>
132<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g0a91e5416c5af7729177c465346837ad"></a><!-- doxytag: member="bodies::dBodyAddRelForce" ref="g0a91e5416c5af7729177c465346837ad" args="(dBodyID, dReal fx, dReal fy, dReal fz)" -->
133ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g0a91e5416c5af7729177c465346837ad">dBodyAddRelForce</a> (dBodyID, dReal fx, dReal fy, dReal fz)</td></tr>
134
135<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add force at centre of mass of body in coordinates relative to body. <br></td></tr>
136<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g172a59e64f6dfa4a59bcd45b694585de"></a><!-- doxytag: member="bodies::dBodyAddRelTorque" ref="g172a59e64f6dfa4a59bcd45b694585de" args="(dBodyID, dReal fx, dReal fy, dReal fz)" -->
137ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g172a59e64f6dfa4a59bcd45b694585de">dBodyAddRelTorque</a> (dBodyID, dReal fx, dReal fy, dReal fz)</td></tr>
138
139<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add torque at centre of mass of body in coordinates relative to body. <br></td></tr>
140<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gfa134c6b7b455680b890b677c5789c2b"></a><!-- doxytag: member="bodies::dBodyAddForceAtPos" ref="gfa134c6b7b455680b890b677c5789c2b" args="(dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)" -->
141ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gfa134c6b7b455680b890b677c5789c2b">dBodyAddForceAtPos</a> (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)</td></tr>
142
143<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add force at specified point in body in global coordinates. <br></td></tr>
144<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g77606cdb23029337a7ed43dee5a59ee1"></a><!-- doxytag: member="bodies::dBodyAddForceAtRelPos" ref="g77606cdb23029337a7ed43dee5a59ee1" args="(dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)" -->
145ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g77606cdb23029337a7ed43dee5a59ee1">dBodyAddForceAtRelPos</a> (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)</td></tr>
146
147<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add force at specified point in body in local coordinates. <br></td></tr>
148<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga024b08f8dfb85705b86e18b99a0ef8e"></a><!-- doxytag: member="bodies::dBodyAddRelForceAtPos" ref="ga024b08f8dfb85705b86e18b99a0ef8e" args="(dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)" -->
149ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#ga024b08f8dfb85705b86e18b99a0ef8e">dBodyAddRelForceAtPos</a> (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)</td></tr>
150
151<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add force at specified point in body in global coordinates. <br></td></tr>
152<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7e5d20b6bb36f74d0dedb08f5eefddcb"></a><!-- doxytag: member="bodies::dBodyAddRelForceAtRelPos" ref="g7e5d20b6bb36f74d0dedb08f5eefddcb" args="(dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)" -->
153ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g7e5d20b6bb36f74d0dedb08f5eefddcb">dBodyAddRelForceAtRelPos</a> (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)</td></tr>
154
155<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add force at specified point in body in local coordinates. <br></td></tr>
156<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g3b458397a79f09b1957cb6e5a85e9eba">dBodyGetForce</a> (dBodyID)</td></tr>
157
158<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the current accumulated force vector. <a href="#g3b458397a79f09b1957cb6e5a85e9eba"></a><br></td></tr>
159<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gfe88a5bc363fc812c8f154e3d5f8ea5d">dBodyGetTorque</a> (dBodyID)</td></tr>
160
161<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the current accumulated torque vector. <a href="#gfe88a5bc363fc812c8f154e3d5f8ea5d"></a><br></td></tr>
162<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gbd56079db36d4562db0e18aebea4f95f">dBodySetForce</a> (dBodyID b, dReal x, dReal y, dReal z)</td></tr>
163
164<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the body force accumulation vector. <a href="#gbd56079db36d4562db0e18aebea4f95f"></a><br></td></tr>
165<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gfcd3e44223a878ba52428ad3a124fa94">dBodySetTorque</a> (dBodyID b, dReal x, dReal y, dReal z)</td></tr>
166
167<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the body torque accumulation vector. <a href="#gfcd3e44223a878ba52428ad3a124fa94"></a><br></td></tr>
168<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gfcf00cd9c4c754c82189fb9d1eb9f102">dBodyGetRelPointPos</a> (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)</td></tr>
169
170<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get world position of a relative point on body. <a href="#gfcf00cd9c4c754c82189fb9d1eb9f102"></a><br></td></tr>
171<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g7fd4f4c7e70c59380da11277b2e97510">dBodyGetRelPointVel</a> (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)</td></tr>
172
173<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get velocity vector in global coords of a relative point on body. <a href="#g7fd4f4c7e70c59380da11277b2e97510"></a><br></td></tr>
174<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g89dd6a4a3c6f3cd98c8377e8d4dec015">dBodyGetPointVel</a> (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)</td></tr>
175
176<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get velocity vector in global coords of a globally specified point on a body. <a href="#g89dd6a4a3c6f3cd98c8377e8d4dec015"></a><br></td></tr>
177<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g0334d9d523cbfeec742ac4a814834199">dBodyGetPosRelPoint</a> (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)</td></tr>
178
179<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">takes a point in global coordinates and returns the point's position in body-relative coordinates. <a href="#g0334d9d523cbfeec742ac4a814834199"></a><br></td></tr>
180<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g0a2cd6f7499bcfeb8275cbb981465bbf">dBodyVectorToWorld</a> (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)</td></tr>
181
182<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert from local to world coordinates. <a href="#g0a2cd6f7499bcfeb8275cbb981465bbf"></a><br></td></tr>
183<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g1e3ac3ef038e806d4942ea8b399ab575">dBodyVectorFromWorld</a> (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)</td></tr>
184
185<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert from world to local coordinates. <a href="#g1e3ac3ef038e806d4942ea8b399ab575"></a><br></td></tr>
186<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gc474ca36d734fb67b8bd504b672527fa">dBodySetFiniteRotationMode</a> (dBodyID, int mode)</td></tr>
187
188<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">controls the way a body's orientation is updated at each timestep. <a href="#gc474ca36d734fb67b8bd504b672527fa"></a><br></td></tr>
189<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#ga9546c1ea6119fcbf80c71a96f56d052">dBodySetFiniteRotationAxis</a> (dBodyID, dReal x, dReal y, dReal z)</td></tr>
190
191<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">sets the finite rotation axis for a body. <a href="#ga9546c1ea6119fcbf80c71a96f56d052"></a><br></td></tr>
192<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g3fb10ac984d64c92e4f138e50b704f9e">dBodyGetFiniteRotationMode</a> (dBodyID)</td></tr>
193
194<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the way a body's orientation is updated each timestep. <a href="#g3fb10ac984d64c92e4f138e50b704f9e"></a><br></td></tr>
195<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gfc8853ff678be731881665ff7abf61ad">dBodyGetFiniteRotationAxis</a> (dBodyID, dVector3 result)</td></tr>
196
197<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the finite rotation axis. <a href="#gfc8853ff678be731881665ff7abf61ad"></a><br></td></tr>
198<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g79fd517a57ac9c3594cb71850f649af7">dBodyGetNumJoints</a> (dBodyID b)</td></tr>
199
200<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of joints that are attached to this body. <a href="#g79fd517a57ac9c3594cb71850f649af7"></a><br></td></tr>
201<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g095e41c5b5632b22aa9bd1a4bd051f8d">dBodyGetJoint</a> (dBodyID, int index)</td></tr>
202
203<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a joint attached to this body, given by index. <a href="#g095e41c5b5632b22aa9bd1a4bd051f8d"></a><br></td></tr>
204<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#gd0776c40f667b235f8642e10755543f8">dBodyEnable</a> (dBodyID)</td></tr>
205
206<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Manually enable a body. <a href="#gd0776c40f667b235f8642e10755543f8"></a><br></td></tr>
207<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#ga78092d7cadae36373441aa9be7e6157">dBodyDisable</a> (dBodyID)</td></tr>
208
209<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Manually disable a body. <a href="#ga78092d7cadae36373441aa9be7e6157"></a><br></td></tr>
210<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g7e7803132dfcfceee04a6ab0ca1e0bf8">dBodyIsEnabled</a> (dBodyID)</td></tr>
211
212<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check wether a body is enabled. <a href="#g7e7803132dfcfceee04a6ab0ca1e0bf8"></a><br></td></tr>
213<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g5465d605e7fbe82d63a0d4e1000da731">dBodySetGravityMode</a> (dBodyID b, int mode)</td></tr>
214
215<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set whether the body is influenced by the world's gravity or not. <a href="#g5465d605e7fbe82d63a0d4e1000da731"></a><br></td></tr>
216<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bodies.html#g0df2f4fed454c567f10fc8bbb8c70455">dBodyGetGravityMode</a> (dBodyID b)</td></tr>
217
218<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get whether the body is influenced by the world's gravity or not. <a href="#g0df2f4fed454c567f10fc8bbb8c70455"></a><br></td></tr>
219</table>
220<hr><a name="_details"></a><h2>Detailed Description</h2>
221A rigid body has various properties from the point of view of the simulation. Some properties change over time:<p>
222<ul>
223<li>Position vector (x,y,z) of the body's point of reference. Currently the point of reference must correspond to the body's center of mass. </li>
224<li>Linear velocity of the point of reference, a vector (vx,vy,vz). </li>
225<li>Orientation of a body, represented by a quaternion (qs,qx,qy,qz) or a 3x3 rotation matrix. </li>
226<li>Angular velocity vector (wx,wy,wz) which describes how the orientation changes over time.</li>
227</ul>
228Other body properties are usually constant over time:<p>
229<ul>
230<li>Mass of the body. </li>
231<li>Position of the center of mass with respect to the point of reference. In the current implementation the center of mass and the point of reference must coincide. </li>
232<li>Inertia matrix. This is a 3x3 matrix that describes how the body's mass is distributed around the center of mass. Conceptually each body has an x-y-z coordinate frame embedded in it that moves and rotates with the body.</li>
233</ul>
234The origin of this coordinate frame is the body's point of reference. Some values in ODE (vectors, matrices etc) are relative to the body coordinate frame, and others are relative to the global coordinate frame.<p>
235Note that the shape of a rigid body is not a dynamical property (except insofar as it influences the various mass properties). It is only collision detection that cares about the detailed shape of the body. <hr><h2>Function Documentation</h2>
236<a class="anchor" name="gf69c1ebd1c8d7d165fe740c9f1146217"></a><!-- doxytag: member="objects.h::dBodyCopyPosition" ref="gf69c1ebd1c8d7d165fe740c9f1146217" args="(dBodyID body, dVector3 pos)" -->
237<div class="memitem">
238<div class="memproto">
239 <table class="memname">
240 <tr>
241 <td class="memname">ODE_API void dBodyCopyPosition </td>
242 <td>(</td>
243 <td class="paramtype">dBodyID&nbsp;</td>
244 <td class="paramname"> <em>body</em>, </td>
245 </tr>
246 <tr>
247 <td class="paramkey"></td>
248 <td></td>
249 <td class="paramtype">dVector3&nbsp;</td>
250 <td class="paramname"> <em>pos</em></td><td>&nbsp;</td>
251 </tr>
252 <tr>
253 <td></td>
254 <td>)</td>
255 <td></td><td></td><td width="100%"></td>
256 </tr>
257 </table>
258</div>
259<div class="memdoc">
260
261<p>
262Copy the position of a body into a vector.
263<p>
264<dl compact><dt><b>Parameters:</b></dt><dd>
265 <table border="0" cellspacing="2" cellpadding="0">
266 <tr><td valign="top"></td><td valign="top"><em>body</em>&nbsp;</td><td>the body to query </td></tr>
267 <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>a copy of the body position </td></tr>
268 </table>
269</dl>
270<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#g2bddae29591b9f14c5175411b783d570" title="Get the position of a body.">dBodyGetPosition</a> </dd></dl>
271
272</div>
273</div><p>
274<a class="anchor" name="gd906c3ad061b7f70d1c60d6957aa2d0f"></a><!-- doxytag: member="objects.h::dBodyCopyQuaternion" ref="gd906c3ad061b7f70d1c60d6957aa2d0f" args="(dBodyID body, dQuaternion quat)" -->
275<div class="memitem">
276<div class="memproto">
277 <table class="memname">
278 <tr>
279 <td class="memname">ODE_API void dBodyCopyQuaternion </td>
280 <td>(</td>
281 <td class="paramtype">dBodyID&nbsp;</td>
282 <td class="paramname"> <em>body</em>, </td>
283 </tr>
284 <tr>
285 <td class="paramkey"></td>
286 <td></td>
287 <td class="paramtype">dQuaternion&nbsp;</td>
288 <td class="paramname"> <em>quat</em></td><td>&nbsp;</td>
289 </tr>
290 <tr>
291 <td></td>
292 <td>)</td>
293 <td></td><td></td><td width="100%"></td>
294 </tr>
295 </table>
296</div>
297<div class="memdoc">
298
299<p>
300Copy the orientation of a body into a quaternion.
301<p>
302<dl compact><dt><b>Parameters:</b></dt><dd>
303 <table border="0" cellspacing="2" cellpadding="0">
304 <tr><td valign="top"></td><td valign="top"><em>body</em>&nbsp;</td><td>the body to query </td></tr>
305 <tr><td valign="top"></td><td valign="top"><em>quat</em>&nbsp;</td><td>a copy of the orientation quaternion </td></tr>
306 </table>
307</dl>
308<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#g36b7e19622ed47fe6b9dcfbac20237e7" title="Get the rotation of a body.">dBodyGetQuaternion</a> </dd></dl>
309
310</div>
311</div><p>
312<a class="anchor" name="ga992006681bc720c6c6ef644768226e5"></a><!-- doxytag: member="objects.h::dBodyCopyRotation" ref="ga992006681bc720c6c6ef644768226e5" args="(dBodyID, dMatrix3 R)" -->
313<div class="memitem">
314<div class="memproto">
315 <table class="memname">
316 <tr>
317 <td class="memname">ODE_API void dBodyCopyRotation </td>
318 <td>(</td>
319 <td class="paramtype">dBodyID&nbsp;</td>
320 <td class="paramname">, </td>
321 </tr>
322 <tr>
323 <td class="paramkey"></td>
324 <td></td>
325 <td class="paramtype">dMatrix3&nbsp;</td>
326 <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
327 </tr>
328 <tr>
329 <td></td>
330 <td>)</td>
331 <td></td><td></td><td width="100%"></td>
332 </tr>
333 </table>
334</div>
335<div class="memdoc">
336
337<p>
338Copy the rotation of a body.
339<p>
340<dl compact><dt><b>Parameters:</b></dt><dd>
341 <table border="0" cellspacing="2" cellpadding="0">
342 <tr><td valign="top"></td><td valign="top"><em>body</em>&nbsp;</td><td>the body to query </td></tr>
343 <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>a copy of the rotation matrix </td></tr>
344 </table>
345</dl>
346<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#g2374da7ff88a2bac607e2fbce529ad27" title="Get the rotation of a body.">dBodyGetRotation</a> </dd></dl>
347
348</div>
349</div><p>
350<a class="anchor" name="g578137bbaf82d4b8896d2baee3a032a6"></a><!-- doxytag: member="objects.h::dBodyCreate" ref="g578137bbaf82d4b8896d2baee3a032a6" args="(dWorldID)" -->
351<div class="memitem">
352<div class="memproto">
353 <table class="memname">
354 <tr>
355 <td class="memname">ODE_API dBodyID dBodyCreate </td>
356 <td>(</td>
357 <td class="paramtype">dWorldID&nbsp;</td>
358 <td class="paramname"> </td>
359 <td>&nbsp;)&nbsp;</td>
360 <td width="100%"></td>
361 </tr>
362 </table>
363</div>
364<div class="memdoc">
365
366<p>
367Create a body in given world.
368<p>
369<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Default mass parameters are at position (0,0,0). </dd></dl>
370
371</div>
372</div><p>
373<a class="anchor" name="gc1a0ee96898f14017a29b2afa0eafe13"></a><!-- doxytag: member="objects.h::dBodyDestroy" ref="gc1a0ee96898f14017a29b2afa0eafe13" args="(dBodyID)" -->
374<div class="memitem">
375<div class="memproto">
376 <table class="memname">
377 <tr>
378 <td class="memname">ODE_API void dBodyDestroy </td>
379 <td>(</td>
380 <td class="paramtype">dBodyID&nbsp;</td>
381 <td class="paramname"> </td>
382 <td>&nbsp;)&nbsp;</td>
383 <td width="100%"></td>
384 </tr>
385 </table>
386</div>
387<div class="memdoc">
388
389<p>
390Destroy a body.
391<p>
392<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>All joints that are attached to this body will be put into limbo: i.e. unattached and not affecting the simulation, but they will NOT be deleted. </dd></dl>
393
394</div>
395</div><p>
396<a class="anchor" name="ga78092d7cadae36373441aa9be7e6157"></a><!-- doxytag: member="objects.h::dBodyDisable" ref="ga78092d7cadae36373441aa9be7e6157" args="(dBodyID)" -->
397<div class="memitem">
398<div class="memproto">
399 <table class="memname">
400 <tr>
401 <td class="memname">ODE_API void dBodyDisable </td>
402 <td>(</td>
403 <td class="paramtype">dBodyID&nbsp;</td>
404 <td class="paramname"> </td>
405 <td>&nbsp;)&nbsp;</td>
406 <td width="100%"></td>
407 </tr>
408 </table>
409</div>
410<div class="memdoc">
411
412<p>
413Manually disable a body.
414<p>
415<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>A disabled body that is connected through a joint to an enabled body will be automatically re-enabled at the next simulation step. </dd></dl>
416
417</div>
418</div><p>
419<a class="anchor" name="gd0776c40f667b235f8642e10755543f8"></a><!-- doxytag: member="objects.h::dBodyEnable" ref="gd0776c40f667b235f8642e10755543f8" args="(dBodyID)" -->
420<div class="memitem">
421<div class="memproto">
422 <table class="memname">
423 <tr>
424 <td class="memname">ODE_API void dBodyEnable </td>
425 <td>(</td>
426 <td class="paramtype">dBodyID&nbsp;</td>
427 <td class="paramname"> </td>
428 <td>&nbsp;)&nbsp;</td>
429 <td width="100%"></td>
430 </tr>
431 </table>
432</div>
433<div class="memdoc">
434
435<p>
436Manually enable a body.
437<p>
438<dl compact><dt><b>Parameters:</b></dt><dd>
439 <table border="0" cellspacing="2" cellpadding="0">
440 <tr><td valign="top"></td><td valign="top"><em>dBodyID</em>&nbsp;</td><td>identification of body. </td></tr>
441 </table>
442</dl>
443
444</div>
445</div><p>
446<a class="anchor" name="g5b988719423e9bc3af1be2146872e2d6"></a><!-- doxytag: member="objects.h::dBodyGetAutoDisableAngularThreshold" ref="g5b988719423e9bc3af1be2146872e2d6" args="(dBodyID)" -->
447<div class="memitem">
448<div class="memproto">
449 <table class="memname">
450 <tr>
451 <td class="memname">ODE_API dReal dBodyGetAutoDisableAngularThreshold </td>
452 <td>(</td>
453 <td class="paramtype">dBodyID&nbsp;</td>
454 <td class="paramname"> </td>
455 <td>&nbsp;)&nbsp;</td>
456 <td width="100%"></td>
457 </tr>
458 </table>
459</div>
460<div class="memdoc">
461
462<p>
463Get auto disable angular average threshold.
464<p>
465<dl class="return" compact><dt><b>Returns:</b></dt><dd>the threshold </dd></dl>
466
467</div>
468</div><p>
469<a class="anchor" name="gf398254a02ab5bedcdf7e4fb2918a902"></a><!-- doxytag: member="objects.h::dBodyGetAutoDisableAverageSamplesCount" ref="gf398254a02ab5bedcdf7e4fb2918a902" args="(dBodyID)" -->
470<div class="memitem">
471<div class="memproto">
472 <table class="memname">
473 <tr>
474 <td class="memname">ODE_API int dBodyGetAutoDisableAverageSamplesCount </td>
475 <td>(</td>
476 <td class="paramtype">dBodyID&nbsp;</td>
477 <td class="paramname"> </td>
478 <td>&nbsp;)&nbsp;</td>
479 <td width="100%"></td>
480 </tr>
481 </table>
482</div>
483<div class="memdoc">
484
485<p>
486Get auto disable average size (samples count).
487<p>
488<dl class="return" compact><dt><b>Returns:</b></dt><dd>the nr of steps/size. </dd></dl>
489
490</div>
491</div><p>
492<a class="anchor" name="gfe44b3ae620abb1091472089cb07f64e"></a><!-- doxytag: member="objects.h::dBodyGetAutoDisableFlag" ref="gfe44b3ae620abb1091472089cb07f64e" args="(dBodyID)" -->
493<div class="memitem">
494<div class="memproto">
495 <table class="memname">
496 <tr>
497 <td class="memname">ODE_API int dBodyGetAutoDisableFlag </td>
498 <td>(</td>
499 <td class="paramtype">dBodyID&nbsp;</td>
500 <td class="paramname"> </td>
501 <td>&nbsp;)&nbsp;</td>
502 <td width="100%"></td>
503 </tr>
504 </table>
505</div>
506<div class="memdoc">
507
508<p>
509Get auto disable flag.
510<p>
511<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 or 1 </dd></dl>
512
513</div>
514</div><p>
515<a class="anchor" name="g57c1e1b1bd50fdcafc5140c1ed89c7d7"></a><!-- doxytag: member="objects.h::dBodyGetAutoDisableLinearThreshold" ref="g57c1e1b1bd50fdcafc5140c1ed89c7d7" args="(dBodyID)" -->
516<div class="memitem">
517<div class="memproto">
518 <table class="memname">
519 <tr>
520 <td class="memname">ODE_API dReal dBodyGetAutoDisableLinearThreshold </td>
521 <td>(</td>
522 <td class="paramtype">dBodyID&nbsp;</td>
523 <td class="paramname"> </td>
524 <td>&nbsp;)&nbsp;</td>
525 <td width="100%"></td>
526 </tr>
527 </table>
528</div>
529<div class="memdoc">
530
531<p>
532Get auto disable linear average threshold.
533<p>
534<dl class="return" compact><dt><b>Returns:</b></dt><dd>the threshold </dd></dl>
535
536</div>
537</div><p>
538<a class="anchor" name="g797ad84c737a2ae4ef3f8a37dfa02183"></a><!-- doxytag: member="objects.h::dBodyGetAutoDisableSteps" ref="g797ad84c737a2ae4ef3f8a37dfa02183" args="(dBodyID)" -->
539<div class="memitem">
540<div class="memproto">
541 <table class="memname">
542 <tr>
543 <td class="memname">ODE_API int dBodyGetAutoDisableSteps </td>
544 <td>(</td>
545 <td class="paramtype">dBodyID&nbsp;</td>
546 <td class="paramname"> </td>
547 <td>&nbsp;)&nbsp;</td>
548 <td width="100%"></td>
549 </tr>
550 </table>
551</div>
552<div class="memdoc">
553
554<p>
555Get auto steps a body must be thought of as idle to disable.
556<p>
557<dl class="return" compact><dt><b>Returns:</b></dt><dd>the nr of steps </dd></dl>
558
559</div>
560</div><p>
561<a class="anchor" name="ga2f4d01a8fb5c4d7e77efd5f0e4dd72b"></a><!-- doxytag: member="objects.h::dBodyGetAutoDisableTime" ref="ga2f4d01a8fb5c4d7e77efd5f0e4dd72b" args="(dBodyID)" -->
562<div class="memitem">
563<div class="memproto">
564 <table class="memname">
565 <tr>
566 <td class="memname">ODE_API dReal dBodyGetAutoDisableTime </td>
567 <td>(</td>
568 <td class="paramtype">dBodyID&nbsp;</td>
569 <td class="paramname"> </td>
570 <td>&nbsp;)&nbsp;</td>
571 <td width="100%"></td>
572 </tr>
573 </table>
574</div>
575<div class="memdoc">
576
577<p>
578Get auto disable time.
579<p>
580<dl class="return" compact><dt><b>Returns:</b></dt><dd>nr of seconds </dd></dl>
581
582</div>
583</div><p>
584<a class="anchor" name="g68d3d80c7476776dd4512d577bf70325"></a><!-- doxytag: member="objects.h::dBodyGetData" ref="g68d3d80c7476776dd4512d577bf70325" args="(dBodyID)" -->
585<div class="memitem">
586<div class="memproto">
587 <table class="memname">
588 <tr>
589 <td class="memname">ODE_API void* dBodyGetData </td>
590 <td>(</td>
591 <td class="paramtype">dBodyID&nbsp;</td>
592 <td class="paramname"> </td>
593 <td>&nbsp;)&nbsp;</td>
594 <td width="100%"></td>
595 </tr>
596 </table>
597</div>
598<div class="memdoc">
599
600<p>
601Get the body's user-data pointer.
602<p>
603<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the user's data. </dd></dl>
604
605</div>
606</div><p>
607<a class="anchor" name="gfc8853ff678be731881665ff7abf61ad"></a><!-- doxytag: member="objects.h::dBodyGetFiniteRotationAxis" ref="gfc8853ff678be731881665ff7abf61ad" args="(dBodyID, dVector3 result)" -->
608<div class="memitem">
609<div class="memproto">
610 <table class="memname">
611 <tr>
612 <td class="memname">ODE_API void dBodyGetFiniteRotationAxis </td>
613 <td>(</td>
614 <td class="paramtype">dBodyID&nbsp;</td>
615 <td class="paramname">, </td>
616 </tr>
617 <tr>
618 <td class="paramkey"></td>
619 <td></td>
620 <td class="paramtype">dVector3&nbsp;</td>
621 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
622 </tr>
623 <tr>
624 <td></td>
625 <td>)</td>
626 <td></td><td></td><td width="100%"></td>
627 </tr>
628 </table>
629</div>
630<div class="memdoc">
631
632<p>
633Get the finite rotation axis.
634<p>
635<dl compact><dt><b>Parameters:</b></dt><dd>
636 <table border="0" cellspacing="2" cellpadding="0">
637 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>will contain the axis. </td></tr>
638 </table>
639</dl>
640
641</div>
642</div><p>
643<a class="anchor" name="g3fb10ac984d64c92e4f138e50b704f9e"></a><!-- doxytag: member="objects.h::dBodyGetFiniteRotationMode" ref="g3fb10ac984d64c92e4f138e50b704f9e" args="(dBodyID)" -->
644<div class="memitem">
645<div class="memproto">
646 <table class="memname">
647 <tr>
648 <td class="memname">ODE_API int dBodyGetFiniteRotationMode </td>
649 <td>(</td>
650 <td class="paramtype">dBodyID&nbsp;</td>
651 <td class="paramname"> </td>
652 <td>&nbsp;)&nbsp;</td>
653 <td width="100%"></td>
654 </tr>
655 </table>
656</div>
657<div class="memdoc">
658
659<p>
660Get the way a body's orientation is updated each timestep.
661<p>
662<dl class="return" compact><dt><b>Returns:</b></dt><dd>the mode 0 (infitesimal) or 1 (finite). </dd></dl>
663
664</div>
665</div><p>
666<a class="anchor" name="g3b458397a79f09b1957cb6e5a85e9eba"></a><!-- doxytag: member="objects.h::dBodyGetForce" ref="g3b458397a79f09b1957cb6e5a85e9eba" args="(dBodyID)" -->
667<div class="memitem">
668<div class="memproto">
669 <table class="memname">
670 <tr>
671 <td class="memname">ODE_API const dReal* dBodyGetForce </td>
672 <td>(</td>
673 <td class="paramtype">dBodyID&nbsp;</td>
674 <td class="paramname"> </td>
675 <td>&nbsp;)&nbsp;</td>
676 <td width="100%"></td>
677 </tr>
678 </table>
679</div>
680<div class="memdoc">
681
682<p>
683Return the current accumulated force vector.
684<p>
685<dl class="return" compact><dt><b>Returns:</b></dt><dd>points to an array of 3 reals. </dd></dl>
686<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned values are pointers to internal data structures, so the vectors are only valid until any changes are made to the rigid body system. </dd></dl>
687
688</div>
689</div><p>
690<a class="anchor" name="g0df2f4fed454c567f10fc8bbb8c70455"></a><!-- doxytag: member="objects.h::dBodyGetGravityMode" ref="g0df2f4fed454c567f10fc8bbb8c70455" args="(dBodyID b)" -->
691<div class="memitem">
692<div class="memproto">
693 <table class="memname">
694 <tr>
695 <td class="memname">ODE_API int dBodyGetGravityMode </td>
696 <td>(</td>
697 <td class="paramtype">dBodyID&nbsp;</td>
698 <td class="paramname"> <em>b</em> </td>
699 <td>&nbsp;)&nbsp;</td>
700 <td width="100%"></td>
701 </tr>
702 </table>
703</div>
704<div class="memdoc">
705
706<p>
707Get whether the body is influenced by the world's gravity or not.
708<p>
709<dl class="return" compact><dt><b>Returns:</b></dt><dd>nonzero means gravity affects this body. </dd></dl>
710
711</div>
712</div><p>
713<a class="anchor" name="g095e41c5b5632b22aa9bd1a4bd051f8d"></a><!-- doxytag: member="objects.h::dBodyGetJoint" ref="g095e41c5b5632b22aa9bd1a4bd051f8d" args="(dBodyID, int index)" -->
714<div class="memitem">
715<div class="memproto">
716 <table class="memname">
717 <tr>
718 <td class="memname">ODE_API dJointID dBodyGetJoint </td>
719 <td>(</td>
720 <td class="paramtype">dBodyID&nbsp;</td>
721 <td class="paramname">, </td>
722 </tr>
723 <tr>
724 <td class="paramkey"></td>
725 <td></td>
726 <td class="paramtype">int&nbsp;</td>
727 <td class="paramname"> <em>index</em></td><td>&nbsp;</td>
728 </tr>
729 <tr>
730 <td></td>
731 <td>)</td>
732 <td></td><td></td><td width="100%"></td>
733 </tr>
734 </table>
735</div>
736<div class="memdoc">
737
738<p>
739Return a joint attached to this body, given by index.
740<p>
741<dl compact><dt><b>Parameters:</b></dt><dd>
742 <table border="0" cellspacing="2" cellpadding="0">
743 <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>valid range is 0 to n-1 where n is the value returned by <a class="el" href="group__bodies.html#g79fd517a57ac9c3594cb71850f649af7" title="Get the number of joints that are attached to this body.">dBodyGetNumJoints()</a>. </td></tr>
744 </table>
745</dl>
746
747</div>
748</div><p>
749<a class="anchor" name="g79fd517a57ac9c3594cb71850f649af7"></a><!-- doxytag: member="objects.h::dBodyGetNumJoints" ref="g79fd517a57ac9c3594cb71850f649af7" args="(dBodyID b)" -->
750<div class="memitem">
751<div class="memproto">
752 <table class="memname">
753 <tr>
754 <td class="memname">ODE_API int dBodyGetNumJoints </td>
755 <td>(</td>
756 <td class="paramtype">dBodyID&nbsp;</td>
757 <td class="paramname"> <em>b</em> </td>
758 <td>&nbsp;)&nbsp;</td>
759 <td width="100%"></td>
760 </tr>
761 </table>
762</div>
763<div class="memdoc">
764
765<p>
766Get the number of joints that are attached to this body.
767<p>
768<dl class="return" compact><dt><b>Returns:</b></dt><dd>nr of joints </dd></dl>
769
770</div>
771</div><p>
772<a class="anchor" name="g89dd6a4a3c6f3cd98c8377e8d4dec015"></a><!-- doxytag: member="objects.h::dBodyGetPointVel" ref="g89dd6a4a3c6f3cd98c8377e8d4dec015" args="(dBodyID, dReal px, dReal py, dReal pz, dVector3 result)" -->
773<div class="memitem">
774<div class="memproto">
775 <table class="memname">
776 <tr>
777 <td class="memname">ODE_API void dBodyGetPointVel </td>
778 <td>(</td>
779 <td class="paramtype">dBodyID&nbsp;</td>
780 <td class="paramname">, </td>
781 </tr>
782 <tr>
783 <td class="paramkey"></td>
784 <td></td>
785 <td class="paramtype">dReal&nbsp;</td>
786 <td class="paramname"> <em>px</em>, </td>
787 </tr>
788 <tr>
789 <td class="paramkey"></td>
790 <td></td>
791 <td class="paramtype">dReal&nbsp;</td>
792 <td class="paramname"> <em>py</em>, </td>
793 </tr>
794 <tr>
795 <td class="paramkey"></td>
796 <td></td>
797 <td class="paramtype">dReal&nbsp;</td>
798 <td class="paramname"> <em>pz</em>, </td>
799 </tr>
800 <tr>
801 <td class="paramkey"></td>
802 <td></td>
803 <td class="paramtype">dVector3&nbsp;</td>
804 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
805 </tr>
806 <tr>
807 <td></td>
808 <td>)</td>
809 <td></td><td></td><td width="100%"></td>
810 </tr>
811 </table>
812</div>
813<div class="memdoc">
814
815<p>
816Get velocity vector in global coords of a globally specified point on a body.
817<p>
818<dl compact><dt><b>Parameters:</b></dt><dd>
819 <table border="0" cellspacing="2" cellpadding="0">
820 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>will contain the result. </td></tr>
821 </table>
822</dl>
823
824</div>
825</div><p>
826<a class="anchor" name="g2bddae29591b9f14c5175411b783d570"></a><!-- doxytag: member="objects.h::dBodyGetPosition" ref="g2bddae29591b9f14c5175411b783d570" args="(dBodyID)" -->
827<div class="memitem">
828<div class="memproto">
829 <table class="memname">
830 <tr>
831 <td class="memname">ODE_API const dReal* dBodyGetPosition </td>
832 <td>(</td>
833 <td class="paramtype">dBodyID&nbsp;</td>
834 <td class="paramname"> </td>
835 <td>&nbsp;)&nbsp;</td>
836 <td width="100%"></td>
837 </tr>
838 </table>
839</div>
840<div class="memdoc">
841
842<p>
843Get the position of a body.
844<p>
845<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>When getting, the returned values are pointers to internal data structures, so the vectors are valid until any changes are made to the rigid body system structure. </dd></dl>
846<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#gf69c1ebd1c8d7d165fe740c9f1146217" title="Copy the position of a body into a vector.">dBodyCopyPosition</a> </dd></dl>
847
848</div>
849</div><p>
850<a class="anchor" name="g0334d9d523cbfeec742ac4a814834199"></a><!-- doxytag: member="objects.h::dBodyGetPosRelPoint" ref="g0334d9d523cbfeec742ac4a814834199" args="(dBodyID, dReal px, dReal py, dReal pz, dVector3 result)" -->
851<div class="memitem">
852<div class="memproto">
853 <table class="memname">
854 <tr>
855 <td class="memname">ODE_API void dBodyGetPosRelPoint </td>
856 <td>(</td>
857 <td class="paramtype">dBodyID&nbsp;</td>
858 <td class="paramname">, </td>
859 </tr>
860 <tr>
861 <td class="paramkey"></td>
862 <td></td>
863 <td class="paramtype">dReal&nbsp;</td>
864 <td class="paramname"> <em>px</em>, </td>
865 </tr>
866 <tr>
867 <td class="paramkey"></td>
868 <td></td>
869 <td class="paramtype">dReal&nbsp;</td>
870 <td class="paramname"> <em>py</em>, </td>
871 </tr>
872 <tr>
873 <td class="paramkey"></td>
874 <td></td>
875 <td class="paramtype">dReal&nbsp;</td>
876 <td class="paramname"> <em>pz</em>, </td>
877 </tr>
878 <tr>
879 <td class="paramkey"></td>
880 <td></td>
881 <td class="paramtype">dVector3&nbsp;</td>
882 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
883 </tr>
884 <tr>
885 <td></td>
886 <td>)</td>
887 <td></td><td></td><td width="100%"></td>
888 </tr>
889 </table>
890</div>
891<div class="memdoc">
892
893<p>
894takes a point in global coordinates and returns the point's position in body-relative coordinates.
895<p>
896<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This is the inverse of <a class="el" href="group__bodies.html#gfcf00cd9c4c754c82189fb9d1eb9f102" title="Get world position of a relative point on body.">dBodyGetRelPointPos()</a></dd></dl>
897<dl compact><dt><b>Parameters:</b></dt><dd>
898 <table border="0" cellspacing="2" cellpadding="0">
899 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>will contain the result. </td></tr>
900 </table>
901</dl>
902
903</div>
904</div><p>
905<a class="anchor" name="g36b7e19622ed47fe6b9dcfbac20237e7"></a><!-- doxytag: member="objects.h::dBodyGetQuaternion" ref="g36b7e19622ed47fe6b9dcfbac20237e7" args="(dBodyID)" -->
906<div class="memitem">
907<div class="memproto">
908 <table class="memname">
909 <tr>
910 <td class="memname">ODE_API const dReal* dBodyGetQuaternion </td>
911 <td>(</td>
912 <td class="paramtype">dBodyID&nbsp;</td>
913 <td class="paramname"> </td>
914 <td>&nbsp;)&nbsp;</td>
915 <td width="100%"></td>
916 </tr>
917 </table>
918</div>
919<div class="memdoc">
920
921<p>
922Get the rotation of a body.
923<p>
924<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to 4 scalars that represent the quaternion. </dd></dl>
925
926</div>
927</div><p>
928<a class="anchor" name="gfcf00cd9c4c754c82189fb9d1eb9f102"></a><!-- doxytag: member="objects.h::dBodyGetRelPointPos" ref="gfcf00cd9c4c754c82189fb9d1eb9f102" args="(dBodyID, dReal px, dReal py, dReal pz, dVector3 result)" -->
929<div class="memitem">
930<div class="memproto">
931 <table class="memname">
932 <tr>
933 <td class="memname">ODE_API void dBodyGetRelPointPos </td>
934 <td>(</td>
935 <td class="paramtype">dBodyID&nbsp;</td>
936 <td class="paramname">, </td>
937 </tr>
938 <tr>
939 <td class="paramkey"></td>
940 <td></td>
941 <td class="paramtype">dReal&nbsp;</td>
942 <td class="paramname"> <em>px</em>, </td>
943 </tr>
944 <tr>
945 <td class="paramkey"></td>
946 <td></td>
947 <td class="paramtype">dReal&nbsp;</td>
948 <td class="paramname"> <em>py</em>, </td>
949 </tr>
950 <tr>
951 <td class="paramkey"></td>
952 <td></td>
953 <td class="paramtype">dReal&nbsp;</td>
954 <td class="paramname"> <em>pz</em>, </td>
955 </tr>
956 <tr>
957 <td class="paramkey"></td>
958 <td></td>
959 <td class="paramtype">dVector3&nbsp;</td>
960 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
961 </tr>
962 <tr>
963 <td></td>
964 <td>)</td>
965 <td></td><td></td><td width="100%"></td>
966 </tr>
967 </table>
968</div>
969<div class="memdoc">
970
971<p>
972Get world position of a relative point on body.
973<p>
974<dl compact><dt><b>Parameters:</b></dt><dd>
975 <table border="0" cellspacing="2" cellpadding="0">
976 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>will contain the result. </td></tr>
977 </table>
978</dl>
979
980</div>
981</div><p>
982<a class="anchor" name="g7fd4f4c7e70c59380da11277b2e97510"></a><!-- doxytag: member="objects.h::dBodyGetRelPointVel" ref="g7fd4f4c7e70c59380da11277b2e97510" args="(dBodyID, dReal px, dReal py, dReal pz, dVector3 result)" -->
983<div class="memitem">
984<div class="memproto">
985 <table class="memname">
986 <tr>
987 <td class="memname">ODE_API void dBodyGetRelPointVel </td>
988 <td>(</td>
989 <td class="paramtype">dBodyID&nbsp;</td>
990 <td class="paramname">, </td>
991 </tr>
992 <tr>
993 <td class="paramkey"></td>
994 <td></td>
995 <td class="paramtype">dReal&nbsp;</td>
996 <td class="paramname"> <em>px</em>, </td>
997 </tr>
998 <tr>
999 <td class="paramkey"></td>
1000 <td></td>
1001 <td class="paramtype">dReal&nbsp;</td>
1002 <td class="paramname"> <em>py</em>, </td>
1003 </tr>
1004 <tr>
1005 <td class="paramkey"></td>
1006 <td></td>
1007 <td class="paramtype">dReal&nbsp;</td>
1008 <td class="paramname"> <em>pz</em>, </td>
1009 </tr>
1010 <tr>
1011 <td class="paramkey"></td>
1012 <td></td>
1013 <td class="paramtype">dVector3&nbsp;</td>
1014 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1015 </tr>
1016 <tr>
1017 <td></td>
1018 <td>)</td>
1019 <td></td><td></td><td width="100%"></td>
1020 </tr>
1021 </table>
1022</div>
1023<div class="memdoc">
1024
1025<p>
1026Get velocity vector in global coords of a relative point on body.
1027<p>
1028<dl compact><dt><b>Parameters:</b></dt><dd>
1029 <table border="0" cellspacing="2" cellpadding="0">
1030 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>will contain the result. </td></tr>
1031 </table>
1032</dl>
1033
1034</div>
1035</div><p>
1036<a class="anchor" name="g2374da7ff88a2bac607e2fbce529ad27"></a><!-- doxytag: member="objects.h::dBodyGetRotation" ref="g2374da7ff88a2bac607e2fbce529ad27" args="(dBodyID)" -->
1037<div class="memitem">
1038<div class="memproto">
1039 <table class="memname">
1040 <tr>
1041 <td class="memname">ODE_API const dReal* dBodyGetRotation </td>
1042 <td>(</td>
1043 <td class="paramtype">dBodyID&nbsp;</td>
1044 <td class="paramname"> </td>
1045 <td>&nbsp;)&nbsp;</td>
1046 <td width="100%"></td>
1047 </tr>
1048 </table>
1049</div>
1050<div class="memdoc">
1051
1052<p>
1053Get the rotation of a body.
1054<p>
1055<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to a 4x3 rotation matrix. </dd></dl>
1056
1057</div>
1058</div><p>
1059<a class="anchor" name="gfe88a5bc363fc812c8f154e3d5f8ea5d"></a><!-- doxytag: member="objects.h::dBodyGetTorque" ref="gfe88a5bc363fc812c8f154e3d5f8ea5d" args="(dBodyID)" -->
1060<div class="memitem">
1061<div class="memproto">
1062 <table class="memname">
1063 <tr>
1064 <td class="memname">ODE_API const dReal* dBodyGetTorque </td>
1065 <td>(</td>
1066 <td class="paramtype">dBodyID&nbsp;</td>
1067 <td class="paramname"> </td>
1068 <td>&nbsp;)&nbsp;</td>
1069 <td width="100%"></td>
1070 </tr>
1071 </table>
1072</div>
1073<div class="memdoc">
1074
1075<p>
1076Return the current accumulated torque vector.
1077<p>
1078<dl class="return" compact><dt><b>Returns:</b></dt><dd>points to an array of 3 reals. </dd></dl>
1079<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned values are pointers to internal data structures, so the vectors are only valid until any changes are made to the rigid body system. </dd></dl>
1080
1081</div>
1082</div><p>
1083<a class="anchor" name="gb044b0a466f2ec2af3fd29ae399e822e"></a><!-- doxytag: member="objects.h::dBodyGetWorld" ref="gb044b0a466f2ec2af3fd29ae399e822e" args="(dBodyID)" -->
1084<div class="memitem">
1085<div class="memproto">
1086 <table class="memname">
1087 <tr>
1088 <td class="memname">ODE_API dWorldID dBodyGetWorld </td>
1089 <td>(</td>
1090 <td class="paramtype">dBodyID&nbsp;</td>
1091 <td class="paramname"> </td>
1092 <td>&nbsp;)&nbsp;</td>
1093 <td width="100%"></td>
1094 </tr>
1095 </table>
1096</div>
1097<div class="memdoc">
1098
1099<p>
1100Retrives the world attached to te given body.
1101<p>
1102<dl class="remark" compact><dt><b>Remarks:</b></dt><dd></dd></dl>
1103
1104</div>
1105</div><p>
1106<a class="anchor" name="g7e7803132dfcfceee04a6ab0ca1e0bf8"></a><!-- doxytag: member="objects.h::dBodyIsEnabled" ref="g7e7803132dfcfceee04a6ab0ca1e0bf8" args="(dBodyID)" -->
1107<div class="memitem">
1108<div class="memproto">
1109 <table class="memname">
1110 <tr>
1111 <td class="memname">ODE_API int dBodyIsEnabled </td>
1112 <td>(</td>
1113 <td class="paramtype">dBodyID&nbsp;</td>
1114 <td class="paramname"> </td>
1115 <td>&nbsp;)&nbsp;</td>
1116 <td width="100%"></td>
1117 </tr>
1118 </table>
1119</div>
1120<div class="memdoc">
1121
1122<p>
1123Check wether a body is enabled.
1124<p>
1125<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if a body is currently enabled or 0 if it is disabled. </dd></dl>
1126
1127</div>
1128</div><p>
1129<a class="anchor" name="g206ccf22f027a62aaf5e45a16ddc4040"></a><!-- doxytag: member="objects.h::dBodySetAutoDisableAngularThreshold" ref="g206ccf22f027a62aaf5e45a16ddc4040" args="(dBodyID, dReal angular_average_threshold)" -->
1130<div class="memitem">
1131<div class="memproto">
1132 <table class="memname">
1133 <tr>
1134 <td class="memname">ODE_API void dBodySetAutoDisableAngularThreshold </td>
1135 <td>(</td>
1136 <td class="paramtype">dBodyID&nbsp;</td>
1137 <td class="paramname">, </td>
1138 </tr>
1139 <tr>
1140 <td class="paramkey"></td>
1141 <td></td>
1142 <td class="paramtype">dReal&nbsp;</td>
1143 <td class="paramname"> <em>angular_average_threshold</em></td><td>&nbsp;</td>
1144 </tr>
1145 <tr>
1146 <td></td>
1147 <td>)</td>
1148 <td></td><td></td><td width="100%"></td>
1149 </tr>
1150 </table>
1151</div>
1152<div class="memdoc">
1153
1154<p>
1155Set auto disable angular average threshold.
1156<p>
1157<dl class="return" compact><dt><b>Returns:</b></dt><dd>the threshold </dd></dl>
1158
1159</div>
1160</div><p>
1161<a class="anchor" name="g4bce13aaa5ffb7d4b3452191974c3be6"></a><!-- doxytag: member="objects.h::dBodySetAutoDisableAverageSamplesCount" ref="g4bce13aaa5ffb7d4b3452191974c3be6" args="(dBodyID, unsigned int average_samples_count)" -->
1162<div class="memitem">
1163<div class="memproto">
1164 <table class="memname">
1165 <tr>
1166 <td class="memname">ODE_API void dBodySetAutoDisableAverageSamplesCount </td>
1167 <td>(</td>
1168 <td class="paramtype">dBodyID&nbsp;</td>
1169 <td class="paramname">, </td>
1170 </tr>
1171 <tr>
1172 <td class="paramkey"></td>
1173 <td></td>
1174 <td class="paramtype">unsigned int&nbsp;</td>
1175 <td class="paramname"> <em>average_samples_count</em></td><td>&nbsp;</td>
1176 </tr>
1177 <tr>
1178 <td></td>
1179 <td>)</td>
1180 <td></td><td></td><td width="100%"></td>
1181 </tr>
1182 </table>
1183</div>
1184<div class="memdoc">
1185
1186<p>
1187Set auto disable average buffer size (average steps).
1188<p>
1189<dl compact><dt><b>Parameters:</b></dt><dd>
1190 <table border="0" cellspacing="2" cellpadding="0">
1191 <tr><td valign="top"></td><td valign="top"><em>average_samples_count</em>&nbsp;</td><td>the nr of samples to review. </td></tr>
1192 </table>
1193</dl>
1194
1195</div>
1196</div><p>
1197<a class="anchor" name="g00969db4aebc2e8629cd9c45f3b7385e"></a><!-- doxytag: member="objects.h::dBodySetAutoDisableDefaults" ref="g00969db4aebc2e8629cd9c45f3b7385e" args="(dBodyID)" -->
1198<div class="memitem">
1199<div class="memproto">
1200 <table class="memname">
1201 <tr>
1202 <td class="memname">ODE_API void dBodySetAutoDisableDefaults </td>
1203 <td>(</td>
1204 <td class="paramtype">dBodyID&nbsp;</td>
1205 <td class="paramname"> </td>
1206 <td>&nbsp;)&nbsp;</td>
1207 <td width="100%"></td>
1208 </tr>
1209 </table>
1210</div>
1211<div class="memdoc">
1212
1213<p>
1214Set auto disable defaults.
1215<p>
1216<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Set the values for the body to those set as default for the world. </dd></dl>
1217
1218</div>
1219</div><p>
1220<a class="anchor" name="ge352fdcd8851224f07da53f35691ceb7"></a><!-- doxytag: member="objects.h::dBodySetAutoDisableFlag" ref="ge352fdcd8851224f07da53f35691ceb7" args="(dBodyID, int do_auto_disable)" -->
1221<div class="memitem">
1222<div class="memproto">
1223 <table class="memname">
1224 <tr>
1225 <td class="memname">ODE_API void dBodySetAutoDisableFlag </td>
1226 <td>(</td>
1227 <td class="paramtype">dBodyID&nbsp;</td>
1228 <td class="paramname">, </td>
1229 </tr>
1230 <tr>
1231 <td class="paramkey"></td>
1232 <td></td>
1233 <td class="paramtype">int&nbsp;</td>
1234 <td class="paramname"> <em>do_auto_disable</em></td><td>&nbsp;</td>
1235 </tr>
1236 <tr>
1237 <td></td>
1238 <td>)</td>
1239 <td></td><td></td><td width="100%"></td>
1240 </tr>
1241 </table>
1242</div>
1243<div class="memdoc">
1244
1245<p>
1246Set auto disable flag.
1247<p>
1248<dl compact><dt><b>Parameters:</b></dt><dd>
1249 <table border="0" cellspacing="2" cellpadding="0">
1250 <tr><td valign="top"></td><td valign="top"><em>do_auto_disable</em>&nbsp;</td><td>0 or 1 </td></tr>
1251 </table>
1252</dl>
1253
1254</div>
1255</div><p>
1256<a class="anchor" name="gb8f6e736830cfea86c35e7a0cdfa3112"></a><!-- doxytag: member="objects.h::dBodySetAutoDisableLinearThreshold" ref="gb8f6e736830cfea86c35e7a0cdfa3112" args="(dBodyID, dReal linear_average_threshold)" -->
1257<div class="memitem">
1258<div class="memproto">
1259 <table class="memname">
1260 <tr>
1261 <td class="memname">ODE_API void dBodySetAutoDisableLinearThreshold </td>
1262 <td>(</td>
1263 <td class="paramtype">dBodyID&nbsp;</td>
1264 <td class="paramname">, </td>
1265 </tr>
1266 <tr>
1267 <td class="paramkey"></td>
1268 <td></td>
1269 <td class="paramtype">dReal&nbsp;</td>
1270 <td class="paramname"> <em>linear_average_threshold</em></td><td>&nbsp;</td>
1271 </tr>
1272 <tr>
1273 <td></td>
1274 <td>)</td>
1275 <td></td><td></td><td width="100%"></td>
1276 </tr>
1277 </table>
1278</div>
1279<div class="memdoc">
1280
1281<p>
1282Set auto disable linear average threshold.
1283<p>
1284<dl class="return" compact><dt><b>Returns:</b></dt><dd>the threshold </dd></dl>
1285
1286</div>
1287</div><p>
1288<a class="anchor" name="g03cc329bdc8e19e59c4bfe62cf736578"></a><!-- doxytag: member="objects.h::dBodySetAutoDisableSteps" ref="g03cc329bdc8e19e59c4bfe62cf736578" args="(dBodyID, int steps)" -->
1289<div class="memitem">
1290<div class="memproto">
1291 <table class="memname">
1292 <tr>
1293 <td class="memname">ODE_API void dBodySetAutoDisableSteps </td>
1294 <td>(</td>
1295 <td class="paramtype">dBodyID&nbsp;</td>
1296 <td class="paramname">, </td>
1297 </tr>
1298 <tr>
1299 <td class="paramkey"></td>
1300 <td></td>
1301 <td class="paramtype">int&nbsp;</td>
1302 <td class="paramname"> <em>steps</em></td><td>&nbsp;</td>
1303 </tr>
1304 <tr>
1305 <td></td>
1306 <td>)</td>
1307 <td></td><td></td><td width="100%"></td>
1308 </tr>
1309 </table>
1310</div>
1311<div class="memdoc">
1312
1313<p>
1314Set auto disable steps.
1315<p>
1316<dl compact><dt><b>Parameters:</b></dt><dd>
1317 <table border="0" cellspacing="2" cellpadding="0">
1318 <tr><td valign="top"></td><td valign="top"><em>steps</em>&nbsp;</td><td>the nr of steps. </td></tr>
1319 </table>
1320</dl>
1321
1322</div>
1323</div><p>
1324<a class="anchor" name="g0ae2f08bb38359934151f9420cdef341"></a><!-- doxytag: member="objects.h::dBodySetAutoDisableTime" ref="g0ae2f08bb38359934151f9420cdef341" args="(dBodyID, dReal time)" -->
1325<div class="memitem">
1326<div class="memproto">
1327 <table class="memname">
1328 <tr>
1329 <td class="memname">ODE_API void dBodySetAutoDisableTime </td>
1330 <td>(</td>
1331 <td class="paramtype">dBodyID&nbsp;</td>
1332 <td class="paramname">, </td>
1333 </tr>
1334 <tr>
1335 <td class="paramkey"></td>
1336 <td></td>
1337 <td class="paramtype">dReal&nbsp;</td>
1338 <td class="paramname"> <em>time</em></td><td>&nbsp;</td>
1339 </tr>
1340 <tr>
1341 <td></td>
1342 <td>)</td>
1343 <td></td><td></td><td width="100%"></td>
1344 </tr>
1345 </table>
1346</div>
1347<div class="memdoc">
1348
1349<p>
1350Set auto disable time.
1351<p>
1352<dl compact><dt><b>Parameters:</b></dt><dd>
1353 <table border="0" cellspacing="2" cellpadding="0">
1354 <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>nr of seconds. </td></tr>
1355 </table>
1356</dl>
1357
1358</div>
1359</div><p>
1360<a class="anchor" name="gf9cbe9e1ed1bd4559bb5603b8d0f92f2"></a><!-- doxytag: member="objects.h::dBodySetData" ref="gf9cbe9e1ed1bd4559bb5603b8d0f92f2" args="(dBodyID, void *data)" -->
1361<div class="memitem">
1362<div class="memproto">
1363 <table class="memname">
1364 <tr>
1365 <td class="memname">ODE_API void dBodySetData </td>
1366 <td>(</td>
1367 <td class="paramtype">dBodyID&nbsp;</td>
1368 <td class="paramname">, </td>
1369 </tr>
1370 <tr>
1371 <td class="paramkey"></td>
1372 <td></td>
1373 <td class="paramtype">void *&nbsp;</td>
1374 <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
1375 </tr>
1376 <tr>
1377 <td></td>
1378 <td>)</td>
1379 <td></td><td></td><td width="100%"></td>
1380 </tr>
1381 </table>
1382</div>
1383<div class="memdoc">
1384
1385<p>
1386Set the body's user-data pointer.
1387<p>
1388<dl compact><dt><b>Parameters:</b></dt><dd>
1389 <table border="0" cellspacing="2" cellpadding="0">
1390 <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>arbitraty pointer </td></tr>
1391 </table>
1392</dl>
1393
1394</div>
1395</div><p>
1396<a class="anchor" name="ga9546c1ea6119fcbf80c71a96f56d052"></a><!-- doxytag: member="objects.h::dBodySetFiniteRotationAxis" ref="ga9546c1ea6119fcbf80c71a96f56d052" args="(dBodyID, dReal x, dReal y, dReal z)" -->
1397<div class="memitem">
1398<div class="memproto">
1399 <table class="memname">
1400 <tr>
1401 <td class="memname">ODE_API void dBodySetFiniteRotationAxis </td>
1402 <td>(</td>
1403 <td class="paramtype">dBodyID&nbsp;</td>
1404 <td class="paramname">, </td>
1405 </tr>
1406 <tr>
1407 <td class="paramkey"></td>
1408 <td></td>
1409 <td class="paramtype">dReal&nbsp;</td>
1410 <td class="paramname"> <em>x</em>, </td>
1411 </tr>
1412 <tr>
1413 <td class="paramkey"></td>
1414 <td></td>
1415 <td class="paramtype">dReal&nbsp;</td>
1416 <td class="paramname"> <em>y</em>, </td>
1417 </tr>
1418 <tr>
1419 <td class="paramkey"></td>
1420 <td></td>
1421 <td class="paramtype">dReal&nbsp;</td>
1422 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
1423 </tr>
1424 <tr>
1425 <td></td>
1426 <td>)</td>
1427 <td></td><td></td><td width="100%"></td>
1428 </tr>
1429 </table>
1430</div>
1431<div class="memdoc">
1432
1433<p>
1434sets the finite rotation axis for a body.
1435<p>
1436<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This is axis only has meaning when the finite rotation mode is set If this axis is zero (0,0,0), full finite rotations are performed on the body. If this axis is nonzero, the body is rotated by performing a partial finite rotation along the axis direction followed by an infinitesimal rotation along an orthogonal direction. <p>
1437This can be useful to alleviate certain sources of error caused by quickly spinning bodies. For example, if a car wheel is rotating at high speed you can call this function with the wheel's hinge axis as the argument to try and improve its behavior. </dd></dl>
1438
1439</div>
1440</div><p>
1441<a class="anchor" name="gc474ca36d734fb67b8bd504b672527fa"></a><!-- doxytag: member="objects.h::dBodySetFiniteRotationMode" ref="gc474ca36d734fb67b8bd504b672527fa" args="(dBodyID, int mode)" -->
1442<div class="memitem">
1443<div class="memproto">
1444 <table class="memname">
1445 <tr>
1446 <td class="memname">ODE_API void dBodySetFiniteRotationMode </td>
1447 <td>(</td>
1448 <td class="paramtype">dBodyID&nbsp;</td>
1449 <td class="paramname">, </td>
1450 </tr>
1451 <tr>
1452 <td class="paramkey"></td>
1453 <td></td>
1454 <td class="paramtype">int&nbsp;</td>
1455 <td class="paramname"> <em>mode</em></td><td>&nbsp;</td>
1456 </tr>
1457 <tr>
1458 <td></td>
1459 <td>)</td>
1460 <td></td><td></td><td width="100%"></td>
1461 </tr>
1462 </table>
1463</div>
1464<div class="memdoc">
1465
1466<p>
1467controls the way a body's orientation is updated at each timestep.
1468<p>
1469<dl compact><dt><b>Parameters:</b></dt><dd>
1470 <table border="0" cellspacing="2" cellpadding="0">
1471 <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>can be 0 or 1: <ul>
1472<li>0: An ``infinitesimal'' orientation update is used. This is fast to compute, but it can occasionally cause inaccuracies for bodies that are rotating at high speed, especially when those bodies are joined to other bodies. This is the default for every new body that is created. </li>
1473<li>1: A ``finite'' orientation update is used. This is more costly to compute, but will be more accurate for high speed rotations. </li>
1474</ul>
1475</td></tr>
1476 </table>
1477</dl>
1478<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Note however that high speed rotations can result in many types of error in a simulation, and the finite mode will only fix one of those sources of error. </dd></dl>
1479
1480</div>
1481</div><p>
1482<a class="anchor" name="gbd56079db36d4562db0e18aebea4f95f"></a><!-- doxytag: member="objects.h::dBodySetForce" ref="gbd56079db36d4562db0e18aebea4f95f" args="(dBodyID b, dReal x, dReal y, dReal z)" -->
1483<div class="memitem">
1484<div class="memproto">
1485 <table class="memname">
1486 <tr>
1487 <td class="memname">ODE_API void dBodySetForce </td>
1488 <td>(</td>
1489 <td class="paramtype">dBodyID&nbsp;</td>
1490 <td class="paramname"> <em>b</em>, </td>
1491 </tr>
1492 <tr>
1493 <td class="paramkey"></td>
1494 <td></td>
1495 <td class="paramtype">dReal&nbsp;</td>
1496 <td class="paramname"> <em>x</em>, </td>
1497 </tr>
1498 <tr>
1499 <td class="paramkey"></td>
1500 <td></td>
1501 <td class="paramtype">dReal&nbsp;</td>
1502 <td class="paramname"> <em>y</em>, </td>
1503 </tr>
1504 <tr>
1505 <td class="paramkey"></td>
1506 <td></td>
1507 <td class="paramtype">dReal&nbsp;</td>
1508 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
1509 </tr>
1510 <tr>
1511 <td></td>
1512 <td>)</td>
1513 <td></td><td></td><td width="100%"></td>
1514 </tr>
1515 </table>
1516</div>
1517<div class="memdoc">
1518
1519<p>
1520Set the body force accumulation vector.
1521<p>
1522<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This is mostly useful to zero the force and torque for deactivated bodies before they are reactivated, in the case where the force-adding functions were called on them while they were deactivated. </dd></dl>
1523
1524</div>
1525</div><p>
1526<a class="anchor" name="g5465d605e7fbe82d63a0d4e1000da731"></a><!-- doxytag: member="objects.h::dBodySetGravityMode" ref="g5465d605e7fbe82d63a0d4e1000da731" args="(dBodyID b, int mode)" -->
1527<div class="memitem">
1528<div class="memproto">
1529 <table class="memname">
1530 <tr>
1531 <td class="memname">ODE_API void dBodySetGravityMode </td>
1532 <td>(</td>
1533 <td class="paramtype">dBodyID&nbsp;</td>
1534 <td class="paramname"> <em>b</em>, </td>
1535 </tr>
1536 <tr>
1537 <td class="paramkey"></td>
1538 <td></td>
1539 <td class="paramtype">int&nbsp;</td>
1540 <td class="paramname"> <em>mode</em></td><td>&nbsp;</td>
1541 </tr>
1542 <tr>
1543 <td></td>
1544 <td>)</td>
1545 <td></td><td></td><td width="100%"></td>
1546 </tr>
1547 </table>
1548</div>
1549<div class="memdoc">
1550
1551<p>
1552Set whether the body is influenced by the world's gravity or not.
1553<p>
1554<dl compact><dt><b>Parameters:</b></dt><dd>
1555 <table border="0" cellspacing="2" cellpadding="0">
1556 <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>when nonzero gravity affects this body. </td></tr>
1557 </table>
1558</dl>
1559<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Newly created bodies are always influenced by the world's gravity. </dd></dl>
1560
1561</div>
1562</div><p>
1563<a class="anchor" name="gb84612b793366f18ff5b5cbdbed092da"></a><!-- doxytag: member="objects.h::dBodySetPosition" ref="gb84612b793366f18ff5b5cbdbed092da" args="(dBodyID, dReal x, dReal y, dReal z)" -->
1564<div class="memitem">
1565<div class="memproto">
1566 <table class="memname">
1567 <tr>
1568 <td class="memname">ODE_API void dBodySetPosition </td>
1569 <td>(</td>
1570 <td class="paramtype">dBodyID&nbsp;</td>
1571 <td class="paramname">, </td>
1572 </tr>
1573 <tr>
1574 <td class="paramkey"></td>
1575 <td></td>
1576 <td class="paramtype">dReal&nbsp;</td>
1577 <td class="paramname"> <em>x</em>, </td>
1578 </tr>
1579 <tr>
1580 <td class="paramkey"></td>
1581 <td></td>
1582 <td class="paramtype">dReal&nbsp;</td>
1583 <td class="paramname"> <em>y</em>, </td>
1584 </tr>
1585 <tr>
1586 <td class="paramkey"></td>
1587 <td></td>
1588 <td class="paramtype">dReal&nbsp;</td>
1589 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
1590 </tr>
1591 <tr>
1592 <td></td>
1593 <td>)</td>
1594 <td></td><td></td><td width="100%"></td>
1595 </tr>
1596 </table>
1597</div>
1598<div class="memdoc">
1599
1600<p>
1601Set position of a body.
1602<p>
1603<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>After setting, the outcome of the simulation is undefined if the new configuration is inconsistent with the joints/constraints that are present. </dd></dl>
1604
1605</div>
1606</div><p>
1607<a class="anchor" name="ga5f51dd3605c402320e9eae4231d7ad4"></a><!-- doxytag: member="objects.h::dBodySetQuaternion" ref="ga5f51dd3605c402320e9eae4231d7ad4" args="(dBodyID, const dQuaternion q)" -->
1608<div class="memitem">
1609<div class="memproto">
1610 <table class="memname">
1611 <tr>
1612 <td class="memname">ODE_API void dBodySetQuaternion </td>
1613 <td>(</td>
1614 <td class="paramtype">dBodyID&nbsp;</td>
1615 <td class="paramname">, </td>
1616 </tr>
1617 <tr>
1618 <td class="paramkey"></td>
1619 <td></td>
1620 <td class="paramtype">const dQuaternion&nbsp;</td>
1621 <td class="paramname"> <em>q</em></td><td>&nbsp;</td>
1622 </tr>
1623 <tr>
1624 <td></td>
1625 <td>)</td>
1626 <td></td><td></td><td width="100%"></td>
1627 </tr>
1628 </table>
1629</div>
1630<div class="memdoc">
1631
1632<p>
1633Set the orientation of a body.
1634<p>
1635<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>After setting, the outcome of the simulation is undefined if the new configuration is inconsistent with the joints/constraints that are present. </dd></dl>
1636
1637</div>
1638</div><p>
1639<a class="anchor" name="gb5f04968ec37ef46d2aaffad6c344468"></a><!-- doxytag: member="objects.h::dBodySetRotation" ref="gb5f04968ec37ef46d2aaffad6c344468" args="(dBodyID, const dMatrix3 R)" -->
1640<div class="memitem">
1641<div class="memproto">
1642 <table class="memname">
1643 <tr>
1644 <td class="memname">ODE_API void dBodySetRotation </td>
1645 <td>(</td>
1646 <td class="paramtype">dBodyID&nbsp;</td>
1647 <td class="paramname">, </td>
1648 </tr>
1649 <tr>
1650 <td class="paramkey"></td>
1651 <td></td>
1652 <td class="paramtype">const dMatrix3&nbsp;</td>
1653 <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
1654 </tr>
1655 <tr>
1656 <td></td>
1657 <td>)</td>
1658 <td></td><td></td><td width="100%"></td>
1659 </tr>
1660 </table>
1661</div>
1662<div class="memdoc">
1663
1664<p>
1665Set the orientation of a body.
1666<p>
1667<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>After setting, the outcome of the simulation is undefined if the new configuration is inconsistent with the joints/constraints that are present. </dd></dl>
1668
1669</div>
1670</div><p>
1671<a class="anchor" name="gfcd3e44223a878ba52428ad3a124fa94"></a><!-- doxytag: member="objects.h::dBodySetTorque" ref="gfcd3e44223a878ba52428ad3a124fa94" args="(dBodyID b, dReal x, dReal y, dReal z)" -->
1672<div class="memitem">
1673<div class="memproto">
1674 <table class="memname">
1675 <tr>
1676 <td class="memname">ODE_API void dBodySetTorque </td>
1677 <td>(</td>
1678 <td class="paramtype">dBodyID&nbsp;</td>
1679 <td class="paramname"> <em>b</em>, </td>
1680 </tr>
1681 <tr>
1682 <td class="paramkey"></td>
1683 <td></td>
1684 <td class="paramtype">dReal&nbsp;</td>
1685 <td class="paramname"> <em>x</em>, </td>
1686 </tr>
1687 <tr>
1688 <td class="paramkey"></td>
1689 <td></td>
1690 <td class="paramtype">dReal&nbsp;</td>
1691 <td class="paramname"> <em>y</em>, </td>
1692 </tr>
1693 <tr>
1694 <td class="paramkey"></td>
1695 <td></td>
1696 <td class="paramtype">dReal&nbsp;</td>
1697 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
1698 </tr>
1699 <tr>
1700 <td></td>
1701 <td>)</td>
1702 <td></td><td></td><td width="100%"></td>
1703 </tr>
1704 </table>
1705</div>
1706<div class="memdoc">
1707
1708<p>
1709Set the body torque accumulation vector.
1710<p>
1711<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This is mostly useful to zero the force and torque for deactivated bodies before they are reactivated, in the case where the force-adding functions were called on them while they were deactivated. </dd></dl>
1712
1713</div>
1714</div><p>
1715<a class="anchor" name="g1e3ac3ef038e806d4942ea8b399ab575"></a><!-- doxytag: member="objects.h::dBodyVectorFromWorld" ref="g1e3ac3ef038e806d4942ea8b399ab575" args="(dBodyID, dReal px, dReal py, dReal pz, dVector3 result)" -->
1716<div class="memitem">
1717<div class="memproto">
1718 <table class="memname">
1719 <tr>
1720 <td class="memname">ODE_API void dBodyVectorFromWorld </td>
1721 <td>(</td>
1722 <td class="paramtype">dBodyID&nbsp;</td>
1723 <td class="paramname">, </td>
1724 </tr>
1725 <tr>
1726 <td class="paramkey"></td>
1727 <td></td>
1728 <td class="paramtype">dReal&nbsp;</td>
1729 <td class="paramname"> <em>px</em>, </td>
1730 </tr>
1731 <tr>
1732 <td class="paramkey"></td>
1733 <td></td>
1734 <td class="paramtype">dReal&nbsp;</td>
1735 <td class="paramname"> <em>py</em>, </td>
1736 </tr>
1737 <tr>
1738 <td class="paramkey"></td>
1739 <td></td>
1740 <td class="paramtype">dReal&nbsp;</td>
1741 <td class="paramname"> <em>pz</em>, </td>
1742 </tr>
1743 <tr>
1744 <td class="paramkey"></td>
1745 <td></td>
1746 <td class="paramtype">dVector3&nbsp;</td>
1747 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1748 </tr>
1749 <tr>
1750 <td></td>
1751 <td>)</td>
1752 <td></td><td></td><td width="100%"></td>
1753 </tr>
1754 </table>
1755</div>
1756<div class="memdoc">
1757
1758<p>
1759Convert from world to local coordinates.
1760<p>
1761<dl compact><dt><b>Parameters:</b></dt><dd>
1762 <table border="0" cellspacing="2" cellpadding="0">
1763 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>will contain the result. </td></tr>
1764 </table>
1765</dl>
1766
1767</div>
1768</div><p>
1769<a class="anchor" name="g0a2cd6f7499bcfeb8275cbb981465bbf"></a><!-- doxytag: member="objects.h::dBodyVectorToWorld" ref="g0a2cd6f7499bcfeb8275cbb981465bbf" args="(dBodyID, dReal px, dReal py, dReal pz, dVector3 result)" -->
1770<div class="memitem">
1771<div class="memproto">
1772 <table class="memname">
1773 <tr>
1774 <td class="memname">ODE_API void dBodyVectorToWorld </td>
1775 <td>(</td>
1776 <td class="paramtype">dBodyID&nbsp;</td>
1777 <td class="paramname">, </td>
1778 </tr>
1779 <tr>
1780 <td class="paramkey"></td>
1781 <td></td>
1782 <td class="paramtype">dReal&nbsp;</td>
1783 <td class="paramname"> <em>px</em>, </td>
1784 </tr>
1785 <tr>
1786 <td class="paramkey"></td>
1787 <td></td>
1788 <td class="paramtype">dReal&nbsp;</td>
1789 <td class="paramname"> <em>py</em>, </td>
1790 </tr>
1791 <tr>
1792 <td class="paramkey"></td>
1793 <td></td>
1794 <td class="paramtype">dReal&nbsp;</td>
1795 <td class="paramname"> <em>pz</em>, </td>
1796 </tr>
1797 <tr>
1798 <td class="paramkey"></td>
1799 <td></td>
1800 <td class="paramtype">dVector3&nbsp;</td>
1801 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1802 </tr>
1803 <tr>
1804 <td></td>
1805 <td>)</td>
1806 <td></td><td></td><td width="100%"></td>
1807 </tr>
1808 </table>
1809</div>
1810<div class="memdoc">
1811
1812<p>
1813Convert from local to world coordinates.
1814<p>
1815<dl compact><dt><b>Parameters:</b></dt><dd>
1816 <table border="0" cellspacing="2" cellpadding="0">
1817 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>will contain the result. </td></tr>
1818 </table>
1819</dl>
1820
1821</div>
1822</div><p>
1823<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
1824<a href="http://www.doxygen.org/index.html">
1825<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
1826</body>
1827</html>
diff --git a/libraries/ode-0.9/docs/group__collide.html b/libraries/ode-0.9/docs/group__collide.html
new file mode 100644
index 0000000..c56e759
--- /dev/null
+++ b/libraries/ode-0.9/docs/group__collide.html
@@ -0,0 +1,2452 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Collision Detection</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>Collision Detection</h1><table border="0" cellpadding="0" cellspacing="0">
17<tr><td></td></tr>
18<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
19<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__sphere.html">Sphere Class</a></td></tr>
20
21<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__box.html">Box Class</a></td></tr>
22
23<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
24<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structd_contact_geom.html">dContactGeom</a></td></tr>
25
26<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Describe the contact point between two geoms. <a href="structd_contact_geom.html#_details">More...</a><br></td></tr>
27<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
28<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9">dHeightfieldGetHeight</a> (void *p_user_data, int x, int z)</td></tr>
29
30<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback prototype. <a href="#g32d2c58e3b2b589bd7672f3453102eb9"></a><br></td></tr>
31<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> (void *data, dGeomID o1, dGeomID o2)</td></tr>
32
33<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User callback for geom-geom collision testing. <a href="#g9f458413ace07fa9e3e7e52d6652ace0"></a><br></td></tr>
34<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
35<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6">dGeomDestroy</a> (dGeomID geom)</td></tr>
36
37<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a geom, removing it from any space. <a href="#g96b9e7d3a7ca769b0c8f37eecfaf98c6"></a><br></td></tr>
38<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gf68eb443d5c66ab1aaa8a7d38d1dbc4f">dGeomSetData</a> (dGeomID geom, void *data)</td></tr>
39
40<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the user-defined data pointer stored in the geom. <a href="#gf68eb443d5c66ab1aaa8a7d38d1dbc4f"></a><br></td></tr>
41<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gc1a185e22b136814fd3afc8469d98996">dGeomGetData</a> (dGeomID geom)</td></tr>
42
43<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the user-defined data pointer stored in the geom. <a href="#gc1a185e22b136814fd3afc8469d98996"></a><br></td></tr>
44<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g97cad1194789477eac19fe364d986505">dGeomSetBody</a> (dGeomID geom, dBodyID body)</td></tr>
45
46<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the body associated with a placeable geom. <a href="#g97cad1194789477eac19fe364d986505"></a><br></td></tr>
47<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dBodyID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gd6cedf77fde0dddf751c5d42fcc8eebf">dGeomGetBody</a> (dGeomID geom)</td></tr>
48
49<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the body associated with a placeable geom. <a href="#gd6cedf77fde0dddf751c5d42fcc8eebf"></a><br></td></tr>
50<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g71043b70a735e8f5451c3e13cef345fe">dGeomSetPosition</a> (dGeomID geom, dReal x, dReal y, dReal z)</td></tr>
51
52<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position vector of a placeable geom. <a href="#g71043b70a735e8f5451c3e13cef345fe"></a><br></td></tr>
53<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g76c510f4b7d5a036d8a36f2d60d670e5">dGeomSetRotation</a> (dGeomID geom, const dMatrix3 R)</td></tr>
54
55<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the rotation matrix of a placeable geom. <a href="#g76c510f4b7d5a036d8a36f2d60d670e5"></a><br></td></tr>
56<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g989149d93162264d699444a57b045150">dGeomSetQuaternion</a> (dGeomID geom, const dQuaternion Q)</td></tr>
57
58<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the rotation of a placeable geom. <a href="#g989149d93162264d699444a57b045150"></a><br></td></tr>
59<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g95b93f803880cac2619fe2635aa93ad8">dGeomGetPosition</a> (dGeomID geom)</td></tr>
60
61<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the position vector of a placeable geom. <a href="#g95b93f803880cac2619fe2635aa93ad8"></a><br></td></tr>
62<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gd2cccf2b4c62bec58720d4f5fab8108d">dGeomCopyPosition</a> (dGeomID geom, dVector3 pos)</td></tr>
63
64<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy the position of a geom into a vector. <a href="#gd2cccf2b4c62bec58720d4f5fab8108d"></a><br></td></tr>
65<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g293b2264cefb12f9a6659cacc6a722f7">dGeomGetRotation</a> (dGeomID geom)</td></tr>
66
67<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the rotation matrix of a placeable geom. <a href="#g293b2264cefb12f9a6659cacc6a722f7"></a><br></td></tr>
68<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g800b702e148a8c279596f591b910cfbd">dGeomCopyRotation</a> (dGeomID geom, dMatrix3 R)</td></tr>
69
70<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the rotation matrix of a placeable geom. <a href="#g800b702e148a8c279596f591b910cfbd"></a><br></td></tr>
71<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g11ad7f0098639b06f4bcd2d681122842">dGeomGetQuaternion</a> (dGeomID geom, dQuaternion result)</td></tr>
72
73<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the rotation quaternion of a placeable geom. <a href="#g11ad7f0098639b06f4bcd2d681122842"></a><br></td></tr>
74<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g904e360ac6e9e85a05e67929990e5b72">dGeomGetAABB</a> (dGeomID geom, dReal aabb[6])</td></tr>
75
76<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the axis-aligned bounding box. <a href="#g904e360ac6e9e85a05e67929990e5b72"></a><br></td></tr>
77<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#ge5a58bdc78fb4f163a0e9c3ecabf64c9">dGeomIsSpace</a> (dGeomID geom)</td></tr>
78
79<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determing if a geom is a space. <a href="#ge5a58bdc78fb4f163a0e9c3ecabf64c9"></a><br></td></tr>
80<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dSpaceID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gfdc35eade2cbd0b6886ce957325d7c03">dGeomGetSpace</a> (dGeomID)</td></tr>
81
82<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query for the space containing a particular geom. <a href="#gfdc35eade2cbd0b6886ce957325d7c03"></a><br></td></tr>
83<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g07b5ed5b915f756f419a4a7ce69dc67e">dGeomGetClass</a> (dGeomID geom)</td></tr>
84
85<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a geom, this returns its class. <a href="#g07b5ed5b915f756f419a4a7ce69dc67e"></a><br></td></tr>
86<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g80fd5741701eb48472521780d5e2f9b9">dGeomSetCategoryBits</a> (dGeomID geom, unsigned long bits)</td></tr>
87
88<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the "category" bitfield for the given geom. <a href="#g80fd5741701eb48472521780d5e2f9b9"></a><br></td></tr>
89<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#ga55b4de01a61be41668685857b78455d">dGeomSetCollideBits</a> (dGeomID geom, unsigned long bits)</td></tr>
90
91<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the "collide" bitfield for the given geom. <a href="#ga55b4de01a61be41668685857b78455d"></a><br></td></tr>
92<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gfb62d3493b6789382f65776ab931e78d">dGeomGetCategoryBits</a> (dGeomID)</td></tr>
93
94<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the "category" bitfield for the given geom. <a href="#gfb62d3493b6789382f65776ab931e78d"></a><br></td></tr>
95<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g5591e5c496a5a6f8b66dc57e03d0cd8d">dGeomGetCollideBits</a> (dGeomID)</td></tr>
96
97<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the "collide" bitfield for the given geom. <a href="#g5591e5c496a5a6f8b66dc57e03d0cd8d"></a><br></td></tr>
98<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#ga7c64b8fcae37ee9541208a0351f3d05">dGeomEnable</a> (dGeomID geom)</td></tr>
99
100<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable a geom. <a href="#ga7c64b8fcae37ee9541208a0351f3d05"></a><br></td></tr>
101<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g6cb32b4161435fe491859680b463fc12">dGeomDisable</a> (dGeomID geom)</td></tr>
102
103<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disable a geom. <a href="#g6cb32b4161435fe491859680b463fc12"></a><br></td></tr>
104<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e">dGeomIsEnabled</a> (dGeomID geom)</td></tr>
105
106<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check to see if a geom is enabled. <a href="#g6533d33f870cf0fb6684ec05e5c0562e"></a><br></td></tr>
107<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gdc292bc01d5bed32f145ee42760d73b4">dGeomSetOffsetPosition</a> (dGeomID geom, dReal x, dReal y, dReal z)</td></tr>
108
109<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the local offset position of a geom from its body. <a href="#gdc292bc01d5bed32f145ee42760d73b4"></a><br></td></tr>
110<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g805d896b4bc79ceb40e70aadb9629cab">dGeomSetOffsetRotation</a> (dGeomID geom, const dMatrix3 R)</td></tr>
111
112<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the local offset rotation matrix of a geom from its body. <a href="#g805d896b4bc79ceb40e70aadb9629cab"></a><br></td></tr>
113<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g9eba87b7598eb6b3a9b6bde1abbeaa1a">dGeomSetOffsetQuaternion</a> (dGeomID geom, const dQuaternion Q)</td></tr>
114
115<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the local offset rotation of a geom from its body. <a href="#g9eba87b7598eb6b3a9b6bde1abbeaa1a"></a><br></td></tr>
116<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g934fe31c543d588991d28cd8571e52ed">dGeomSetOffsetWorldPosition</a> (dGeomID geom, dReal x, dReal y, dReal z)</td></tr>
117
118<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the offset position of a geom from its body. <a href="#g934fe31c543d588991d28cd8571e52ed"></a><br></td></tr>
119<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g2c1ef27e7e8ced6eb8488221a1a7c200">dGeomSetOffsetWorldRotation</a> (dGeomID geom, const dMatrix3 R)</td></tr>
120
121<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the offset rotation of a geom from its body. <a href="#g2c1ef27e7e8ced6eb8488221a1a7c200"></a><br></td></tr>
122<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#ga04f2117ab18a1d3e27270defdad83a8">dGeomSetOffsetWorldQuaternion</a> (dGeomID geom, const dQuaternion)</td></tr>
123
124<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the offset rotation of a geom from its body. <a href="#ga04f2117ab18a1d3e27270defdad83a8"></a><br></td></tr>
125<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gc81929d988b21c4e5338017f2e92a6f2">dGeomClearOffset</a> (dGeomID geom)</td></tr>
126
127<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear any offset from the geom. <a href="#gc81929d988b21c4e5338017f2e92a6f2"></a><br></td></tr>
128<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g46260e0668373aa600b1cf8f83276e10">dGeomIsOffset</a> (dGeomID geom)</td></tr>
129
130<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check to see whether the geom has an offset. <a href="#g46260e0668373aa600b1cf8f83276e10"></a><br></td></tr>
131<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gb200f73800d253ab3a87f9856d4e18d2">dGeomGetOffsetPosition</a> (dGeomID geom)</td></tr>
132
133<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the offset position vector of a geom. <a href="#gb200f73800d253ab3a87f9856d4e18d2"></a><br></td></tr>
134<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gd4a1e59ecc3c570e3c37c5b8fad71220">dGeomCopyOffsetPosition</a> (dGeomID geom, dVector3 pos)</td></tr>
135
136<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy the offset position vector of a geom. <a href="#gd4a1e59ecc3c570e3c37c5b8fad71220"></a><br></td></tr>
137<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gba28cf4ca8f552c782fc30ce3073dc73">dGeomGetOffsetRotation</a> (dGeomID geom)</td></tr>
138
139<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the offset rotation matrix of a geom. <a href="#gba28cf4ca8f552c782fc30ce3073dc73"></a><br></td></tr>
140<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gcf96cd4f9913dc258e6f29da9979388c">dGeomCopyOffsetRotation</a> (dGeomID geom, dMatrix3 R)</td></tr>
141
142<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy the offset rotation matrix of a geom. <a href="#gcf96cd4f9913dc258e6f29da9979388c"></a><br></td></tr>
143<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g8fc20f761daf36976e50d057cf2650ca">dGeomGetOffsetQuaternion</a> (dGeomID geom, dQuaternion result)</td></tr>
144
145<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the offset rotation quaternion of a geom. <a href="#g8fc20f761daf36976e50d057cf2650ca"></a><br></td></tr>
146<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g08508345384abb95e25d674b39157bf8">dCollide</a> (dGeomID o1, dGeomID o2, int flags, <a class="el" href="structd_contact_geom.html">dContactGeom</a> *contact, int skip)</td></tr>
147
148<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given two geoms o1 and o2 that potentially intersect, generate contact information for them. <a href="#g08508345384abb95e25d674b39157bf8"></a><br></td></tr>
149<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gfd185829b6940e2b3238517e1acd2fbb">dSpaceCollide</a> (dSpaceID space, void *data, <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> *callback)</td></tr>
150
151<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines which pairs of geoms in a space may potentially intersect, and calls the callback function for each candidate pair. <a href="#gfd185829b6940e2b3238517e1acd2fbb"></a><br></td></tr>
152<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g72a6bb0b550d3e181f8b7a9be7179db5">dSpaceCollide2</a> (dGeomID space1, dGeomID space2, void *data, <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> *callback)</td></tr>
153
154<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines which geoms from one space may potentially intersect with geoms from another space, and calls the callback function for each candidate pair. <a href="#g72a6bb0b550d3e181f8b7a9be7179db5"></a><br></td></tr>
155<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dGeomID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gd50d5cd5fea5bfc12584e60d4a936cfb">dCreateHeightfield</a> (dSpaceID space, dHeightfieldDataID data, int bPlaceable)</td></tr>
156
157<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a heightfield geom. <a href="#gd50d5cd5fea5bfc12584e60d4a936cfb"></a><br></td></tr>
158<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API <br>
159dHeightfieldDataID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g7de82d5cf9aa10bb3144d51f4360eea1">dGeomHeightfieldDataCreate</a> ()</td></tr>
160
161<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new empty dHeightfieldDataID. <a href="#g7de82d5cf9aa10bb3144d51f4360eea1"></a><br></td></tr>
162<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gf98fc1f3d1784df5a5dff114b483d408">dGeomHeightfieldDataDestroy</a> (dHeightfieldDataID d)</td></tr>
163
164<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroys a dHeightfieldDataID. <a href="#gf98fc1f3d1784df5a5dff114b483d408"></a><br></td></tr>
165<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g34566000a5a2673cc013294f0ed85926">dGeomHeightfieldDataBuildCallback</a> (dHeightfieldDataID d, void *pUserData, <a class="el" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9">dHeightfieldGetHeight</a> *pCallback, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
166
167<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use a callback to retrieve height data. <a href="#g34566000a5a2673cc013294f0ed85926"></a><br></td></tr>
168<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g2c15b7c1a36c7526b66911beab1b7934">dGeomHeightfieldDataBuildByte</a> (dHeightfieldDataID d, const unsigned char *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
169
170<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use height data in byte format. <a href="#g2c15b7c1a36c7526b66911beab1b7934"></a><br></td></tr>
171<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g2f7582d64cc8219141bc10efeca86d17">dGeomHeightfieldDataBuildShort</a> (dHeightfieldDataID d, const short *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
172
173<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use height data in short format. <a href="#g2f7582d64cc8219141bc10efeca86d17"></a><br></td></tr>
174<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g8da529419317e7bd4e01dabbe94daa09">dGeomHeightfieldDataBuildSingle</a> (dHeightfieldDataID d, const float *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
175
176<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use height data in single precision floating point format. <a href="#g8da529419317e7bd4e01dabbe94daa09"></a><br></td></tr>
177<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g98ec0c952b3b4e0fb3cd8cf66e267c86">dGeomHeightfieldDataBuildDouble</a> (dHeightfieldDataID d, const double *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
178
179<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use height data in double precision floating point format. <a href="#g98ec0c952b3b4e0fb3cd8cf66e267c86"></a><br></td></tr>
180<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gcdef420e65e3751388b315f5de2804b2">dGeomHeightfieldDataSetBounds</a> (dHeightfieldDataID d, dReal minHeight, dReal maxHeight)</td></tr>
181
182<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Manually set the minimum and maximum height bounds. <a href="#gcdef420e65e3751388b315f5de2804b2"></a><br></td></tr>
183<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g6c1ae1f3ca652d6410e7804cdf8f8491">dGeomHeightfieldSetHeightfieldData</a> (dGeomID g, dHeightfieldDataID d)</td></tr>
184
185<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assigns a dHeightfieldDataID to a heightfield geom. <a href="#g6c1ae1f3ca652d6410e7804cdf8f8491"></a><br></td></tr>
186<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API <br>
187dHeightfieldDataID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g747176d26ce4f9b10ebfa6c865ef1cca">dGeomHeightfieldGetHeightfieldData</a> (dGeomID g)</td></tr>
188
189<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the dHeightfieldDataID bound to a heightfield geom. <a href="#g747176d26ce4f9b10ebfa6c865ef1cca"></a><br></td></tr>
190</table>
191<hr><a name="_details"></a><h2>Detailed Description</h2>
192ODE has two main components: a dynamics simulation engine and a collision detection engine. The collision engine is given information about the shape of each body. At each time step it figures out which bodies touch each other and passes the resulting contact point information to the user. The user in turn creates contact joints between bodies.<p>
193Using ODE's collision detection is optional - an alternative collision detection system can be used as long as it can supply the right kinds of contact information. <hr><h2>Typedef Documentation</h2>
194<a class="anchor" name="g32d2c58e3b2b589bd7672f3453102eb9"></a><!-- doxytag: member="collision.h::dHeightfieldGetHeight" ref="g32d2c58e3b2b589bd7672f3453102eb9" args="(void *p_user_data, int x, int z)" -->
195<div class="memitem">
196<div class="memproto">
197 <table class="memname">
198 <tr>
199 <td class="memname">typedef dReal <a class="el" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9">dHeightfieldGetHeight</a>(void *p_user_data, int x, int z) </td>
200 </tr>
201 </table>
202</div>
203<div class="memdoc">
204
205<p>
206Callback prototype.
207<p>
208Used by the callback heightfield data type to sample a height for a given cell position.<p>
209<dl compact><dt><b>Parameters:</b></dt><dd>
210 <table border="0" cellspacing="2" cellpadding="0">
211 <tr><td valign="top"></td><td valign="top"><em>p_user_data</em>&nbsp;</td><td>User data specified when creating the dHeightfieldDataID </td></tr>
212 <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>The index of a sample in the local x axis. It is a value in the range zero to ( nWidthSamples - 1 ). </td></tr>
213 <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>The index of a sample in the local z axis. It is a value in the range zero to ( nDepthSamples - 1 ).</td></tr>
214 </table>
215</dl>
216<dl class="return" compact><dt><b>Returns:</b></dt><dd>The sample height which is then scaled and offset using the values specified when the heightfield data was created. </dd></dl>
217
218</div>
219</div><p>
220<a class="anchor" name="g9f458413ace07fa9e3e7e52d6652ace0"></a><!-- doxytag: member="collision_space.h::dNearCallback" ref="g9f458413ace07fa9e3e7e52d6652ace0" args="(void *data, dGeomID o1, dGeomID o2)" -->
221<div class="memitem">
222<div class="memproto">
223 <table class="memname">
224 <tr>
225 <td class="memname">typedef void <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a>(void *data, dGeomID o1, dGeomID o2) </td>
226 </tr>
227 </table>
228</div>
229<div class="memdoc">
230
231<p>
232User callback for geom-geom collision testing.
233<p>
234<dl compact><dt><b>Parameters:</b></dt><dd>
235 <table border="0" cellspacing="2" cellpadding="0">
236 <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The user data object, as passed to dSpaceCollide. </td></tr>
237 <tr><td valign="top"></td><td valign="top"><em>o1</em>&nbsp;</td><td>The first geom being tested. </td></tr>
238 <tr><td valign="top"></td><td valign="top"><em>o2</em>&nbsp;</td><td>The second geom being test.</td></tr>
239 </table>
240</dl>
241<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The callback function can call dCollide on o1 and o2 to generate contact points between each pair. Then these contact points may be added to the simulation as contact joints. The user's callback function can of course chose not to call dCollide for any pair, e.g. if the user decides that those pairs should not interact. </dd></dl>
242
243</div>
244</div><p>
245<hr><h2>Function Documentation</h2>
246<a class="anchor" name="g08508345384abb95e25d674b39157bf8"></a><!-- doxytag: member="collision.h::dCollide" ref="g08508345384abb95e25d674b39157bf8" args="(dGeomID o1, dGeomID o2, int flags, dContactGeom *contact, int skip)" -->
247<div class="memitem">
248<div class="memproto">
249 <table class="memname">
250 <tr>
251 <td class="memname">ODE_API int dCollide </td>
252 <td>(</td>
253 <td class="paramtype">dGeomID&nbsp;</td>
254 <td class="paramname"> <em>o1</em>, </td>
255 </tr>
256 <tr>
257 <td class="paramkey"></td>
258 <td></td>
259 <td class="paramtype">dGeomID&nbsp;</td>
260 <td class="paramname"> <em>o2</em>, </td>
261 </tr>
262 <tr>
263 <td class="paramkey"></td>
264 <td></td>
265 <td class="paramtype">int&nbsp;</td>
266 <td class="paramname"> <em>flags</em>, </td>
267 </tr>
268 <tr>
269 <td class="paramkey"></td>
270 <td></td>
271 <td class="paramtype"><a class="el" href="structd_contact_geom.html">dContactGeom</a> *&nbsp;</td>
272 <td class="paramname"> <em>contact</em>, </td>
273 </tr>
274 <tr>
275 <td class="paramkey"></td>
276 <td></td>
277 <td class="paramtype">int&nbsp;</td>
278 <td class="paramname"> <em>skip</em></td><td>&nbsp;</td>
279 </tr>
280 <tr>
281 <td></td>
282 <td>)</td>
283 <td></td><td></td><td width="100%"></td>
284 </tr>
285 </table>
286</div>
287<div class="memdoc">
288
289<p>
290Given two geoms o1 and o2 that potentially intersect, generate contact information for them.
291<p>
292Internally, this just calls the correct class-specific collision functions for o1 and o2.<p>
293<dl compact><dt><b>Parameters:</b></dt><dd>
294 <table border="0" cellspacing="2" cellpadding="0">
295 <tr><td valign="top"></td><td valign="top"><em>o1</em>&nbsp;</td><td>The first geom to test. </td></tr>
296 <tr><td valign="top"></td><td valign="top"><em>o2</em>&nbsp;</td><td>The second geom to test.</td></tr>
297 <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>The flags specify how contacts should be generated if the geoms touch. The lower 16 bits of flags is an integer that specifies the maximum number of contact points to generate. You must ask for at least one contact. Additionally, following bits may be set: CONTACTS_UNIMPORTANT -- just generate any contacts (skip contact refining). All other bits in flags must be set to zero. In the future the other bits may be used to select from different contact generation strategies.</td></tr>
298 <tr><td valign="top"></td><td valign="top"><em>contact</em>&nbsp;</td><td>Points to an array of <a class="el" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> structures. The array must be able to hold at least the maximum number of contacts. These <a class="el" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> structures may be embedded within larger structures in the array -- the skip parameter is the byte offset from one <a class="el" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> to the next in the array. If skip is sizeof(dContactGeom) then contact points to a normal (C-style) array. It is an error for skip to be smaller than sizeof(dContactGeom).</td></tr>
299 </table>
300</dl>
301<dl class="return" compact><dt><b>Returns:</b></dt><dd>If the geoms intersect, this function returns the number of contact points generated (and updates the contact array), otherwise it returns 0 (and the contact array is not touched).</dd></dl>
302<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>If a space is passed as o1 or o2 then this function will collide all objects contained in o1 with all objects contained in o2, and return the resulting contact points. This method for colliding spaces with geoms (or spaces with spaces) provides no user control over the individual collisions. To get that control, use dSpaceCollide or dSpaceCollide2 instead.<p>
303If o1 and o2 are the same geom then this function will do nothing and return 0. Technically speaking an object intersects with itself, but it is not useful to find contact points in this case.<p>
304This function does not care if o1 and o2 are in the same space or not (or indeed if they are in any space at all). </dd></dl>
305
306</div>
307</div><p>
308<a class="anchor" name="gd50d5cd5fea5bfc12584e60d4a936cfb"></a><!-- doxytag: member="collision.h::dCreateHeightfield" ref="gd50d5cd5fea5bfc12584e60d4a936cfb" args="(dSpaceID space, dHeightfieldDataID data, int bPlaceable)" -->
309<div class="memitem">
310<div class="memproto">
311 <table class="memname">
312 <tr>
313 <td class="memname">ODE_API dGeomID dCreateHeightfield </td>
314 <td>(</td>
315 <td class="paramtype">dSpaceID&nbsp;</td>
316 <td class="paramname"> <em>space</em>, </td>
317 </tr>
318 <tr>
319 <td class="paramkey"></td>
320 <td></td>
321 <td class="paramtype">dHeightfieldDataID&nbsp;</td>
322 <td class="paramname"> <em>data</em>, </td>
323 </tr>
324 <tr>
325 <td class="paramkey"></td>
326 <td></td>
327 <td class="paramtype">int&nbsp;</td>
328 <td class="paramname"> <em>bPlaceable</em></td><td>&nbsp;</td>
329 </tr>
330 <tr>
331 <td></td>
332 <td>)</td>
333 <td></td><td></td><td width="100%"></td>
334 </tr>
335 </table>
336</div>
337<div class="memdoc">
338
339<p>
340Creates a heightfield geom.
341<p>
342Uses the information in the given dHeightfieldDataID to construct a geom representing a heightfield in a collision space.<p>
343<dl compact><dt><b>Parameters:</b></dt><dd>
344 <table border="0" cellspacing="2" cellpadding="0">
345 <tr><td valign="top"></td><td valign="top"><em>space</em>&nbsp;</td><td>The space to add the geom to. </td></tr>
346 <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The dHeightfieldDataID created by dGeomHeightfieldDataCreate and setup by dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat. </td></tr>
347 <tr><td valign="top"></td><td valign="top"><em>bPlaceable</em>&nbsp;</td><td>If non-zero this geom can be transformed in the world using the usual functions such as dGeomSetPosition and dGeomSetRotation. If the geom is not set as placeable, then it uses a fixed orientation where the global y axis represents the dynamic 'height' of the heightfield.</td></tr>
348 </table>
349</dl>
350<dl class="return" compact><dt><b>Returns:</b></dt><dd>A geom id to reference this geom in other calls. </dd></dl>
351
352</div>
353</div><p>
354<a class="anchor" name="gc81929d988b21c4e5338017f2e92a6f2"></a><!-- doxytag: member="collision.h::dGeomClearOffset" ref="gc81929d988b21c4e5338017f2e92a6f2" args="(dGeomID geom)" -->
355<div class="memitem">
356<div class="memproto">
357 <table class="memname">
358 <tr>
359 <td class="memname">ODE_API void dGeomClearOffset </td>
360 <td>(</td>
361 <td class="paramtype">dGeomID&nbsp;</td>
362 <td class="paramname"> <em>geom</em> </td>
363 <td>&nbsp;)&nbsp;</td>
364 <td width="100%"></td>
365 </tr>
366 </table>
367</div>
368<div class="memdoc">
369
370<p>
371Clear any offset from the geom.
372<p>
373If the geom has an offset, it is eliminated and the geom is repositioned at the body's position. If the geom has no offset, this function does nothing. This is more efficient than calling dGeomSetOffsetPosition(zero) and dGeomSetOffsetRotation(identiy), because this function actually eliminates the offset, rather than leaving it as the identity transform.<p>
374<dl compact><dt><b>Parameters:</b></dt><dd>
375 <table border="0" cellspacing="2" cellpadding="0">
376 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to have its offset destroyed. </td></tr>
377 </table>
378</dl>
379
380</div>
381</div><p>
382<a class="anchor" name="gd4a1e59ecc3c570e3c37c5b8fad71220"></a><!-- doxytag: member="collision.h::dGeomCopyOffsetPosition" ref="gd4a1e59ecc3c570e3c37c5b8fad71220" args="(dGeomID geom, dVector3 pos)" -->
383<div class="memitem">
384<div class="memproto">
385 <table class="memname">
386 <tr>
387 <td class="memname">ODE_API void dGeomCopyOffsetPosition </td>
388 <td>(</td>
389 <td class="paramtype">dGeomID&nbsp;</td>
390 <td class="paramname"> <em>geom</em>, </td>
391 </tr>
392 <tr>
393 <td class="paramkey"></td>
394 <td></td>
395 <td class="paramtype">dVector3&nbsp;</td>
396 <td class="paramname"> <em>pos</em></td><td>&nbsp;</td>
397 </tr>
398 <tr>
399 <td></td>
400 <td>)</td>
401 <td></td><td></td><td width="100%"></td>
402 </tr>
403 </table>
404</div>
405<div class="memdoc">
406
407<p>
408Copy the offset position vector of a geom.
409<p>
410Returns the positional offset of the geom in local coordinates. If the geom has no offset, this function returns the zero vector.<p>
411<dl compact><dt><b>Parameters:</b></dt><dd>
412 <table border="0" cellspacing="2" cellpadding="0">
413 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
414 <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>returns the offset position </td></tr>
415 </table>
416</dl>
417
418</div>
419</div><p>
420<a class="anchor" name="gcf96cd4f9913dc258e6f29da9979388c"></a><!-- doxytag: member="collision.h::dGeomCopyOffsetRotation" ref="gcf96cd4f9913dc258e6f29da9979388c" args="(dGeomID geom, dMatrix3 R)" -->
421<div class="memitem">
422<div class="memproto">
423 <table class="memname">
424 <tr>
425 <td class="memname">ODE_API void dGeomCopyOffsetRotation </td>
426 <td>(</td>
427 <td class="paramtype">dGeomID&nbsp;</td>
428 <td class="paramname"> <em>geom</em>, </td>
429 </tr>
430 <tr>
431 <td class="paramkey"></td>
432 <td></td>
433 <td class="paramtype">dMatrix3&nbsp;</td>
434 <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
435 </tr>
436 <tr>
437 <td></td>
438 <td>)</td>
439 <td></td><td></td><td width="100%"></td>
440 </tr>
441 </table>
442</div>
443<div class="memdoc">
444
445<p>
446Copy the offset rotation matrix of a geom.
447<p>
448Returns the rotational offset of the geom in local coordinates. If the geom has no offset, this function returns the identity matrix.<p>
449<dl compact><dt><b>Parameters:</b></dt><dd>
450 <table border="0" cellspacing="2" cellpadding="0">
451 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
452 <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>returns the rotation matrix. </td></tr>
453 </table>
454</dl>
455
456</div>
457</div><p>
458<a class="anchor" name="gd2cccf2b4c62bec58720d4f5fab8108d"></a><!-- doxytag: member="collision.h::dGeomCopyPosition" ref="gd2cccf2b4c62bec58720d4f5fab8108d" args="(dGeomID geom, dVector3 pos)" -->
459<div class="memitem">
460<div class="memproto">
461 <table class="memname">
462 <tr>
463 <td class="memname">ODE_API void dGeomCopyPosition </td>
464 <td>(</td>
465 <td class="paramtype">dGeomID&nbsp;</td>
466 <td class="paramname"> <em>geom</em>, </td>
467 </tr>
468 <tr>
469 <td class="paramkey"></td>
470 <td></td>
471 <td class="paramtype">dVector3&nbsp;</td>
472 <td class="paramname"> <em>pos</em></td><td>&nbsp;</td>
473 </tr>
474 <tr>
475 <td></td>
476 <td>)</td>
477 <td></td><td></td><td width="100%"></td>
478 </tr>
479 </table>
480</div>
481<div class="memdoc">
482
483<p>
484Copy the position of a geom into a vector.
485<p>
486<dl compact><dt><b>Parameters:</b></dt><dd>
487 <table border="0" cellspacing="2" cellpadding="0">
488 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
489 <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>a copy of the geom position </td></tr>
490 </table>
491</dl>
492<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g95b93f803880cac2619fe2635aa93ad8" title="Get the position vector of a placeable geom.">dGeomGetPosition</a> </dd></dl>
493
494</div>
495</div><p>
496<a class="anchor" name="g800b702e148a8c279596f591b910cfbd"></a><!-- doxytag: member="collision.h::dGeomCopyRotation" ref="g800b702e148a8c279596f591b910cfbd" args="(dGeomID geom, dMatrix3 R)" -->
497<div class="memitem">
498<div class="memproto">
499 <table class="memname">
500 <tr>
501 <td class="memname">ODE_API void dGeomCopyRotation </td>
502 <td>(</td>
503 <td class="paramtype">dGeomID&nbsp;</td>
504 <td class="paramname"> <em>geom</em>, </td>
505 </tr>
506 <tr>
507 <td class="paramkey"></td>
508 <td></td>
509 <td class="paramtype">dMatrix3&nbsp;</td>
510 <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
511 </tr>
512 <tr>
513 <td></td>
514 <td>)</td>
515 <td></td><td></td><td width="100%"></td>
516 </tr>
517 </table>
518</div>
519<div class="memdoc">
520
521<p>
522Get the rotation matrix of a placeable geom.
523<p>
524If the geom is attached to a body, the body's rotation will be returned.<p>
525Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
526<dl compact><dt><b>Parameters:</b></dt><dd>
527 <table border="0" cellspacing="2" cellpadding="0">
528 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
529 <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>a copy of the geom rotation </td></tr>
530 </table>
531</dl>
532<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g293b2264cefb12f9a6659cacc6a722f7" title="Get the rotation matrix of a placeable geom.">dGeomGetRotation</a> </dd></dl>
533
534</div>
535</div><p>
536<a class="anchor" name="g96b9e7d3a7ca769b0c8f37eecfaf98c6"></a><!-- doxytag: member="collision.h::dGeomDestroy" ref="g96b9e7d3a7ca769b0c8f37eecfaf98c6" args="(dGeomID geom)" -->
537<div class="memitem">
538<div class="memproto">
539 <table class="memname">
540 <tr>
541 <td class="memname">ODE_API void dGeomDestroy </td>
542 <td>(</td>
543 <td class="paramtype">dGeomID&nbsp;</td>
544 <td class="paramname"> <em>geom</em> </td>
545 <td>&nbsp;)&nbsp;</td>
546 <td width="100%"></td>
547 </tr>
548 </table>
549</div>
550<div class="memdoc">
551
552<p>
553Destroy a geom, removing it from any space.
554<p>
555Destroy a geom, removing it from any space it is in first. This one function destroys a geom of any type, but to create a geom you must call a creation function for that type.<p>
556When a space is destroyed, if its cleanup mode is 1 (the default) then all the geoms in that space are automatically destroyed as well.<p>
557<dl compact><dt><b>Parameters:</b></dt><dd>
558 <table border="0" cellspacing="2" cellpadding="0">
559 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to be destroyed. </td></tr>
560 </table>
561</dl>
562
563</div>
564</div><p>
565<a class="anchor" name="g6cb32b4161435fe491859680b463fc12"></a><!-- doxytag: member="collision.h::dGeomDisable" ref="g6cb32b4161435fe491859680b463fc12" args="(dGeomID geom)" -->
566<div class="memitem">
567<div class="memproto">
568 <table class="memname">
569 <tr>
570 <td class="memname">ODE_API void dGeomDisable </td>
571 <td>(</td>
572 <td class="paramtype">dGeomID&nbsp;</td>
573 <td class="paramname"> <em>geom</em> </td>
574 <td>&nbsp;)&nbsp;</td>
575 <td width="100%"></td>
576 </tr>
577 </table>
578</div>
579<div class="memdoc">
580
581<p>
582Disable a geom.
583<p>
584Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2, although they can still be members of a space. New geoms are created in the enabled state.<p>
585<dl compact><dt><b>Parameters:</b></dt><dd>
586 <table border="0" cellspacing="2" cellpadding="0">
587 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to disable </td></tr>
588 </table>
589</dl>
590<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g6cb32b4161435fe491859680b463fc12" title="Disable a geom.">dGeomDisable</a> <p>
591<a class="el" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e" title="Check to see if a geom is enabled.">dGeomIsEnabled</a> </dd></dl>
592
593</div>
594</div><p>
595<a class="anchor" name="ga7c64b8fcae37ee9541208a0351f3d05"></a><!-- doxytag: member="collision.h::dGeomEnable" ref="ga7c64b8fcae37ee9541208a0351f3d05" args="(dGeomID geom)" -->
596<div class="memitem">
597<div class="memproto">
598 <table class="memname">
599 <tr>
600 <td class="memname">ODE_API void dGeomEnable </td>
601 <td>(</td>
602 <td class="paramtype">dGeomID&nbsp;</td>
603 <td class="paramname"> <em>geom</em> </td>
604 <td>&nbsp;)&nbsp;</td>
605 <td width="100%"></td>
606 </tr>
607 </table>
608</div>
609<div class="memdoc">
610
611<p>
612Enable a geom.
613<p>
614Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2, although they can still be members of a space. New geoms are created in the enabled state.<p>
615<dl compact><dt><b>Parameters:</b></dt><dd>
616 <table border="0" cellspacing="2" cellpadding="0">
617 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to enable </td></tr>
618 </table>
619</dl>
620<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g6cb32b4161435fe491859680b463fc12" title="Disable a geom.">dGeomDisable</a> <p>
621<a class="el" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e" title="Check to see if a geom is enabled.">dGeomIsEnabled</a> </dd></dl>
622
623</div>
624</div><p>
625<a class="anchor" name="g904e360ac6e9e85a05e67929990e5b72"></a><!-- doxytag: member="collision.h::dGeomGetAABB" ref="g904e360ac6e9e85a05e67929990e5b72" args="(dGeomID geom, dReal aabb[6])" -->
626<div class="memitem">
627<div class="memproto">
628 <table class="memname">
629 <tr>
630 <td class="memname">ODE_API void dGeomGetAABB </td>
631 <td>(</td>
632 <td class="paramtype">dGeomID&nbsp;</td>
633 <td class="paramname"> <em>geom</em>, </td>
634 </tr>
635 <tr>
636 <td class="paramkey"></td>
637 <td></td>
638 <td class="paramtype">dReal&nbsp;</td>
639 <td class="paramname"> <em>aabb</em>[6]</td><td>&nbsp;</td>
640 </tr>
641 <tr>
642 <td></td>
643 <td>)</td>
644 <td></td><td></td><td width="100%"></td>
645 </tr>
646 </table>
647</div>
648<div class="memdoc">
649
650<p>
651Return the axis-aligned bounding box.
652<p>
653Return in aabb an axis aligned bounding box that surrounds the given geom. The aabb array has elements (minx, maxx, miny, maxy, minz, maxz). If the geom is a space, a bounding box that surrounds all contained geoms is returned.<p>
654This function may return a pre-computed cached bounding box, if it can determine that the geom has not moved since the last time the bounding box was computed.<p>
655<dl compact><dt><b>Parameters:</b></dt><dd>
656 <table border="0" cellspacing="2" cellpadding="0">
657 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
658 <tr><td valign="top"></td><td valign="top"><em>aabb</em>&nbsp;</td><td>the returned bounding box </td></tr>
659 </table>
660</dl>
661
662</div>
663</div><p>
664<a class="anchor" name="gd6cedf77fde0dddf751c5d42fcc8eebf"></a><!-- doxytag: member="collision.h::dGeomGetBody" ref="gd6cedf77fde0dddf751c5d42fcc8eebf" args="(dGeomID geom)" -->
665<div class="memitem">
666<div class="memproto">
667 <table class="memname">
668 <tr>
669 <td class="memname">ODE_API dBodyID dGeomGetBody </td>
670 <td>(</td>
671 <td class="paramtype">dGeomID&nbsp;</td>
672 <td class="paramname"> <em>geom</em> </td>
673 <td>&nbsp;)&nbsp;</td>
674 <td width="100%"></td>
675 </tr>
676 </table>
677</div>
678<div class="memdoc">
679
680<p>
681Get the body associated with a placeable geom.
682<p>
683<dl compact><dt><b>Parameters:</b></dt><dd>
684 <table border="0" cellspacing="2" cellpadding="0">
685 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
686 </table>
687</dl>
688<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g97cad1194789477eac19fe364d986505" title="Set the body associated with a placeable geom.">dGeomSetBody</a> </dd></dl>
689
690</div>
691</div><p>
692<a class="anchor" name="gfb62d3493b6789382f65776ab931e78d"></a><!-- doxytag: member="collision.h::dGeomGetCategoryBits" ref="gfb62d3493b6789382f65776ab931e78d" args="(dGeomID)" -->
693<div class="memitem">
694<div class="memproto">
695 <table class="memname">
696 <tr>
697 <td class="memname">ODE_API unsigned long dGeomGetCategoryBits </td>
698 <td>(</td>
699 <td class="paramtype">dGeomID&nbsp;</td>
700 <td class="paramname"> </td>
701 <td>&nbsp;)&nbsp;</td>
702 <td width="100%"></td>
703 </tr>
704 </table>
705</div>
706<div class="memdoc">
707
708<p>
709Get the "category" bitfield for the given geom.
710<p>
711<dl compact><dt><b>Parameters:</b></dt><dd>
712 <table border="0" cellspacing="2" cellpadding="0">
713 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set </td></tr>
714 <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>the new bitfield value </td></tr>
715 </table>
716</dl>
717<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g80fd5741701eb48472521780d5e2f9b9" title="Set the &quot;category&quot; bitfield for the given geom.">dGeomSetCategoryBits</a> </dd></dl>
718
719</div>
720</div><p>
721<a class="anchor" name="g07b5ed5b915f756f419a4a7ce69dc67e"></a><!-- doxytag: member="collision.h::dGeomGetClass" ref="g07b5ed5b915f756f419a4a7ce69dc67e" args="(dGeomID geom)" -->
722<div class="memitem">
723<div class="memproto">
724 <table class="memname">
725 <tr>
726 <td class="memname">ODE_API int dGeomGetClass </td>
727 <td>(</td>
728 <td class="paramtype">dGeomID&nbsp;</td>
729 <td class="paramname"> <em>geom</em> </td>
730 <td>&nbsp;)&nbsp;</td>
731 <td width="100%"></td>
732 </tr>
733 </table>
734</div>
735<div class="memdoc">
736
737<p>
738Given a geom, this returns its class.
739<p>
740The ODE classes are: <ul>
741<li>dSphereClass </li>
742<li>dBoxClass </li>
743<li>dCylinderClass </li>
744<li>dPlaneClass </li>
745<li>dRayClass </li>
746<li>dConvexClass </li>
747<li>dGeomTransformClass </li>
748<li>dTriMeshClass </li>
749<li>dSimpleSpaceClass </li>
750<li>dHashSpaceClass </li>
751<li>dQuadTreeSpaceClass </li>
752<li>dFirstUserClass </li>
753<li>dLastUserClass</li>
754</ul>
755User-defined class will return their own number.<p>
756<dl compact><dt><b>Parameters:</b></dt><dd>
757 <table border="0" cellspacing="2" cellpadding="0">
758 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
759 </table>
760</dl>
761<dl class="return" compact><dt><b>Returns:</b></dt><dd>The geom class ID. </dd></dl>
762
763</div>
764</div><p>
765<a class="anchor" name="g5591e5c496a5a6f8b66dc57e03d0cd8d"></a><!-- doxytag: member="collision.h::dGeomGetCollideBits" ref="g5591e5c496a5a6f8b66dc57e03d0cd8d" args="(dGeomID)" -->
766<div class="memitem">
767<div class="memproto">
768 <table class="memname">
769 <tr>
770 <td class="memname">ODE_API unsigned long dGeomGetCollideBits </td>
771 <td>(</td>
772 <td class="paramtype">dGeomID&nbsp;</td>
773 <td class="paramname"> </td>
774 <td>&nbsp;)&nbsp;</td>
775 <td width="100%"></td>
776 </tr>
777 </table>
778</div>
779<div class="memdoc">
780
781<p>
782Get the "collide" bitfield for the given geom.
783<p>
784<dl compact><dt><b>Parameters:</b></dt><dd>
785 <table border="0" cellspacing="2" cellpadding="0">
786 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set </td></tr>
787 <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>the new bitfield value </td></tr>
788 </table>
789</dl>
790<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#ga55b4de01a61be41668685857b78455d" title="Set the &quot;collide&quot; bitfield for the given geom.">dGeomSetCollideBits</a> </dd></dl>
791
792</div>
793</div><p>
794<a class="anchor" name="gc1a185e22b136814fd3afc8469d98996"></a><!-- doxytag: member="collision.h::dGeomGetData" ref="gc1a185e22b136814fd3afc8469d98996" args="(dGeomID geom)" -->
795<div class="memitem">
796<div class="memproto">
797 <table class="memname">
798 <tr>
799 <td class="memname">ODE_API void* dGeomGetData </td>
800 <td>(</td>
801 <td class="paramtype">dGeomID&nbsp;</td>
802 <td class="paramname"> <em>geom</em> </td>
803 <td>&nbsp;)&nbsp;</td>
804 <td width="100%"></td>
805 </tr>
806 </table>
807</div>
808<div class="memdoc">
809
810<p>
811Get the user-defined data pointer stored in the geom.
812<p>
813<dl compact><dt><b>Parameters:</b></dt><dd>
814 <table border="0" cellspacing="2" cellpadding="0">
815 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom containing the data </td></tr>
816 </table>
817</dl>
818
819</div>
820</div><p>
821<a class="anchor" name="gb200f73800d253ab3a87f9856d4e18d2"></a><!-- doxytag: member="collision.h::dGeomGetOffsetPosition" ref="gb200f73800d253ab3a87f9856d4e18d2" args="(dGeomID geom)" -->
822<div class="memitem">
823<div class="memproto">
824 <table class="memname">
825 <tr>
826 <td class="memname">ODE_API const dReal* dGeomGetOffsetPosition </td>
827 <td>(</td>
828 <td class="paramtype">dGeomID&nbsp;</td>
829 <td class="paramname"> <em>geom</em> </td>
830 <td>&nbsp;)&nbsp;</td>
831 <td width="100%"></td>
832 </tr>
833 </table>
834</div>
835<div class="memdoc">
836
837<p>
838Get the offset position vector of a geom.
839<p>
840Returns the positional offset of the geom in local coordinates. If the geom has no offset, this function returns the zero vector.<p>
841<dl compact><dt><b>Parameters:</b></dt><dd>
842 <table border="0" cellspacing="2" cellpadding="0">
843 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
844 </table>
845</dl>
846<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the geom's offset vector. </dd></dl>
847<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom. </dd></dl>
848
849</div>
850</div><p>
851<a class="anchor" name="g8fc20f761daf36976e50d057cf2650ca"></a><!-- doxytag: member="collision.h::dGeomGetOffsetQuaternion" ref="g8fc20f761daf36976e50d057cf2650ca" args="(dGeomID geom, dQuaternion result)" -->
852<div class="memitem">
853<div class="memproto">
854 <table class="memname">
855 <tr>
856 <td class="memname">ODE_API void dGeomGetOffsetQuaternion </td>
857 <td>(</td>
858 <td class="paramtype">dGeomID&nbsp;</td>
859 <td class="paramname"> <em>geom</em>, </td>
860 </tr>
861 <tr>
862 <td class="paramkey"></td>
863 <td></td>
864 <td class="paramtype">dQuaternion&nbsp;</td>
865 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
866 </tr>
867 <tr>
868 <td></td>
869 <td>)</td>
870 <td></td><td></td><td width="100%"></td>
871 </tr>
872 </table>
873</div>
874<div class="memdoc">
875
876<p>
877Get the offset rotation quaternion of a geom.
878<p>
879Returns the rotation offset of the geom as a quaternion. If the geom has no offset, the identity quaternion is returned.<p>
880<dl compact><dt><b>Parameters:</b></dt><dd>
881 <table border="0" cellspacing="2" cellpadding="0">
882 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
883 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>a copy of the rotation quaternion. </td></tr>
884 </table>
885</dl>
886
887</div>
888</div><p>
889<a class="anchor" name="gba28cf4ca8f552c782fc30ce3073dc73"></a><!-- doxytag: member="collision.h::dGeomGetOffsetRotation" ref="gba28cf4ca8f552c782fc30ce3073dc73" args="(dGeomID geom)" -->
890<div class="memitem">
891<div class="memproto">
892 <table class="memname">
893 <tr>
894 <td class="memname">ODE_API const dReal* dGeomGetOffsetRotation </td>
895 <td>(</td>
896 <td class="paramtype">dGeomID&nbsp;</td>
897 <td class="paramname"> <em>geom</em> </td>
898 <td>&nbsp;)&nbsp;</td>
899 <td width="100%"></td>
900 </tr>
901 </table>
902</div>
903<div class="memdoc">
904
905<p>
906Get the offset rotation matrix of a geom.
907<p>
908Returns the rotational offset of the geom in local coordinates. If the geom has no offset, this function returns the identity matrix.<p>
909<dl compact><dt><b>Parameters:</b></dt><dd>
910 <table border="0" cellspacing="2" cellpadding="0">
911 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
912 </table>
913</dl>
914<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the geom's offset rotation matrix. </dd></dl>
915<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom. </dd></dl>
916
917</div>
918</div><p>
919<a class="anchor" name="g95b93f803880cac2619fe2635aa93ad8"></a><!-- doxytag: member="collision.h::dGeomGetPosition" ref="g95b93f803880cac2619fe2635aa93ad8" args="(dGeomID geom)" -->
920<div class="memitem">
921<div class="memproto">
922 <table class="memname">
923 <tr>
924 <td class="memname">ODE_API const dReal* dGeomGetPosition </td>
925 <td>(</td>
926 <td class="paramtype">dGeomID&nbsp;</td>
927 <td class="paramname"> <em>geom</em> </td>
928 <td>&nbsp;)&nbsp;</td>
929 <td width="100%"></td>
930 </tr>
931 </table>
932</div>
933<div class="memdoc">
934
935<p>
936Get the position vector of a placeable geom.
937<p>
938If the geom is attached to a body, the body's position will be returned.<p>
939Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
940<dl compact><dt><b>Parameters:</b></dt><dd>
941 <table border="0" cellspacing="2" cellpadding="0">
942 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
943 </table>
944</dl>
945<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the geom's position vector. </dd></dl>
946<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom. </dd></dl>
947<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#g2bddae29591b9f14c5175411b783d570" title="Get the position of a body.">dBodyGetPosition</a> </dd></dl>
948
949</div>
950</div><p>
951<a class="anchor" name="g11ad7f0098639b06f4bcd2d681122842"></a><!-- doxytag: member="collision.h::dGeomGetQuaternion" ref="g11ad7f0098639b06f4bcd2d681122842" args="(dGeomID geom, dQuaternion result)" -->
952<div class="memitem">
953<div class="memproto">
954 <table class="memname">
955 <tr>
956 <td class="memname">ODE_API void dGeomGetQuaternion </td>
957 <td>(</td>
958 <td class="paramtype">dGeomID&nbsp;</td>
959 <td class="paramname"> <em>geom</em>, </td>
960 </tr>
961 <tr>
962 <td class="paramkey"></td>
963 <td></td>
964 <td class="paramtype">dQuaternion&nbsp;</td>
965 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
966 </tr>
967 <tr>
968 <td></td>
969 <td>)</td>
970 <td></td><td></td><td width="100%"></td>
971 </tr>
972 </table>
973</div>
974<div class="memdoc">
975
976<p>
977Get the rotation quaternion of a placeable geom.
978<p>
979If the geom is attached to a body, the body's quaternion will be returned.<p>
980Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
981<dl compact><dt><b>Parameters:</b></dt><dd>
982 <table border="0" cellspacing="2" cellpadding="0">
983 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
984 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>a copy of the rotation quaternion. </td></tr>
985 </table>
986</dl>
987<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#g36b7e19622ed47fe6b9dcfbac20237e7" title="Get the rotation of a body.">dBodyGetQuaternion</a> </dd></dl>
988
989</div>
990</div><p>
991<a class="anchor" name="g293b2264cefb12f9a6659cacc6a722f7"></a><!-- doxytag: member="collision.h::dGeomGetRotation" ref="g293b2264cefb12f9a6659cacc6a722f7" args="(dGeomID geom)" -->
992<div class="memitem">
993<div class="memproto">
994 <table class="memname">
995 <tr>
996 <td class="memname">ODE_API const dReal* dGeomGetRotation </td>
997 <td>(</td>
998 <td class="paramtype">dGeomID&nbsp;</td>
999 <td class="paramname"> <em>geom</em> </td>
1000 <td>&nbsp;)&nbsp;</td>
1001 <td width="100%"></td>
1002 </tr>
1003 </table>
1004</div>
1005<div class="memdoc">
1006
1007<p>
1008Get the rotation matrix of a placeable geom.
1009<p>
1010If the geom is attached to a body, the body's rotation will be returned.<p>
1011Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
1012<dl compact><dt><b>Parameters:</b></dt><dd>
1013 <table border="0" cellspacing="2" cellpadding="0">
1014 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
1015 </table>
1016</dl>
1017<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the geom's rotation matrix. </dd></dl>
1018<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom. </dd></dl>
1019<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#g2374da7ff88a2bac607e2fbce529ad27" title="Get the rotation of a body.">dBodyGetRotation</a> </dd></dl>
1020
1021</div>
1022</div><p>
1023<a class="anchor" name="gfdc35eade2cbd0b6886ce957325d7c03"></a><!-- doxytag: member="collision.h::dGeomGetSpace" ref="gfdc35eade2cbd0b6886ce957325d7c03" args="(dGeomID)" -->
1024<div class="memitem">
1025<div class="memproto">
1026 <table class="memname">
1027 <tr>
1028 <td class="memname">ODE_API dSpaceID dGeomGetSpace </td>
1029 <td>(</td>
1030 <td class="paramtype">dGeomID&nbsp;</td>
1031 <td class="paramname"> </td>
1032 <td>&nbsp;)&nbsp;</td>
1033 <td width="100%"></td>
1034 </tr>
1035 </table>
1036</div>
1037<div class="memdoc">
1038
1039<p>
1040Query for the space containing a particular geom.
1041<p>
1042<dl compact><dt><b>Parameters:</b></dt><dd>
1043 <table border="0" cellspacing="2" cellpadding="0">
1044 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
1045 </table>
1046</dl>
1047<dl class="return" compact><dt><b>Returns:</b></dt><dd>The space that contains the geom, or NULL if the geom is not contained by a space. </dd></dl>
1048
1049</div>
1050</div><p>
1051<a class="anchor" name="g2c15b7c1a36c7526b66911beab1b7934"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildByte" ref="g2c15b7c1a36c7526b66911beab1b7934" args="(dHeightfieldDataID d, const unsigned char *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1052<div class="memitem">
1053<div class="memproto">
1054 <table class="memname">
1055 <tr>
1056 <td class="memname">ODE_API void dGeomHeightfieldDataBuildByte </td>
1057 <td>(</td>
1058 <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1059 <td class="paramname"> <em>d</em>, </td>
1060 </tr>
1061 <tr>
1062 <td class="paramkey"></td>
1063 <td></td>
1064 <td class="paramtype">const unsigned char *&nbsp;</td>
1065 <td class="paramname"> <em>pHeightData</em>, </td>
1066 </tr>
1067 <tr>
1068 <td class="paramkey"></td>
1069 <td></td>
1070 <td class="paramtype">int&nbsp;</td>
1071 <td class="paramname"> <em>bCopyHeightData</em>, </td>
1072 </tr>
1073 <tr>
1074 <td class="paramkey"></td>
1075 <td></td>
1076 <td class="paramtype">dReal&nbsp;</td>
1077 <td class="paramname"> <em>width</em>, </td>
1078 </tr>
1079 <tr>
1080 <td class="paramkey"></td>
1081 <td></td>
1082 <td class="paramtype">dReal&nbsp;</td>
1083 <td class="paramname"> <em>depth</em>, </td>
1084 </tr>
1085 <tr>
1086 <td class="paramkey"></td>
1087 <td></td>
1088 <td class="paramtype">int&nbsp;</td>
1089 <td class="paramname"> <em>widthSamples</em>, </td>
1090 </tr>
1091 <tr>
1092 <td class="paramkey"></td>
1093 <td></td>
1094 <td class="paramtype">int&nbsp;</td>
1095 <td class="paramname"> <em>depthSamples</em>, </td>
1096 </tr>
1097 <tr>
1098 <td class="paramkey"></td>
1099 <td></td>
1100 <td class="paramtype">dReal&nbsp;</td>
1101 <td class="paramname"> <em>scale</em>, </td>
1102 </tr>
1103 <tr>
1104 <td class="paramkey"></td>
1105 <td></td>
1106 <td class="paramtype">dReal&nbsp;</td>
1107 <td class="paramname"> <em>offset</em>, </td>
1108 </tr>
1109 <tr>
1110 <td class="paramkey"></td>
1111 <td></td>
1112 <td class="paramtype">dReal&nbsp;</td>
1113 <td class="paramname"> <em>thickness</em>, </td>
1114 </tr>
1115 <tr>
1116 <td class="paramkey"></td>
1117 <td></td>
1118 <td class="paramtype">int&nbsp;</td>
1119 <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1120 </tr>
1121 <tr>
1122 <td></td>
1123 <td>)</td>
1124 <td></td><td></td><td width="100%"></td>
1125 </tr>
1126 </table>
1127</div>
1128<div class="memdoc">
1129
1130<p>
1131Configures a dHeightfieldDataID to use height data in byte format.
1132<p>
1133Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is stored as a rectangular array of bytes (8 bit unsigned) representing the height at each sample point.<p>
1134<dl compact><dt><b>Parameters:</b></dt><dd>
1135 <table border="0" cellspacing="2" cellpadding="0">
1136 <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1137 <tr><td valign="top"></td><td valign="top"><em>pHeightData</em>&nbsp;</td><td>A pointer to the height data. </td></tr>
1138 <tr><td valign="top"></td><td valign="top"><em>bCopyHeightData</em>&nbsp;</td><td>When non-zero the height data is copied to an internal store. When zero the height data is accessed by reference and so must persist throughout the lifetime of the heightfield.</td></tr>
1139 <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1140 <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1141 <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1142 <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1143 <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1144 <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1145 <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1146 <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1147 </table>
1148</dl>
1149
1150</div>
1151</div><p>
1152<a class="anchor" name="g34566000a5a2673cc013294f0ed85926"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildCallback" ref="g34566000a5a2673cc013294f0ed85926" args="(dHeightfieldDataID d, void *pUserData, dHeightfieldGetHeight *pCallback, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1153<div class="memitem">
1154<div class="memproto">
1155 <table class="memname">
1156 <tr>
1157 <td class="memname">ODE_API void dGeomHeightfieldDataBuildCallback </td>
1158 <td>(</td>
1159 <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1160 <td class="paramname"> <em>d</em>, </td>
1161 </tr>
1162 <tr>
1163 <td class="paramkey"></td>
1164 <td></td>
1165 <td class="paramtype">void *&nbsp;</td>
1166 <td class="paramname"> <em>pUserData</em>, </td>
1167 </tr>
1168 <tr>
1169 <td class="paramkey"></td>
1170 <td></td>
1171 <td class="paramtype"><a class="el" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9">dHeightfieldGetHeight</a> *&nbsp;</td>
1172 <td class="paramname"> <em>pCallback</em>, </td>
1173 </tr>
1174 <tr>
1175 <td class="paramkey"></td>
1176 <td></td>
1177 <td class="paramtype">dReal&nbsp;</td>
1178 <td class="paramname"> <em>width</em>, </td>
1179 </tr>
1180 <tr>
1181 <td class="paramkey"></td>
1182 <td></td>
1183 <td class="paramtype">dReal&nbsp;</td>
1184 <td class="paramname"> <em>depth</em>, </td>
1185 </tr>
1186 <tr>
1187 <td class="paramkey"></td>
1188 <td></td>
1189 <td class="paramtype">int&nbsp;</td>
1190 <td class="paramname"> <em>widthSamples</em>, </td>
1191 </tr>
1192 <tr>
1193 <td class="paramkey"></td>
1194 <td></td>
1195 <td class="paramtype">int&nbsp;</td>
1196 <td class="paramname"> <em>depthSamples</em>, </td>
1197 </tr>
1198 <tr>
1199 <td class="paramkey"></td>
1200 <td></td>
1201 <td class="paramtype">dReal&nbsp;</td>
1202 <td class="paramname"> <em>scale</em>, </td>
1203 </tr>
1204 <tr>
1205 <td class="paramkey"></td>
1206 <td></td>
1207 <td class="paramtype">dReal&nbsp;</td>
1208 <td class="paramname"> <em>offset</em>, </td>
1209 </tr>
1210 <tr>
1211 <td class="paramkey"></td>
1212 <td></td>
1213 <td class="paramtype">dReal&nbsp;</td>
1214 <td class="paramname"> <em>thickness</em>, </td>
1215 </tr>
1216 <tr>
1217 <td class="paramkey"></td>
1218 <td></td>
1219 <td class="paramtype">int&nbsp;</td>
1220 <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1221 </tr>
1222 <tr>
1223 <td></td>
1224 <td>)</td>
1225 <td></td><td></td><td width="100%"></td>
1226 </tr>
1227 </table>
1228</div>
1229<div class="memdoc">
1230
1231<p>
1232Configures a dHeightfieldDataID to use a callback to retrieve height data.
1233<p>
1234Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is computed by the user and it should use the given callback when determining the height of a given element of it's shape.<p>
1235<dl compact><dt><b>Parameters:</b></dt><dd>
1236 <table border="0" cellspacing="2" cellpadding="0">
1237 <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1238 <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1239 <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1240 <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1241 <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1242 <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1243 <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1244 <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1245 <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1246 </table>
1247</dl>
1248
1249</div>
1250</div><p>
1251<a class="anchor" name="g98ec0c952b3b4e0fb3cd8cf66e267c86"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildDouble" ref="g98ec0c952b3b4e0fb3cd8cf66e267c86" args="(dHeightfieldDataID d, const double *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1252<div class="memitem">
1253<div class="memproto">
1254 <table class="memname">
1255 <tr>
1256 <td class="memname">ODE_API void dGeomHeightfieldDataBuildDouble </td>
1257 <td>(</td>
1258 <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1259 <td class="paramname"> <em>d</em>, </td>
1260 </tr>
1261 <tr>
1262 <td class="paramkey"></td>
1263 <td></td>
1264 <td class="paramtype">const double *&nbsp;</td>
1265 <td class="paramname"> <em>pHeightData</em>, </td>
1266 </tr>
1267 <tr>
1268 <td class="paramkey"></td>
1269 <td></td>
1270 <td class="paramtype">int&nbsp;</td>
1271 <td class="paramname"> <em>bCopyHeightData</em>, </td>
1272 </tr>
1273 <tr>
1274 <td class="paramkey"></td>
1275 <td></td>
1276 <td class="paramtype">dReal&nbsp;</td>
1277 <td class="paramname"> <em>width</em>, </td>
1278 </tr>
1279 <tr>
1280 <td class="paramkey"></td>
1281 <td></td>
1282 <td class="paramtype">dReal&nbsp;</td>
1283 <td class="paramname"> <em>depth</em>, </td>
1284 </tr>
1285 <tr>
1286 <td class="paramkey"></td>
1287 <td></td>
1288 <td class="paramtype">int&nbsp;</td>
1289 <td class="paramname"> <em>widthSamples</em>, </td>
1290 </tr>
1291 <tr>
1292 <td class="paramkey"></td>
1293 <td></td>
1294 <td class="paramtype">int&nbsp;</td>
1295 <td class="paramname"> <em>depthSamples</em>, </td>
1296 </tr>
1297 <tr>
1298 <td class="paramkey"></td>
1299 <td></td>
1300 <td class="paramtype">dReal&nbsp;</td>
1301 <td class="paramname"> <em>scale</em>, </td>
1302 </tr>
1303 <tr>
1304 <td class="paramkey"></td>
1305 <td></td>
1306 <td class="paramtype">dReal&nbsp;</td>
1307 <td class="paramname"> <em>offset</em>, </td>
1308 </tr>
1309 <tr>
1310 <td class="paramkey"></td>
1311 <td></td>
1312 <td class="paramtype">dReal&nbsp;</td>
1313 <td class="paramname"> <em>thickness</em>, </td>
1314 </tr>
1315 <tr>
1316 <td class="paramkey"></td>
1317 <td></td>
1318 <td class="paramtype">int&nbsp;</td>
1319 <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1320 </tr>
1321 <tr>
1322 <td></td>
1323 <td>)</td>
1324 <td></td><td></td><td width="100%"></td>
1325 </tr>
1326 </table>
1327</div>
1328<div class="memdoc">
1329
1330<p>
1331Configures a dHeightfieldDataID to use height data in double precision floating point format.
1332<p>
1333Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is stored as a rectangular array of double precision floats representing the height at each sample point.<p>
1334<dl compact><dt><b>Parameters:</b></dt><dd>
1335 <table border="0" cellspacing="2" cellpadding="0">
1336 <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1337 <tr><td valign="top"></td><td valign="top"><em>pHeightData</em>&nbsp;</td><td>A pointer to the height data. </td></tr>
1338 <tr><td valign="top"></td><td valign="top"><em>bCopyHeightData</em>&nbsp;</td><td>When non-zero the height data is copied to an internal store. When zero the height data is accessed by reference and so must persist throughout the lifetime of the heightfield.</td></tr>
1339 <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1340 <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1341 <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1342 <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1343 <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1344 <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1345 <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1346 <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1347 </table>
1348</dl>
1349
1350</div>
1351</div><p>
1352<a class="anchor" name="g2f7582d64cc8219141bc10efeca86d17"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildShort" ref="g2f7582d64cc8219141bc10efeca86d17" args="(dHeightfieldDataID d, const short *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1353<div class="memitem">
1354<div class="memproto">
1355 <table class="memname">
1356 <tr>
1357 <td class="memname">ODE_API void dGeomHeightfieldDataBuildShort </td>
1358 <td>(</td>
1359 <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1360 <td class="paramname"> <em>d</em>, </td>
1361 </tr>
1362 <tr>
1363 <td class="paramkey"></td>
1364 <td></td>
1365 <td class="paramtype">const short *&nbsp;</td>
1366 <td class="paramname"> <em>pHeightData</em>, </td>
1367 </tr>
1368 <tr>
1369 <td class="paramkey"></td>
1370 <td></td>
1371 <td class="paramtype">int&nbsp;</td>
1372 <td class="paramname"> <em>bCopyHeightData</em>, </td>
1373 </tr>
1374 <tr>
1375 <td class="paramkey"></td>
1376 <td></td>
1377 <td class="paramtype">dReal&nbsp;</td>
1378 <td class="paramname"> <em>width</em>, </td>
1379 </tr>
1380 <tr>
1381 <td class="paramkey"></td>
1382 <td></td>
1383 <td class="paramtype">dReal&nbsp;</td>
1384 <td class="paramname"> <em>depth</em>, </td>
1385 </tr>
1386 <tr>
1387 <td class="paramkey"></td>
1388 <td></td>
1389 <td class="paramtype">int&nbsp;</td>
1390 <td class="paramname"> <em>widthSamples</em>, </td>
1391 </tr>
1392 <tr>
1393 <td class="paramkey"></td>
1394 <td></td>
1395 <td class="paramtype">int&nbsp;</td>
1396 <td class="paramname"> <em>depthSamples</em>, </td>
1397 </tr>
1398 <tr>
1399 <td class="paramkey"></td>
1400 <td></td>
1401 <td class="paramtype">dReal&nbsp;</td>
1402 <td class="paramname"> <em>scale</em>, </td>
1403 </tr>
1404 <tr>
1405 <td class="paramkey"></td>
1406 <td></td>
1407 <td class="paramtype">dReal&nbsp;</td>
1408 <td class="paramname"> <em>offset</em>, </td>
1409 </tr>
1410 <tr>
1411 <td class="paramkey"></td>
1412 <td></td>
1413 <td class="paramtype">dReal&nbsp;</td>
1414 <td class="paramname"> <em>thickness</em>, </td>
1415 </tr>
1416 <tr>
1417 <td class="paramkey"></td>
1418 <td></td>
1419 <td class="paramtype">int&nbsp;</td>
1420 <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1421 </tr>
1422 <tr>
1423 <td></td>
1424 <td>)</td>
1425 <td></td><td></td><td width="100%"></td>
1426 </tr>
1427 </table>
1428</div>
1429<div class="memdoc">
1430
1431<p>
1432Configures a dHeightfieldDataID to use height data in short format.
1433<p>
1434Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is stored as a rectangular array of shorts (16 bit signed) representing the height at each sample point.<p>
1435<dl compact><dt><b>Parameters:</b></dt><dd>
1436 <table border="0" cellspacing="2" cellpadding="0">
1437 <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1438 <tr><td valign="top"></td><td valign="top"><em>pHeightData</em>&nbsp;</td><td>A pointer to the height data. </td></tr>
1439 <tr><td valign="top"></td><td valign="top"><em>bCopyHeightData</em>&nbsp;</td><td>When non-zero the height data is copied to an internal store. When zero the height data is accessed by reference and so must persist throughout the lifetime of the heightfield.</td></tr>
1440 <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1441 <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1442 <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1443 <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1444 <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1445 <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1446 <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1447 <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1448 </table>
1449</dl>
1450
1451</div>
1452</div><p>
1453<a class="anchor" name="g8da529419317e7bd4e01dabbe94daa09"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildSingle" ref="g8da529419317e7bd4e01dabbe94daa09" args="(dHeightfieldDataID d, const float *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1454<div class="memitem">
1455<div class="memproto">
1456 <table class="memname">
1457 <tr>
1458 <td class="memname">ODE_API void dGeomHeightfieldDataBuildSingle </td>
1459 <td>(</td>
1460 <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1461 <td class="paramname"> <em>d</em>, </td>
1462 </tr>
1463 <tr>
1464 <td class="paramkey"></td>
1465 <td></td>
1466 <td class="paramtype">const float *&nbsp;</td>
1467 <td class="paramname"> <em>pHeightData</em>, </td>
1468 </tr>
1469 <tr>
1470 <td class="paramkey"></td>
1471 <td></td>
1472 <td class="paramtype">int&nbsp;</td>
1473 <td class="paramname"> <em>bCopyHeightData</em>, </td>
1474 </tr>
1475 <tr>
1476 <td class="paramkey"></td>
1477 <td></td>
1478 <td class="paramtype">dReal&nbsp;</td>
1479 <td class="paramname"> <em>width</em>, </td>
1480 </tr>
1481 <tr>
1482 <td class="paramkey"></td>
1483 <td></td>
1484 <td class="paramtype">dReal&nbsp;</td>
1485 <td class="paramname"> <em>depth</em>, </td>
1486 </tr>
1487 <tr>
1488 <td class="paramkey"></td>
1489 <td></td>
1490 <td class="paramtype">int&nbsp;</td>
1491 <td class="paramname"> <em>widthSamples</em>, </td>
1492 </tr>
1493 <tr>
1494 <td class="paramkey"></td>
1495 <td></td>
1496 <td class="paramtype">int&nbsp;</td>
1497 <td class="paramname"> <em>depthSamples</em>, </td>
1498 </tr>
1499 <tr>
1500 <td class="paramkey"></td>
1501 <td></td>
1502 <td class="paramtype">dReal&nbsp;</td>
1503 <td class="paramname"> <em>scale</em>, </td>
1504 </tr>
1505 <tr>
1506 <td class="paramkey"></td>
1507 <td></td>
1508 <td class="paramtype">dReal&nbsp;</td>
1509 <td class="paramname"> <em>offset</em>, </td>
1510 </tr>
1511 <tr>
1512 <td class="paramkey"></td>
1513 <td></td>
1514 <td class="paramtype">dReal&nbsp;</td>
1515 <td class="paramname"> <em>thickness</em>, </td>
1516 </tr>
1517 <tr>
1518 <td class="paramkey"></td>
1519 <td></td>
1520 <td class="paramtype">int&nbsp;</td>
1521 <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1522 </tr>
1523 <tr>
1524 <td></td>
1525 <td>)</td>
1526 <td></td><td></td><td width="100%"></td>
1527 </tr>
1528 </table>
1529</div>
1530<div class="memdoc">
1531
1532<p>
1533Configures a dHeightfieldDataID to use height data in single precision floating point format.
1534<p>
1535Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is stored as a rectangular array of single precision floats representing the height at each sample point.<p>
1536<dl compact><dt><b>Parameters:</b></dt><dd>
1537 <table border="0" cellspacing="2" cellpadding="0">
1538 <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1539 <tr><td valign="top"></td><td valign="top"><em>pHeightData</em>&nbsp;</td><td>A pointer to the height data. </td></tr>
1540 <tr><td valign="top"></td><td valign="top"><em>bCopyHeightData</em>&nbsp;</td><td>When non-zero the height data is copied to an internal store. When zero the height data is accessed by reference and so must persist throughout the lifetime of the heightfield.</td></tr>
1541 <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1542 <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1543 <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1544 <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1545 <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1546 <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1547 <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1548 <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1549 </table>
1550</dl>
1551
1552</div>
1553</div><p>
1554<a class="anchor" name="g7de82d5cf9aa10bb3144d51f4360eea1"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataCreate" ref="g7de82d5cf9aa10bb3144d51f4360eea1" args="()" -->
1555<div class="memitem">
1556<div class="memproto">
1557 <table class="memname">
1558 <tr>
1559 <td class="memname">ODE_API dHeightfieldDataID dGeomHeightfieldDataCreate </td>
1560 <td>(</td>
1561 <td class="paramname"> </td>
1562 <td>&nbsp;)&nbsp;</td>
1563 <td width="100%"></td>
1564 </tr>
1565 </table>
1566</div>
1567<div class="memdoc">
1568
1569<p>
1570Creates a new empty dHeightfieldDataID.
1571<p>
1572Allocates a new dHeightfieldDataID and returns it. You must call dGeomHeightfieldDataDestroy to destroy it after the geom has been removed. The dHeightfieldDataID value is used when specifying a data format type.<p>
1573<dl class="return" compact><dt><b>Returns:</b></dt><dd>A dHeightfieldDataID for use with dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat. </dd></dl>
1574
1575</div>
1576</div><p>
1577<a class="anchor" name="gf98fc1f3d1784df5a5dff114b483d408"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataDestroy" ref="gf98fc1f3d1784df5a5dff114b483d408" args="(dHeightfieldDataID d)" -->
1578<div class="memitem">
1579<div class="memproto">
1580 <table class="memname">
1581 <tr>
1582 <td class="memname">ODE_API void dGeomHeightfieldDataDestroy </td>
1583 <td>(</td>
1584 <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1585 <td class="paramname"> <em>d</em> </td>
1586 <td>&nbsp;)&nbsp;</td>
1587 <td width="100%"></td>
1588 </tr>
1589 </table>
1590</div>
1591<div class="memdoc">
1592
1593<p>
1594Destroys a dHeightfieldDataID.
1595<p>
1596Deallocates a given dHeightfieldDataID and all managed resources.<p>
1597<dl compact><dt><b>Parameters:</b></dt><dd>
1598 <table border="0" cellspacing="2" cellpadding="0">
1599 <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A dHeightfieldDataID created by dGeomHeightfieldDataCreate </td></tr>
1600 </table>
1601</dl>
1602
1603</div>
1604</div><p>
1605<a class="anchor" name="gcdef420e65e3751388b315f5de2804b2"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataSetBounds" ref="gcdef420e65e3751388b315f5de2804b2" args="(dHeightfieldDataID d, dReal minHeight, dReal maxHeight)" -->
1606<div class="memitem">
1607<div class="memproto">
1608 <table class="memname">
1609 <tr>
1610 <td class="memname">ODE_API void dGeomHeightfieldDataSetBounds </td>
1611 <td>(</td>
1612 <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1613 <td class="paramname"> <em>d</em>, </td>
1614 </tr>
1615 <tr>
1616 <td class="paramkey"></td>
1617 <td></td>
1618 <td class="paramtype">dReal&nbsp;</td>
1619 <td class="paramname"> <em>minHeight</em>, </td>
1620 </tr>
1621 <tr>
1622 <td class="paramkey"></td>
1623 <td></td>
1624 <td class="paramtype">dReal&nbsp;</td>
1625 <td class="paramname"> <em>maxHeight</em></td><td>&nbsp;</td>
1626 </tr>
1627 <tr>
1628 <td></td>
1629 <td>)</td>
1630 <td></td><td></td><td width="100%"></td>
1631 </tr>
1632 </table>
1633</div>
1634<div class="memdoc">
1635
1636<p>
1637Manually set the minimum and maximum height bounds.
1638<p>
1639This call allows you to set explicit min / max values after initial creation typically for callback heightfields which default to +/- infinity, or those whose data has changed. This must be set prior to binding with a geom, as the the AABB is not recomputed after it's first generation.<p>
1640<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The minimum and maximum values are used to compute the AABB for the heightfield which is used for early rejection of collisions. A close fit will yield a more efficient collision check.</dd></dl>
1641<dl compact><dt><b>Parameters:</b></dt><dd>
1642 <table border="0" cellspacing="2" cellpadding="0">
1643 <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A dHeightfieldDataID created by dGeomHeightfieldDataCreate </td></tr>
1644 <tr><td valign="top"></td><td valign="top"><em>min_height</em>&nbsp;</td><td>The new minimum height value. Scale, offset and thickness is then applied. </td></tr>
1645 <tr><td valign="top"></td><td valign="top"><em>max_height</em>&nbsp;</td><td>The new maximum height value. Scale and offset is then applied. </td></tr>
1646 </table>
1647</dl>
1648
1649</div>
1650</div><p>
1651<a class="anchor" name="g747176d26ce4f9b10ebfa6c865ef1cca"></a><!-- doxytag: member="collision.h::dGeomHeightfieldGetHeightfieldData" ref="g747176d26ce4f9b10ebfa6c865ef1cca" args="(dGeomID g)" -->
1652<div class="memitem">
1653<div class="memproto">
1654 <table class="memname">
1655 <tr>
1656 <td class="memname">ODE_API dHeightfieldDataID dGeomHeightfieldGetHeightfieldData </td>
1657 <td>(</td>
1658 <td class="paramtype">dGeomID&nbsp;</td>
1659 <td class="paramname"> <em>g</em> </td>
1660 <td>&nbsp;)&nbsp;</td>
1661 <td width="100%"></td>
1662 </tr>
1663 </table>
1664</div>
1665<div class="memdoc">
1666
1667<p>
1668Gets the dHeightfieldDataID bound to a heightfield geom.
1669<p>
1670Returns the dHeightfieldDataID associated with a heightfield geom.<p>
1671<dl compact><dt><b>Parameters:</b></dt><dd>
1672 <table border="0" cellspacing="2" cellpadding="0">
1673 <tr><td valign="top"></td><td valign="top"><em>g</em>&nbsp;</td><td>A geom created by dCreateHeightfield </td></tr>
1674 </table>
1675</dl>
1676<dl class="return" compact><dt><b>Returns:</b></dt><dd>The dHeightfieldDataID which may be NULL if none was assigned. </dd></dl>
1677
1678</div>
1679</div><p>
1680<a class="anchor" name="g6c1ae1f3ca652d6410e7804cdf8f8491"></a><!-- doxytag: member="collision.h::dGeomHeightfieldSetHeightfieldData" ref="g6c1ae1f3ca652d6410e7804cdf8f8491" args="(dGeomID g, dHeightfieldDataID d)" -->
1681<div class="memitem">
1682<div class="memproto">
1683 <table class="memname">
1684 <tr>
1685 <td class="memname">ODE_API void dGeomHeightfieldSetHeightfieldData </td>
1686 <td>(</td>
1687 <td class="paramtype">dGeomID&nbsp;</td>
1688 <td class="paramname"> <em>g</em>, </td>
1689 </tr>
1690 <tr>
1691 <td class="paramkey"></td>
1692 <td></td>
1693 <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1694 <td class="paramname"> <em>d</em></td><td>&nbsp;</td>
1695 </tr>
1696 <tr>
1697 <td></td>
1698 <td>)</td>
1699 <td></td><td></td><td width="100%"></td>
1700 </tr>
1701 </table>
1702</div>
1703<div class="memdoc">
1704
1705<p>
1706Assigns a dHeightfieldDataID to a heightfield geom.
1707<p>
1708Associates the given dHeightfieldDataID with a heightfield geom. This is done without affecting the GEOM_PLACEABLE flag.<p>
1709<dl compact><dt><b>Parameters:</b></dt><dd>
1710 <table border="0" cellspacing="2" cellpadding="0">
1711 <tr><td valign="top"></td><td valign="top"><em>g</em>&nbsp;</td><td>A geom created by dCreateHeightfield </td></tr>
1712 <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A dHeightfieldDataID created by dGeomHeightfieldDataCreate </td></tr>
1713 </table>
1714</dl>
1715
1716</div>
1717</div><p>
1718<a class="anchor" name="g6533d33f870cf0fb6684ec05e5c0562e"></a><!-- doxytag: member="collision.h::dGeomIsEnabled" ref="g6533d33f870cf0fb6684ec05e5c0562e" args="(dGeomID geom)" -->
1719<div class="memitem">
1720<div class="memproto">
1721 <table class="memname">
1722 <tr>
1723 <td class="memname">ODE_API int dGeomIsEnabled </td>
1724 <td>(</td>
1725 <td class="paramtype">dGeomID&nbsp;</td>
1726 <td class="paramname"> <em>geom</em> </td>
1727 <td>&nbsp;)&nbsp;</td>
1728 <td width="100%"></td>
1729 </tr>
1730 </table>
1731</div>
1732<div class="memdoc">
1733
1734<p>
1735Check to see if a geom is enabled.
1736<p>
1737Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2, although they can still be members of a space. New geoms are created in the enabled state.<p>
1738<dl compact><dt><b>Parameters:</b></dt><dd>
1739 <table border="0" cellspacing="2" cellpadding="0">
1740 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
1741 </table>
1742</dl>
1743<dl class="return" compact><dt><b>Returns:</b></dt><dd>Non-zero if the geom is enabled, zero otherwise. </dd></dl>
1744<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g6cb32b4161435fe491859680b463fc12" title="Disable a geom.">dGeomDisable</a> <p>
1745<a class="el" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e" title="Check to see if a geom is enabled.">dGeomIsEnabled</a> </dd></dl>
1746
1747</div>
1748</div><p>
1749<a class="anchor" name="g46260e0668373aa600b1cf8f83276e10"></a><!-- doxytag: member="collision.h::dGeomIsOffset" ref="g46260e0668373aa600b1cf8f83276e10" args="(dGeomID geom)" -->
1750<div class="memitem">
1751<div class="memproto">
1752 <table class="memname">
1753 <tr>
1754 <td class="memname">ODE_API int dGeomIsOffset </td>
1755 <td>(</td>
1756 <td class="paramtype">dGeomID&nbsp;</td>
1757 <td class="paramname"> <em>geom</em> </td>
1758 <td>&nbsp;)&nbsp;</td>
1759 <td width="100%"></td>
1760 </tr>
1761 </table>
1762</div>
1763<div class="memdoc">
1764
1765<p>
1766Check to see whether the geom has an offset.
1767<p>
1768This function will return non-zero if the offset has been created. Note that there is a difference between a geom with no offset, and a geom with an offset that is the identity transform. In the latter case, although the observed behaviour is identical, there is a unnecessary computation involved because the geom will be applying the transform whenever it needs to recalculate its world position.<p>
1769<dl compact><dt><b>Parameters:</b></dt><dd>
1770 <table border="0" cellspacing="2" cellpadding="0">
1771 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
1772 </table>
1773</dl>
1774<dl class="return" compact><dt><b>Returns:</b></dt><dd>Non-zero if the geom has an offset, zero otherwise. </dd></dl>
1775
1776</div>
1777</div><p>
1778<a class="anchor" name="ge5a58bdc78fb4f163a0e9c3ecabf64c9"></a><!-- doxytag: member="collision.h::dGeomIsSpace" ref="ge5a58bdc78fb4f163a0e9c3ecabf64c9" args="(dGeomID geom)" -->
1779<div class="memitem">
1780<div class="memproto">
1781 <table class="memname">
1782 <tr>
1783 <td class="memname">ODE_API int dGeomIsSpace </td>
1784 <td>(</td>
1785 <td class="paramtype">dGeomID&nbsp;</td>
1786 <td class="paramname"> <em>geom</em> </td>
1787 <td>&nbsp;)&nbsp;</td>
1788 <td width="100%"></td>
1789 </tr>
1790 </table>
1791</div>
1792<div class="memdoc">
1793
1794<p>
1795Determing if a geom is a space.
1796<p>
1797<dl compact><dt><b>Parameters:</b></dt><dd>
1798 <table border="0" cellspacing="2" cellpadding="0">
1799 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
1800 </table>
1801</dl>
1802<dl class="return" compact><dt><b>Returns:</b></dt><dd>Non-zero if the geom is a space, zero otherwise. </dd></dl>
1803
1804</div>
1805</div><p>
1806<a class="anchor" name="g97cad1194789477eac19fe364d986505"></a><!-- doxytag: member="collision.h::dGeomSetBody" ref="g97cad1194789477eac19fe364d986505" args="(dGeomID geom, dBodyID body)" -->
1807<div class="memitem">
1808<div class="memproto">
1809 <table class="memname">
1810 <tr>
1811 <td class="memname">ODE_API void dGeomSetBody </td>
1812 <td>(</td>
1813 <td class="paramtype">dGeomID&nbsp;</td>
1814 <td class="paramname"> <em>geom</em>, </td>
1815 </tr>
1816 <tr>
1817 <td class="paramkey"></td>
1818 <td></td>
1819 <td class="paramtype">dBodyID&nbsp;</td>
1820 <td class="paramname"> <em>body</em></td><td>&nbsp;</td>
1821 </tr>
1822 <tr>
1823 <td></td>
1824 <td>)</td>
1825 <td></td><td></td><td width="100%"></td>
1826 </tr>
1827 </table>
1828</div>
1829<div class="memdoc">
1830
1831<p>
1832Set the body associated with a placeable geom.
1833<p>
1834Setting a body on a geom automatically combines the position vector and rotation matrix of the body and geom, so that setting the position or orientation of one will set the value for both objects. Setting a body ID of zero gives the geom its own position and rotation, independent from any body. If the geom was previously connected to a body then its new independent position/rotation is set to the current position/rotation of the body.<p>
1835Calling these functions on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
1836<dl compact><dt><b>Parameters:</b></dt><dd>
1837 <table border="0" cellspacing="2" cellpadding="0">
1838 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to connect </td></tr>
1839 <tr><td valign="top"></td><td valign="top"><em>body</em>&nbsp;</td><td>the body to attach to the geom </td></tr>
1840 </table>
1841</dl>
1842
1843</div>
1844</div><p>
1845<a class="anchor" name="g80fd5741701eb48472521780d5e2f9b9"></a><!-- doxytag: member="collision.h::dGeomSetCategoryBits" ref="g80fd5741701eb48472521780d5e2f9b9" args="(dGeomID geom, unsigned long bits)" -->
1846<div class="memitem">
1847<div class="memproto">
1848 <table class="memname">
1849 <tr>
1850 <td class="memname">ODE_API void dGeomSetCategoryBits </td>
1851 <td>(</td>
1852 <td class="paramtype">dGeomID&nbsp;</td>
1853 <td class="paramname"> <em>geom</em>, </td>
1854 </tr>
1855 <tr>
1856 <td class="paramkey"></td>
1857 <td></td>
1858 <td class="paramtype">unsigned long&nbsp;</td>
1859 <td class="paramname"> <em>bits</em></td><td>&nbsp;</td>
1860 </tr>
1861 <tr>
1862 <td></td>
1863 <td>)</td>
1864 <td></td><td></td><td width="100%"></td>
1865 </tr>
1866 </table>
1867</div>
1868<div class="memdoc">
1869
1870<p>
1871Set the "category" bitfield for the given geom.
1872<p>
1873The category bitfield is used by spaces to govern which geoms will interact with each other. The bitfield is guaranteed to be at least 32 bits wide. The default category values for newly created geoms have all bits set.<p>
1874<dl compact><dt><b>Parameters:</b></dt><dd>
1875 <table border="0" cellspacing="2" cellpadding="0">
1876 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set </td></tr>
1877 <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>the new bitfield value </td></tr>
1878 </table>
1879</dl>
1880
1881</div>
1882</div><p>
1883<a class="anchor" name="ga55b4de01a61be41668685857b78455d"></a><!-- doxytag: member="collision.h::dGeomSetCollideBits" ref="ga55b4de01a61be41668685857b78455d" args="(dGeomID geom, unsigned long bits)" -->
1884<div class="memitem">
1885<div class="memproto">
1886 <table class="memname">
1887 <tr>
1888 <td class="memname">ODE_API void dGeomSetCollideBits </td>
1889 <td>(</td>
1890 <td class="paramtype">dGeomID&nbsp;</td>
1891 <td class="paramname"> <em>geom</em>, </td>
1892 </tr>
1893 <tr>
1894 <td class="paramkey"></td>
1895 <td></td>
1896 <td class="paramtype">unsigned long&nbsp;</td>
1897 <td class="paramname"> <em>bits</em></td><td>&nbsp;</td>
1898 </tr>
1899 <tr>
1900 <td></td>
1901 <td>)</td>
1902 <td></td><td></td><td width="100%"></td>
1903 </tr>
1904 </table>
1905</div>
1906<div class="memdoc">
1907
1908<p>
1909Set the "collide" bitfield for the given geom.
1910<p>
1911The collide bitfield is used by spaces to govern which geoms will interact with each other. The bitfield is guaranteed to be at least 32 bits wide. The default category values for newly created geoms have all bits set.<p>
1912<dl compact><dt><b>Parameters:</b></dt><dd>
1913 <table border="0" cellspacing="2" cellpadding="0">
1914 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set </td></tr>
1915 <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>the new bitfield value </td></tr>
1916 </table>
1917</dl>
1918
1919</div>
1920</div><p>
1921<a class="anchor" name="gf68eb443d5c66ab1aaa8a7d38d1dbc4f"></a><!-- doxytag: member="collision.h::dGeomSetData" ref="gf68eb443d5c66ab1aaa8a7d38d1dbc4f" args="(dGeomID geom, void *data)" -->
1922<div class="memitem">
1923<div class="memproto">
1924 <table class="memname">
1925 <tr>
1926 <td class="memname">ODE_API void dGeomSetData </td>
1927 <td>(</td>
1928 <td class="paramtype">dGeomID&nbsp;</td>
1929 <td class="paramname"> <em>geom</em>, </td>
1930 </tr>
1931 <tr>
1932 <td class="paramkey"></td>
1933 <td></td>
1934 <td class="paramtype">void *&nbsp;</td>
1935 <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
1936 </tr>
1937 <tr>
1938 <td></td>
1939 <td>)</td>
1940 <td></td><td></td><td width="100%"></td>
1941 </tr>
1942 </table>
1943</div>
1944<div class="memdoc">
1945
1946<p>
1947Set the user-defined data pointer stored in the geom.
1948<p>
1949<dl compact><dt><b>Parameters:</b></dt><dd>
1950 <table border="0" cellspacing="2" cellpadding="0">
1951 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to hold the data </td></tr>
1952 <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data pointer to be stored </td></tr>
1953 </table>
1954</dl>
1955
1956</div>
1957</div><p>
1958<a class="anchor" name="gdc292bc01d5bed32f145ee42760d73b4"></a><!-- doxytag: member="collision.h::dGeomSetOffsetPosition" ref="gdc292bc01d5bed32f145ee42760d73b4" args="(dGeomID geom, dReal x, dReal y, dReal z)" -->
1959<div class="memitem">
1960<div class="memproto">
1961 <table class="memname">
1962 <tr>
1963 <td class="memname">ODE_API void dGeomSetOffsetPosition </td>
1964 <td>(</td>
1965 <td class="paramtype">dGeomID&nbsp;</td>
1966 <td class="paramname"> <em>geom</em>, </td>
1967 </tr>
1968 <tr>
1969 <td class="paramkey"></td>
1970 <td></td>
1971 <td class="paramtype">dReal&nbsp;</td>
1972 <td class="paramname"> <em>x</em>, </td>
1973 </tr>
1974 <tr>
1975 <td class="paramkey"></td>
1976 <td></td>
1977 <td class="paramtype">dReal&nbsp;</td>
1978 <td class="paramname"> <em>y</em>, </td>
1979 </tr>
1980 <tr>
1981 <td class="paramkey"></td>
1982 <td></td>
1983 <td class="paramtype">dReal&nbsp;</td>
1984 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
1985 </tr>
1986 <tr>
1987 <td></td>
1988 <td>)</td>
1989 <td></td><td></td><td width="100%"></td>
1990 </tr>
1991 </table>
1992</div>
1993<div class="memdoc">
1994
1995<p>
1996Set the local offset position of a geom from its body.
1997<p>
1998Sets the geom's positional offset in local coordinates. After this call, the geom will be at a new position determined from the body's position and the offset. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
1999<dl compact><dt><b>Parameters:</b></dt><dd>
2000 <table border="0" cellspacing="2" cellpadding="0">
2001 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2002 <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>the new X coordinate. </td></tr>
2003 <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>the new Y coordinate. </td></tr>
2004 <tr><td valign="top"></td><td valign="top"><em>z</em>&nbsp;</td><td>the new Z coordinate. </td></tr>
2005 </table>
2006</dl>
2007
2008</div>
2009</div><p>
2010<a class="anchor" name="g9eba87b7598eb6b3a9b6bde1abbeaa1a"></a><!-- doxytag: member="collision.h::dGeomSetOffsetQuaternion" ref="g9eba87b7598eb6b3a9b6bde1abbeaa1a" args="(dGeomID geom, const dQuaternion Q)" -->
2011<div class="memitem">
2012<div class="memproto">
2013 <table class="memname">
2014 <tr>
2015 <td class="memname">ODE_API void dGeomSetOffsetQuaternion </td>
2016 <td>(</td>
2017 <td class="paramtype">dGeomID&nbsp;</td>
2018 <td class="paramname"> <em>geom</em>, </td>
2019 </tr>
2020 <tr>
2021 <td class="paramkey"></td>
2022 <td></td>
2023 <td class="paramtype">const dQuaternion&nbsp;</td>
2024 <td class="paramname"> <em>Q</em></td><td>&nbsp;</td>
2025 </tr>
2026 <tr>
2027 <td></td>
2028 <td>)</td>
2029 <td></td><td></td><td width="100%"></td>
2030 </tr>
2031 </table>
2032</div>
2033<div class="memdoc">
2034
2035<p>
2036Set the local offset rotation of a geom from its body.
2037<p>
2038Sets the geom's rotational offset in local coordinates. After this call, the geom will be at a new position determined from the body's position and the offset. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2039<dl compact><dt><b>Parameters:</b></dt><dd>
2040 <table border="0" cellspacing="2" cellpadding="0">
2041 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2042 <tr><td valign="top"></td><td valign="top"><em>Q</em>&nbsp;</td><td>the new rotation. </td></tr>
2043 </table>
2044</dl>
2045
2046</div>
2047</div><p>
2048<a class="anchor" name="g805d896b4bc79ceb40e70aadb9629cab"></a><!-- doxytag: member="collision.h::dGeomSetOffsetRotation" ref="g805d896b4bc79ceb40e70aadb9629cab" args="(dGeomID geom, const dMatrix3 R)" -->
2049<div class="memitem">
2050<div class="memproto">
2051 <table class="memname">
2052 <tr>
2053 <td class="memname">ODE_API void dGeomSetOffsetRotation </td>
2054 <td>(</td>
2055 <td class="paramtype">dGeomID&nbsp;</td>
2056 <td class="paramname"> <em>geom</em>, </td>
2057 </tr>
2058 <tr>
2059 <td class="paramkey"></td>
2060 <td></td>
2061 <td class="paramtype">const dMatrix3&nbsp;</td>
2062 <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
2063 </tr>
2064 <tr>
2065 <td></td>
2066 <td>)</td>
2067 <td></td><td></td><td width="100%"></td>
2068 </tr>
2069 </table>
2070</div>
2071<div class="memdoc">
2072
2073<p>
2074Set the local offset rotation matrix of a geom from its body.
2075<p>
2076Sets the geom's rotational offset in local coordinates. After this call, the geom will be at a new position determined from the body's position and the offset. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2077<dl compact><dt><b>Parameters:</b></dt><dd>
2078 <table border="0" cellspacing="2" cellpadding="0">
2079 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2080 <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>the new rotation matrix. </td></tr>
2081 </table>
2082</dl>
2083
2084</div>
2085</div><p>
2086<a class="anchor" name="g934fe31c543d588991d28cd8571e52ed"></a><!-- doxytag: member="collision.h::dGeomSetOffsetWorldPosition" ref="g934fe31c543d588991d28cd8571e52ed" args="(dGeomID geom, dReal x, dReal y, dReal z)" -->
2087<div class="memitem">
2088<div class="memproto">
2089 <table class="memname">
2090 <tr>
2091 <td class="memname">ODE_API void dGeomSetOffsetWorldPosition </td>
2092 <td>(</td>
2093 <td class="paramtype">dGeomID&nbsp;</td>
2094 <td class="paramname"> <em>geom</em>, </td>
2095 </tr>
2096 <tr>
2097 <td class="paramkey"></td>
2098 <td></td>
2099 <td class="paramtype">dReal&nbsp;</td>
2100 <td class="paramname"> <em>x</em>, </td>
2101 </tr>
2102 <tr>
2103 <td class="paramkey"></td>
2104 <td></td>
2105 <td class="paramtype">dReal&nbsp;</td>
2106 <td class="paramname"> <em>y</em>, </td>
2107 </tr>
2108 <tr>
2109 <td class="paramkey"></td>
2110 <td></td>
2111 <td class="paramtype">dReal&nbsp;</td>
2112 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
2113 </tr>
2114 <tr>
2115 <td></td>
2116 <td>)</td>
2117 <td></td><td></td><td width="100%"></td>
2118 </tr>
2119 </table>
2120</div>
2121<div class="memdoc">
2122
2123<p>
2124Set the offset position of a geom from its body.
2125<p>
2126Sets the geom's positional offset to move it to the new world coordinates. After this call, the geom will be at the world position passed in, and the offset will be the difference from the current body position. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2127<dl compact><dt><b>Parameters:</b></dt><dd>
2128 <table border="0" cellspacing="2" cellpadding="0">
2129 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2130 <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>the new X coordinate. </td></tr>
2131 <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>the new Y coordinate. </td></tr>
2132 <tr><td valign="top"></td><td valign="top"><em>z</em>&nbsp;</td><td>the new Z coordinate. </td></tr>
2133 </table>
2134</dl>
2135
2136</div>
2137</div><p>
2138<a class="anchor" name="ga04f2117ab18a1d3e27270defdad83a8"></a><!-- doxytag: member="collision.h::dGeomSetOffsetWorldQuaternion" ref="ga04f2117ab18a1d3e27270defdad83a8" args="(dGeomID geom, const dQuaternion)" -->
2139<div class="memitem">
2140<div class="memproto">
2141 <table class="memname">
2142 <tr>
2143 <td class="memname">ODE_API void dGeomSetOffsetWorldQuaternion </td>
2144 <td>(</td>
2145 <td class="paramtype">dGeomID&nbsp;</td>
2146 <td class="paramname"> <em>geom</em>, </td>
2147 </tr>
2148 <tr>
2149 <td class="paramkey"></td>
2150 <td></td>
2151 <td class="paramtype">const &nbsp;</td>
2152 <td class="paramname"> <em>dQuaternion</em></td><td>&nbsp;</td>
2153 </tr>
2154 <tr>
2155 <td></td>
2156 <td>)</td>
2157 <td></td><td></td><td width="100%"></td>
2158 </tr>
2159 </table>
2160</div>
2161<div class="memdoc">
2162
2163<p>
2164Set the offset rotation of a geom from its body.
2165<p>
2166Sets the geom's rotational offset to orient it to the new world rotation matrix. After this call, the geom will be at the world orientation passed in, and the offset will be the difference from the current body orientation. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2167<dl compact><dt><b>Parameters:</b></dt><dd>
2168 <table border="0" cellspacing="2" cellpadding="0">
2169 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2170 <tr><td valign="top"></td><td valign="top"><em>Q</em>&nbsp;</td><td>the new rotation. </td></tr>
2171 </table>
2172</dl>
2173
2174</div>
2175</div><p>
2176<a class="anchor" name="g2c1ef27e7e8ced6eb8488221a1a7c200"></a><!-- doxytag: member="collision.h::dGeomSetOffsetWorldRotation" ref="g2c1ef27e7e8ced6eb8488221a1a7c200" args="(dGeomID geom, const dMatrix3 R)" -->
2177<div class="memitem">
2178<div class="memproto">
2179 <table class="memname">
2180 <tr>
2181 <td class="memname">ODE_API void dGeomSetOffsetWorldRotation </td>
2182 <td>(</td>
2183 <td class="paramtype">dGeomID&nbsp;</td>
2184 <td class="paramname"> <em>geom</em>, </td>
2185 </tr>
2186 <tr>
2187 <td class="paramkey"></td>
2188 <td></td>
2189 <td class="paramtype">const dMatrix3&nbsp;</td>
2190 <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
2191 </tr>
2192 <tr>
2193 <td></td>
2194 <td>)</td>
2195 <td></td><td></td><td width="100%"></td>
2196 </tr>
2197 </table>
2198</div>
2199<div class="memdoc">
2200
2201<p>
2202Set the offset rotation of a geom from its body.
2203<p>
2204Sets the geom's rotational offset to orient it to the new world rotation matrix. After this call, the geom will be at the world orientation passed in, and the offset will be the difference from the current body orientation. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2205<dl compact><dt><b>Parameters:</b></dt><dd>
2206 <table border="0" cellspacing="2" cellpadding="0">
2207 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2208 <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>the new rotation matrix. </td></tr>
2209 </table>
2210</dl>
2211
2212</div>
2213</div><p>
2214<a class="anchor" name="g71043b70a735e8f5451c3e13cef345fe"></a><!-- doxytag: member="collision.h::dGeomSetPosition" ref="g71043b70a735e8f5451c3e13cef345fe" args="(dGeomID geom, dReal x, dReal y, dReal z)" -->
2215<div class="memitem">
2216<div class="memproto">
2217 <table class="memname">
2218 <tr>
2219 <td class="memname">ODE_API void dGeomSetPosition </td>
2220 <td>(</td>
2221 <td class="paramtype">dGeomID&nbsp;</td>
2222 <td class="paramname"> <em>geom</em>, </td>
2223 </tr>
2224 <tr>
2225 <td class="paramkey"></td>
2226 <td></td>
2227 <td class="paramtype">dReal&nbsp;</td>
2228 <td class="paramname"> <em>x</em>, </td>
2229 </tr>
2230 <tr>
2231 <td class="paramkey"></td>
2232 <td></td>
2233 <td class="paramtype">dReal&nbsp;</td>
2234 <td class="paramname"> <em>y</em>, </td>
2235 </tr>
2236 <tr>
2237 <td class="paramkey"></td>
2238 <td></td>
2239 <td class="paramtype">dReal&nbsp;</td>
2240 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
2241 </tr>
2242 <tr>
2243 <td></td>
2244 <td>)</td>
2245 <td></td><td></td><td width="100%"></td>
2246 </tr>
2247 </table>
2248</div>
2249<div class="memdoc">
2250
2251<p>
2252Set the position vector of a placeable geom.
2253<p>
2254If the geom is attached to a body, the body's position will also be changed. Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
2255<dl compact><dt><b>Parameters:</b></dt><dd>
2256 <table border="0" cellspacing="2" cellpadding="0">
2257 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2258 <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>the new X coordinate. </td></tr>
2259 <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>the new Y coordinate. </td></tr>
2260 <tr><td valign="top"></td><td valign="top"><em>z</em>&nbsp;</td><td>the new Z coordinate. </td></tr>
2261 </table>
2262</dl>
2263<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#gb84612b793366f18ff5b5cbdbed092da" title="Set position of a body.">dBodySetPosition</a> </dd></dl>
2264
2265</div>
2266</div><p>
2267<a class="anchor" name="g989149d93162264d699444a57b045150"></a><!-- doxytag: member="collision.h::dGeomSetQuaternion" ref="g989149d93162264d699444a57b045150" args="(dGeomID geom, const dQuaternion Q)" -->
2268<div class="memitem">
2269<div class="memproto">
2270 <table class="memname">
2271 <tr>
2272 <td class="memname">ODE_API void dGeomSetQuaternion </td>
2273 <td>(</td>
2274 <td class="paramtype">dGeomID&nbsp;</td>
2275 <td class="paramname"> <em>geom</em>, </td>
2276 </tr>
2277 <tr>
2278 <td class="paramkey"></td>
2279 <td></td>
2280 <td class="paramtype">const dQuaternion&nbsp;</td>
2281 <td class="paramname"> <em>Q</em></td><td>&nbsp;</td>
2282 </tr>
2283 <tr>
2284 <td></td>
2285 <td>)</td>
2286 <td></td><td></td><td width="100%"></td>
2287 </tr>
2288 </table>
2289</div>
2290<div class="memdoc">
2291
2292<p>
2293Set the rotation of a placeable geom.
2294<p>
2295If the geom is attached to a body, the body's rotation will also be changed.<p>
2296Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
2297<dl compact><dt><b>Parameters:</b></dt><dd>
2298 <table border="0" cellspacing="2" cellpadding="0">
2299 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2300 <tr><td valign="top"></td><td valign="top"><em>Q</em>&nbsp;</td><td>the new rotation. </td></tr>
2301 </table>
2302</dl>
2303<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#ga5f51dd3605c402320e9eae4231d7ad4" title="Set the orientation of a body.">dBodySetQuaternion</a> </dd></dl>
2304
2305</div>
2306</div><p>
2307<a class="anchor" name="g76c510f4b7d5a036d8a36f2d60d670e5"></a><!-- doxytag: member="collision.h::dGeomSetRotation" ref="g76c510f4b7d5a036d8a36f2d60d670e5" args="(dGeomID geom, const dMatrix3 R)" -->
2308<div class="memitem">
2309<div class="memproto">
2310 <table class="memname">
2311 <tr>
2312 <td class="memname">ODE_API void dGeomSetRotation </td>
2313 <td>(</td>
2314 <td class="paramtype">dGeomID&nbsp;</td>
2315 <td class="paramname"> <em>geom</em>, </td>
2316 </tr>
2317 <tr>
2318 <td class="paramkey"></td>
2319 <td></td>
2320 <td class="paramtype">const dMatrix3&nbsp;</td>
2321 <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
2322 </tr>
2323 <tr>
2324 <td></td>
2325 <td>)</td>
2326 <td></td><td></td><td width="100%"></td>
2327 </tr>
2328 </table>
2329</div>
2330<div class="memdoc">
2331
2332<p>
2333Set the rotation matrix of a placeable geom.
2334<p>
2335If the geom is attached to a body, the body's rotation will also be changed. Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
2336<dl compact><dt><b>Parameters:</b></dt><dd>
2337 <table border="0" cellspacing="2" cellpadding="0">
2338 <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2339 <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>the new rotation matrix. </td></tr>
2340 </table>
2341</dl>
2342<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#gb5f04968ec37ef46d2aaffad6c344468" title="Set the orientation of a body.">dBodySetRotation</a> </dd></dl>
2343
2344</div>
2345</div><p>
2346<a class="anchor" name="gfd185829b6940e2b3238517e1acd2fbb"></a><!-- doxytag: member="collision.h::dSpaceCollide" ref="gfd185829b6940e2b3238517e1acd2fbb" args="(dSpaceID space, void *data, dNearCallback *callback)" -->
2347<div class="memitem">
2348<div class="memproto">
2349 <table class="memname">
2350 <tr>
2351 <td class="memname">ODE_API void dSpaceCollide </td>
2352 <td>(</td>
2353 <td class="paramtype">dSpaceID&nbsp;</td>
2354 <td class="paramname"> <em>space</em>, </td>
2355 </tr>
2356 <tr>
2357 <td class="paramkey"></td>
2358 <td></td>
2359 <td class="paramtype">void *&nbsp;</td>
2360 <td class="paramname"> <em>data</em>, </td>
2361 </tr>
2362 <tr>
2363 <td class="paramkey"></td>
2364 <td></td>
2365 <td class="paramtype"><a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> *&nbsp;</td>
2366 <td class="paramname"> <em>callback</em></td><td>&nbsp;</td>
2367 </tr>
2368 <tr>
2369 <td></td>
2370 <td>)</td>
2371 <td></td><td></td><td width="100%"></td>
2372 </tr>
2373 </table>
2374</div>
2375<div class="memdoc">
2376
2377<p>
2378Determines which pairs of geoms in a space may potentially intersect, and calls the callback function for each candidate pair.
2379<p>
2380<dl compact><dt><b>Parameters:</b></dt><dd>
2381 <table border="0" cellspacing="2" cellpadding="0">
2382 <tr><td valign="top"></td><td valign="top"><em>space</em>&nbsp;</td><td>The space to test.</td></tr>
2383 <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Passed from dSpaceCollide directly to the callback function. Its meaning is user defined. The o1 and o2 arguments are the geoms that may be near each other.</td></tr>
2384 <tr><td valign="top"></td><td valign="top"><em>callback</em>&nbsp;</td><td>A callback function is of type <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a>.</td></tr>
2385 </table>
2386</dl>
2387<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Other spaces that are contained within the colliding space are not treated specially, i.e. they are not recursed into. The callback function may be passed these contained spaces as one or both geom arguments.<p>
2388<a class="el" href="group__collide.html#gfd185829b6940e2b3238517e1acd2fbb" title="Determines which pairs of geoms in a space may potentially intersect, and calls the...">dSpaceCollide()</a> is guaranteed to pass all intersecting geom pairs to the callback function, but may also pass close but non-intersecting pairs. The number of these calls depends on the internal algorithms used by the space. Thus you should not expect that dCollide will return contacts for every pair passed to the callback.</dd></dl>
2389<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g72a6bb0b550d3e181f8b7a9be7179db5" title="Determines which geoms from one space may potentially intersect with geoms from another...">dSpaceCollide2</a> </dd></dl>
2390
2391</div>
2392</div><p>
2393<a class="anchor" name="g72a6bb0b550d3e181f8b7a9be7179db5"></a><!-- doxytag: member="collision.h::dSpaceCollide2" ref="g72a6bb0b550d3e181f8b7a9be7179db5" args="(dGeomID space1, dGeomID space2, void *data, dNearCallback *callback)" -->
2394<div class="memitem">
2395<div class="memproto">
2396 <table class="memname">
2397 <tr>
2398 <td class="memname">ODE_API void dSpaceCollide2 </td>
2399 <td>(</td>
2400 <td class="paramtype">dGeomID&nbsp;</td>
2401 <td class="paramname"> <em>space1</em>, </td>
2402 </tr>
2403 <tr>
2404 <td class="paramkey"></td>
2405 <td></td>
2406 <td class="paramtype">dGeomID&nbsp;</td>
2407 <td class="paramname"> <em>space2</em>, </td>
2408 </tr>
2409 <tr>
2410 <td class="paramkey"></td>
2411 <td></td>
2412 <td class="paramtype">void *&nbsp;</td>
2413 <td class="paramname"> <em>data</em>, </td>
2414 </tr>
2415 <tr>
2416 <td class="paramkey"></td>
2417 <td></td>
2418 <td class="paramtype"><a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> *&nbsp;</td>
2419 <td class="paramname"> <em>callback</em></td><td>&nbsp;</td>
2420 </tr>
2421 <tr>
2422 <td></td>
2423 <td>)</td>
2424 <td></td><td></td><td width="100%"></td>
2425 </tr>
2426 </table>
2427</div>
2428<div class="memdoc">
2429
2430<p>
2431Determines which geoms from one space may potentially intersect with geoms from another space, and calls the callback function for each candidate pair.
2432<p>
2433<dl compact><dt><b>Parameters:</b></dt><dd>
2434 <table border="0" cellspacing="2" cellpadding="0">
2435 <tr><td valign="top"></td><td valign="top"><em>space1</em>&nbsp;</td><td>The first space to test.</td></tr>
2436 <tr><td valign="top"></td><td valign="top"><em>space2</em>&nbsp;</td><td>The second space to test.</td></tr>
2437 <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Passed from dSpaceCollide directly to the callback function. Its meaning is user defined. The o1 and o2 arguments are the geoms that may be near each other.</td></tr>
2438 <tr><td valign="top"></td><td valign="top"><em>callback</em>&nbsp;</td><td>A callback function is of type <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a>.</td></tr>
2439 </table>
2440</dl>
2441<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This function can also test a single non-space geom against a space. This function is useful when there is a collision hierarchy, i.e. when there are spaces that contain other spaces.<p>
2442Other spaces that are contained within the colliding space are not treated specially, i.e. they are not recursed into. The callback function may be passed these contained spaces as one or both geom arguments.<p>
2443<a class="el" href="group__collide.html#g72a6bb0b550d3e181f8b7a9be7179db5" title="Determines which geoms from one space may potentially intersect with geoms from another...">dSpaceCollide2()</a> is guaranteed to pass all intersecting geom pairs to the callback function, but may also pass close but non-intersecting pairs. The number of these calls depends on the internal algorithms used by the space. Thus you should not expect that dCollide will return contacts for every pair passed to the callback.</dd></dl>
2444<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#gfd185829b6940e2b3238517e1acd2fbb" title="Determines which pairs of geoms in a space may potentially intersect, and calls the...">dSpaceCollide</a> </dd></dl>
2445
2446</div>
2447</div><p>
2448<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
2449<a href="http://www.doxygen.org/index.html">
2450<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
2451</body>
2452</html>
diff --git a/libraries/ode-0.9/docs/group__collide__box.html b/libraries/ode-0.9/docs/group__collide__box.html
new file mode 100644
index 0000000..341c2c1
--- /dev/null
+++ b/libraries/ode-0.9/docs/group__collide__box.html
@@ -0,0 +1,182 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Box Class</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>Box Class<br>
17<small>
18[<a class="el" href="group__collide.html">Collision Detection</a>]</small>
19</h1><table border="0" cellpadding="0" cellspacing="0">
20<tr><td></td></tr>
21<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
22<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dGeomID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__box.html#g3e3b0b249a8ccd40a9969e3a26548397">dCreateBox</a> (dSpaceID space, dReal lx, dReal ly, dReal lz)</td></tr>
23
24<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a box geom with the provided side lengths. <a href="#g3e3b0b249a8ccd40a9969e3a26548397"></a><br></td></tr>
25<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__box.html#g4c7060780be9eaf74228565910168273">dGeomBoxSetLengths</a> (dGeomID box, dReal lx, dReal ly, dReal lz)</td></tr>
26
27<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the side lengths of the given box. <a href="#g4c7060780be9eaf74228565910168273"></a><br></td></tr>
28<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__box.html#ge24d9264235d2487b2e2d52b2c62c879">dGeomBoxGetLengths</a> (dGeomID box, dVector3 result)</td></tr>
29
30<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the side lengths of a box. <a href="#ge24d9264235d2487b2e2d52b2c62c879"></a><br></td></tr>
31</table>
32<hr><h2>Function Documentation</h2>
33<a class="anchor" name="g3e3b0b249a8ccd40a9969e3a26548397"></a><!-- doxytag: member="collision.h::dCreateBox" ref="g3e3b0b249a8ccd40a9969e3a26548397" args="(dSpaceID space, dReal lx, dReal ly, dReal lz)" -->
34<div class="memitem">
35<div class="memproto">
36 <table class="memname">
37 <tr>
38 <td class="memname">ODE_API dGeomID dCreateBox </td>
39 <td>(</td>
40 <td class="paramtype">dSpaceID&nbsp;</td>
41 <td class="paramname"> <em>space</em>, </td>
42 </tr>
43 <tr>
44 <td class="paramkey"></td>
45 <td></td>
46 <td class="paramtype">dReal&nbsp;</td>
47 <td class="paramname"> <em>lx</em>, </td>
48 </tr>
49 <tr>
50 <td class="paramkey"></td>
51 <td></td>
52 <td class="paramtype">dReal&nbsp;</td>
53 <td class="paramname"> <em>ly</em>, </td>
54 </tr>
55 <tr>
56 <td class="paramkey"></td>
57 <td></td>
58 <td class="paramtype">dReal&nbsp;</td>
59 <td class="paramname"> <em>lz</em></td><td>&nbsp;</td>
60 </tr>
61 <tr>
62 <td></td>
63 <td>)</td>
64 <td></td><td></td><td width="100%"></td>
65 </tr>
66 </table>
67</div>
68<div class="memdoc">
69
70<p>
71Create a box geom with the provided side lengths.
72<p>
73<dl compact><dt><b>Parameters:</b></dt><dd>
74 <table border="0" cellspacing="2" cellpadding="0">
75 <tr><td valign="top"></td><td valign="top"><em>space</em>&nbsp;</td><td>a space to contain the new geom. May be null. </td></tr>
76 <tr><td valign="top"></td><td valign="top"><em>lx</em>&nbsp;</td><td>the length of the box along the X axis </td></tr>
77 <tr><td valign="top"></td><td valign="top"><em>ly</em>&nbsp;</td><td>the length of the box along the Y axis </td></tr>
78 <tr><td valign="top"></td><td valign="top"><em>lz</em>&nbsp;</td><td>the length of the box along the Z axis</td></tr>
79 </table>
80</dl>
81<dl class="return" compact><dt><b>Returns:</b></dt><dd>A new box geom.</dd></dl>
82<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The point of reference for a box is its center.</dd></dl>
83<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> <p>
84<a class="el" href="group__collide__box.html#g4c7060780be9eaf74228565910168273" title="Set the side lengths of the given box.">dGeomBoxSetLengths</a> </dd></dl>
85
86</div>
87</div><p>
88<a class="anchor" name="ge24d9264235d2487b2e2d52b2c62c879"></a><!-- doxytag: member="collision.h::dGeomBoxGetLengths" ref="ge24d9264235d2487b2e2d52b2c62c879" args="(dGeomID box, dVector3 result)" -->
89<div class="memitem">
90<div class="memproto">
91 <table class="memname">
92 <tr>
93 <td class="memname">ODE_API void dGeomBoxGetLengths </td>
94 <td>(</td>
95 <td class="paramtype">dGeomID&nbsp;</td>
96 <td class="paramname"> <em>box</em>, </td>
97 </tr>
98 <tr>
99 <td class="paramkey"></td>
100 <td></td>
101 <td class="paramtype">dVector3&nbsp;</td>
102 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
103 </tr>
104 <tr>
105 <td></td>
106 <td>)</td>
107 <td></td><td></td><td width="100%"></td>
108 </tr>
109 </table>
110</div>
111<div class="memdoc">
112
113<p>
114Get the side lengths of a box.
115<p>
116<dl compact><dt><b>Parameters:</b></dt><dd>
117 <table border="0" cellspacing="2" cellpadding="0">
118 <tr><td valign="top"></td><td valign="top"><em>box</em>&nbsp;</td><td>the box to query </td></tr>
119 <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>the returned side lengths</td></tr>
120 </table>
121</dl>
122<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide__box.html#g4c7060780be9eaf74228565910168273" title="Set the side lengths of the given box.">dGeomBoxSetLengths</a> </dd></dl>
123
124</div>
125</div><p>
126<a class="anchor" name="g4c7060780be9eaf74228565910168273"></a><!-- doxytag: member="collision.h::dGeomBoxSetLengths" ref="g4c7060780be9eaf74228565910168273" args="(dGeomID box, dReal lx, dReal ly, dReal lz)" -->
127<div class="memitem">
128<div class="memproto">
129 <table class="memname">
130 <tr>
131 <td class="memname">ODE_API void dGeomBoxSetLengths </td>
132 <td>(</td>
133 <td class="paramtype">dGeomID&nbsp;</td>
134 <td class="paramname"> <em>box</em>, </td>
135 </tr>
136 <tr>
137 <td class="paramkey"></td>
138 <td></td>
139 <td class="paramtype">dReal&nbsp;</td>
140 <td class="paramname"> <em>lx</em>, </td>
141 </tr>
142 <tr>
143 <td class="paramkey"></td>
144 <td></td>
145 <td class="paramtype">dReal&nbsp;</td>
146 <td class="paramname"> <em>ly</em>, </td>
147 </tr>
148 <tr>
149 <td class="paramkey"></td>
150 <td></td>
151 <td class="paramtype">dReal&nbsp;</td>
152 <td class="paramname"> <em>lz</em></td><td>&nbsp;</td>
153 </tr>
154 <tr>
155 <td></td>
156 <td>)</td>
157 <td></td><td></td><td width="100%"></td>
158 </tr>
159 </table>
160</div>
161<div class="memdoc">
162
163<p>
164Set the side lengths of the given box.
165<p>
166<dl compact><dt><b>Parameters:</b></dt><dd>
167 <table border="0" cellspacing="2" cellpadding="0">
168 <tr><td valign="top"></td><td valign="top"><em>box</em>&nbsp;</td><td>the box to set </td></tr>
169 <tr><td valign="top"></td><td valign="top"><em>lx</em>&nbsp;</td><td>the length of the box along the X axis </td></tr>
170 <tr><td valign="top"></td><td valign="top"><em>ly</em>&nbsp;</td><td>the length of the box along the Y axis </td></tr>
171 <tr><td valign="top"></td><td valign="top"><em>lz</em>&nbsp;</td><td>the length of the box along the Z axis</td></tr>
172 </table>
173</dl>
174<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide__box.html#ge24d9264235d2487b2e2d52b2c62c879" title="Get the side lengths of a box.">dGeomBoxGetLengths</a> </dd></dl>
175
176</div>
177</div><p>
178<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
179<a href="http://www.doxygen.org/index.html">
180<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
181</body>
182</html>
diff --git a/libraries/ode-0.9/docs/group__collide__sphere.html b/libraries/ode-0.9/docs/group__collide__sphere.html
new file mode 100644
index 0000000..c0174cc
--- /dev/null
+++ b/libraries/ode-0.9/docs/group__collide__sphere.html
@@ -0,0 +1,199 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Sphere Class</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>Sphere Class<br>
17<small>
18[<a class="el" href="group__collide.html">Collision Detection</a>]</small>
19</h1><table border="0" cellpadding="0" cellspacing="0">
20<tr><td></td></tr>
21<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
22<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dGeomID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__sphere.html#g53c79c860638ca3600744a193da68474">dCreateSphere</a> (dSpaceID space, dReal radius)</td></tr>
23
24<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a sphere geom of the given radius, and return its ID. <a href="#g53c79c860638ca3600744a193da68474"></a><br></td></tr>
25<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__sphere.html#g2341ae9b3b733571eff7a1857109f394">dGeomSphereSetRadius</a> (dGeomID sphere, dReal radius)</td></tr>
26
27<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the radius of a sphere geom. <a href="#g2341ae9b3b733571eff7a1857109f394"></a><br></td></tr>
28<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__sphere.html#g0e7f664deb9f557a6a24f93705b29fa9">dGeomSphereGetRadius</a> (dGeomID sphere)</td></tr>
29
30<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the radius of a sphere geom. <a href="#g0e7f664deb9f557a6a24f93705b29fa9"></a><br></td></tr>
31<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__sphere.html#gee86d3744471e447ffc85f85ee6578b1">dGeomSpherePointDepth</a> (dGeomID sphere, dReal x, dReal y, dReal z)</td></tr>
32
33<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the depth of the a given point within a sphere. <a href="#gee86d3744471e447ffc85f85ee6578b1"></a><br></td></tr>
34</table>
35<hr><h2>Function Documentation</h2>
36<a class="anchor" name="g53c79c860638ca3600744a193da68474"></a><!-- doxytag: member="collision.h::dCreateSphere" ref="g53c79c860638ca3600744a193da68474" args="(dSpaceID space, dReal radius)" -->
37<div class="memitem">
38<div class="memproto">
39 <table class="memname">
40 <tr>
41 <td class="memname">ODE_API dGeomID dCreateSphere </td>
42 <td>(</td>
43 <td class="paramtype">dSpaceID&nbsp;</td>
44 <td class="paramname"> <em>space</em>, </td>
45 </tr>
46 <tr>
47 <td class="paramkey"></td>
48 <td></td>
49 <td class="paramtype">dReal&nbsp;</td>
50 <td class="paramname"> <em>radius</em></td><td>&nbsp;</td>
51 </tr>
52 <tr>
53 <td></td>
54 <td>)</td>
55 <td></td><td></td><td width="100%"></td>
56 </tr>
57 </table>
58</div>
59<div class="memdoc">
60
61<p>
62Create a sphere geom of the given radius, and return its ID.
63<p>
64<dl compact><dt><b>Parameters:</b></dt><dd>
65 <table border="0" cellspacing="2" cellpadding="0">
66 <tr><td valign="top"></td><td valign="top"><em>space</em>&nbsp;</td><td>a space to contain the new geom. May be null. </td></tr>
67 <tr><td valign="top"></td><td valign="top"><em>radius</em>&nbsp;</td><td>the radius of the sphere.</td></tr>
68 </table>
69</dl>
70<dl class="return" compact><dt><b>Returns:</b></dt><dd>A new sphere geom.</dd></dl>
71<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The point of reference for a sphere is its center.</dd></dl>
72<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> <p>
73<a class="el" href="group__collide__sphere.html#g2341ae9b3b733571eff7a1857109f394" title="Set the radius of a sphere geom.">dGeomSphereSetRadius</a> </dd></dl>
74
75</div>
76</div><p>
77<a class="anchor" name="g0e7f664deb9f557a6a24f93705b29fa9"></a><!-- doxytag: member="collision.h::dGeomSphereGetRadius" ref="g0e7f664deb9f557a6a24f93705b29fa9" args="(dGeomID sphere)" -->
78<div class="memitem">
79<div class="memproto">
80 <table class="memname">
81 <tr>
82 <td class="memname">ODE_API dReal dGeomSphereGetRadius </td>
83 <td>(</td>
84 <td class="paramtype">dGeomID&nbsp;</td>
85 <td class="paramname"> <em>sphere</em> </td>
86 <td>&nbsp;)&nbsp;</td>
87 <td width="100%"></td>
88 </tr>
89 </table>
90</div>
91<div class="memdoc">
92
93<p>
94Retrieves the radius of a sphere geom.
95<p>
96<dl compact><dt><b>Parameters:</b></dt><dd>
97 <table border="0" cellspacing="2" cellpadding="0">
98 <tr><td valign="top"></td><td valign="top"><em>sphere</em>&nbsp;</td><td>the sphere to query.</td></tr>
99 </table>
100</dl>
101<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide__sphere.html#g2341ae9b3b733571eff7a1857109f394" title="Set the radius of a sphere geom.">dGeomSphereSetRadius</a> </dd></dl>
102
103</div>
104</div><p>
105<a class="anchor" name="gee86d3744471e447ffc85f85ee6578b1"></a><!-- doxytag: member="collision.h::dGeomSpherePointDepth" ref="gee86d3744471e447ffc85f85ee6578b1" args="(dGeomID sphere, dReal x, dReal y, dReal z)" -->
106<div class="memitem">
107<div class="memproto">
108 <table class="memname">
109 <tr>
110 <td class="memname">ODE_API dReal dGeomSpherePointDepth </td>
111 <td>(</td>
112 <td class="paramtype">dGeomID&nbsp;</td>
113 <td class="paramname"> <em>sphere</em>, </td>
114 </tr>
115 <tr>
116 <td class="paramkey"></td>
117 <td></td>
118 <td class="paramtype">dReal&nbsp;</td>
119 <td class="paramname"> <em>x</em>, </td>
120 </tr>
121 <tr>
122 <td class="paramkey"></td>
123 <td></td>
124 <td class="paramtype">dReal&nbsp;</td>
125 <td class="paramname"> <em>y</em>, </td>
126 </tr>
127 <tr>
128 <td class="paramkey"></td>
129 <td></td>
130 <td class="paramtype">dReal&nbsp;</td>
131 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
132 </tr>
133 <tr>
134 <td></td>
135 <td>)</td>
136 <td></td><td></td><td width="100%"></td>
137 </tr>
138 </table>
139</div>
140<div class="memdoc">
141
142<p>
143Calculate the depth of the a given point within a sphere.
144<p>
145<dl compact><dt><b>Parameters:</b></dt><dd>
146 <table border="0" cellspacing="2" cellpadding="0">
147 <tr><td valign="top"></td><td valign="top"><em>sphere</em>&nbsp;</td><td>the sphere to query. </td></tr>
148 <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>the X coordinate of the point. </td></tr>
149 <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>the Y coordinate of the point. </td></tr>
150 <tr><td valign="top"></td><td valign="top"><em>z</em>&nbsp;</td><td>the Z coordinate of the point.</td></tr>
151 </table>
152</dl>
153<dl class="return" compact><dt><b>Returns:</b></dt><dd>The depth of the point. Points inside the sphere will have a positive depth, points outside it will have a negative depth, and points on the surface will have a depth of zero. </dd></dl>
154
155</div>
156</div><p>
157<a class="anchor" name="g2341ae9b3b733571eff7a1857109f394"></a><!-- doxytag: member="collision.h::dGeomSphereSetRadius" ref="g2341ae9b3b733571eff7a1857109f394" args="(dGeomID sphere, dReal radius)" -->
158<div class="memitem">
159<div class="memproto">
160 <table class="memname">
161 <tr>
162 <td class="memname">ODE_API void dGeomSphereSetRadius </td>
163 <td>(</td>
164 <td class="paramtype">dGeomID&nbsp;</td>
165 <td class="paramname"> <em>sphere</em>, </td>
166 </tr>
167 <tr>
168 <td class="paramkey"></td>
169 <td></td>
170 <td class="paramtype">dReal&nbsp;</td>
171 <td class="paramname"> <em>radius</em></td><td>&nbsp;</td>
172 </tr>
173 <tr>
174 <td></td>
175 <td>)</td>
176 <td></td><td></td><td width="100%"></td>
177 </tr>
178 </table>
179</div>
180<div class="memdoc">
181
182<p>
183Set the radius of a sphere geom.
184<p>
185<dl compact><dt><b>Parameters:</b></dt><dd>
186 <table border="0" cellspacing="2" cellpadding="0">
187 <tr><td valign="top"></td><td valign="top"><em>sphere</em>&nbsp;</td><td>the sphere to set. </td></tr>
188 <tr><td valign="top"></td><td valign="top"><em>radius</em>&nbsp;</td><td>the new radius.</td></tr>
189 </table>
190</dl>
191<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide__sphere.html#g0e7f664deb9f557a6a24f93705b29fa9" title="Retrieves the radius of a sphere geom.">dGeomSphereGetRadius</a> </dd></dl>
192
193</div>
194</div><p>
195<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
196<a href="http://www.doxygen.org/index.html">
197<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
198</body>
199</html>
diff --git a/libraries/ode-0.9/docs/group__disable.html b/libraries/ode-0.9/docs/group__disable.html
new file mode 100644
index 0000000..ad8bb2c
--- /dev/null
+++ b/libraries/ode-0.9/docs/group__disable.html
@@ -0,0 +1,563 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Automatic Enabling and Disabling</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>Automatic Enabling and Disabling</h1><table border="0" cellpadding="0" cellspacing="0">
17<tr><td></td></tr>
18<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
19<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g280c6deffe6b4b8ba39d60bf25355347"></a><!-- doxytag: member="disable::dWorldSetAutoEnableDepthSF1" ref="g280c6deffe6b4b8ba39d60bf25355347" args="(dWorldID, int autoEnableDepth)" -->
20ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g280c6deffe6b4b8ba39d60bf25355347">dWorldSetAutoEnableDepthSF1</a> (dWorldID, int autoEnableDepth)</td></tr>
21
22<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the AutoEnableDepth parameter used by the StepFast1 algorithm. <br></td></tr>
23<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5438f43d9c71d8090a44171f685de196"></a><!-- doxytag: member="disable::dWorldGetAutoEnableDepthSF1" ref="g5438f43d9c71d8090a44171f685de196" args="(dWorldID)" -->
24ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g5438f43d9c71d8090a44171f685de196">dWorldGetAutoEnableDepthSF1</a> (dWorldID)</td></tr>
25
26<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the AutoEnableDepth parameter used by the StepFast1 algorithm. <br></td></tr>
27<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g48802a9736cc8cc9c1a14cbc3125d9b2">dWorldGetAutoDisableLinearThreshold</a> (dWorldID)</td></tr>
28
29<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable linear threshold for newly created bodies. <a href="#g48802a9736cc8cc9c1a14cbc3125d9b2"></a><br></td></tr>
30<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#ga1070c6f127352fb0a87ab1d42677b8e">dWorldSetAutoDisableLinearThreshold</a> (dWorldID, dReal linear_threshold)</td></tr>
31
32<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable linear threshold for newly created bodies. <a href="#ga1070c6f127352fb0a87ab1d42677b8e"></a><br></td></tr>
33<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g9d32b31b5d343c324897434a97387abc">dWorldGetAutoDisableAngularThreshold</a> (dWorldID)</td></tr>
34
35<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable angular threshold for newly created bodies. <a href="#g9d32b31b5d343c324897434a97387abc"></a><br></td></tr>
36<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g61cae2bd156129a918c3a1e69ac1b6dd">dWorldSetAutoDisableAngularThreshold</a> (dWorldID, dReal angular_threshold)</td></tr>
37
38<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable angular threshold for newly created bodies. <a href="#g61cae2bd156129a918c3a1e69ac1b6dd"></a><br></td></tr>
39<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g947e2d43df920a26fb52b5273ea9856b">dWorldGetAutoDisableLinearAverageThreshold</a> (dWorldID)</td></tr>
40
41<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable linear average threshold for newly created bodies. <a href="#g947e2d43df920a26fb52b5273ea9856b"></a><br></td></tr>
42<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g3e5ef82227b955c545efc40d60ef1b21">dWorldSetAutoDisableLinearAverageThreshold</a> (dWorldID, dReal linear_average_threshold)</td></tr>
43
44<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable linear average threshold for newly created bodies. <a href="#g3e5ef82227b955c545efc40d60ef1b21"></a><br></td></tr>
45<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#gb9bd57f1bef49a8d9d6985462c078b02">dWorldGetAutoDisableAngularAverageThreshold</a> (dWorldID)</td></tr>
46
47<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable angular average threshold for newly created bodies. <a href="#gb9bd57f1bef49a8d9d6985462c078b02"></a><br></td></tr>
48<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#gca94337cc27914fe4bc00ebce83f231a">dWorldSetAutoDisableAngularAverageThreshold</a> (dWorldID, dReal angular_average_threshold)</td></tr>
49
50<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable angular average threshold for newly created bodies. <a href="#gca94337cc27914fe4bc00ebce83f231a"></a><br></td></tr>
51<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g4343cfd23eb87f3ee629a9d13833c2ac">dWorldGetAutoDisableAverageSamplesCount</a> (dWorldID)</td></tr>
52
53<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable sample count for newly created bodies. <a href="#g4343cfd23eb87f3ee629a9d13833c2ac"></a><br></td></tr>
54<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g2babd1af3df87518e5bac9dfcb392593">dWorldSetAutoDisableAverageSamplesCount</a> (dWorldID, unsigned int average_samples_count)</td></tr>
55
56<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable average sample count for newly created bodies. <a href="#g2babd1af3df87518e5bac9dfcb392593"></a><br></td></tr>
57<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#gb0a26f648b9e40d8d4639bf187d5ac94">dWorldGetAutoDisableSteps</a> (dWorldID)</td></tr>
58
59<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable steps for newly created bodies. <a href="#gb0a26f648b9e40d8d4639bf187d5ac94"></a><br></td></tr>
60<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#gdb9f69119d1aa259a0e32a8ff94e2535">dWorldSetAutoDisableSteps</a> (dWorldID, int steps)</td></tr>
61
62<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable steps for newly created bodies. <a href="#gdb9f69119d1aa259a0e32a8ff94e2535"></a><br></td></tr>
63<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#gbc004c37efff5f962fa2ac271b3be8e1">dWorldGetAutoDisableTime</a> (dWorldID)</td></tr>
64
65<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable time for newly created bodies. <a href="#gbc004c37efff5f962fa2ac271b3be8e1"></a><br></td></tr>
66<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g06828866a19cab7aeb129ca9ec76863b">dWorldSetAutoDisableTime</a> (dWorldID, dReal time)</td></tr>
67
68<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable time for newly created bodies. <a href="#g06828866a19cab7aeb129ca9ec76863b"></a><br></td></tr>
69<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g7617d19f08c7b1d22cf17ccf22bbdc00">dWorldGetAutoDisableFlag</a> (dWorldID)</td></tr>
70
71<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get auto disable flag for newly created bodies. <a href="#g7617d19f08c7b1d22cf17ccf22bbdc00"></a><br></td></tr>
72<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__disable.html#g58959b92ae4706e612bca673e85bfc50">dWorldSetAutoDisableFlag</a> (dWorldID, int do_auto_disable)</td></tr>
73
74<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set auto disable flag for newly created bodies. <a href="#g58959b92ae4706e612bca673e85bfc50"></a><br></td></tr>
75</table>
76<hr><a name="_details"></a><h2>Detailed Description</h2>
77Every body can be enabled or disabled. Enabled bodies participate in the simulation, while disabled bodies are turned off and do not get updated during a simulation step. New bodies are always created in the enabled state.<p>
78A disabled body that is connected through a joint to an enabled body will be automatically re-enabled at the next simulation step.<p>
79Disabled bodies do not consume CPU time, therefore to speed up the simulation bodies should be disabled when they come to rest. This can be done automatically with the auto-disable feature.<p>
80If a body has its auto-disable flag turned on, it will automatically disable itself when <ul>
81<li>It has been idle for a given number of simulation steps. </li>
82<li>It has also been idle for a given amount of simulation time.</li>
83</ul>
84A body is considered to be idle when the magnitudes of both its linear average velocity and angular average velocity are below given thresholds. The sample size for the average defaults to one and can be disabled by setting to zero with<p>
85Thus, every body has six auto-disable parameters: an enabled flag, a idle step count, an idle time, linear/angular average velocity thresholds, and the average samples count.<p>
86Newly created bodies get these parameters from world. <hr><h2>Function Documentation</h2>
87<a class="anchor" name="gb9bd57f1bef49a8d9d6985462c078b02"></a><!-- doxytag: member="objects.h::dWorldGetAutoDisableAngularAverageThreshold" ref="gb9bd57f1bef49a8d9d6985462c078b02" args="(dWorldID)" -->
88<div class="memitem">
89<div class="memproto">
90 <table class="memname">
91 <tr>
92 <td class="memname">ODE_API dReal dWorldGetAutoDisableAngularAverageThreshold </td>
93 <td>(</td>
94 <td class="paramtype">dWorldID&nbsp;</td>
95 <td class="paramname"> </td>
96 <td>&nbsp;)&nbsp;</td>
97 <td width="100%"></td>
98 </tr>
99 </table>
100</div>
101<div class="memdoc">
102
103<p>
104Get auto disable angular average threshold for newly created bodies.
105<p>
106<dl class="return" compact><dt><b>Returns:</b></dt><dd>the threshold </dd></dl>
107
108</div>
109</div><p>
110<a class="anchor" name="g9d32b31b5d343c324897434a97387abc"></a><!-- doxytag: member="objects.h::dWorldGetAutoDisableAngularThreshold" ref="g9d32b31b5d343c324897434a97387abc" args="(dWorldID)" -->
111<div class="memitem">
112<div class="memproto">
113 <table class="memname">
114 <tr>
115 <td class="memname">ODE_API dReal dWorldGetAutoDisableAngularThreshold </td>
116 <td>(</td>
117 <td class="paramtype">dWorldID&nbsp;</td>
118 <td class="paramname"> </td>
119 <td>&nbsp;)&nbsp;</td>
120 <td width="100%"></td>
121 </tr>
122 </table>
123</div>
124<div class="memdoc">
125
126<p>
127Get auto disable angular threshold for newly created bodies.
128<p>
129<dl class="return" compact><dt><b>Returns:</b></dt><dd>the threshold </dd></dl>
130
131</div>
132</div><p>
133<a class="anchor" name="g4343cfd23eb87f3ee629a9d13833c2ac"></a><!-- doxytag: member="objects.h::dWorldGetAutoDisableAverageSamplesCount" ref="g4343cfd23eb87f3ee629a9d13833c2ac" args="(dWorldID)" -->
134<div class="memitem">
135<div class="memproto">
136 <table class="memname">
137 <tr>
138 <td class="memname">ODE_API int dWorldGetAutoDisableAverageSamplesCount </td>
139 <td>(</td>
140 <td class="paramtype">dWorldID&nbsp;</td>
141 <td class="paramname"> </td>
142 <td>&nbsp;)&nbsp;</td>
143 <td width="100%"></td>
144 </tr>
145 </table>
146</div>
147<div class="memdoc">
148
149<p>
150Get auto disable sample count for newly created bodies.
151<p>
152<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of samples used </dd></dl>
153
154</div>
155</div><p>
156<a class="anchor" name="g7617d19f08c7b1d22cf17ccf22bbdc00"></a><!-- doxytag: member="objects.h::dWorldGetAutoDisableFlag" ref="g7617d19f08c7b1d22cf17ccf22bbdc00" args="(dWorldID)" -->
157<div class="memitem">
158<div class="memproto">
159 <table class="memname">
160 <tr>
161 <td class="memname">ODE_API int dWorldGetAutoDisableFlag </td>
162 <td>(</td>
163 <td class="paramtype">dWorldID&nbsp;</td>
164 <td class="paramname"> </td>
165 <td>&nbsp;)&nbsp;</td>
166 <td width="100%"></td>
167 </tr>
168 </table>
169</div>
170<div class="memdoc">
171
172<p>
173Get auto disable flag for newly created bodies.
174<p>
175<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 or 1 </dd></dl>
176
177</div>
178</div><p>
179<a class="anchor" name="g947e2d43df920a26fb52b5273ea9856b"></a><!-- doxytag: member="objects.h::dWorldGetAutoDisableLinearAverageThreshold" ref="g947e2d43df920a26fb52b5273ea9856b" args="(dWorldID)" -->
180<div class="memitem">
181<div class="memproto">
182 <table class="memname">
183 <tr>
184 <td class="memname">ODE_API dReal dWorldGetAutoDisableLinearAverageThreshold </td>
185 <td>(</td>
186 <td class="paramtype">dWorldID&nbsp;</td>
187 <td class="paramname"> </td>
188 <td>&nbsp;)&nbsp;</td>
189 <td width="100%"></td>
190 </tr>
191 </table>
192</div>
193<div class="memdoc">
194
195<p>
196Get auto disable linear average threshold for newly created bodies.
197<p>
198<dl class="return" compact><dt><b>Returns:</b></dt><dd>the threshold </dd></dl>
199
200</div>
201</div><p>
202<a class="anchor" name="g48802a9736cc8cc9c1a14cbc3125d9b2"></a><!-- doxytag: member="objects.h::dWorldGetAutoDisableLinearThreshold" ref="g48802a9736cc8cc9c1a14cbc3125d9b2" args="(dWorldID)" -->
203<div class="memitem">
204<div class="memproto">
205 <table class="memname">
206 <tr>
207 <td class="memname">ODE_API dReal dWorldGetAutoDisableLinearThreshold </td>
208 <td>(</td>
209 <td class="paramtype">dWorldID&nbsp;</td>
210 <td class="paramname"> </td>
211 <td>&nbsp;)&nbsp;</td>
212 <td width="100%"></td>
213 </tr>
214 </table>
215</div>
216<div class="memdoc">
217
218<p>
219Get auto disable linear threshold for newly created bodies.
220<p>
221<dl class="return" compact><dt><b>Returns:</b></dt><dd>the threshold </dd></dl>
222
223</div>
224</div><p>
225<a class="anchor" name="gb0a26f648b9e40d8d4639bf187d5ac94"></a><!-- doxytag: member="objects.h::dWorldGetAutoDisableSteps" ref="gb0a26f648b9e40d8d4639bf187d5ac94" args="(dWorldID)" -->
226<div class="memitem">
227<div class="memproto">
228 <table class="memname">
229 <tr>
230 <td class="memname">ODE_API int dWorldGetAutoDisableSteps </td>
231 <td>(</td>
232 <td class="paramtype">dWorldID&nbsp;</td>
233 <td class="paramname"> </td>
234 <td>&nbsp;)&nbsp;</td>
235 <td width="100%"></td>
236 </tr>
237 </table>
238</div>
239<div class="memdoc">
240
241<p>
242Get auto disable steps for newly created bodies.
243<p>
244<dl class="return" compact><dt><b>Returns:</b></dt><dd>nr of steps </dd></dl>
245
246</div>
247</div><p>
248<a class="anchor" name="gbc004c37efff5f962fa2ac271b3be8e1"></a><!-- doxytag: member="objects.h::dWorldGetAutoDisableTime" ref="gbc004c37efff5f962fa2ac271b3be8e1" args="(dWorldID)" -->
249<div class="memitem">
250<div class="memproto">
251 <table class="memname">
252 <tr>
253 <td class="memname">ODE_API dReal dWorldGetAutoDisableTime </td>
254 <td>(</td>
255 <td class="paramtype">dWorldID&nbsp;</td>
256 <td class="paramname"> </td>
257 <td>&nbsp;)&nbsp;</td>
258 <td width="100%"></td>
259 </tr>
260 </table>
261</div>
262<div class="memdoc">
263
264<p>
265Get auto disable time for newly created bodies.
266<p>
267<dl class="return" compact><dt><b>Returns:</b></dt><dd>nr of seconds </dd></dl>
268
269</div>
270</div><p>
271<a class="anchor" name="gca94337cc27914fe4bc00ebce83f231a"></a><!-- doxytag: member="objects.h::dWorldSetAutoDisableAngularAverageThreshold" ref="gca94337cc27914fe4bc00ebce83f231a" args="(dWorldID, dReal angular_average_threshold)" -->
272<div class="memitem">
273<div class="memproto">
274 <table class="memname">
275 <tr>
276 <td class="memname">ODE_API void dWorldSetAutoDisableAngularAverageThreshold </td>
277 <td>(</td>
278 <td class="paramtype">dWorldID&nbsp;</td>
279 <td class="paramname">, </td>
280 </tr>
281 <tr>
282 <td class="paramkey"></td>
283 <td></td>
284 <td class="paramtype">dReal&nbsp;</td>
285 <td class="paramname"> <em>angular_average_threshold</em></td><td>&nbsp;</td>
286 </tr>
287 <tr>
288 <td></td>
289 <td>)</td>
290 <td></td><td></td><td width="100%"></td>
291 </tr>
292 </table>
293</div>
294<div class="memdoc">
295
296<p>
297Set auto disable angular average threshold for newly created bodies.
298<p>
299<dl compact><dt><b>Parameters:</b></dt><dd>
300 <table border="0" cellspacing="2" cellpadding="0">
301 <tr><td valign="top"></td><td valign="top"><em>linear_average_threshold</em>&nbsp;</td><td>default is 0.01 </td></tr>
302 </table>
303</dl>
304
305</div>
306</div><p>
307<a class="anchor" name="g61cae2bd156129a918c3a1e69ac1b6dd"></a><!-- doxytag: member="objects.h::dWorldSetAutoDisableAngularThreshold" ref="g61cae2bd156129a918c3a1e69ac1b6dd" args="(dWorldID, dReal angular_threshold)" -->
308<div class="memitem">
309<div class="memproto">
310 <table class="memname">
311 <tr>
312 <td class="memname">ODE_API void dWorldSetAutoDisableAngularThreshold </td>
313 <td>(</td>
314 <td class="paramtype">dWorldID&nbsp;</td>
315 <td class="paramname">, </td>
316 </tr>
317 <tr>
318 <td class="paramkey"></td>
319 <td></td>
320 <td class="paramtype">dReal&nbsp;</td>
321 <td class="paramname"> <em>angular_threshold</em></td><td>&nbsp;</td>
322 </tr>
323 <tr>
324 <td></td>
325 <td>)</td>
326 <td></td><td></td><td width="100%"></td>
327 </tr>
328 </table>
329</div>
330<div class="memdoc">
331
332<p>
333Set auto disable angular threshold for newly created bodies.
334<p>
335<dl compact><dt><b>Parameters:</b></dt><dd>
336 <table border="0" cellspacing="2" cellpadding="0">
337 <tr><td valign="top"></td><td valign="top"><em>linear_threshold</em>&nbsp;</td><td>default is 0.01 </td></tr>
338 </table>
339</dl>
340
341</div>
342</div><p>
343<a class="anchor" name="g2babd1af3df87518e5bac9dfcb392593"></a><!-- doxytag: member="objects.h::dWorldSetAutoDisableAverageSamplesCount" ref="g2babd1af3df87518e5bac9dfcb392593" args="(dWorldID, unsigned int average_samples_count)" -->
344<div class="memitem">
345<div class="memproto">
346 <table class="memname">
347 <tr>
348 <td class="memname">ODE_API void dWorldSetAutoDisableAverageSamplesCount </td>
349 <td>(</td>
350 <td class="paramtype">dWorldID&nbsp;</td>
351 <td class="paramname">, </td>
352 </tr>
353 <tr>
354 <td class="paramkey"></td>
355 <td></td>
356 <td class="paramtype">unsigned int&nbsp;</td>
357 <td class="paramname"> <em>average_samples_count</em></td><td>&nbsp;</td>
358 </tr>
359 <tr>
360 <td></td>
361 <td>)</td>
362 <td></td><td></td><td width="100%"></td>
363 </tr>
364 </table>
365</div>
366<div class="memdoc">
367
368<p>
369Set auto disable average sample count for newly created bodies.
370<p>
371<dl compact><dt><b>Parameters:</b></dt><dd>
372 <table border="0" cellspacing="2" cellpadding="0">
373 <tr><td valign="top"></td><td valign="top"><em>average_samples_count</em>&nbsp;</td><td>Default is 1, meaning only instantaneous velocity is used. Set to zero to disable sampling and thus prevent any body from auto-disabling. </td></tr>
374 </table>
375</dl>
376
377</div>
378</div><p>
379<a class="anchor" name="g58959b92ae4706e612bca673e85bfc50"></a><!-- doxytag: member="objects.h::dWorldSetAutoDisableFlag" ref="g58959b92ae4706e612bca673e85bfc50" args="(dWorldID, int do_auto_disable)" -->
380<div class="memitem">
381<div class="memproto">
382 <table class="memname">
383 <tr>
384 <td class="memname">ODE_API void dWorldSetAutoDisableFlag </td>
385 <td>(</td>
386 <td class="paramtype">dWorldID&nbsp;</td>
387 <td class="paramname">, </td>
388 </tr>
389 <tr>
390 <td class="paramkey"></td>
391 <td></td>
392 <td class="paramtype">int&nbsp;</td>
393 <td class="paramname"> <em>do_auto_disable</em></td><td>&nbsp;</td>
394 </tr>
395 <tr>
396 <td></td>
397 <td>)</td>
398 <td></td><td></td><td width="100%"></td>
399 </tr>
400 </table>
401</div>
402<div class="memdoc">
403
404<p>
405Set auto disable flag for newly created bodies.
406<p>
407<dl compact><dt><b>Parameters:</b></dt><dd>
408 <table border="0" cellspacing="2" cellpadding="0">
409 <tr><td valign="top"></td><td valign="top"><em>do_auto_disable</em>&nbsp;</td><td>default is false. </td></tr>
410 </table>
411</dl>
412
413</div>
414</div><p>
415<a class="anchor" name="g3e5ef82227b955c545efc40d60ef1b21"></a><!-- doxytag: member="objects.h::dWorldSetAutoDisableLinearAverageThreshold" ref="g3e5ef82227b955c545efc40d60ef1b21" args="(dWorldID, dReal linear_average_threshold)" -->
416<div class="memitem">
417<div class="memproto">
418 <table class="memname">
419 <tr>
420 <td class="memname">ODE_API void dWorldSetAutoDisableLinearAverageThreshold </td>
421 <td>(</td>
422 <td class="paramtype">dWorldID&nbsp;</td>
423 <td class="paramname">, </td>
424 </tr>
425 <tr>
426 <td class="paramkey"></td>
427 <td></td>
428 <td class="paramtype">dReal&nbsp;</td>
429 <td class="paramname"> <em>linear_average_threshold</em></td><td>&nbsp;</td>
430 </tr>
431 <tr>
432 <td></td>
433 <td>)</td>
434 <td></td><td></td><td width="100%"></td>
435 </tr>
436 </table>
437</div>
438<div class="memdoc">
439
440<p>
441Set auto disable linear average threshold for newly created bodies.
442<p>
443<dl compact><dt><b>Parameters:</b></dt><dd>
444 <table border="0" cellspacing="2" cellpadding="0">
445 <tr><td valign="top"></td><td valign="top"><em>linear_average_threshold</em>&nbsp;</td><td>default is 0.01 </td></tr>
446 </table>
447</dl>
448
449</div>
450</div><p>
451<a class="anchor" name="ga1070c6f127352fb0a87ab1d42677b8e"></a><!-- doxytag: member="objects.h::dWorldSetAutoDisableLinearThreshold" ref="ga1070c6f127352fb0a87ab1d42677b8e" args="(dWorldID, dReal linear_threshold)" -->
452<div class="memitem">
453<div class="memproto">
454 <table class="memname">
455 <tr>
456 <td class="memname">ODE_API void dWorldSetAutoDisableLinearThreshold </td>
457 <td>(</td>
458 <td class="paramtype">dWorldID&nbsp;</td>
459 <td class="paramname">, </td>
460 </tr>
461 <tr>
462 <td class="paramkey"></td>
463 <td></td>
464 <td class="paramtype">dReal&nbsp;</td>
465 <td class="paramname"> <em>linear_threshold</em></td><td>&nbsp;</td>
466 </tr>
467 <tr>
468 <td></td>
469 <td>)</td>
470 <td></td><td></td><td width="100%"></td>
471 </tr>
472 </table>
473</div>
474<div class="memdoc">
475
476<p>
477Set auto disable linear threshold for newly created bodies.
478<p>
479<dl compact><dt><b>Parameters:</b></dt><dd>
480 <table border="0" cellspacing="2" cellpadding="0">
481 <tr><td valign="top"></td><td valign="top"><em>linear_threshold</em>&nbsp;</td><td>default is 0.01 </td></tr>
482 </table>
483</dl>
484
485</div>
486</div><p>
487<a class="anchor" name="gdb9f69119d1aa259a0e32a8ff94e2535"></a><!-- doxytag: member="objects.h::dWorldSetAutoDisableSteps" ref="gdb9f69119d1aa259a0e32a8ff94e2535" args="(dWorldID, int steps)" -->
488<div class="memitem">
489<div class="memproto">
490 <table class="memname">
491 <tr>
492 <td class="memname">ODE_API void dWorldSetAutoDisableSteps </td>
493 <td>(</td>
494 <td class="paramtype">dWorldID&nbsp;</td>
495 <td class="paramname">, </td>
496 </tr>
497 <tr>
498 <td class="paramkey"></td>
499 <td></td>
500 <td class="paramtype">int&nbsp;</td>
501 <td class="paramname"> <em>steps</em></td><td>&nbsp;</td>
502 </tr>
503 <tr>
504 <td></td>
505 <td>)</td>
506 <td></td><td></td><td width="100%"></td>
507 </tr>
508 </table>
509</div>
510<div class="memdoc">
511
512<p>
513Set auto disable steps for newly created bodies.
514<p>
515<dl compact><dt><b>Parameters:</b></dt><dd>
516 <table border="0" cellspacing="2" cellpadding="0">
517 <tr><td valign="top"></td><td valign="top"><em>steps</em>&nbsp;</td><td>default is 10 </td></tr>
518 </table>
519</dl>
520
521</div>
522</div><p>
523<a class="anchor" name="g06828866a19cab7aeb129ca9ec76863b"></a><!-- doxytag: member="objects.h::dWorldSetAutoDisableTime" ref="g06828866a19cab7aeb129ca9ec76863b" args="(dWorldID, dReal time)" -->
524<div class="memitem">
525<div class="memproto">
526 <table class="memname">
527 <tr>
528 <td class="memname">ODE_API void dWorldSetAutoDisableTime </td>
529 <td>(</td>
530 <td class="paramtype">dWorldID&nbsp;</td>
531 <td class="paramname">, </td>
532 </tr>
533 <tr>
534 <td class="paramkey"></td>
535 <td></td>
536 <td class="paramtype">dReal&nbsp;</td>
537 <td class="paramname"> <em>time</em></td><td>&nbsp;</td>
538 </tr>
539 <tr>
540 <td></td>
541 <td>)</td>
542 <td></td><td></td><td width="100%"></td>
543 </tr>
544 </table>
545</div>
546<div class="memdoc">
547
548<p>
549Set auto disable time for newly created bodies.
550<p>
551<dl compact><dt><b>Parameters:</b></dt><dd>
552 <table border="0" cellspacing="2" cellpadding="0">
553 <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>default is 0 seconds </td></tr>
554 </table>
555</dl>
556
557</div>
558</div><p>
559<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
560<a href="http://www.doxygen.org/index.html">
561<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
562</body>
563</html>
diff --git a/libraries/ode-0.9/docs/group__drawstuff.html b/libraries/ode-0.9/docs/group__drawstuff.html
new file mode 100644
index 0000000..6cf8650
--- /dev/null
+++ b/libraries/ode-0.9/docs/group__drawstuff.html
@@ -0,0 +1,668 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: DrawStuff</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>DrawStuff</h1><table border="0" cellpadding="0" cellspacing="0">
17<tr><td></td></tr>
18<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
19<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structds_functions.html">dsFunctions</a></td></tr>
20
21<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set of functions to be used as callbacks by the simulation loop. <a href="structds_functions.html#_details">More...</a><br></td></tr>
22<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
23<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g28560ea1b64c1d83095bcdfce9caf9dc">dsSimulationLoop</a> (int argc, char **argv, int window_width, int window_height, struct <a class="el" href="structds_functions.html">dsFunctions</a> *fn)</td></tr>
24
25<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Does the complete simulation. <a href="#g28560ea1b64c1d83095bcdfce9caf9dc"></a><br></td></tr>
26<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g7a2a69ac611d5dc6ffc8e43b0a743472">dsError</a> (char *msg,...)</td></tr>
27
28<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">exit with error message. <a href="#g7a2a69ac611d5dc6ffc8e43b0a743472"></a><br></td></tr>
29<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#ga84175b14c3c31daae08a9c88acc2b02">dsDebug</a> (char *msg,...)</td></tr>
30
31<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">exit with error message and core dump. <a href="#ga84175b14c3c31daae08a9c88acc2b02"></a><br></td></tr>
32<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#gbca5fa4076aa9e45caa049f33e8cf168">dsPrint</a> (char *msg,...)</td></tr>
33
34<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">print log message <a href="#gbca5fa4076aa9e45caa049f33e8cf168"></a><br></td></tr>
35<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g8e4ea933c31d207ec57949fbb3a75815">dsSetViewpoint</a> (float xyz[3], float hpr[3])</td></tr>
36
37<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the viewpoint. <a href="#g8e4ea933c31d207ec57949fbb3a75815"></a><br></td></tr>
38<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#gaa22f45ad00e0010a1440985ac51b18b">dsGetViewpoint</a> (float xyz[3], float hpr[3])</td></tr>
39
40<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the viewpoint. <a href="#gaa22f45ad00e0010a1440985ac51b18b"></a><br></td></tr>
41<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g6c13a5a310b9e00c45150058e669ebad">dsStop</a> ()</td></tr>
42
43<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop the simulation loop. <a href="#g6c13a5a310b9e00c45150058e669ebad"></a><br></td></tr>
44<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g02f3f096703d49f5a9e497aec0b85f75">dsElapsedTime</a> ()</td></tr>
45
46<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the elapsed time (on wall-clock). <a href="#g02f3f096703d49f5a9e497aec0b85f75"></a><br></td></tr>
47<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g8a3d6f8fecc8c7d5a206bed35f17ba7a">dsSetTexture</a> (int texture_number)</td></tr>
48
49<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Toggle the rendering of textures. <a href="#g8a3d6f8fecc8c7d5a206bed35f17ba7a"></a><br></td></tr>
50<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g3221a0d1360621eaad7c54597671c092">dsSetColor</a> (float red, float green, float blue)</td></tr>
51
52<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the color with which geometry is drawn. <a href="#g3221a0d1360621eaad7c54597671c092"></a><br></td></tr>
53<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g440940cfaef61775e37c33b055b832af">dsSetColorAlpha</a> (float red, float green, float blue, float alpha)</td></tr>
54
55<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the color and transparency with which geometry is drawn. <a href="#g440940cfaef61775e37c33b055b832af"></a><br></td></tr>
56<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#gfba4fde6b0b74f6cd422036dedd08836">dsDrawBox</a> (const float pos[3], const float R[12], const float sides[3])</td></tr>
57
58<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw a box. <a href="#gfba4fde6b0b74f6cd422036dedd08836"></a><br></td></tr>
59<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g0802e7641f8028182b69fabc729a6704">dsDrawSphere</a> (const float pos[3], const float R[12], float radius)</td></tr>
60
61<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw a sphere. <a href="#g0802e7641f8028182b69fabc729a6704"></a><br></td></tr>
62<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#gcfcbae15cee67eceb45cd96bf01484d4">dsDrawTriangle</a> (const float pos[3], const float R[12], const float *v0, const float *v1, const float *v2, int solid)</td></tr>
63
64<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw a triangle. <a href="#gcfcbae15cee67eceb45cd96bf01484d4"></a><br></td></tr>
65<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g0b09b41f1f6500b293678aa1691f1537"></a><!-- doxytag: member="drawstuff::dsDrawCylinder" ref="g0b09b41f1f6500b293678aa1691f1537" args="(const float pos[3], const float R[12], float length, float radius)" -->
66DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g0b09b41f1f6500b293678aa1691f1537">dsDrawCylinder</a> (const float pos[3], const float R[12], float length, float radius)</td></tr>
67
68<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw a z-aligned cylinder. <br></td></tr>
69<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gce8f6c8a9f2871dac2f5e7f159b96feb"></a><!-- doxytag: member="drawstuff::dsDrawCapsule" ref="gce8f6c8a9f2871dac2f5e7f159b96feb" args="(const float pos[3], const float R[12], float length, float radius)" -->
70DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#gce8f6c8a9f2871dac2f5e7f159b96feb">dsDrawCapsule</a> (const float pos[3], const float R[12], float length, float radius)</td></tr>
71
72<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw a z-aligned capsule. <br></td></tr>
73<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g61b166a9b7c04063a27be982051f4af5"></a><!-- doxytag: member="drawstuff::dsDrawLine" ref="g61b166a9b7c04063a27be982051f4af5" args="(const float pos1[3], const float pos2[3])" -->
74DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g61b166a9b7c04063a27be982051f4af5">dsDrawLine</a> (const float pos1[3], const float pos2[3])</td></tr>
75
76<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw a line. <br></td></tr>
77<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4b8754994a4cca9d51fce16445f0d612"></a><!-- doxytag: member="drawstuff::dsDrawConvex" ref="g4b8754994a4cca9d51fce16445f0d612" args="(const float pos[3], const float R[12], float *_planes, unsigned int _planecount, float *_points, unsigned int _pointcount, unsigned int *_polygons)" -->
78DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g4b8754994a4cca9d51fce16445f0d612">dsDrawConvex</a> (const float pos[3], const float R[12], float *_planes, unsigned int _planecount, float *_points, unsigned int _pointcount, unsigned int *_polygons)</td></tr>
79
80<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Draw a convex shape. <br></td></tr>
81<tr><td class="memItemLeft" nowrap align="right" valign="top">DS_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__drawstuff.html#g211aa83d5c5d102cdda303cc7aeb2fd5">dsSetSphereQuality</a> (int n)</td></tr>
82
83<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the quality with which curved objects are rendered. <a href="#g211aa83d5c5d102cdda303cc7aeb2fd5"></a><br></td></tr>
84</table>
85<hr><a name="_details"></a><h2>Detailed Description</h2>
86DrawStuff is a library for rendering simple 3D objects in a virtual environment, for the purposes of demonstrating the features of ODE. It is provided for demonstration purposes and is not intended for production use.<h2><a class="anchor" name="Notes">
87Notes</a></h2>
88In the virtual world, the z axis is "up" and z=0 is the floor.<p>
89The user is able to click+drag in the main window to move the camera: left button - pan and tilt. right button - forward and sideways. left + right button (or middle button) - sideways and up. <hr><h2>Function Documentation</h2>
90<a class="anchor" name="ga84175b14c3c31daae08a9c88acc2b02"></a><!-- doxytag: member="drawstuff.h::dsDebug" ref="ga84175b14c3c31daae08a9c88acc2b02" args="(char *msg,...)" -->
91<div class="memitem">
92<div class="memproto">
93 <table class="memname">
94 <tr>
95 <td class="memname">DS_API void dsDebug </td>
96 <td>(</td>
97 <td class="paramtype">char *&nbsp;</td>
98 <td class="paramname"> <em>msg</em>, </td>
99 </tr>
100 <tr>
101 <td class="paramkey"></td>
102 <td></td>
103 <td class="paramtype">&nbsp;</td>
104 <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
105 </tr>
106 <tr>
107 <td></td>
108 <td>)</td>
109 <td></td><td></td><td width="100%"></td>
110 </tr>
111 </table>
112</div>
113<div class="memdoc">
114
115<p>
116exit with error message and core dump.
117<p>
118this functions tries to dump core or start the debugger. <dl compact><dt><b>Parameters:</b></dt><dd>
119 <table border="0" cellspacing="2" cellpadding="0">
120 <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</td><td>format strin, like printf, without the newline character. </td></tr>
121 </table>
122</dl>
123
124</div>
125</div><p>
126<a class="anchor" name="gfba4fde6b0b74f6cd422036dedd08836"></a><!-- doxytag: member="drawstuff.h::dsDrawBox" ref="gfba4fde6b0b74f6cd422036dedd08836" args="(const float pos[3], const float R[12], const float sides[3])" -->
127<div class="memitem">
128<div class="memproto">
129 <table class="memname">
130 <tr>
131 <td class="memname">DS_API void dsDrawBox </td>
132 <td>(</td>
133 <td class="paramtype">const float&nbsp;</td>
134 <td class="paramname"> <em>pos</em>[3], </td>
135 </tr>
136 <tr>
137 <td class="paramkey"></td>
138 <td></td>
139 <td class="paramtype">const float&nbsp;</td>
140 <td class="paramname"> <em>R</em>[12], </td>
141 </tr>
142 <tr>
143 <td class="paramkey"></td>
144 <td></td>
145 <td class="paramtype">const float&nbsp;</td>
146 <td class="paramname"> <em>sides</em>[3]</td><td>&nbsp;</td>
147 </tr>
148 <tr>
149 <td></td>
150 <td>)</td>
151 <td></td><td></td><td width="100%"></td>
152 </tr>
153 </table>
154</div>
155<div class="memdoc">
156
157<p>
158Draw a box.
159<p>
160<dl compact><dt><b>Parameters:</b></dt><dd>
161 <table border="0" cellspacing="2" cellpadding="0">
162 <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>is the x,y,z of the center of the object. </td></tr>
163 <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>is a 3x3 rotation matrix for the object, stored by row like this: [ R11 R12 R13 0 ] [ R21 R22 R23 0 ] [ R31 R32 R33 0 ] </td></tr>
164 <tr><td valign="top"></td><td valign="top"><em>sides[]</em>&nbsp;</td><td>is an array of x,y,z side lengths. </td></tr>
165 </table>
166</dl>
167
168</div>
169</div><p>
170<a class="anchor" name="g0802e7641f8028182b69fabc729a6704"></a><!-- doxytag: member="drawstuff.h::dsDrawSphere" ref="g0802e7641f8028182b69fabc729a6704" args="(const float pos[3], const float R[12], float radius)" -->
171<div class="memitem">
172<div class="memproto">
173 <table class="memname">
174 <tr>
175 <td class="memname">DS_API void dsDrawSphere </td>
176 <td>(</td>
177 <td class="paramtype">const float&nbsp;</td>
178 <td class="paramname"> <em>pos</em>[3], </td>
179 </tr>
180 <tr>
181 <td class="paramkey"></td>
182 <td></td>
183 <td class="paramtype">const float&nbsp;</td>
184 <td class="paramname"> <em>R</em>[12], </td>
185 </tr>
186 <tr>
187 <td class="paramkey"></td>
188 <td></td>
189 <td class="paramtype">float&nbsp;</td>
190 <td class="paramname"> <em>radius</em></td><td>&nbsp;</td>
191 </tr>
192 <tr>
193 <td></td>
194 <td>)</td>
195 <td></td><td></td><td width="100%"></td>
196 </tr>
197 </table>
198</div>
199<div class="memdoc">
200
201<p>
202Draw a sphere.
203<p>
204<dl compact><dt><b>Parameters:</b></dt><dd>
205 <table border="0" cellspacing="2" cellpadding="0">
206 <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>Position of center. </td></tr>
207 <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>orientation. </td></tr>
208 <tr><td valign="top"></td><td valign="top"><em>radius</em>&nbsp;</td><td></td></tr>
209 </table>
210</dl>
211
212</div>
213</div><p>
214<a class="anchor" name="gcfcbae15cee67eceb45cd96bf01484d4"></a><!-- doxytag: member="drawstuff.h::dsDrawTriangle" ref="gcfcbae15cee67eceb45cd96bf01484d4" args="(const float pos[3], const float R[12], const float *v0, const float *v1, const float *v2, int solid)" -->
215<div class="memitem">
216<div class="memproto">
217 <table class="memname">
218 <tr>
219 <td class="memname">DS_API void dsDrawTriangle </td>
220 <td>(</td>
221 <td class="paramtype">const float&nbsp;</td>
222 <td class="paramname"> <em>pos</em>[3], </td>
223 </tr>
224 <tr>
225 <td class="paramkey"></td>
226 <td></td>
227 <td class="paramtype">const float&nbsp;</td>
228 <td class="paramname"> <em>R</em>[12], </td>
229 </tr>
230 <tr>
231 <td class="paramkey"></td>
232 <td></td>
233 <td class="paramtype">const float *&nbsp;</td>
234 <td class="paramname"> <em>v0</em>, </td>
235 </tr>
236 <tr>
237 <td class="paramkey"></td>
238 <td></td>
239 <td class="paramtype">const float *&nbsp;</td>
240 <td class="paramname"> <em>v1</em>, </td>
241 </tr>
242 <tr>
243 <td class="paramkey"></td>
244 <td></td>
245 <td class="paramtype">const float *&nbsp;</td>
246 <td class="paramname"> <em>v2</em>, </td>
247 </tr>
248 <tr>
249 <td class="paramkey"></td>
250 <td></td>
251 <td class="paramtype">int&nbsp;</td>
252 <td class="paramname"> <em>solid</em></td><td>&nbsp;</td>
253 </tr>
254 <tr>
255 <td></td>
256 <td>)</td>
257 <td></td><td></td><td width="100%"></td>
258 </tr>
259 </table>
260</div>
261<div class="memdoc">
262
263<p>
264Draw a triangle.
265<p>
266<dl compact><dt><b>Parameters:</b></dt><dd>
267 <table border="0" cellspacing="2" cellpadding="0">
268 <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>Position of center </td></tr>
269 <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>orientation </td></tr>
270 <tr><td valign="top"></td><td valign="top"><em>v0</em>&nbsp;</td><td>first vertex </td></tr>
271 <tr><td valign="top"></td><td valign="top"><em>v1</em>&nbsp;</td><td>second </td></tr>
272 <tr><td valign="top"></td><td valign="top"><em>v2</em>&nbsp;</td><td>third vertex </td></tr>
273 <tr><td valign="top"></td><td valign="top"><em>solid</em>&nbsp;</td><td>set to 0 for wireframe </td></tr>
274 </table>
275</dl>
276
277</div>
278</div><p>
279<a class="anchor" name="g02f3f096703d49f5a9e497aec0b85f75"></a><!-- doxytag: member="drawstuff.h::dsElapsedTime" ref="g02f3f096703d49f5a9e497aec0b85f75" args="()" -->
280<div class="memitem">
281<div class="memproto">
282 <table class="memname">
283 <tr>
284 <td class="memname">DS_API double dsElapsedTime </td>
285 <td>(</td>
286 <td class="paramname"> </td>
287 <td>&nbsp;)&nbsp;</td>
288 <td width="100%"></td>
289 </tr>
290 </table>
291</div>
292<div class="memdoc">
293
294<p>
295Get the elapsed time (on wall-clock).
296<p>
297It returns the nr of seconds since the last call to this function.
298</div>
299</div><p>
300<a class="anchor" name="g7a2a69ac611d5dc6ffc8e43b0a743472"></a><!-- doxytag: member="drawstuff.h::dsError" ref="g7a2a69ac611d5dc6ffc8e43b0a743472" args="(char *msg,...)" -->
301<div class="memitem">
302<div class="memproto">
303 <table class="memname">
304 <tr>
305 <td class="memname">DS_API void dsError </td>
306 <td>(</td>
307 <td class="paramtype">char *&nbsp;</td>
308 <td class="paramname"> <em>msg</em>, </td>
309 </tr>
310 <tr>
311 <td class="paramkey"></td>
312 <td></td>
313 <td class="paramtype">&nbsp;</td>
314 <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
315 </tr>
316 <tr>
317 <td></td>
318 <td>)</td>
319 <td></td><td></td><td width="100%"></td>
320 </tr>
321 </table>
322</div>
323<div class="memdoc">
324
325<p>
326exit with error message.
327<p>
328This function displays an error message then exit. <dl compact><dt><b>Parameters:</b></dt><dd>
329 <table border="0" cellspacing="2" cellpadding="0">
330 <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</td><td>format strin, like printf, without the newline character. </td></tr>
331 </table>
332</dl>
333
334</div>
335</div><p>
336<a class="anchor" name="gaa22f45ad00e0010a1440985ac51b18b"></a><!-- doxytag: member="drawstuff.h::dsGetViewpoint" ref="gaa22f45ad00e0010a1440985ac51b18b" args="(float xyz[3], float hpr[3])" -->
337<div class="memitem">
338<div class="memproto">
339 <table class="memname">
340 <tr>
341 <td class="memname">DS_API void dsGetViewpoint </td>
342 <td>(</td>
343 <td class="paramtype">float&nbsp;</td>
344 <td class="paramname"> <em>xyz</em>[3], </td>
345 </tr>
346 <tr>
347 <td class="paramkey"></td>
348 <td></td>
349 <td class="paramtype">float&nbsp;</td>
350 <td class="paramname"> <em>hpr</em>[3]</td><td>&nbsp;</td>
351 </tr>
352 <tr>
353 <td></td>
354 <td>)</td>
355 <td></td><td></td><td width="100%"></td>
356 </tr>
357 </table>
358</div>
359<div class="memdoc">
360
361<p>
362Gets the viewpoint.
363<p>
364<dl compact><dt><b>Parameters:</b></dt><dd>
365 <table border="0" cellspacing="2" cellpadding="0">
366 <tr><td valign="top"></td><td valign="top"><em>xyz</em>&nbsp;</td><td>position </td></tr>
367 <tr><td valign="top"></td><td valign="top"><em>hpr</em>&nbsp;</td><td>heading,pitch,roll. </td></tr>
368 </table>
369</dl>
370
371</div>
372</div><p>
373<a class="anchor" name="gbca5fa4076aa9e45caa049f33e8cf168"></a><!-- doxytag: member="drawstuff.h::dsPrint" ref="gbca5fa4076aa9e45caa049f33e8cf168" args="(char *msg,...)" -->
374<div class="memitem">
375<div class="memproto">
376 <table class="memname">
377 <tr>
378 <td class="memname">DS_API void dsPrint </td>
379 <td>(</td>
380 <td class="paramtype">char *&nbsp;</td>
381 <td class="paramname"> <em>msg</em>, </td>
382 </tr>
383 <tr>
384 <td class="paramkey"></td>
385 <td></td>
386 <td class="paramtype">&nbsp;</td>
387 <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
388 </tr>
389 <tr>
390 <td></td>
391 <td>)</td>
392 <td></td><td></td><td width="100%"></td>
393 </tr>
394 </table>
395</div>
396<div class="memdoc">
397
398<p>
399print log message
400<p>
401<dl compact><dt><b>Parameters:</b></dt><dd>
402 <table border="0" cellspacing="2" cellpadding="0">
403 <tr><td valign="top"></td><td valign="top"><em>msg</em>&nbsp;</td><td>format string, like printf, without the <br>
404. </td></tr>
405 </table>
406</dl>
407
408</div>
409</div><p>
410<a class="anchor" name="g3221a0d1360621eaad7c54597671c092"></a><!-- doxytag: member="drawstuff.h::dsSetColor" ref="g3221a0d1360621eaad7c54597671c092" args="(float red, float green, float blue)" -->
411<div class="memitem">
412<div class="memproto">
413 <table class="memname">
414 <tr>
415 <td class="memname">DS_API void dsSetColor </td>
416 <td>(</td>
417 <td class="paramtype">float&nbsp;</td>
418 <td class="paramname"> <em>red</em>, </td>
419 </tr>
420 <tr>
421 <td class="paramkey"></td>
422 <td></td>
423 <td class="paramtype">float&nbsp;</td>
424 <td class="paramname"> <em>green</em>, </td>
425 </tr>
426 <tr>
427 <td class="paramkey"></td>
428 <td></td>
429 <td class="paramtype">float&nbsp;</td>
430 <td class="paramname"> <em>blue</em></td><td>&nbsp;</td>
431 </tr>
432 <tr>
433 <td></td>
434 <td>)</td>
435 <td></td><td></td><td width="100%"></td>
436 </tr>
437 </table>
438</div>
439<div class="memdoc">
440
441<p>
442Set the color with which geometry is drawn.
443<p>
444<dl compact><dt><b>Parameters:</b></dt><dd>
445 <table border="0" cellspacing="2" cellpadding="0">
446 <tr><td valign="top"></td><td valign="top"><em>red</em>&nbsp;</td><td>Red component from 0 to 1 </td></tr>
447 <tr><td valign="top"></td><td valign="top"><em>green</em>&nbsp;</td><td>Green component from 0 to 1 </td></tr>
448 <tr><td valign="top"></td><td valign="top"><em>blue</em>&nbsp;</td><td>Blue component from 0 to 1 </td></tr>
449 </table>
450</dl>
451
452</div>
453</div><p>
454<a class="anchor" name="g440940cfaef61775e37c33b055b832af"></a><!-- doxytag: member="drawstuff.h::dsSetColorAlpha" ref="g440940cfaef61775e37c33b055b832af" args="(float red, float green, float blue, float alpha)" -->
455<div class="memitem">
456<div class="memproto">
457 <table class="memname">
458 <tr>
459 <td class="memname">DS_API void dsSetColorAlpha </td>
460 <td>(</td>
461 <td class="paramtype">float&nbsp;</td>
462 <td class="paramname"> <em>red</em>, </td>
463 </tr>
464 <tr>
465 <td class="paramkey"></td>
466 <td></td>
467 <td class="paramtype">float&nbsp;</td>
468 <td class="paramname"> <em>green</em>, </td>
469 </tr>
470 <tr>
471 <td class="paramkey"></td>
472 <td></td>
473 <td class="paramtype">float&nbsp;</td>
474 <td class="paramname"> <em>blue</em>, </td>
475 </tr>
476 <tr>
477 <td class="paramkey"></td>
478 <td></td>
479 <td class="paramtype">float&nbsp;</td>
480 <td class="paramname"> <em>alpha</em></td><td>&nbsp;</td>
481 </tr>
482 <tr>
483 <td></td>
484 <td>)</td>
485 <td></td><td></td><td width="100%"></td>
486 </tr>
487 </table>
488</div>
489<div class="memdoc">
490
491<p>
492Set the color and transparency with which geometry is drawn.
493<p>
494<dl compact><dt><b>Parameters:</b></dt><dd>
495 <table border="0" cellspacing="2" cellpadding="0">
496 <tr><td valign="top"></td><td valign="top"><em>alpha</em>&nbsp;</td><td>Note that alpha transparency is a misnomer: it is alpha opacity. 1.0 means fully opaque, and 0.0 means fully transparent. </td></tr>
497 </table>
498</dl>
499
500</div>
501</div><p>
502<a class="anchor" name="g211aa83d5c5d102cdda303cc7aeb2fd5"></a><!-- doxytag: member="drawstuff.h::dsSetSphereQuality" ref="g211aa83d5c5d102cdda303cc7aeb2fd5" args="(int n)" -->
503<div class="memitem">
504<div class="memproto">
505 <table class="memname">
506 <tr>
507 <td class="memname">DS_API void dsSetSphereQuality </td>
508 <td>(</td>
509 <td class="paramtype">int&nbsp;</td>
510 <td class="paramname"> <em>n</em> </td>
511 <td>&nbsp;)&nbsp;</td>
512 <td width="100%"></td>
513 </tr>
514 </table>
515</div>
516<div class="memdoc">
517
518<p>
519Set the quality with which curved objects are rendered.
520<p>
521Higher numbers are higher quality, but slower to draw. This must be set before the first objects are drawn to be effective. Default sphere quality is 1, default capsule quality is 3.
522</div>
523</div><p>
524<a class="anchor" name="g8a3d6f8fecc8c7d5a206bed35f17ba7a"></a><!-- doxytag: member="drawstuff.h::dsSetTexture" ref="g8a3d6f8fecc8c7d5a206bed35f17ba7a" args="(int texture_number)" -->
525<div class="memitem">
526<div class="memproto">
527 <table class="memname">
528 <tr>
529 <td class="memname">DS_API void dsSetTexture </td>
530 <td>(</td>
531 <td class="paramtype">int&nbsp;</td>
532 <td class="paramname"> <em>texture_number</em> </td>
533 <td>&nbsp;)&nbsp;</td>
534 <td width="100%"></td>
535 </tr>
536 </table>
537</div>
538<div class="memdoc">
539
540<p>
541Toggle the rendering of textures.
542<p>
543It changes the way objects are drawn. these changes will apply to all further dsDrawXXX() functions. <dl compact><dt><b>Parameters:</b></dt><dd>
544 <table border="0" cellspacing="2" cellpadding="0">
545 <tr><td valign="top"></td><td valign="top"><em>the</em>&nbsp;</td><td>texture number must be a DS_xxx texture constant. The current texture is colored according to the current color. At the start of each frame, the texture is reset to none and the color is reset to white. </td></tr>
546 </table>
547</dl>
548
549</div>
550</div><p>
551<a class="anchor" name="g8e4ea933c31d207ec57949fbb3a75815"></a><!-- doxytag: member="drawstuff.h::dsSetViewpoint" ref="g8e4ea933c31d207ec57949fbb3a75815" args="(float xyz[3], float hpr[3])" -->
552<div class="memitem">
553<div class="memproto">
554 <table class="memname">
555 <tr>
556 <td class="memname">DS_API void dsSetViewpoint </td>
557 <td>(</td>
558 <td class="paramtype">float&nbsp;</td>
559 <td class="paramname"> <em>xyz</em>[3], </td>
560 </tr>
561 <tr>
562 <td class="paramkey"></td>
563 <td></td>
564 <td class="paramtype">float&nbsp;</td>
565 <td class="paramname"> <em>hpr</em>[3]</td><td>&nbsp;</td>
566 </tr>
567 <tr>
568 <td></td>
569 <td>)</td>
570 <td></td><td></td><td width="100%"></td>
571 </tr>
572 </table>
573</div>
574<div class="memdoc">
575
576<p>
577Sets the viewpoint.
578<p>
579<dl compact><dt><b>Parameters:</b></dt><dd>
580 <table border="0" cellspacing="2" cellpadding="0">
581 <tr><td valign="top"></td><td valign="top"><em>xyz</em>&nbsp;</td><td>camera position. </td></tr>
582 <tr><td valign="top"></td><td valign="top"><em>hpr</em>&nbsp;</td><td>contains heading, pitch and roll numbers in degrees. heading=0 points along the x axis, pitch=0 is looking towards the horizon, and roll 0 is "unrotated". </td></tr>
583 </table>
584</dl>
585
586</div>
587</div><p>
588<a class="anchor" name="g28560ea1b64c1d83095bcdfce9caf9dc"></a><!-- doxytag: member="drawstuff.h::dsSimulationLoop" ref="g28560ea1b64c1d83095bcdfce9caf9dc" args="(int argc, char **argv, int window_width, int window_height, struct dsFunctions *fn)" -->
589<div class="memitem">
590<div class="memproto">
591 <table class="memname">
592 <tr>
593 <td class="memname">DS_API void dsSimulationLoop </td>
594 <td>(</td>
595 <td class="paramtype">int&nbsp;</td>
596 <td class="paramname"> <em>argc</em>, </td>
597 </tr>
598 <tr>
599 <td class="paramkey"></td>
600 <td></td>
601 <td class="paramtype">char **&nbsp;</td>
602 <td class="paramname"> <em>argv</em>, </td>
603 </tr>
604 <tr>
605 <td class="paramkey"></td>
606 <td></td>
607 <td class="paramtype">int&nbsp;</td>
608 <td class="paramname"> <em>window_width</em>, </td>
609 </tr>
610 <tr>
611 <td class="paramkey"></td>
612 <td></td>
613 <td class="paramtype">int&nbsp;</td>
614 <td class="paramname"> <em>window_height</em>, </td>
615 </tr>
616 <tr>
617 <td class="paramkey"></td>
618 <td></td>
619 <td class="paramtype">struct <a class="el" href="structds_functions.html">dsFunctions</a> *&nbsp;</td>
620 <td class="paramname"> <em>fn</em></td><td>&nbsp;</td>
621 </tr>
622 <tr>
623 <td></td>
624 <td>)</td>
625 <td></td><td></td><td width="100%"></td>
626 </tr>
627 </table>
628</div>
629<div class="memdoc">
630
631<p>
632Does the complete simulation.
633<p>
634This function starts running the simulation, and only exits when the simulation is done. Function pointers should be provided for the callbacks. <dl compact><dt><b>Parameters:</b></dt><dd>
635 <table border="0" cellspacing="2" cellpadding="0">
636 <tr><td valign="top"></td><td valign="top"><em>argv</em>&nbsp;</td><td>supports flags like '-notex' '-noshadow' '-pause' </td></tr>
637 <tr><td valign="top"></td><td valign="top"><em>fn</em>&nbsp;</td><td>Callback functions. </td></tr>
638 </table>
639</dl>
640
641</div>
642</div><p>
643<a class="anchor" name="g6c13a5a310b9e00c45150058e669ebad"></a><!-- doxytag: member="drawstuff.h::dsStop" ref="g6c13a5a310b9e00c45150058e669ebad" args="()" -->
644<div class="memitem">
645<div class="memproto">
646 <table class="memname">
647 <tr>
648 <td class="memname">DS_API void dsStop </td>
649 <td>(</td>
650 <td class="paramname"> </td>
651 <td>&nbsp;)&nbsp;</td>
652 <td width="100%"></td>
653 </tr>
654 </table>
655</div>
656<div class="memdoc">
657
658<p>
659Stop the simulation loop.
660<p>
661Calling this from within <a class="el" href="group__drawstuff.html#g28560ea1b64c1d83095bcdfce9caf9dc" title="Does the complete simulation.">dsSimulationLoop()</a> will cause it to exit and return to the caller. it is the same as if the user used the exit command. using this outside the loop will have no effect.
662</div>
663</div><p>
664<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by&nbsp;
665<a href="http://www.doxygen.org/index.html">
666<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
667</body>
668</html>
diff --git a/libraries/ode-0.9/docs/group__joints.html b/libraries/ode-0.9/docs/group__joints.html
new file mode 100644
index 0000000..efe718e
--- /dev/null
+++ b/libraries/ode-0.9/docs/group__joints.html
@@ -0,0 +1,2127 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Joints</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>Joints</h1><table border="0" cellpadding="0" cellspacing="0">
17<tr><td></td></tr>
18<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
19<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>
20
21<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the ball type. <a href="#g2d23509f8d6c6066b361af4cf14166f7"></a><br></td></tr>
22<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>
23
24<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the hinge type. <a href="#g2f18d431d48c905abc9d72ce011c00bd"></a><br></td></tr>
25<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>
26
27<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the slider type. <a href="#geccc4c67b2d409016685a6a9163be539"></a><br></td></tr>
28<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>
29
30<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the contact type. <a href="#gfa5e1543239ba44ecbdc178ebc7c3cc4"></a><br></td></tr>
31<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>
32
33<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the hinge2 type. <a href="#g6a6e32d35bdda9352d1be8d4df973f8f"></a><br></td></tr>
34<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>
35
36<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the universal type. <a href="#g1cb2e7668242313b5d24acb5d43e5c62"></a><br></td></tr>
37<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>
38
39<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>
40<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>
41
42<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new joint of the fixed type. <a href="#ge568995d03077e1acb13882a627dcf32"></a><br></td></tr>
43<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>
44
45<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>
46<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>
47
48<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>
49<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>
50
51<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>
52<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>
53
54<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a joint. <a href="#g2187ccbcf51c951f680eb6c9a210801a"></a><br></td></tr>
55<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>
56
57<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a joint group. <a href="#gaaec687b184a1214133a41503e7c628f"></a><br></td></tr>
58<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>
59
60<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a joint group. <a href="#g49e664ee9a8bd7bfe5e6932bf936bb8f"></a><br></td></tr>
61<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>
62
63<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Empty a joint group. <a href="#g6e055bac8a0a3261bda3b6d07499c4ea"></a><br></td></tr>
64<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>
65
66<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Attach the joint to some new bodies. <a href="#g8f1c9b1302c799a1b87bc29b76d0dcec"></a><br></td></tr>
67<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)" -->
68ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g5ca72d8bd498ef1ba920b0b473e79d02">dJointSetData</a> (dJointID, void *data)</td></tr>
69
70<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the user-data pointer. <br></td></tr>
71<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g607702a11bae2d2613295f67088b0e82"></a><!-- doxytag: member="joints::dJointGetData" ref="g607702a11bae2d2613295f67088b0e82" args="(dJointID)" -->
72ODE_API void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g607702a11bae2d2613295f67088b0e82">dJointGetData</a> (dJointID)</td></tr>
73
74<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the user-data pointer. <br></td></tr>
75<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>
76
77<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the type of the joint. <a href="#g6f12f69d9b1a457428a28c2f77148174"></a><br></td></tr>
78<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>
79
80<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the bodies that this joint connects. <a href="#gff13cbb464f1bfdc225fc9202c2c54c3"></a><br></td></tr>
81<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>
82
83<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>
84<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gda1deef60d7afbb6b9375ddbf97e09a1"></a><!-- doxytag: member="joints::dJointGetFeedback" ref="gda1deef60d7afbb6b9375ddbf97e09a1" args="(dJointID)" -->
85ODE_API dJointFeedback *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gda1deef60d7afbb6b9375ddbf97e09a1">dJointGetFeedback</a> (dJointID)</td></tr>
86
87<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the datastructure that is to receive the feedback. <br></td></tr>
88<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>
89
90<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the joint anchor point. <a href="#g058c33a3da1ff935a1125034f779dc4a"></a><br></td></tr>
91<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)" -->
92ODE_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>
93
94<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the joint anchor point. <br></td></tr>
95<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)" -->
96ODE_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>
97
98<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Param setting for Ball joints. <br></td></tr>
99<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)" -->
100ODE_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>
101
102<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set hinge anchor parameter. <br></td></tr>
103<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)" -->
104ODE_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>
105
106<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set hinge axis. <br></td></tr>
107<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)" -->
108ODE_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>
109
110<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
111<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>
112
113<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Applies the torque about the hinge axis. <a href="#ga1725abe170f80b0731321ed38785019"></a><br></td></tr>
114<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)" -->
115ODE_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>
116
117<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the joint axis <br></td></tr>
118<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)" -->
119ODE_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>
120
121<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)" -->
122ODE_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>
123
124<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
125<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>
126
127<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>
128<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)" -->
129ODE_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>
130
131<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set anchor <br></td></tr>
132<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)" -->
133ODE_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>
134
135<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
136<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)" -->
137ODE_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>
138
139<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
140<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)" -->
141ODE_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>
142
143<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
144<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>
145
146<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>
147<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)" -->
148ODE_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>
149
150<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set anchor <br></td></tr>
151<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)" -->
152ODE_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>
153
154<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
155<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)" -->
156ODE_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>
157
158<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
159<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)" -->
160ODE_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>
161
162<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
163<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>
164
165<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>
166<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)" -->
167ODE_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>
168
169<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set anchor <br></td></tr>
170<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)" -->
171ODE_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>
172
173<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the axis for the prismatic articulation <br></td></tr>
174<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)" -->
175ODE_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>
176
177<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the axis for the rotoide articulation <br></td></tr>
178<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>
179
180<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <a href="#gc08a28659605f17307d563f45db0824b"></a><br></td></tr>
181<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>
182
183<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>
184<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8051a8232b4232f7b0d0fd57a3932072"></a><!-- doxytag: member="joints::dJointSetFixed" ref="g8051a8232b4232f7b0d0fd57a3932072" args="(dJointID)" -->
185ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g8051a8232b4232f7b0d0fd57a3932072">dJointSetFixed</a> (dJointID)</td></tr>
186
187<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>
188<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>
189
190<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the nr of axes <a href="#g1406f976045a1b7edffbb46bf626d04f"></a><br></td></tr>
191<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)" -->
192ODE_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>
193
194<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set axis <br></td></tr>
195<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>
196
197<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>
198<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)" -->
199ODE_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>
200
201<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
202<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)" -->
203ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gb0a3a8527810717c62a2c68dc4dfa822">dJointSetAMotorMode</a> (dJointID, int mode)</td></tr>
204
205<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set mode <br></td></tr>
206<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>
207
208<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>
209<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>
210
211<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>
212<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>
213
214<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the AMotor axes. <a href="#g080b7739f5b2b37a798742cee0ef38a4"></a><br></td></tr>
215<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)" -->
216ODE_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>
217
218<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set joint parameter <br></td></tr>
219<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)" -->
220ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><b>dJointSetPlane2DXParam</b> (dJointID, int parameter, dReal value)</td></tr>
221
222<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)" -->
223ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><b>dJointSetPlane2DYParam</b> (dJointID, int parameter, dReal value)</td></tr>
224
225<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)" -->
226ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><b>dJointSetPlane2DAngleParam</b> (dJointID, int parameter, dReal value)</td></tr>
227
228<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)" -->
229ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g20a27c479a75443552942059542f26ad">dJointGetBallParam</a> (dJointID, int parameter)</td></tr>
230
231<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
232<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>
233
234<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the hinge anchor point, in world coordinates. <a href="#g1d1c4f9b10c550f6fec550f9cc80c7ab"></a><br></td></tr>
235<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>
236
237<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#gfdc1d9c7bd8824ec3e79cc5aa67ddfa1"></a><br></td></tr>
238<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)" -->
239ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g17b812897bc5faab33584cc5e3e4d3a4">dJointGetHingeAxis</a> (dJointID, dVector3 result)</td></tr>
240
241<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get axis <br></td></tr>
242<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)" -->
243ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g43416613e72d1b16a32331a0ba3c7d70">dJointGetHingeParam</a> (dJointID, int parameter)</td></tr>
244
245<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
246<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>
247
248<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the hinge angle. <a href="#g7ca6bdfe2b919b6bc2a27ba6f0e069f0"></a><br></td></tr>
249<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g0d92377b748eb468dc38252df12afc76"></a><!-- doxytag: member="joints::dJointGetHingeAngleRate" ref="g0d92377b748eb468dc38252df12afc76" args="(dJointID)" -->
250ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g0d92377b748eb468dc38252df12afc76">dJointGetHingeAngleRate</a> (dJointID)</td></tr>
251
252<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the hinge angle time derivative. <br></td></tr>
253<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>
254
255<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>
256<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g93378c9c2d0cd50c79cfb78ca881f8ec"></a><!-- doxytag: member="joints::dJointGetSliderPositionRate" ref="g93378c9c2d0cd50c79cfb78ca881f8ec" args="(dJointID)" -->
257ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g93378c9c2d0cd50c79cfb78ca881f8ec">dJointGetSliderPositionRate</a> (dJointID)</td></tr>
258
259<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the slider linear position's time derivative. <br></td></tr>
260<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)" -->
261ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g17e31e7a877446213c39d1431269788e">dJointGetSliderAxis</a> (dJointID, dVector3 result)</td></tr>
262
263<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the slider axis. <br></td></tr>
264<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)" -->
265ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gc76d8bb4bf8587af70ef5932025048fe">dJointGetSliderParam</a> (dJointID, int parameter)</td></tr>
266
267<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
268<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>
269
270<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#g879999d011f82c73acf94029132cc198"></a><br></td></tr>
271<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)" -->
272ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ga67cde755a0c9b699859ead5b5c81d26">dJointGetHinge2Anchor2</a> (dJointID, dVector3 result)</td></tr>
273
274<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>
275<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)" -->
276ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g5d3e60c78ed85e8086dd60b13c3054f5">dJointGetHinge2Axis1</a> (dJointID, dVector3 result)</td></tr>
277
278<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get joint axis. <br></td></tr>
279<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)" -->
280ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g9459009e9370ea1a1e4de10f60053c87">dJointGetHinge2Axis2</a> (dJointID, dVector3 result)</td></tr>
281
282<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get joint axis. <br></td></tr>
283<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)" -->
284ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g9fe8b60ba59aa9451e5758491e34045a">dJointGetHinge2Param</a> (dJointID, int parameter)</td></tr>
285
286<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
287<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g430ed7cafe907e88929b28fdb17533c0"></a><!-- doxytag: member="joints::dJointGetHinge2Angle1" ref="g430ed7cafe907e88929b28fdb17533c0" args="(dJointID)" -->
288ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g430ed7cafe907e88929b28fdb17533c0">dJointGetHinge2Angle1</a> (dJointID)</td></tr>
289
290<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get angle. <br></td></tr>
291<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g61881501e905ec1072aba05464fe44fb"></a><!-- doxytag: member="joints::dJointGetHinge2Angle1Rate" ref="g61881501e905ec1072aba05464fe44fb" args="(dJointID)" -->
292ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g61881501e905ec1072aba05464fe44fb">dJointGetHinge2Angle1Rate</a> (dJointID)</td></tr>
293
294<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time derivative of angle. <br></td></tr>
295<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g028c47d8ff409f6856492d9eb0367c8a"></a><!-- doxytag: member="joints::dJointGetHinge2Angle2Rate" ref="g028c47d8ff409f6856492d9eb0367c8a" args="(dJointID)" -->
296ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g028c47d8ff409f6856492d9eb0367c8a">dJointGetHinge2Angle2Rate</a> (dJointID)</td></tr>
297
298<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time derivative of angle. <br></td></tr>
299<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>
300
301<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#ga768432c561cb76ba2490913f42d1aaf"></a><br></td></tr>
302<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>
303
304<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#g00d5018903a90d75c324c4f870b0e7ea"></a><br></td></tr>
305<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)" -->
306ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#geaa8e546d93c304755a86ad3fa6d2abe">dJointGetUniversalAxis1</a> (dJointID, dVector3 result)</td></tr>
307
308<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get axis. <br></td></tr>
309<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)" -->
310ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g13c01cbc9c5e918740bac0540f6473b3">dJointGetUniversalAxis2</a> (dJointID, dVector3 result)</td></tr>
311
312<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get axis. <br></td></tr>
313<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)" -->
314ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gf96e70e676058b7eb385f5810fec641a">dJointGetUniversalParam</a> (dJointID, int parameter)</td></tr>
315
316<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
317<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>
318
319<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get both angles at the same time. <a href="#g3c0fafbd1ccd8e450c01012ce600f6ab"></a><br></td></tr>
320<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3a08e2fed2e88eb0c964a33fb8c0c61f"></a><!-- doxytag: member="joints::dJointGetUniversalAngle1" ref="g3a08e2fed2e88eb0c964a33fb8c0c61f" args="(dJointID)" -->
321ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g3a08e2fed2e88eb0c964a33fb8c0c61f">dJointGetUniversalAngle1</a> (dJointID)</td></tr>
322
323<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get angle. <br></td></tr>
324<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4026a7331d7956eef31e72e20e0c703b"></a><!-- doxytag: member="joints::dJointGetUniversalAngle2" ref="g4026a7331d7956eef31e72e20e0c703b" args="(dJointID)" -->
325ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g4026a7331d7956eef31e72e20e0c703b">dJointGetUniversalAngle2</a> (dJointID)</td></tr>
326
327<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get angle. <br></td></tr>
328<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1f8ff99b6c33d3da2004a8846112427c"></a><!-- doxytag: member="joints::dJointGetUniversalAngle1Rate" ref="g1f8ff99b6c33d3da2004a8846112427c" args="(dJointID)" -->
329ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g1f8ff99b6c33d3da2004a8846112427c">dJointGetUniversalAngle1Rate</a> (dJointID)</td></tr>
330
331<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time derivative of angle. <br></td></tr>
332<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g94fb28ecb65cb0711b555558c22396cf"></a><!-- doxytag: member="joints::dJointGetUniversalAngle2Rate" ref="g94fb28ecb65cb0711b555558c22396cf" args="(dJointID)" -->
333ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g94fb28ecb65cb0711b555558c22396cf">dJointGetUniversalAngle2Rate</a> (dJointID)</td></tr>
334
335<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get time derivative of angle. <br></td></tr>
336<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>
337
338<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the joint anchor point, in world coordinates. <a href="#g88b176c70948c3f96e5c9173904b04fe"></a><br></td></tr>
339<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>
340
341<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>
342<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc3a434069c8bf31ae5140e2bff3bbb26"></a><!-- doxytag: member="joints::dJointGetPRPositionRate" ref="gc3a434069c8bf31ae5140e2bff3bbb26" args="(dJointID)" -->
343ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gc3a434069c8bf31ae5140e2bff3bbb26">dJointGetPRPositionRate</a> (dJointID)</td></tr>
344
345<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the PR linear position's time derivative. <br></td></tr>
346<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)" -->
347ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g826424aac5023739bb13426df672ab32">dJointGetPRAxis1</a> (dJointID, dVector3 result)</td></tr>
348
349<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the prismatic axis. <br></td></tr>
350<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)" -->
351ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g5f175ed66c5df1119a251fad8a51059d">dJointGetPRAxis2</a> (dJointID, dVector3 result)</td></tr>
352
353<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the Rotoide axis. <br></td></tr>
354<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)" -->
355ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g968b868bd1598b24a3101a04320206c6">dJointGetPRParam</a> (dJointID, int parameter)</td></tr>
356
357<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
358<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>
359
360<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>
361<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>
362
363<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the AMotor axes. <a href="#gef1af77cc19d81b24ad00025f3c9d5ec"></a><br></td></tr>
364<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>
365
366<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get axis. <a href="#g1887538374f044e22f9742650d14ae69"></a><br></td></tr>
367<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>
368
369<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current angle for axis. <a href="#g3634444b00ac33a5f34a7af4fffda8b2"></a><br></td></tr>
370<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>
371
372<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the current angle rate for axis anum. <a href="#ga65abc36177390330037299b689b70c7"></a><br></td></tr>
373<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)" -->
374ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gfc4cd1046089baa4309d30ae7832d289">dJointGetAMotorParam</a> (dJointID, int parameter)</td></tr>
375
376<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
377<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>
378
379<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the angular motor mode. <a href="#gf2430c2062414bc28660bdc06a0d72d5"></a><br></td></tr>
380<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6d7557b5e94e0ee37561cadc5bf85cb7"></a><!-- doxytag: member="joints::dJointGetLMotorNumAxes" ref="g6d7557b5e94e0ee37561cadc5bf85cb7" args="(dJointID)" -->
381ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#g6d7557b5e94e0ee37561cadc5bf85cb7">dJointGetLMotorNumAxes</a> (dJointID)</td></tr>
382
383<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get nr of axes. <br></td></tr>
384<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)" -->
385ODE_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>
386
387<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get axis. <br></td></tr>
388<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)" -->
389ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#gcbc48fd61857e3843923166abf81a7a0">dJointGetLMotorParam</a> (dJointID, int parameter)</td></tr>
390
391<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
392<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)" -->
393ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joints.html#ge433a5eac5f8600d8e6325666c2e12c2">dJointGetFixedParam</a> (dJointID, int parameter)</td></tr>
394
395<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get joint parameter <br></td></tr>
396<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4f5e75d2e10f4392d5046ef1ab119da2"></a><!-- doxytag: member="joints::dConnectingJoint" ref="g4f5e75d2e10f4392d5046ef1ab119da2" args="(dBodyID, dBodyID)" -->
397ODE_API dJointID&nbsp;</td><td class="memItemRight" valign="bottom"><b>dConnectingJoint</b> (dBodyID, dBodyID)</td></tr>
398
399<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 *)" -->
400ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><b>dConnectingJointList</b> (dBodyID, dBodyID, dJointID *)</td></tr>
401
402<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>
403
404<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility function. <a href="#g68eb2f4daea03713db4d8b4daca663ae"></a><br></td></tr>
405<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>
406
407<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility function. <a href="#gc1eafde1fde036633136be6fd254ca5d"></a><br></td></tr>
408</table>
409<hr><a name="_details"></a><h2>Detailed Description</h2>
410In 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>
411A joint has a set of parameters that can be set. These include:<p>
412<ul>
413<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>
414<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>
415<li>dParamVel Desired motor velocity (this will be an angular or linear velocity). </li>
416<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>
417<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>
418<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>
419<li>dParamCFM The constraint force mixing (CFM) value used when not at a stop. </li>
420<li>dParamStopERP The error reduction parameter (ERP) used by the stops. </li>
421<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>
422<li>dParamSuspensionERP Suspension error reduction parameter (ERP). Currently this is only implemented on the hinge-2 joint. </li>
423<li>dParamSuspensionCFM Suspension constraint force mixing (CFM) value. Currently this is only implemented on the hinge-2 joint.</li>
424</ul>
425If 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>
426<a class="anchor" name="g68eb2f4daea03713db4d8b4daca663ae"></a><!-- doxytag: member="objects.h::dAreConnected" ref="g68eb2f4daea03713db4d8b4daca663ae" args="(dBodyID, dBodyID)" -->
427<div class="memitem">
428<div class="memproto">
429 <table class="memname">
430 <tr>
431 <td class="memname">ODE_API int dAreConnected </td>
432 <td>(</td>
433 <td class="paramtype">dBodyID&nbsp;</td>
434 <td class="paramname">, </td>
435 </tr>
436 <tr>
437 <td class="paramkey"></td>
438 <td></td>
439 <td class="paramtype">dBodyID&nbsp;</td>
440 <td class="paramname"></td><td>&nbsp;</td>
441 </tr>
442 <tr>
443 <td></td>
444 <td>)</td>
445 <td></td><td></td><td width="100%"></td>
446 </tr>
447 </table>
448</div>
449<div class="memdoc">
450
451<p>
452Utility function.
453<p>
454<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>
455
456</div>
457</div><p>
458<a class="anchor" name="gc1eafde1fde036633136be6fd254ca5d"></a><!-- doxytag: member="objects.h::dAreConnectedExcluding" ref="gc1eafde1fde036633136be6fd254ca5d" args="(dBodyID body1, dBodyID body2, int joint_type)" -->
459<div class="memitem">
460<div class="memproto">
461 <table class="memname">
462 <tr>
463 <td class="memname">ODE_API int dAreConnectedExcluding </td>
464 <td>(</td>
465 <td class="paramtype">dBodyID&nbsp;</td>
466 <td class="paramname"> <em>body1</em>, </td>
467 </tr>
468 <tr>
469 <td class="paramkey"></td>
470 <td></td>
471 <td class="paramtype">dBodyID&nbsp;</td>
472 <td class="paramname"> <em>body2</em>, </td>
473 </tr>
474 <tr>
475 <td class="paramkey"></td>
476 <td></td>
477 <td class="paramtype">int&nbsp;</td>
478 <td class="paramname"> <em>joint_type</em></td><td>&nbsp;</td>
479 </tr>
480 <tr>
481 <td></td>
482 <td>)</td>
483 <td></td><td></td><td width="100%"></td>
484 </tr>
485 </table>
486</div>
487<div class="memdoc">
488
489<p>
490Utility function.
491<p>
492<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>
493<li>{joint_type}, otherwise return 0. </li>
494</ul>
495</dd></dl>
496<dl compact><dt><b>Parameters:</b></dt><dd>
497 <table border="0" cellspacing="2" cellpadding="0">
498 <tr><td valign="top"></td><td valign="top"><em>body1</em>&nbsp;</td><td>A body to check. </td></tr>
499 <tr><td valign="top"></td><td valign="top"><em>body2</em>&nbsp;</td><td>A body to check. </td></tr>
500 <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>
501 </table>
502</dl>
503
504</div>
505</div><p>
506<a class="anchor" name="g69d13d54516716020d2adb841699b77b"></a><!-- doxytag: member="objects.h::dJointAddAMotorTorques" ref="g69d13d54516716020d2adb841699b77b" args="(dJointID, dReal torque1, dReal torque2, dReal torque3)" -->
507<div class="memitem">
508<div class="memproto">
509 <table class="memname">
510 <tr>
511 <td class="memname">ODE_API void dJointAddAMotorTorques </td>
512 <td>(</td>
513 <td class="paramtype">dJointID&nbsp;</td>
514 <td class="paramname">, </td>
515 </tr>
516 <tr>
517 <td class="paramkey"></td>
518 <td></td>
519 <td class="paramtype">dReal&nbsp;</td>
520 <td class="paramname"> <em>torque1</em>, </td>
521 </tr>
522 <tr>
523 <td class="paramkey"></td>
524 <td></td>
525 <td class="paramtype">dReal&nbsp;</td>
526 <td class="paramname"> <em>torque2</em>, </td>
527 </tr>
528 <tr>
529 <td class="paramkey"></td>
530 <td></td>
531 <td class="paramtype">dReal&nbsp;</td>
532 <td class="paramname"> <em>torque3</em></td><td>&nbsp;</td>
533 </tr>
534 <tr>
535 <td></td>
536 <td>)</td>
537 <td></td><td></td><td width="100%"></td>
538 </tr>
539 </table>
540</div>
541<div class="memdoc">
542
543<p>
544Applies torque0 about the AMotor's axis 0, torque1 about the AMotor's axis 1, and torque2 about the AMotor's axis 2.
545<p>
546<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>
547
548</div>
549</div><p>
550<a class="anchor" name="ga5ba1541d092f28c93b1bdc3bfb1b69f"></a><!-- doxytag: member="objects.h::dJointAddHinge2Torques" ref="ga5ba1541d092f28c93b1bdc3bfb1b69f" args="(dJointID joint, dReal torque1, dReal torque2)" -->
551<div class="memitem">
552<div class="memproto">
553 <table class="memname">
554 <tr>
555 <td class="memname">ODE_API void dJointAddHinge2Torques </td>
556 <td>(</td>
557 <td class="paramtype">dJointID&nbsp;</td>
558 <td class="paramname"> <em>joint</em>, </td>
559 </tr>
560 <tr>
561 <td class="paramkey"></td>
562 <td></td>
563 <td class="paramtype">dReal&nbsp;</td>
564 <td class="paramname"> <em>torque1</em>, </td>
565 </tr>
566 <tr>
567 <td class="paramkey"></td>
568 <td></td>
569 <td class="paramtype">dReal&nbsp;</td>
570 <td class="paramname"> <em>torque2</em></td><td>&nbsp;</td>
571 </tr>
572 <tr>
573 <td></td>
574 <td>)</td>
575 <td></td><td></td><td width="100%"></td>
576 </tr>
577 </table>
578</div>
579<div class="memdoc">
580
581<p>
582Applies torque1 about the hinge2's axis 1, torque2 about the hinge2's axis 2.
583<p>
584<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>
585
586</div>
587</div><p>
588<a class="anchor" name="ga1725abe170f80b0731321ed38785019"></a><!-- doxytag: member="objects.h::dJointAddHingeTorque" ref="ga1725abe170f80b0731321ed38785019" args="(dJointID joint, dReal torque)" -->
589<div class="memitem">
590<div class="memproto">
591 <table class="memname">
592 <tr>
593 <td class="memname">ODE_API void dJointAddHingeTorque </td>
594 <td>(</td>
595 <td class="paramtype">dJointID&nbsp;</td>
596 <td class="paramname"> <em>joint</em>, </td>
597 </tr>
598 <tr>
599 <td class="paramkey"></td>
600 <td></td>
601 <td class="paramtype">dReal&nbsp;</td>
602 <td class="paramname"> <em>torque</em></td><td>&nbsp;</td>
603 </tr>
604 <tr>
605 <td></td>
606 <td>)</td>
607 <td></td><td></td><td width="100%"></td>
608 </tr>
609 </table>
610</div>
611<div class="memdoc">
612
613<p>
614Applies the torque about the hinge axis.
615<p>
616That 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>}
617</div>
618</div><p>
619<a class="anchor" name="ge675b0e0e332ddcd907ac9d1461b1961"></a><!-- doxytag: member="objects.h::dJointAddPRTorque" ref="ge675b0e0e332ddcd907ac9d1461b1961" args="(dJointID j, dReal torque)" -->
620<div class="memitem">
621<div class="memproto">
622 <table class="memname">
623 <tr>
624 <td class="memname">ODE_API void dJointAddPRTorque </td>
625 <td>(</td>
626 <td class="paramtype">dJointID&nbsp;</td>
627 <td class="paramname"> <em>j</em>, </td>
628 </tr>
629 <tr>
630 <td class="paramkey"></td>
631 <td></td>
632 <td class="paramtype">dReal&nbsp;</td>
633 <td class="paramname"> <em>torque</em></td><td>&nbsp;</td>
634 </tr>
635 <tr>
636 <td></td>
637 <td>)</td>
638 <td></td><td></td><td width="100%"></td>
639 </tr>
640 </table>
641</div>
642<div class="memdoc">
643
644<p>
645Applies the torque about the rotoide axis of the PR joint.
646<p>
647That 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>}
648</div>
649</div><p>
650<a class="anchor" name="g8b0e018cc3df6ea5ddb42320913455e7"></a><!-- doxytag: member="objects.h::dJointAddSliderForce" ref="g8b0e018cc3df6ea5ddb42320913455e7" args="(dJointID joint, dReal force)" -->
651<div class="memitem">
652<div class="memproto">
653 <table class="memname">
654 <tr>
655 <td class="memname">ODE_API void dJointAddSliderForce </td>
656 <td>(</td>
657 <td class="paramtype">dJointID&nbsp;</td>
658 <td class="paramname"> <em>joint</em>, </td>
659 </tr>
660 <tr>
661 <td class="paramkey"></td>
662 <td></td>
663 <td class="paramtype">dReal&nbsp;</td>
664 <td class="paramname"> <em>force</em></td><td>&nbsp;</td>
665 </tr>
666 <tr>
667 <td></td>
668 <td>)</td>
669 <td></td><td></td><td width="100%"></td>
670 </tr>
671 </table>
672</div>
673<div class="memdoc">
674
675<p>
676Applies the given force in the slider's direction.
677<p>
678That 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>.
679</div>
680</div><p>
681<a class="anchor" name="g36607569e2ee26f39d3d42cba2397898"></a><!-- doxytag: member="objects.h::dJointAddUniversalTorques" ref="g36607569e2ee26f39d3d42cba2397898" args="(dJointID joint, dReal torque1, dReal torque2)" -->
682<div class="memitem">
683<div class="memproto">
684 <table class="memname">
685 <tr>
686 <td class="memname">ODE_API void dJointAddUniversalTorques </td>
687 <td>(</td>
688 <td class="paramtype">dJointID&nbsp;</td>
689 <td class="paramname"> <em>joint</em>, </td>
690 </tr>
691 <tr>
692 <td class="paramkey"></td>
693 <td></td>
694 <td class="paramtype">dReal&nbsp;</td>
695 <td class="paramname"> <em>torque1</em>, </td>
696 </tr>
697 <tr>
698 <td class="paramkey"></td>
699 <td></td>
700 <td class="paramtype">dReal&nbsp;</td>
701 <td class="paramname"> <em>torque2</em></td><td>&nbsp;</td>
702 </tr>
703 <tr>
704 <td></td>
705 <td>)</td>
706 <td></td><td></td><td width="100%"></td>
707 </tr>
708 </table>
709</div>
710<div class="memdoc">
711
712<p>
713Applies torque1 about the universal's axis 1, torque2 about the universal's axis 2.
714<p>
715<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>
716
717</div>
718</div><p>
719<a class="anchor" name="g8f1c9b1302c799a1b87bc29b76d0dcec"></a><!-- doxytag: member="objects.h::dJointAttach" ref="g8f1c9b1302c799a1b87bc29b76d0dcec" args="(dJointID, dBodyID body1, dBodyID body2)" -->
720<div class="memitem">
721<div class="memproto">
722 <table class="memname">
723 <tr>
724 <td class="memname">ODE_API void dJointAttach </td>
725 <td>(</td>
726 <td class="paramtype">dJointID&nbsp;</td>
727 <td class="paramname">, </td>
728 </tr>
729 <tr>
730 <td class="paramkey"></td>
731 <td></td>
732 <td class="paramtype">dBodyID&nbsp;</td>
733 <td class="paramname"> <em>body1</em>, </td>
734 </tr>
735 <tr>
736 <td class="paramkey"></td>
737 <td></td>
738 <td class="paramtype">dBodyID&nbsp;</td>
739 <td class="paramname"> <em>body2</em></td><td>&nbsp;</td>
740 </tr>
741 <tr>
742 <td></td>
743 <td>)</td>
744 <td></td><td></td><td width="100%"></td>
745 </tr>
746 </table>
747</div>
748<div class="memdoc">
749
750<p>
751Attach the joint to some new bodies.
752<p>
753If 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>
754
755</div>
756</div><p>
757<a class="anchor" name="gf23195ce77e12031393e591abd0e28e6"></a><!-- doxytag: member="objects.h::dJointCreateAMotor" ref="gf23195ce77e12031393e591abd0e28e6" args="(dWorldID, dJointGroupID)" -->
758<div class="memitem">
759<div class="memproto">
760 <table class="memname">
761 <tr>
762 <td class="memname">ODE_API dJointID dJointCreateAMotor </td>
763 <td>(</td>
764 <td class="paramtype">dWorldID&nbsp;</td>
765 <td class="paramname">, </td>
766 </tr>
767 <tr>
768 <td class="paramkey"></td>
769 <td></td>
770 <td class="paramtype">dJointGroupID&nbsp;</td>
771 <td class="paramname"></td><td>&nbsp;</td>
772 </tr>
773 <tr>
774 <td></td>
775 <td>)</td>
776 <td></td><td></td><td width="100%"></td>
777 </tr>
778 </table>
779</div>
780<div class="memdoc">
781
782<p>
783Create a new joint of the A-motor type.
784<p>
785<dl compact><dt><b>Parameters:</b></dt><dd>
786 <table border="0" cellspacing="2" cellpadding="0">
787 <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>
788 </table>
789</dl>
790
791</div>
792</div><p>
793<a class="anchor" name="g2d23509f8d6c6066b361af4cf14166f7"></a><!-- doxytag: member="objects.h::dJointCreateBall" ref="g2d23509f8d6c6066b361af4cf14166f7" args="(dWorldID, dJointGroupID)" -->
794<div class="memitem">
795<div class="memproto">
796 <table class="memname">
797 <tr>
798 <td class="memname">ODE_API dJointID dJointCreateBall </td>
799 <td>(</td>
800 <td class="paramtype">dWorldID&nbsp;</td>
801 <td class="paramname">, </td>
802 </tr>
803 <tr>
804 <td class="paramkey"></td>
805 <td></td>
806 <td class="paramtype">dJointGroupID&nbsp;</td>
807 <td class="paramname"></td><td>&nbsp;</td>
808 </tr>
809 <tr>
810 <td></td>
811 <td>)</td>
812 <td></td><td></td><td width="100%"></td>
813 </tr>
814 </table>
815</div>
816<div class="memdoc">
817
818<p>
819Create a new joint of the ball type.
820<p>
821<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>
822<dl compact><dt><b>Parameters:</b></dt><dd>
823 <table border="0" cellspacing="2" cellpadding="0">
824 <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>
825 </table>
826</dl>
827
828</div>
829</div><p>
830<a class="anchor" name="gfa5e1543239ba44ecbdc178ebc7c3cc4"></a><!-- doxytag: member="objects.h::dJointCreateContact" ref="gfa5e1543239ba44ecbdc178ebc7c3cc4" args="(dWorldID, dJointGroupID, const dContact *)" -->
831<div class="memitem">
832<div class="memproto">
833 <table class="memname">
834 <tr>
835 <td class="memname">ODE_API dJointID dJointCreateContact </td>
836 <td>(</td>
837 <td class="paramtype">dWorldID&nbsp;</td>
838 <td class="paramname">, </td>
839 </tr>
840 <tr>
841 <td class="paramkey"></td>
842 <td></td>
843 <td class="paramtype">dJointGroupID&nbsp;</td>
844 <td class="paramname">, </td>
845 </tr>
846 <tr>
847 <td class="paramkey"></td>
848 <td></td>
849 <td class="paramtype">const dContact *&nbsp;</td>
850 <td class="paramname"></td><td>&nbsp;</td>
851 </tr>
852 <tr>
853 <td></td>
854 <td>)</td>
855 <td></td><td></td><td width="100%"></td>
856 </tr>
857 </table>
858</div>
859<div class="memdoc">
860
861<p>
862Create a new joint of the contact type.
863<p>
864<dl compact><dt><b>Parameters:</b></dt><dd>
865 <table border="0" cellspacing="2" cellpadding="0">
866 <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>
867 </table>
868</dl>
869
870</div>
871</div><p>
872<a class="anchor" name="ge568995d03077e1acb13882a627dcf32"></a><!-- doxytag: member="objects.h::dJointCreateFixed" ref="ge568995d03077e1acb13882a627dcf32" args="(dWorldID, dJointGroupID)" -->
873<div class="memitem">
874<div class="memproto">
875 <table class="memname">
876 <tr>
877 <td class="memname">ODE_API dJointID dJointCreateFixed </td>
878 <td>(</td>
879 <td class="paramtype">dWorldID&nbsp;</td>
880 <td class="paramname">, </td>
881 </tr>
882 <tr>
883 <td class="paramkey"></td>
884 <td></td>
885 <td class="paramtype">dJointGroupID&nbsp;</td>
886 <td class="paramname"></td><td>&nbsp;</td>
887 </tr>
888 <tr>
889 <td></td>
890 <td>)</td>
891 <td></td><td></td><td width="100%"></td>
892 </tr>
893 </table>
894</div>
895<div class="memdoc">
896
897<p>
898Create a new joint of the fixed type.
899<p>
900<dl compact><dt><b>Parameters:</b></dt><dd>
901 <table border="0" cellspacing="2" cellpadding="0">
902 <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>
903 </table>
904</dl>
905
906</div>
907</div><p>
908<a class="anchor" name="g2f18d431d48c905abc9d72ce011c00bd"></a><!-- doxytag: member="objects.h::dJointCreateHinge" ref="g2f18d431d48c905abc9d72ce011c00bd" args="(dWorldID, dJointGroupID)" -->
909<div class="memitem">
910<div class="memproto">
911 <table class="memname">
912 <tr>
913 <td class="memname">ODE_API dJointID dJointCreateHinge </td>
914 <td>(</td>
915 <td class="paramtype">dWorldID&nbsp;</td>
916 <td class="paramname">, </td>
917 </tr>
918 <tr>
919 <td class="paramkey"></td>
920 <td></td>
921 <td class="paramtype">dJointGroupID&nbsp;</td>
922 <td class="paramname"></td><td>&nbsp;</td>
923 </tr>
924 <tr>
925 <td></td>
926 <td>)</td>
927 <td></td><td></td><td width="100%"></td>
928 </tr>
929 </table>
930</div>
931<div class="memdoc">
932
933<p>
934Create a new joint of the hinge type.
935<p>
936<dl compact><dt><b>Parameters:</b></dt><dd>
937 <table border="0" cellspacing="2" cellpadding="0">
938 <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>
939 </table>
940</dl>
941
942</div>
943</div><p>
944<a class="anchor" name="g6a6e32d35bdda9352d1be8d4df973f8f"></a><!-- doxytag: member="objects.h::dJointCreateHinge2" ref="g6a6e32d35bdda9352d1be8d4df973f8f" args="(dWorldID, dJointGroupID)" -->
945<div class="memitem">
946<div class="memproto">
947 <table class="memname">
948 <tr>
949 <td class="memname">ODE_API dJointID dJointCreateHinge2 </td>
950 <td>(</td>
951 <td class="paramtype">dWorldID&nbsp;</td>
952 <td class="paramname">, </td>
953 </tr>
954 <tr>
955 <td class="paramkey"></td>
956 <td></td>
957 <td class="paramtype">dJointGroupID&nbsp;</td>
958 <td class="paramname"></td><td>&nbsp;</td>
959 </tr>
960 <tr>
961 <td></td>
962 <td>)</td>
963 <td></td><td></td><td width="100%"></td>
964 </tr>
965 </table>
966</div>
967<div class="memdoc">
968
969<p>
970Create a new joint of the hinge2 type.
971<p>
972<dl compact><dt><b>Parameters:</b></dt><dd>
973 <table border="0" cellspacing="2" cellpadding="0">
974 <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>
975 </table>
976</dl>
977
978</div>
979</div><p>
980<a class="anchor" name="g21c8c99615269c5d9d3c57c674f6fd56"></a><!-- doxytag: member="objects.h::dJointCreateLMotor" ref="g21c8c99615269c5d9d3c57c674f6fd56" args="(dWorldID, dJointGroupID)" -->
981<div class="memitem">
982<div class="memproto">
983 <table class="memname">
984 <tr>
985 <td class="memname">ODE_API dJointID dJointCreateLMotor </td>
986 <td>(</td>
987 <td class="paramtype">dWorldID&nbsp;</td>
988 <td class="paramname">, </td>
989 </tr>
990 <tr>
991 <td class="paramkey"></td>
992 <td></td>
993 <td class="paramtype">dJointGroupID&nbsp;</td>
994 <td class="paramname"></td><td>&nbsp;</td>
995 </tr>
996 <tr>
997 <td></td>
998 <td>)</td>
999 <td></td><td></td><td width="100%"></td>
1000 </tr>
1001 </table>
1002</div>
1003<div class="memdoc">
1004
1005<p>
1006Create a new joint of the L-motor type.
1007<p>
1008<dl compact><dt><b>Parameters:</b></dt><dd>
1009 <table border="0" cellspacing="2" cellpadding="0">
1010 <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>
1011 </table>
1012</dl>
1013
1014</div>
1015</div><p>
1016<a class="anchor" name="g7e68f39530acad9c0e7a38c8a3799b38"></a><!-- doxytag: member="objects.h::dJointCreatePlane2D" ref="g7e68f39530acad9c0e7a38c8a3799b38" args="(dWorldID, dJointGroupID)" -->
1017<div class="memitem">
1018<div class="memproto">
1019 <table class="memname">
1020 <tr>
1021 <td class="memname">ODE_API dJointID dJointCreatePlane2D </td>
1022 <td>(</td>
1023 <td class="paramtype">dWorldID&nbsp;</td>
1024 <td class="paramname">, </td>
1025 </tr>
1026 <tr>
1027 <td class="paramkey"></td>
1028 <td></td>
1029 <td class="paramtype">dJointGroupID&nbsp;</td>
1030 <td class="paramname"></td><td>&nbsp;</td>
1031 </tr>
1032 <tr>
1033 <td></td>
1034 <td>)</td>
1035 <td></td><td></td><td width="100%"></td>
1036 </tr>
1037 </table>
1038</div>
1039<div class="memdoc">
1040
1041<p>
1042Create a new joint of the plane-2d type.
1043<p>
1044<dl compact><dt><b>Parameters:</b></dt><dd>
1045 <table border="0" cellspacing="2" cellpadding="0">
1046 <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>
1047 </table>
1048</dl>
1049
1050</div>
1051</div><p>
1052<a class="anchor" name="gdc867f10ba9931d191244fa879e43cb2"></a><!-- doxytag: member="objects.h::dJointCreatePR" ref="gdc867f10ba9931d191244fa879e43cb2" args="(dWorldID, dJointGroupID)" -->
1053<div class="memitem">
1054<div class="memproto">
1055 <table class="memname">
1056 <tr>
1057 <td class="memname">ODE_API dJointID dJointCreatePR </td>
1058 <td>(</td>
1059 <td class="paramtype">dWorldID&nbsp;</td>
1060 <td class="paramname">, </td>
1061 </tr>
1062 <tr>
1063 <td class="paramkey"></td>
1064 <td></td>
1065 <td class="paramtype">dJointGroupID&nbsp;</td>
1066 <td class="paramname"></td><td>&nbsp;</td>
1067 </tr>
1068 <tr>
1069 <td></td>
1070 <td>)</td>
1071 <td></td><td></td><td width="100%"></td>
1072 </tr>
1073 </table>
1074</div>
1075<div class="memdoc">
1076
1077<p>
1078Create a new joint of the PR (Prismatic and Rotoide) type.
1079<p>
1080<dl compact><dt><b>Parameters:</b></dt><dd>
1081 <table border="0" cellspacing="2" cellpadding="0">
1082 <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>
1083 </table>
1084</dl>
1085
1086</div>
1087</div><p>
1088<a class="anchor" name="geccc4c67b2d409016685a6a9163be539"></a><!-- doxytag: member="objects.h::dJointCreateSlider" ref="geccc4c67b2d409016685a6a9163be539" args="(dWorldID, dJointGroupID)" -->
1089<div class="memitem">
1090<div class="memproto">
1091 <table class="memname">
1092 <tr>
1093 <td class="memname">ODE_API dJointID dJointCreateSlider </td>
1094 <td>(</td>
1095 <td class="paramtype">dWorldID&nbsp;</td>
1096 <td class="paramname">, </td>
1097 </tr>
1098 <tr>
1099 <td class="paramkey"></td>
1100 <td></td>
1101 <td class="paramtype">dJointGroupID&nbsp;</td>
1102 <td class="paramname"></td><td>&nbsp;</td>
1103 </tr>
1104 <tr>
1105 <td></td>
1106 <td>)</td>
1107 <td></td><td></td><td width="100%"></td>
1108 </tr>
1109 </table>
1110</div>
1111<div class="memdoc">
1112
1113<p>
1114Create a new joint of the slider type.
1115<p>
1116<dl compact><dt><b>Parameters:</b></dt><dd>
1117 <table border="0" cellspacing="2" cellpadding="0">
1118 <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>
1119 </table>
1120</dl>
1121
1122</div>
1123</div><p>
1124<a class="anchor" name="g1cb2e7668242313b5d24acb5d43e5c62"></a><!-- doxytag: member="objects.h::dJointCreateUniversal" ref="g1cb2e7668242313b5d24acb5d43e5c62" args="(dWorldID, dJointGroupID)" -->
1125<div class="memitem">
1126<div class="memproto">
1127 <table class="memname">
1128 <tr>
1129 <td class="memname">ODE_API dJointID dJointCreateUniversal </td>
1130 <td>(</td>
1131 <td class="paramtype">dWorldID&nbsp;</td>
1132 <td class="paramname">, </td>
1133 </tr>
1134 <tr>
1135 <td class="paramkey"></td>
1136 <td></td>
1137 <td class="paramtype">dJointGroupID&nbsp;</td>
1138 <td class="paramname"></td><td>&nbsp;</td>
1139 </tr>
1140 <tr>
1141 <td></td>
1142 <td>)</td>
1143 <td></td><td></td><td width="100%"></td>
1144 </tr>
1145 </table>
1146</div>
1147<div class="memdoc">
1148
1149<p>
1150Create a new joint of the universal type.
1151<p>
1152<dl compact><dt><b>Parameters:</b></dt><dd>
1153 <table border="0" cellspacing="2" cellpadding="0">
1154 <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>
1155 </table>
1156</dl>
1157
1158</div>
1159</div><p>
1160<a class="anchor" name="g2187ccbcf51c951f680eb6c9a210801a"></a><!-- doxytag: member="objects.h::dJointDestroy" ref="g2187ccbcf51c951f680eb6c9a210801a" args="(dJointID)" -->
1161<div class="memitem">
1162<div class="memproto">
1163 <table class="memname">
1164 <tr>
1165 <td class="memname">ODE_API void dJointDestroy </td>
1166 <td>(</td>
1167 <td class="paramtype">dJointID&nbsp;</td>
1168 <td class="paramname"> </td>
1169 <td>&nbsp;)&nbsp;</td>
1170 <td width="100%"></td>
1171 </tr>
1172 </table>
1173</div>
1174<div class="memdoc">
1175
1176<p>
1177Destroy a joint.
1178<p>
1179disconnects 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.
1180</div>
1181</div><p>
1182<a class="anchor" name="g3634444b00ac33a5f34a7af4fffda8b2"></a><!-- doxytag: member="objects.h::dJointGetAMotorAngle" ref="g3634444b00ac33a5f34a7af4fffda8b2" args="(dJointID, int anum)" -->
1183<div class="memitem">
1184<div class="memproto">
1185 <table class="memname">
1186 <tr>
1187 <td class="memname">ODE_API dReal dJointGetAMotorAngle </td>
1188 <td>(</td>
1189 <td class="paramtype">dJointID&nbsp;</td>
1190 <td class="paramname">, </td>
1191 </tr>
1192 <tr>
1193 <td class="paramkey"></td>
1194 <td></td>
1195 <td class="paramtype">int&nbsp;</td>
1196 <td class="paramname"> <em>anum</em></td><td>&nbsp;</td>
1197 </tr>
1198 <tr>
1199 <td></td>
1200 <td>)</td>
1201 <td></td><td></td><td width="100%"></td>
1202 </tr>
1203 </table>
1204</div>
1205<div class="memdoc">
1206
1207<p>
1208Get the current angle for axis.
1209<p>
1210<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>
1211
1212</div>
1213</div><p>
1214<a class="anchor" name="ga65abc36177390330037299b689b70c7"></a><!-- doxytag: member="objects.h::dJointGetAMotorAngleRate" ref="ga65abc36177390330037299b689b70c7" args="(dJointID, int anum)" -->
1215<div class="memitem">
1216<div class="memproto">
1217 <table class="memname">
1218 <tr>
1219 <td class="memname">ODE_API dReal dJointGetAMotorAngleRate </td>
1220 <td>(</td>
1221 <td class="paramtype">dJointID&nbsp;</td>
1222 <td class="paramname">, </td>
1223 </tr>
1224 <tr>
1225 <td class="paramkey"></td>
1226 <td></td>
1227 <td class="paramtype">int&nbsp;</td>
1228 <td class="paramname"> <em>anum</em></td><td>&nbsp;</td>
1229 </tr>
1230 <tr>
1231 <td></td>
1232 <td>)</td>
1233 <td></td><td></td><td width="100%"></td>
1234 </tr>
1235 </table>
1236</div>
1237<div class="memdoc">
1238
1239<p>
1240Get the current angle rate for axis anum.
1241<p>
1242<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>
1243
1244</div>
1245</div><p>
1246<a class="anchor" name="gef1af77cc19d81b24ad00025f3c9d5ec"></a><!-- doxytag: member="objects.h::dJointGetAMotorAxis" ref="gef1af77cc19d81b24ad00025f3c9d5ec" args="(dJointID, int anum, dVector3 result)" -->
1247<div class="memitem">
1248<div class="memproto">
1249 <table class="memname">
1250 <tr>
1251 <td class="memname">ODE_API void dJointGetAMotorAxis </td>
1252 <td>(</td>
1253 <td class="paramtype">dJointID&nbsp;</td>
1254 <td class="paramname">, </td>
1255 </tr>
1256 <tr>
1257 <td class="paramkey"></td>
1258 <td></td>
1259 <td class="paramtype">int&nbsp;</td>
1260 <td class="paramname"> <em>anum</em>, </td>
1261 </tr>
1262 <tr>
1263 <td class="paramkey"></td>
1264 <td></td>
1265 <td class="paramtype">dVector3&nbsp;</td>
1266 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1267 </tr>
1268 <tr>
1269 <td></td>
1270 <td>)</td>
1271 <td></td><td></td><td width="100%"></td>
1272 </tr>
1273 </table>
1274</div>
1275<div class="memdoc">
1276
1277<p>
1278Get the AMotor axes.
1279<p>
1280<dl compact><dt><b>Parameters:</b></dt><dd>
1281 <table border="0" cellspacing="2" cellpadding="0">
1282 <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>
1283 <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>
1284<li>0: The axis is anchored to the global frame. </li>
1285<li>1: The axis is anchored to the first body. </li>
1286<li>2: The axis is anchored to the second body. </li>
1287</ul>
1288</td></tr>
1289 </table>
1290</dl>
1291
1292</div>
1293</div><p>
1294<a class="anchor" name="g1887538374f044e22f9742650d14ae69"></a><!-- doxytag: member="objects.h::dJointGetAMotorAxisRel" ref="g1887538374f044e22f9742650d14ae69" args="(dJointID, int anum)" -->
1295<div class="memitem">
1296<div class="memproto">
1297 <table class="memname">
1298 <tr>
1299 <td class="memname">ODE_API int dJointGetAMotorAxisRel </td>
1300 <td>(</td>
1301 <td class="paramtype">dJointID&nbsp;</td>
1302 <td class="paramname">, </td>
1303 </tr>
1304 <tr>
1305 <td class="paramkey"></td>
1306 <td></td>
1307 <td class="paramtype">int&nbsp;</td>
1308 <td class="paramname"> <em>anum</em></td><td>&nbsp;</td>
1309 </tr>
1310 <tr>
1311 <td></td>
1312 <td>)</td>
1313 <td></td><td></td><td width="100%"></td>
1314 </tr>
1315 </table>
1316</div>
1317<div class="memdoc">
1318
1319<p>
1320Get axis.
1321<p>
1322<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>
1323For dAMotorEuler mode: <ul>
1324<li>Only axes 0 and 2 need to be set. Axis 1 will be determined automatically at each time step. </li>
1325<li>Axes 0 and 2 must be perpendicular to each other. </li>
1326<li>Axis 0 must be anchored to the first body, axis 2 must be anchored to the second body. </li>
1327</ul>
1328
1329</div>
1330</div><p>
1331<a class="anchor" name="gf2430c2062414bc28660bdc06a0d72d5"></a><!-- doxytag: member="objects.h::dJointGetAMotorMode" ref="gf2430c2062414bc28660bdc06a0d72d5" args="(dJointID)" -->
1332<div class="memitem">
1333<div class="memproto">
1334 <table class="memname">
1335 <tr>
1336 <td class="memname">ODE_API int dJointGetAMotorMode </td>
1337 <td>(</td>
1338 <td class="paramtype">dJointID&nbsp;</td>
1339 <td class="paramname"> </td>
1340 <td>&nbsp;)&nbsp;</td>
1341 <td width="100%"></td>
1342 </tr>
1343 </table>
1344</div>
1345<div class="memdoc">
1346
1347<p>
1348Get the angular motor mode.
1349<p>
1350<dl compact><dt><b>Parameters:</b></dt><dd>
1351 <table border="0" cellspacing="2" cellpadding="0">
1352 <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>must be one of the following constants: <ul>
1353<li>dAMotorUser The AMotor axes and joint angle settings are entirely controlled by the user. This is the default mode. </li>
1354<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>
1355</ul>
1356</td></tr>
1357 </table>
1358</dl>
1359
1360</div>
1361</div><p>
1362<a class="anchor" name="g35f0392af69ece0d0c3ef7ed88b532bf"></a><!-- doxytag: member="objects.h::dJointGetAMotorNumAxes" ref="g35f0392af69ece0d0c3ef7ed88b532bf" args="(dJointID)" -->
1363<div class="memitem">
1364<div class="memproto">
1365 <table class="memname">
1366 <tr>
1367 <td class="memname">ODE_API int dJointGetAMotorNumAxes </td>
1368 <td>(</td>
1369 <td class="paramtype">dJointID&nbsp;</td>
1370 <td class="paramname"> </td>
1371 <td>&nbsp;)&nbsp;</td>
1372 <td width="100%"></td>
1373 </tr>
1374 </table>
1375</div>
1376<div class="memdoc">
1377
1378<p>
1379Get the number of angular axes that will be controlled by the AMotor.
1380<p>
1381<dl compact><dt><b>Parameters:</b></dt><dd>
1382 <table border="0" cellspacing="2" cellpadding="0">
1383 <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>
1384 </table>
1385</dl>
1386
1387</div>
1388</div><p>
1389<a class="anchor" name="gff13cbb464f1bfdc225fc9202c2c54c3"></a><!-- doxytag: member="objects.h::dJointGetBody" ref="gff13cbb464f1bfdc225fc9202c2c54c3" args="(dJointID, int index)" -->
1390<div class="memitem">
1391<div class="memproto">
1392 <table class="memname">
1393 <tr>
1394 <td class="memname">ODE_API dBodyID dJointGetBody </td>
1395 <td>(</td>
1396 <td class="paramtype">dJointID&nbsp;</td>
1397 <td class="paramname">, </td>
1398 </tr>
1399 <tr>
1400 <td class="paramkey"></td>
1401 <td></td>
1402 <td class="paramtype">int&nbsp;</td>
1403 <td class="paramname"> <em>index</em></td><td>&nbsp;</td>
1404 </tr>
1405 <tr>
1406 <td></td>
1407 <td>)</td>
1408 <td></td><td></td><td width="100%"></td>
1409 </tr>
1410 </table>
1411</div>
1412<div class="memdoc">
1413
1414<p>
1415Return the bodies that this joint connects.
1416<p>
1417<dl compact><dt><b>Parameters:</b></dt><dd>
1418 <table border="0" cellspacing="2" cellpadding="0">
1419 <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>return the first (0) or second (1) body. </td></tr>
1420 </table>
1421</dl>
1422<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>
1423
1424</div>
1425</div><p>
1426<a class="anchor" name="g879999d011f82c73acf94029132cc198"></a><!-- doxytag: member="objects.h::dJointGetHinge2Anchor" ref="g879999d011f82c73acf94029132cc198" args="(dJointID, dVector3 result)" -->
1427<div class="memitem">
1428<div class="memproto">
1429 <table class="memname">
1430 <tr>
1431 <td class="memname">ODE_API void dJointGetHinge2Anchor </td>
1432 <td>(</td>
1433 <td class="paramtype">dJointID&nbsp;</td>
1434 <td class="paramname">, </td>
1435 </tr>
1436 <tr>
1437 <td class="paramkey"></td>
1438 <td></td>
1439 <td class="paramtype">dVector3&nbsp;</td>
1440 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1441 </tr>
1442 <tr>
1443 <td></td>
1444 <td>)</td>
1445 <td></td><td></td><td width="100%"></td>
1446 </tr>
1447 </table>
1448</div>
1449<div class="memdoc">
1450
1451<p>
1452Get the joint anchor point, in world coordinates.
1453<p>
1454<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>
1455
1456</div>
1457</div><p>
1458<a class="anchor" name="g1d1c4f9b10c550f6fec550f9cc80c7ab"></a><!-- doxytag: member="objects.h::dJointGetHingeAnchor" ref="g1d1c4f9b10c550f6fec550f9cc80c7ab" args="(dJointID, dVector3 result)" -->
1459<div class="memitem">
1460<div class="memproto">
1461 <table class="memname">
1462 <tr>
1463 <td class="memname">ODE_API void dJointGetHingeAnchor </td>
1464 <td>(</td>
1465 <td class="paramtype">dJointID&nbsp;</td>
1466 <td class="paramname">, </td>
1467 </tr>
1468 <tr>
1469 <td class="paramkey"></td>
1470 <td></td>
1471 <td class="paramtype">dVector3&nbsp;</td>
1472 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1473 </tr>
1474 <tr>
1475 <td></td>
1476 <td>)</td>
1477 <td></td><td></td><td width="100%"></td>
1478 </tr>
1479 </table>
1480</div>
1481<div class="memdoc">
1482
1483<p>
1484Get the hinge anchor point, in world coordinates.
1485<p>
1486This returns the point on body 1. If the joint is perfectly satisfied, this will be the same as the point on body 2.
1487</div>
1488</div><p>
1489<a class="anchor" name="gfdc1d9c7bd8824ec3e79cc5aa67ddfa1"></a><!-- doxytag: member="objects.h::dJointGetHingeAnchor2" ref="gfdc1d9c7bd8824ec3e79cc5aa67ddfa1" args="(dJointID, dVector3 result)" -->
1490<div class="memitem">
1491<div class="memproto">
1492 <table class="memname">
1493 <tr>
1494 <td class="memname">ODE_API void dJointGetHingeAnchor2 </td>
1495 <td>(</td>
1496 <td class="paramtype">dJointID&nbsp;</td>
1497 <td class="paramname">, </td>
1498 </tr>
1499 <tr>
1500 <td class="paramkey"></td>
1501 <td></td>
1502 <td class="paramtype">dVector3&nbsp;</td>
1503 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1504 </tr>
1505 <tr>
1506 <td></td>
1507 <td>)</td>
1508 <td></td><td></td><td width="100%"></td>
1509 </tr>
1510 </table>
1511</div>
1512<div class="memdoc">
1513
1514<p>
1515Get the joint anchor point, in world coordinates.
1516<p>
1517<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>
1518
1519</div>
1520</div><p>
1521<a class="anchor" name="g7ca6bdfe2b919b6bc2a27ba6f0e069f0"></a><!-- doxytag: member="objects.h::dJointGetHingeAngle" ref="g7ca6bdfe2b919b6bc2a27ba6f0e069f0" args="(dJointID)" -->
1522<div class="memitem">
1523<div class="memproto">
1524 <table class="memname">
1525 <tr>
1526 <td class="memname">ODE_API dReal dJointGetHingeAngle </td>
1527 <td>(</td>
1528 <td class="paramtype">dJointID&nbsp;</td>
1529 <td class="paramname"> </td>
1530 <td>&nbsp;)&nbsp;</td>
1531 <td width="100%"></td>
1532 </tr>
1533 </table>
1534</div>
1535<div class="memdoc">
1536
1537<p>
1538Get the hinge angle.
1539<p>
1540The 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.
1541</div>
1542</div><p>
1543<a class="anchor" name="g88b176c70948c3f96e5c9173904b04fe"></a><!-- doxytag: member="objects.h::dJointGetPRAnchor" ref="g88b176c70948c3f96e5c9173904b04fe" args="(dJointID, dVector3 result)" -->
1544<div class="memitem">
1545<div class="memproto">
1546 <table class="memname">
1547 <tr>
1548 <td class="memname">ODE_API void dJointGetPRAnchor </td>
1549 <td>(</td>
1550 <td class="paramtype">dJointID&nbsp;</td>
1551 <td class="paramname">, </td>
1552 </tr>
1553 <tr>
1554 <td class="paramkey"></td>
1555 <td></td>
1556 <td class="paramtype">dVector3&nbsp;</td>
1557 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1558 </tr>
1559 <tr>
1560 <td></td>
1561 <td>)</td>
1562 <td></td><td></td><td width="100%"></td>
1563 </tr>
1564 </table>
1565</div>
1566<div class="memdoc">
1567
1568<p>
1569Get the joint anchor point, in world coordinates.
1570<p>
1571<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>
1572
1573</div>
1574</div><p>
1575<a class="anchor" name="gd8b95871e93525f44badcdaf8e521da7"></a><!-- doxytag: member="objects.h::dJointGetPRPosition" ref="gd8b95871e93525f44badcdaf8e521da7" args="(dJointID)" -->
1576<div class="memitem">
1577<div class="memproto">
1578 <table class="memname">
1579 <tr>
1580 <td class="memname">ODE_API dReal dJointGetPRPosition </td>
1581 <td>(</td>
1582 <td class="paramtype">dJointID&nbsp;</td>
1583 <td class="paramname"> </td>
1584 <td>&nbsp;)&nbsp;</td>
1585 <td width="100%"></td>
1586 </tr>
1587 </table>
1588</div>
1589<div class="memdoc">
1590
1591<p>
1592Get the PR linear position (i.e. the prismatic's extension).
1593<p>
1594When the axis is set, the current position of the attached bodies is examined and that position will be the zero position.<p>
1595The position is the "oriented" length between the position = (Prismatic axis) dot_product [(body1 + offset) - (body2 + anchor2)]
1596</div>
1597</div><p>
1598<a class="anchor" name="g7f35449914cbc4a86b845dcd85a617c0"></a><!-- doxytag: member="objects.h::dJointGetSliderPosition" ref="g7f35449914cbc4a86b845dcd85a617c0" args="(dJointID)" -->
1599<div class="memitem">
1600<div class="memproto">
1601 <table class="memname">
1602 <tr>
1603 <td class="memname">ODE_API dReal dJointGetSliderPosition </td>
1604 <td>(</td>
1605 <td class="paramtype">dJointID&nbsp;</td>
1606 <td class="paramname"> </td>
1607 <td>&nbsp;)&nbsp;</td>
1608 <td width="100%"></td>
1609 </tr>
1610 </table>
1611</div>
1612<div class="memdoc">
1613
1614<p>
1615Get the slider linear position (i.e. the slider's extension).
1616<p>
1617When the axis is set, the current position of the attached bodies is examined and that position will be the zero position.
1618</div>
1619</div><p>
1620<a class="anchor" name="g6f12f69d9b1a457428a28c2f77148174"></a><!-- doxytag: member="objects.h::dJointGetType" ref="g6f12f69d9b1a457428a28c2f77148174" args="(dJointID)" -->
1621<div class="memitem">
1622<div class="memproto">
1623 <table class="memname">
1624 <tr>
1625 <td class="memname">ODE_API int dJointGetType </td>
1626 <td>(</td>
1627 <td class="paramtype">dJointID&nbsp;</td>
1628 <td class="paramname"> </td>
1629 <td>&nbsp;)&nbsp;</td>
1630 <td width="100%"></td>
1631 </tr>
1632 </table>
1633</div>
1634<div class="memdoc">
1635
1636<p>
1637Get the type of the joint.
1638<p>
1639<dl class="return" compact><dt><b>Returns:</b></dt><dd>the type, being one of these: <ul>
1640<li>JointTypeBall </li>
1641<li>JointTypeHinge </li>
1642<li>JointTypeSlider </li>
1643<li>JointTypeContact </li>
1644<li>JointTypeUniversal </li>
1645<li>JointTypeHinge2 </li>
1646<li>JointTypeFixed </li>
1647<li>JointTypeAMotor </li>
1648<li>JointTypeLMotor </li>
1649</ul>
1650</dd></dl>
1651
1652</div>
1653</div><p>
1654<a class="anchor" name="ga768432c561cb76ba2490913f42d1aaf"></a><!-- doxytag: member="objects.h::dJointGetUniversalAnchor" ref="ga768432c561cb76ba2490913f42d1aaf" args="(dJointID, dVector3 result)" -->
1655<div class="memitem">
1656<div class="memproto">
1657 <table class="memname">
1658 <tr>
1659 <td class="memname">ODE_API void dJointGetUniversalAnchor </td>
1660 <td>(</td>
1661 <td class="paramtype">dJointID&nbsp;</td>
1662 <td class="paramname">, </td>
1663 </tr>
1664 <tr>
1665 <td class="paramkey"></td>
1666 <td></td>
1667 <td class="paramtype">dVector3&nbsp;</td>
1668 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1669 </tr>
1670 <tr>
1671 <td></td>
1672 <td>)</td>
1673 <td></td><td></td><td width="100%"></td>
1674 </tr>
1675 </table>
1676</div>
1677<div class="memdoc">
1678
1679<p>
1680Get the joint anchor point, in world coordinates.
1681<p>
1682<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>
1683
1684</div>
1685</div><p>
1686<a class="anchor" name="g00d5018903a90d75c324c4f870b0e7ea"></a><!-- doxytag: member="objects.h::dJointGetUniversalAnchor2" ref="g00d5018903a90d75c324c4f870b0e7ea" args="(dJointID, dVector3 result)" -->
1687<div class="memitem">
1688<div class="memproto">
1689 <table class="memname">
1690 <tr>
1691 <td class="memname">ODE_API void dJointGetUniversalAnchor2 </td>
1692 <td>(</td>
1693 <td class="paramtype">dJointID&nbsp;</td>
1694 <td class="paramname">, </td>
1695 </tr>
1696 <tr>
1697 <td class="paramkey"></td>
1698 <td></td>
1699 <td class="paramtype">dVector3&nbsp;</td>
1700 <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
1701 </tr>
1702 <tr>
1703 <td></td>
1704 <td>)</td>
1705 <td></td><td></td><td width="100%"></td>
1706 </tr>
1707 </table>
1708</div>
1709<div class="memdoc">
1710
1711<p>
1712Get the joint anchor point, in world coordinates.
1713<p>
1714<dl class="return" compact><dt><b>Returns:</b></dt><dd>This returns the point on body 2. </dd></dl>
1715<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>
1716
1717</div>
1718</div><p>
1719<a class="anchor" name="g3c0fafbd1ccd8e450c01012ce600f6ab"></a><!-- doxytag: member="objects.h::dJointGetUniversalAngles" ref="g3c0fafbd1ccd8e450c01012ce600f6ab" args="(dJointID, dReal *angle1, dReal *angle2)" -->
1720<div class="memitem">
1721<div class="memproto">
1722 <table class="memname">
1723 <tr>
1724 <td class="memname">ODE_API void dJointGetUniversalAngles </td>
1725 <td>(</td>
1726 <td class="paramtype">dJointID&nbsp;</td>
1727 <td class="paramname">, </td>
1728 </tr>
1729 <tr>
1730 <td class="paramkey"></td>
1731 <td></td>
1732 <td class="paramtype">dReal *&nbsp;</td>
1733 <td class="paramname"> <em>angle1</em>, </td>
1734 </tr>
1735 <tr>
1736 <td class="paramkey"></td>
1737 <td></td>
1738 <td class="paramtype">dReal *&nbsp;</td>
1739 <td class="paramname"> <em>angle2</em></td><td>&nbsp;</td>
1740 </tr>
1741 <tr>
1742 <td></td>
1743 <td>)</td>
1744 <td></td><td></td><td width="100%"></td>
1745 </tr>
1746 </table>
1747</div>
1748<div class="memdoc">
1749
1750<p>
1751Get both angles at the same time.
1752<p>
1753<dl compact><dt><b>Parameters:</b></dt><dd>
1754 <table border="0" cellspacing="2" cellpadding="0">
1755 <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>
1756 <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>
1757 <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>
1758 </table>
1759</dl>
1760<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>
1761
1762</div>
1763</div><p>
1764<a class="anchor" name="gaaec687b184a1214133a41503e7c628f"></a><!-- doxytag: member="objects.h::dJointGroupCreate" ref="gaaec687b184a1214133a41503e7c628f" args="(int max_size)" -->
1765<div class="memitem">
1766<div class="memproto">
1767 <table class="memname">
1768 <tr>
1769 <td class="memname">ODE_API dJointGroupID dJointGroupCreate </td>
1770 <td>(</td>
1771 <td class="paramtype">int&nbsp;</td>
1772 <td class="paramname"> <em>max_size</em> </td>
1773 <td>&nbsp;)&nbsp;</td>
1774 <td width="100%"></td>
1775 </tr>
1776 </table>
1777</div>
1778<div class="memdoc">
1779
1780<p>
1781Create a joint group.
1782<p>
1783<dl compact><dt><b>Parameters:</b></dt><dd>
1784 <table border="0" cellspacing="2" cellpadding="0">
1785 <tr><td valign="top"></td><td valign="top"><em>max_size</em>&nbsp;</td><td>deprecated. Set to 0. </td></tr>
1786 </table>
1787</dl>
1788
1789</div>
1790</div><p>
1791<a class="anchor" name="g49e664ee9a8bd7bfe5e6932bf936bb8f"></a><!-- doxytag: member="objects.h::dJointGroupDestroy" ref="g49e664ee9a8bd7bfe5e6932bf936bb8f" args="(dJointGroupID)" -->
1792<div class="memitem">
1793<div class="memproto">
1794 <table class="memname">
1795 <tr>
1796 <td class="memname">ODE_API void dJointGroupDestroy </td>
1797 <td>(</td>
1798 <td class="paramtype">dJointGroupID&nbsp;</td>
1799 <td class="paramname"> </td>
1800 <td>&nbsp;)&nbsp;</td>
1801 <td width="100%"></td>
1802 </tr>
1803 </table>
1804</div>
1805<div class="memdoc">
1806
1807<p>
1808Destroy a joint group.
1809<p>
1810All joints in the joint group will be destroyed.
1811</div>
1812</div><p>
1813<a class="anchor" name="g6e055bac8a0a3261bda3b6d07499c4ea"></a><!-- doxytag: member="objects.h::dJointGroupEmpty" ref="g6e055bac8a0a3261bda3b6d07499c4ea" args="(dJointGroupID)" -->
1814<div class="memitem">
1815<div class="memproto">
1816 <table class="memname">
1817 <tr>
1818 <td class="memname">ODE_API void dJointGroupEmpty </td>
1819 <td>(</td>
1820 <td class="paramtype">dJointGroupID&nbsp;</td>
1821 <td class="paramname"> </td>
1822 <td>&nbsp;)&nbsp;</td>
1823 <td width="100%"></td>
1824 </tr>
1825 </table>
1826</div>
1827<div class="memdoc">
1828
1829<p>
1830Empty a joint group.
1831<p>
1832All joints in the joint group will be destroyed, but the joint group itself will not be destroyed.
1833</div>
1834</div><p>
1835<a class="anchor" name="g17b2089e6512e22d71340befb40100d2"></a><!-- doxytag: member="objects.h::dJointSetAMotorAngle" ref="g17b2089e6512e22d71340befb40100d2" args="(dJointID, int anum, dReal angle)" -->
1836<div class="memitem">
1837<div class="memproto">
1838 <table class="memname">
1839 <tr>
1840 <td class="memname">ODE_API void dJointSetAMotorAngle </td>
1841 <td>(</td>
1842 <td class="paramtype">dJointID&nbsp;</td>
1843 <td class="paramname">, </td>
1844 </tr>
1845 <tr>
1846 <td class="paramkey"></td>
1847 <td></td>
1848 <td class="paramtype">int&nbsp;</td>
1849 <td class="paramname"> <em>anum</em>, </td>
1850 </tr>
1851 <tr>
1852 <td class="paramkey"></td>
1853 <td></td>
1854 <td class="paramtype">dReal&nbsp;</td>
1855 <td class="paramname"> <em>angle</em></td><td>&nbsp;</td>
1856 </tr>
1857 <tr>
1858 <td></td>
1859 <td>)</td>
1860 <td></td><td></td><td width="100%"></td>
1861 </tr>
1862 </table>
1863</div>
1864<div class="memdoc">
1865
1866<p>
1867Tell the AMotor what the current angle is along axis anum.
1868<p>
1869This 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.
1870</div>
1871</div><p>
1872<a class="anchor" name="g1406f976045a1b7edffbb46bf626d04f"></a><!-- doxytag: member="objects.h::dJointSetAMotorNumAxes" ref="g1406f976045a1b7edffbb46bf626d04f" args="(dJointID, int num)" -->
1873<div class="memitem">
1874<div class="memproto">
1875 <table class="memname">
1876 <tr>
1877 <td class="memname">ODE_API void dJointSetAMotorNumAxes </td>
1878 <td>(</td>
1879 <td class="paramtype">dJointID&nbsp;</td>
1880 <td class="paramname">, </td>
1881 </tr>
1882 <tr>
1883 <td class="paramkey"></td>
1884 <td></td>
1885 <td class="paramtype">int&nbsp;</td>
1886 <td class="paramname"> <em>num</em></td><td>&nbsp;</td>
1887 </tr>
1888 <tr>
1889 <td></td>
1890 <td>)</td>
1891 <td></td><td></td><td width="100%"></td>
1892 </tr>
1893 </table>
1894</div>
1895<div class="memdoc">
1896
1897<p>
1898set the nr of axes
1899<p>
1900<dl compact><dt><b>Parameters:</b></dt><dd>
1901 <table border="0" cellspacing="2" cellpadding="0">
1902 <tr><td valign="top"></td><td valign="top"><em>num</em>&nbsp;</td><td>0..3 </td></tr>
1903 </table>
1904</dl>
1905
1906</div>
1907</div><p>
1908<a class="anchor" name="g058c33a3da1ff935a1125034f779dc4a"></a><!-- doxytag: member="objects.h::dJointSetBallAnchor" ref="g058c33a3da1ff935a1125034f779dc4a" args="(dJointID, dReal x, dReal y, dReal z)" -->
1909<div class="memitem">
1910<div class="memproto">
1911 <table class="memname">
1912 <tr>
1913 <td class="memname">ODE_API void dJointSetBallAnchor </td>
1914 <td>(</td>
1915 <td class="paramtype">dJointID&nbsp;</td>
1916 <td class="paramname">, </td>
1917 </tr>
1918 <tr>
1919 <td class="paramkey"></td>
1920 <td></td>
1921 <td class="paramtype">dReal&nbsp;</td>
1922 <td class="paramname"> <em>x</em>, </td>
1923 </tr>
1924 <tr>
1925 <td class="paramkey"></td>
1926 <td></td>
1927 <td class="paramtype">dReal&nbsp;</td>
1928 <td class="paramname"> <em>y</em>, </td>
1929 </tr>
1930 <tr>
1931 <td class="paramkey"></td>
1932 <td></td>
1933 <td class="paramtype">dReal&nbsp;</td>
1934 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
1935 </tr>
1936 <tr>
1937 <td></td>
1938 <td>)</td>
1939 <td></td><td></td><td width="100%"></td>
1940 </tr>
1941 </table>
1942</div>
1943<div class="memdoc">
1944
1945<p>
1946Set the joint anchor point.
1947<p>
1948The joint will try to keep this point on each body together. The input is specified in world coordinates.
1949</div>
1950</div><p>
1951<a class="anchor" name="g87ddb9beb95e9383a4280cb8a4186f01"></a><!-- doxytag: member="objects.h::dJointSetFeedback" ref="g87ddb9beb95e9383a4280cb8a4186f01" args="(dJointID, dJointFeedback *)" -->
1952<div class="memitem">
1953<div class="memproto">
1954 <table class="memname">
1955 <tr>
1956 <td class="memname">ODE_API void dJointSetFeedback </td>
1957 <td>(</td>
1958 <td class="paramtype">dJointID&nbsp;</td>
1959 <td class="paramname">, </td>
1960 </tr>
1961 <tr>
1962 <td class="paramkey"></td>
1963 <td></td>
1964 <td class="paramtype">dJointFeedback *&nbsp;</td>
1965 <td class="paramname"></td><td>&nbsp;</td>
1966 </tr>
1967 <tr>
1968 <td></td>
1969 <td>)</td>
1970 <td></td><td></td><td width="100%"></td>
1971 </tr>
1972 </table>
1973</div>
1974<div class="memdoc">
1975
1976<p>
1977Sets the datastructure that is to receive the feedback.
1978<p>
1979The feedback can be used by the user, so that it is known how much force an individual joint exerts.
1980</div>
1981</div><p>
1982<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)" -->
1983<div class="memitem">
1984<div class="memproto">
1985 <table class="memname">
1986 <tr>
1987 <td class="memname">ODE_API void dJointSetLMotorAxis </td>
1988 <td>(</td>
1989 <td class="paramtype">dJointID&nbsp;</td>
1990 <td class="paramname">, </td>
1991 </tr>
1992 <tr>
1993 <td class="paramkey"></td>
1994 <td></td>
1995 <td class="paramtype">int&nbsp;</td>
1996 <td class="paramname"> <em>anum</em>, </td>
1997 </tr>
1998 <tr>
1999 <td class="paramkey"></td>
2000 <td></td>
2001 <td class="paramtype">int&nbsp;</td>
2002 <td class="paramname"> <em>rel</em>, </td>
2003 </tr>
2004 <tr>
2005 <td class="paramkey"></td>
2006 <td></td>
2007 <td class="paramtype">dReal&nbsp;</td>
2008 <td class="paramname"> <em>x</em>, </td>
2009 </tr>
2010 <tr>
2011 <td class="paramkey"></td>
2012 <td></td>
2013 <td class="paramtype">dReal&nbsp;</td>
2014 <td class="paramname"> <em>y</em>, </td>
2015 </tr>
2016 <tr>
2017 <td class="paramkey"></td>
2018 <td></td>
2019 <td class="paramtype">dReal&nbsp;</td>
2020 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
2021 </tr>
2022 <tr>
2023 <td></td>
2024 <td>)</td>
2025 <td></td><td></td><td width="100%"></td>
2026 </tr>
2027 </table>
2028</div>
2029<div class="memdoc">
2030
2031<p>
2032Set the AMotor axes.
2033<p>
2034<dl compact><dt><b>Parameters:</b></dt><dd>
2035 <table border="0" cellspacing="2" cellpadding="0">
2036 <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>
2037 <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>
2038<li>0: The axis is anchored to the global frame. </li>
2039<li>1: The axis is anchored to the first body. </li>
2040<li>2: The axis is anchored to the second body. </li>
2041</ul>
2042</td></tr>
2043 </table>
2044</dl>
2045<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>
2046
2047</div>
2048</div><p>
2049<a class="anchor" name="gcbfb4014567d69010aba3024d9b7bccd"></a><!-- doxytag: member="objects.h::dJointSetLMotorNumAxes" ref="gcbfb4014567d69010aba3024d9b7bccd" args="(dJointID, int num)" -->
2050<div class="memitem">
2051<div class="memproto">
2052 <table class="memname">
2053 <tr>
2054 <td class="memname">ODE_API void dJointSetLMotorNumAxes </td>
2055 <td>(</td>
2056 <td class="paramtype">dJointID&nbsp;</td>
2057 <td class="paramname">, </td>
2058 </tr>
2059 <tr>
2060 <td class="paramkey"></td>
2061 <td></td>
2062 <td class="paramtype">int&nbsp;</td>
2063 <td class="paramname"> <em>num</em></td><td>&nbsp;</td>
2064 </tr>
2065 <tr>
2066 <td></td>
2067 <td>)</td>
2068 <td></td><td></td><td width="100%"></td>
2069 </tr>
2070 </table>
2071</div>
2072<div class="memdoc">
2073
2074<p>
2075Set the number of axes that will be controlled by the LMotor.
2076<p>
2077<dl compact><dt><b>Parameters:</b></dt><dd>
2078 <table border="0" cellspacing="2" cellpadding="0">
2079 <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>
2080 </table>
2081</dl>
2082
2083</div>
2084</div><p>
2085<a class="anchor" name="gc08a28659605f17307d563f45db0824b"></a><!-- doxytag: member="objects.h::dJointSetPRParam" ref="gc08a28659605f17307d563f45db0824b" args="(dJointID, int parameter, dReal value)" -->
2086<div class="memitem">
2087<div class="memproto">
2088 <table class="memname">
2089 <tr>
2090 <td class="memname">ODE_API void dJointSetPRParam </td>
2091 <td>(</td>
2092 <td class="paramtype">dJointID&nbsp;</td>
2093 <td class="paramname">, </td>
2094 </tr>
2095 <tr>
2096 <td class="paramkey"></td>
2097 <td></td>
2098 <td class="paramtype">int&nbsp;</td>
2099 <td class="paramname"> <em>parameter</em>, </td>
2100 </tr>
2101 <tr>
2102 <td class="paramkey"></td>
2103 <td></td>
2104 <td class="paramtype">dReal&nbsp;</td>
2105 <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
2106 </tr>
2107 <tr>
2108 <td></td>
2109 <td>)</td>
2110 <td></td><td></td><td width="100%"></td>
2111 </tr>
2112 </table>
2113</div>
2114<div class="memdoc">
2115
2116<p>
2117set joint parameter
2118<p>
2119<dl class="note" compact><dt><b>Note:</b></dt><dd>parameterX where X equal 2 refer to parameter for the rotoide articulation </dd></dl>
2120
2121</div>
2122</div><p>
2123<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
2124<a href="http://www.doxygen.org/index.html">
2125<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
2126</body>
2127</html>
diff --git a/libraries/ode-0.9/docs/group__world.html b/libraries/ode-0.9/docs/group__world.html
new file mode 100644
index 0000000..9b48f47
--- /dev/null
+++ b/libraries/ode-0.9/docs/group__world.html
@@ -0,0 +1,697 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: World</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>World</h1><table border="0" cellpadding="0" cellspacing="0">
17<tr><td></td></tr>
18<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
19<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dWorldID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g929067266d630fb745f752042d685fc7">dWorldCreate</a> (void)</td></tr>
20
21<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new, empty world and return its ID number. <a href="#g929067266d630fb745f752042d685fc7"></a><br></td></tr>
22<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g5a2e5b1d2d6a1376dca239b488e629f9">dWorldDestroy</a> (dWorldID world)</td></tr>
23
24<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a world and everything in it. <a href="#g5a2e5b1d2d6a1376dca239b488e629f9"></a><br></td></tr>
25<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#ga1b220b922215b335572c699cf8f8cad">dWorldSetGravity</a> (dWorldID, dReal x, dReal y, dReal z)</td></tr>
26
27<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the world's global gravity vector. <a href="#ga1b220b922215b335572c699cf8f8cad"></a><br></td></tr>
28<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge1a29b6a91cc1910a982c916ae4dee4a"></a><!-- doxytag: member="world::dWorldGetGravity" ref="ge1a29b6a91cc1910a982c916ae4dee4a" args="(dWorldID, dVector3 gravity)" -->
29ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#ge1a29b6a91cc1910a982c916ae4dee4a">dWorldGetGravity</a> (dWorldID, dVector3 gravity)</td></tr>
30
31<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the gravity vector for a given world. <br></td></tr>
32<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#gacd0778bdaa939d22f093fc2d5d5f868">dWorldSetERP</a> (dWorldID, dReal erp)</td></tr>
33
34<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the global ERP value, that controls how much error correction is performed in each time step. <a href="#gacd0778bdaa939d22f093fc2d5d5f868"></a><br></td></tr>
35<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g033cd87a0b22889a94d4d84149bda5a0">dWorldGetERP</a> (dWorldID)</td></tr>
36
37<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the error reduction parameter. <a href="#g033cd87a0b22889a94d4d84149bda5a0"></a><br></td></tr>
38<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g8b7913fe46d0afc468418c655da79233">dWorldSetCFM</a> (dWorldID, dReal cfm)</td></tr>
39
40<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the global CFM (constraint force mixing) value. <a href="#g8b7913fe46d0afc468418c655da79233"></a><br></td></tr>
41<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#gc7a431f2b3fc6f887fe91ad676828ba3">dWorldGetCFM</a> (dWorldID)</td></tr>
42
43<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the constraint force mixing value. <a href="#gc7a431f2b3fc6f887fe91ad676828ba3"></a><br></td></tr>
44<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g8f547ebeb3deed27e0f7b8143d475f50">dWorldStep</a> (dWorldID, dReal stepsize)</td></tr>
45
46<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Step the world. <a href="#g8f547ebeb3deed27e0f7b8143d475f50"></a><br></td></tr>
47<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#ga9c564b4dd7d8fa4c6f4b32dd95fc33a">dWorldImpulseToForce</a> (dWorldID, dReal stepsize, dReal ix, dReal iy, dReal iz, dVector3 force)</td></tr>
48
49<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts an impulse to a force. <a href="#ga9c564b4dd7d8fa4c6f4b32dd95fc33a"></a><br></td></tr>
50<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#gc24fadc1d42b65ca3563e40bc1f0fec1">dWorldQuickStep</a> (dWorldID w, dReal stepsize)</td></tr>
51
52<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Step the world. <a href="#gc24fadc1d42b65ca3563e40bc1f0fec1"></a><br></td></tr>
53<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g9d852689d87d28a3d4947eda59c5ba7e">dWorldSetQuickStepNumIterations</a> (dWorldID, int num)</td></tr>
54
55<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the number of iterations that the QuickStep method performs per step. <a href="#g9d852689d87d28a3d4947eda59c5ba7e"></a><br></td></tr>
56<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#ga51acfac06347fd27ff926d37672ce3c">dWorldGetQuickStepNumIterations</a> (dWorldID)</td></tr>
57
58<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of iterations that the QuickStep method performs per step. <a href="#ga51acfac06347fd27ff926d37672ce3c"></a><br></td></tr>
59<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#gf741ee61e3f9981ae102729f23aad535">dWorldSetQuickStepW</a> (dWorldID, dReal over_relaxation)</td></tr>
60
61<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the SOR over-relaxation parameter. <a href="#gf741ee61e3f9981ae102729f23aad535"></a><br></td></tr>
62<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#ga7fef06f7a8293f21778939dfea36951">dWorldGetQuickStepW</a> (dWorldID)</td></tr>
63
64<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the SOR over-relaxation parameter. <a href="#ga7fef06f7a8293f21778939dfea36951"></a><br></td></tr>
65<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g2cec4be3f40d49c5950ceac1a28440d8">dWorldSetContactMaxCorrectingVel</a> (dWorldID, dReal vel)</td></tr>
66
67<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the maximum correcting velocity that contacts are allowed to generate. <a href="#g2cec4be3f40d49c5950ceac1a28440d8"></a><br></td></tr>
68<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7673e6d0db3ddb319642caea7d14959d"></a><!-- doxytag: member="world::dWorldGetContactMaxCorrectingVel" ref="g7673e6d0db3ddb319642caea7d14959d" args="(dWorldID)" -->
69ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g7673e6d0db3ddb319642caea7d14959d">dWorldGetContactMaxCorrectingVel</a> (dWorldID)</td></tr>
70
71<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the maximum correcting velocity that contacts are allowed to generated. <br></td></tr>
72<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g8f6f964bc15b6cf0937d3214f6e3a1f1">dWorldSetContactSurfaceLayer</a> (dWorldID, dReal depth)</td></tr>
73
74<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the depth of the surface layer around all geometry objects. <a href="#g8f6f964bc15b6cf0937d3214f6e3a1f1"></a><br></td></tr>
75<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#g97e1c98f55d9b56d00e7838900ad5e58">dWorldGetContactSurfaceLayer</a> (dWorldID)</td></tr>
76
77<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the depth of the surface layer around all geometry objects. <a href="#g97e1c98f55d9b56d00e7838900ad5e58"></a><br></td></tr>
78<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__world.html#gefa68c714bb3c8f70503f101ea062c03">dWorldStepFast1</a> (dWorldID, dReal stepsize, int maxiterations)</td></tr>
79
80<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Step the world using the StepFast1 algorithm. <a href="#gefa68c714bb3c8f70503f101ea062c03"></a><br></td></tr>
81</table>
82<hr><a name="_details"></a><h2>Detailed Description</h2>
83The world object is a container for rigid bodies and joints. Objects in different worlds can not interact, for example rigid bodies from two different worlds can not collide.<p>
84All the objects in a world exist at the same point in time, thus one reason to use separate worlds is to simulate systems at different rates. Most applications will only need one world. <hr><h2>Function Documentation</h2>
85<a class="anchor" name="g929067266d630fb745f752042d685fc7"></a><!-- doxytag: member="objects.h::dWorldCreate" ref="g929067266d630fb745f752042d685fc7" args="(void)" -->
86<div class="memitem">
87<div class="memproto">
88 <table class="memname">
89 <tr>
90 <td class="memname">ODE_API dWorldID dWorldCreate </td>
91 <td>(</td>
92 <td class="paramtype">void&nbsp;</td>
93 <td class="paramname"> </td>
94 <td>&nbsp;)&nbsp;</td>
95 <td width="100%"></td>
96 </tr>
97 </table>
98</div>
99<div class="memdoc">
100
101<p>
102Create a new, empty world and return its ID number.
103<p>
104<dl class="return" compact><dt><b>Returns:</b></dt><dd>an identifier </dd></dl>
105
106</div>
107</div><p>
108<a class="anchor" name="g5a2e5b1d2d6a1376dca239b488e629f9"></a><!-- doxytag: member="objects.h::dWorldDestroy" ref="g5a2e5b1d2d6a1376dca239b488e629f9" args="(dWorldID world)" -->
109<div class="memitem">
110<div class="memproto">
111 <table class="memname">
112 <tr>
113 <td class="memname">ODE_API void dWorldDestroy </td>
114 <td>(</td>
115 <td class="paramtype">dWorldID&nbsp;</td>
116 <td class="paramname"> <em>world</em> </td>
117 <td>&nbsp;)&nbsp;</td>
118 <td width="100%"></td>
119 </tr>
120 </table>
121</div>
122<div class="memdoc">
123
124<p>
125Destroy a world and everything in it.
126<p>
127This includes all bodies, and all joints that are not part of a joint group. Joints that are part of a joint group will be deactivated, and can be destroyed by calling, for example, <a class="el" href="group__joints.html#g6e055bac8a0a3261bda3b6d07499c4ea" title="Empty a joint group.">dJointGroupEmpty()</a>.<p>
128<dl compact><dt><b>Parameters:</b></dt><dd>
129 <table border="0" cellspacing="2" cellpadding="0">
130 <tr><td valign="top"></td><td valign="top"><em>world</em>&nbsp;</td><td>the identifier for the world the be destroyed. </td></tr>
131 </table>
132</dl>
133
134</div>
135</div><p>
136<a class="anchor" name="gc7a431f2b3fc6f887fe91ad676828ba3"></a><!-- doxytag: member="objects.h::dWorldGetCFM" ref="gc7a431f2b3fc6f887fe91ad676828ba3" args="(dWorldID)" -->
137<div class="memitem">
138<div class="memproto">
139 <table class="memname">
140 <tr>
141 <td class="memname">ODE_API dReal dWorldGetCFM </td>
142 <td>(</td>
143 <td class="paramtype">dWorldID&nbsp;</td>
144 <td class="paramname"> </td>
145 <td>&nbsp;)&nbsp;</td>
146 <td width="100%"></td>
147 </tr>
148 </table>
149</div>
150<div class="memdoc">
151
152<p>
153Get the constraint force mixing value.
154<p>
155<dl class="return" compact><dt><b>Returns:</b></dt><dd>CFM value </dd></dl>
156
157</div>
158</div><p>
159<a class="anchor" name="g97e1c98f55d9b56d00e7838900ad5e58"></a><!-- doxytag: member="objects.h::dWorldGetContactSurfaceLayer" ref="g97e1c98f55d9b56d00e7838900ad5e58" args="(dWorldID)" -->
160<div class="memitem">
161<div class="memproto">
162 <table class="memname">
163 <tr>
164 <td class="memname">ODE_API dReal dWorldGetContactSurfaceLayer </td>
165 <td>(</td>
166 <td class="paramtype">dWorldID&nbsp;</td>
167 <td class="paramname"> </td>
168 <td>&nbsp;)&nbsp;</td>
169 <td width="100%"></td>
170 </tr>
171 </table>
172</div>
173<div class="memdoc">
174
175<p>
176Get the depth of the surface layer around all geometry objects.
177<p>
178<dl class="return" compact><dt><b>Returns:</b></dt><dd>the depth </dd></dl>
179
180</div>
181</div><p>
182<a class="anchor" name="g033cd87a0b22889a94d4d84149bda5a0"></a><!-- doxytag: member="objects.h::dWorldGetERP" ref="g033cd87a0b22889a94d4d84149bda5a0" args="(dWorldID)" -->
183<div class="memitem">
184<div class="memproto">
185 <table class="memname">
186 <tr>
187 <td class="memname">ODE_API dReal dWorldGetERP </td>
188 <td>(</td>
189 <td class="paramtype">dWorldID&nbsp;</td>
190 <td class="paramname"> </td>
191 <td>&nbsp;)&nbsp;</td>
192 <td width="100%"></td>
193 </tr>
194 </table>
195</div>
196<div class="memdoc">
197
198<p>
199Get the error reduction parameter.
200<p>
201<dl class="return" compact><dt><b>Returns:</b></dt><dd>ERP value </dd></dl>
202
203</div>
204</div><p>
205<a class="anchor" name="ga51acfac06347fd27ff926d37672ce3c"></a><!-- doxytag: member="objects.h::dWorldGetQuickStepNumIterations" ref="ga51acfac06347fd27ff926d37672ce3c" args="(dWorldID)" -->
206<div class="memitem">
207<div class="memproto">
208 <table class="memname">
209 <tr>
210 <td class="memname">ODE_API int dWorldGetQuickStepNumIterations </td>
211 <td>(</td>
212 <td class="paramtype">dWorldID&nbsp;</td>
213 <td class="paramname"> </td>
214 <td>&nbsp;)&nbsp;</td>
215 <td width="100%"></td>
216 </tr>
217 </table>
218</div>
219<div class="memdoc">
220
221<p>
222Get the number of iterations that the QuickStep method performs per step.
223<p>
224<dl class="return" compact><dt><b>Returns:</b></dt><dd>nr of iterations </dd></dl>
225
226</div>
227</div><p>
228<a class="anchor" name="ga7fef06f7a8293f21778939dfea36951"></a><!-- doxytag: member="objects.h::dWorldGetQuickStepW" ref="ga7fef06f7a8293f21778939dfea36951" args="(dWorldID)" -->
229<div class="memitem">
230<div class="memproto">
231 <table class="memname">
232 <tr>
233 <td class="memname">ODE_API dReal dWorldGetQuickStepW </td>
234 <td>(</td>
235 <td class="paramtype">dWorldID&nbsp;</td>
236 <td class="paramname"> </td>
237 <td>&nbsp;)&nbsp;</td>
238 <td width="100%"></td>
239 </tr>
240 </table>
241</div>
242<div class="memdoc">
243
244<p>
245Get the SOR over-relaxation parameter.
246<p>
247<dl class="return" compact><dt><b>Returns:</b></dt><dd>the over-relaxation setting </dd></dl>
248
249</div>
250</div><p>
251<a class="anchor" name="ga9c564b4dd7d8fa4c6f4b32dd95fc33a"></a><!-- doxytag: member="objects.h::dWorldImpulseToForce" ref="ga9c564b4dd7d8fa4c6f4b32dd95fc33a" args="(dWorldID, dReal stepsize, dReal ix, dReal iy, dReal iz, dVector3 force)" -->
252<div class="memitem">
253<div class="memproto">
254 <table class="memname">
255 <tr>
256 <td class="memname">ODE_API void dWorldImpulseToForce </td>
257 <td>(</td>
258 <td class="paramtype">dWorldID&nbsp;</td>
259 <td class="paramname">, </td>
260 </tr>
261 <tr>
262 <td class="paramkey"></td>
263 <td></td>
264 <td class="paramtype">dReal&nbsp;</td>
265 <td class="paramname"> <em>stepsize</em>, </td>
266 </tr>
267 <tr>
268 <td class="paramkey"></td>
269 <td></td>
270 <td class="paramtype">dReal&nbsp;</td>
271 <td class="paramname"> <em>ix</em>, </td>
272 </tr>
273 <tr>
274 <td class="paramkey"></td>
275 <td></td>
276 <td class="paramtype">dReal&nbsp;</td>
277 <td class="paramname"> <em>iy</em>, </td>
278 </tr>
279 <tr>
280 <td class="paramkey"></td>
281 <td></td>
282 <td class="paramtype">dReal&nbsp;</td>
283 <td class="paramname"> <em>iz</em>, </td>
284 </tr>
285 <tr>
286 <td class="paramkey"></td>
287 <td></td>
288 <td class="paramtype">dVector3&nbsp;</td>
289 <td class="paramname"> <em>force</em></td><td>&nbsp;</td>
290 </tr>
291 <tr>
292 <td></td>
293 <td>)</td>
294 <td></td><td></td><td width="100%"></td>
295 </tr>
296 </table>
297</div>
298<div class="memdoc">
299
300<p>
301Converts an impulse to a force.
302<p>
303<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>If you want to apply a linear or angular impulse to a rigid body, instead of a force or a torque, then you can use this function to convert the desired impulse into a force/torque vector before calling the BodyAdd... function. The current algorithm simply scales the impulse by 1/stepsize, where stepsize is the step size for the next step that will be taken. This function is given a dWorldID because, in the future, the force computation may depend on integrator parameters that are set as properties of the world. </dd></dl>
304
305</div>
306</div><p>
307<a class="anchor" name="gc24fadc1d42b65ca3563e40bc1f0fec1"></a><!-- doxytag: member="objects.h::dWorldQuickStep" ref="gc24fadc1d42b65ca3563e40bc1f0fec1" args="(dWorldID w, dReal stepsize)" -->
308<div class="memitem">
309<div class="memproto">
310 <table class="memname">
311 <tr>
312 <td class="memname">ODE_API void dWorldQuickStep </td>
313 <td>(</td>
314 <td class="paramtype">dWorldID&nbsp;</td>
315 <td class="paramname"> <em>w</em>, </td>
316 </tr>
317 <tr>
318 <td class="paramkey"></td>
319 <td></td>
320 <td class="paramtype">dReal&nbsp;</td>
321 <td class="paramname"> <em>stepsize</em></td><td>&nbsp;</td>
322 </tr>
323 <tr>
324 <td></td>
325 <td>)</td>
326 <td></td><td></td><td width="100%"></td>
327 </tr>
328 </table>
329</div>
330<div class="memdoc">
331
332<p>
333Step the world.
334<p>
335<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This uses an iterative method that takes time on the order of m*N and memory on the order of m, where m is the total number of constraint rows N is the number of iterations. For large systems this is a lot faster than <a class="el" href="group__world.html#g8f547ebeb3deed27e0f7b8143d475f50" title="Step the world.">dWorldStep()</a>, but it is less accurate. <p>
336QuickStep is great for stacks of objects especially when the auto-disable feature is used as well. However, it has poor accuracy for near-singular systems. Near-singular systems can occur when using high-friction contacts, motors, or certain articulated structures. For example, a robot with multiple legs sitting on the ground may be near-singular. <p>
337There are ways to help overcome QuickStep's inaccuracy problems: <ul>
338<li>Increase CFM. </li>
339<li>Reduce the number of contacts in your system (e.g. use the minimum number of contacts for the feet of a robot or creature). </li>
340<li>Don't use excessive friction in the contacts. </li>
341<li>Use contact slip if appropriate </li>
342<li>Avoid kinematic loops (however, kinematic loops are inevitable in legged creatures). </li>
343<li>Don't use excessive motor strength. force-based motors instead of velocity-based motors.</li>
344</ul>
345Increasing the number of QuickStep iterations may help a little bit, but it is not going to help much if your system is really near singular. </dd></dl>
346
347</div>
348</div><p>
349<a class="anchor" name="g8b7913fe46d0afc468418c655da79233"></a><!-- doxytag: member="objects.h::dWorldSetCFM" ref="g8b7913fe46d0afc468418c655da79233" args="(dWorldID, dReal cfm)" -->
350<div class="memitem">
351<div class="memproto">
352 <table class="memname">
353 <tr>
354 <td class="memname">ODE_API void dWorldSetCFM </td>
355 <td>(</td>
356 <td class="paramtype">dWorldID&nbsp;</td>
357 <td class="paramname">, </td>
358 </tr>
359 <tr>
360 <td class="paramkey"></td>
361 <td></td>
362 <td class="paramtype">dReal&nbsp;</td>
363 <td class="paramname"> <em>cfm</em></td><td>&nbsp;</td>
364 </tr>
365 <tr>
366 <td></td>
367 <td>)</td>
368 <td></td><td></td><td width="100%"></td>
369 </tr>
370 </table>
371</div>
372<div class="memdoc">
373
374<p>
375Set the global CFM (constraint force mixing) value.
376<p>
377<dl compact><dt><b>Parameters:</b></dt><dd>
378 <table border="0" cellspacing="2" cellpadding="0">
379 <tr><td valign="top"></td><td valign="top"><em>cfm</em>&nbsp;</td><td>Typical values are in the range {10^{-9}} -- 1. The default is 10^-5 if single precision is being used, or 10^-10 if double precision is being used. </td></tr>
380 </table>
381</dl>
382
383</div>
384</div><p>
385<a class="anchor" name="g2cec4be3f40d49c5950ceac1a28440d8"></a><!-- doxytag: member="objects.h::dWorldSetContactMaxCorrectingVel" ref="g2cec4be3f40d49c5950ceac1a28440d8" args="(dWorldID, dReal vel)" -->
386<div class="memitem">
387<div class="memproto">
388 <table class="memname">
389 <tr>
390 <td class="memname">ODE_API void dWorldSetContactMaxCorrectingVel </td>
391 <td>(</td>
392 <td class="paramtype">dWorldID&nbsp;</td>
393 <td class="paramname">, </td>
394 </tr>
395 <tr>
396 <td class="paramkey"></td>
397 <td></td>
398 <td class="paramtype">dReal&nbsp;</td>
399 <td class="paramname"> <em>vel</em></td><td>&nbsp;</td>
400 </tr>
401 <tr>
402 <td></td>
403 <td>)</td>
404 <td></td><td></td><td width="100%"></td>
405 </tr>
406 </table>
407</div>
408<div class="memdoc">
409
410<p>
411Set the maximum correcting velocity that contacts are allowed to generate.
412<p>
413<dl compact><dt><b>Parameters:</b></dt><dd>
414 <table border="0" cellspacing="2" cellpadding="0">
415 <tr><td valign="top"></td><td valign="top"><em>vel</em>&nbsp;</td><td>The default value is infinity (i.e. no limit). </td></tr>
416 </table>
417</dl>
418<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Reducing this value can help prevent "popping" of deeply embedded objects. </dd></dl>
419
420</div>
421</div><p>
422<a class="anchor" name="g8f6f964bc15b6cf0937d3214f6e3a1f1"></a><!-- doxytag: member="objects.h::dWorldSetContactSurfaceLayer" ref="g8f6f964bc15b6cf0937d3214f6e3a1f1" args="(dWorldID, dReal depth)" -->
423<div class="memitem">
424<div class="memproto">
425 <table class="memname">
426 <tr>
427 <td class="memname">ODE_API void dWorldSetContactSurfaceLayer </td>
428 <td>(</td>
429 <td class="paramtype">dWorldID&nbsp;</td>
430 <td class="paramname">, </td>
431 </tr>
432 <tr>
433 <td class="paramkey"></td>
434 <td></td>
435 <td class="paramtype">dReal&nbsp;</td>
436 <td class="paramname"> <em>depth</em></td><td>&nbsp;</td>
437 </tr>
438 <tr>
439 <td></td>
440 <td>)</td>
441 <td></td><td></td><td width="100%"></td>
442 </tr>
443 </table>
444</div>
445<div class="memdoc">
446
447<p>
448Set the depth of the surface layer around all geometry objects.
449<p>
450<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Contacts are allowed to sink into the surface layer up to the given depth before coming to rest. </dd></dl>
451<dl compact><dt><b>Parameters:</b></dt><dd>
452 <table border="0" cellspacing="2" cellpadding="0">
453 <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>The default value is zero. </td></tr>
454 </table>
455</dl>
456<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Increasing this to some small value (e.g. 0.001) can help prevent jittering problems due to contacts being repeatedly made and broken. </dd></dl>
457
458</div>
459</div><p>
460<a class="anchor" name="gacd0778bdaa939d22f093fc2d5d5f868"></a><!-- doxytag: member="objects.h::dWorldSetERP" ref="gacd0778bdaa939d22f093fc2d5d5f868" args="(dWorldID, dReal erp)" -->
461<div class="memitem">
462<div class="memproto">
463 <table class="memname">
464 <tr>
465 <td class="memname">ODE_API void dWorldSetERP </td>
466 <td>(</td>
467 <td class="paramtype">dWorldID&nbsp;</td>
468 <td class="paramname">, </td>
469 </tr>
470 <tr>
471 <td class="paramkey"></td>
472 <td></td>
473 <td class="paramtype">dReal&nbsp;</td>
474 <td class="paramname"> <em>erp</em></td><td>&nbsp;</td>
475 </tr>
476 <tr>
477 <td></td>
478 <td>)</td>
479 <td></td><td></td><td width="100%"></td>
480 </tr>
481 </table>
482</div>
483<div class="memdoc">
484
485<p>
486Set the global ERP value, that controls how much error correction is performed in each time step.
487<p>
488<dl compact><dt><b>Parameters:</b></dt><dd>
489 <table border="0" cellspacing="2" cellpadding="0">
490 <tr><td valign="top"></td><td valign="top"><em>dWorldID</em>&nbsp;</td><td>the identifier of the world. </td></tr>
491 <tr><td valign="top"></td><td valign="top"><em>erp</em>&nbsp;</td><td>Typical values are in the range 0.1--0.8. The default is 0.2. </td></tr>
492 </table>
493</dl>
494
495</div>
496</div><p>
497<a class="anchor" name="ga1b220b922215b335572c699cf8f8cad"></a><!-- doxytag: member="objects.h::dWorldSetGravity" ref="ga1b220b922215b335572c699cf8f8cad" args="(dWorldID, dReal x, dReal y, dReal z)" -->
498<div class="memitem">
499<div class="memproto">
500 <table class="memname">
501 <tr>
502 <td class="memname">ODE_API void dWorldSetGravity </td>
503 <td>(</td>
504 <td class="paramtype">dWorldID&nbsp;</td>
505 <td class="paramname">, </td>
506 </tr>
507 <tr>
508 <td class="paramkey"></td>
509 <td></td>
510 <td class="paramtype">dReal&nbsp;</td>
511 <td class="paramname"> <em>x</em>, </td>
512 </tr>
513 <tr>
514 <td class="paramkey"></td>
515 <td></td>
516 <td class="paramtype">dReal&nbsp;</td>
517 <td class="paramname"> <em>y</em>, </td>
518 </tr>
519 <tr>
520 <td class="paramkey"></td>
521 <td></td>
522 <td class="paramtype">dReal&nbsp;</td>
523 <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
524 </tr>
525 <tr>
526 <td></td>
527 <td>)</td>
528 <td></td><td></td><td width="100%"></td>
529 </tr>
530 </table>
531</div>
532<div class="memdoc">
533
534<p>
535Set the world's global gravity vector.
536<p>
537The units are m/s^2, so Earth's gravity vector would be (0,0,-9.81), assuming that +z is up. The default is no gravity, i.e. (0,0,0).
538</div>
539</div><p>
540<a class="anchor" name="g9d852689d87d28a3d4947eda59c5ba7e"></a><!-- doxytag: member="objects.h::dWorldSetQuickStepNumIterations" ref="g9d852689d87d28a3d4947eda59c5ba7e" args="(dWorldID, int num)" -->
541<div class="memitem">
542<div class="memproto">
543 <table class="memname">
544 <tr>
545 <td class="memname">ODE_API void dWorldSetQuickStepNumIterations </td>
546 <td>(</td>
547 <td class="paramtype">dWorldID&nbsp;</td>
548 <td class="paramname">, </td>
549 </tr>
550 <tr>
551 <td class="paramkey"></td>
552 <td></td>
553 <td class="paramtype">int&nbsp;</td>
554 <td class="paramname"> <em>num</em></td><td>&nbsp;</td>
555 </tr>
556 <tr>
557 <td></td>
558 <td>)</td>
559 <td></td><td></td><td width="100%"></td>
560 </tr>
561 </table>
562</div>
563<div class="memdoc">
564
565<p>
566Set the number of iterations that the QuickStep method performs per step.
567<p>
568<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>More iterations will give a more accurate solution, but will take longer to compute. </dd></dl>
569<dl compact><dt><b>Parameters:</b></dt><dd>
570 <table border="0" cellspacing="2" cellpadding="0">
571 <tr><td valign="top"></td><td valign="top"><em>num</em>&nbsp;</td><td>The default is 20 iterations. </td></tr>
572 </table>
573</dl>
574
575</div>
576</div><p>
577<a class="anchor" name="gf741ee61e3f9981ae102729f23aad535"></a><!-- doxytag: member="objects.h::dWorldSetQuickStepW" ref="gf741ee61e3f9981ae102729f23aad535" args="(dWorldID, dReal over_relaxation)" -->
578<div class="memitem">
579<div class="memproto">
580 <table class="memname">
581 <tr>
582 <td class="memname">ODE_API void dWorldSetQuickStepW </td>
583 <td>(</td>
584 <td class="paramtype">dWorldID&nbsp;</td>
585 <td class="paramname">, </td>
586 </tr>
587 <tr>
588 <td class="paramkey"></td>
589 <td></td>
590 <td class="paramtype">dReal&nbsp;</td>
591 <td class="paramname"> <em>over_relaxation</em></td><td>&nbsp;</td>
592 </tr>
593 <tr>
594 <td></td>
595 <td>)</td>
596 <td></td><td></td><td width="100%"></td>
597 </tr>
598 </table>
599</div>
600<div class="memdoc">
601
602<p>
603Set the SOR over-relaxation parameter.
604<p>
605<dl compact><dt><b>Parameters:</b></dt><dd>
606 <table border="0" cellspacing="2" cellpadding="0">
607 <tr><td valign="top"></td><td valign="top"><em>over_relaxation</em>&nbsp;</td><td>value to use by SOR </td></tr>
608 </table>
609</dl>
610
611</div>
612</div><p>
613<a class="anchor" name="g8f547ebeb3deed27e0f7b8143d475f50"></a><!-- doxytag: member="objects.h::dWorldStep" ref="g8f547ebeb3deed27e0f7b8143d475f50" args="(dWorldID, dReal stepsize)" -->
614<div class="memitem">
615<div class="memproto">
616 <table class="memname">
617 <tr>
618 <td class="memname">ODE_API void dWorldStep </td>
619 <td>(</td>
620 <td class="paramtype">dWorldID&nbsp;</td>
621 <td class="paramname">, </td>
622 </tr>
623 <tr>
624 <td class="paramkey"></td>
625 <td></td>
626 <td class="paramtype">dReal&nbsp;</td>
627 <td class="paramname"> <em>stepsize</em></td><td>&nbsp;</td>
628 </tr>
629 <tr>
630 <td></td>
631 <td>)</td>
632 <td></td><td></td><td width="100%"></td>
633 </tr>
634 </table>
635</div>
636<div class="memdoc">
637
638<p>
639Step the world.
640<p>
641This uses a "big matrix" method that takes time on the order of m^3 and memory on the order of m^2, where m is the total number of constraint rows. For large systems this will use a lot of memory and can be very slow, but this is currently the most accurate method.<p>
642<dl compact><dt><b>Parameters:</b></dt><dd>
643 <table border="0" cellspacing="2" cellpadding="0">
644 <tr><td valign="top"></td><td valign="top"><em>stepsize</em>&nbsp;</td><td>The number of seconds that the simulation has to advance. </td></tr>
645 </table>
646</dl>
647
648</div>
649</div><p>
650<a class="anchor" name="gefa68c714bb3c8f70503f101ea062c03"></a><!-- doxytag: member="objects.h::dWorldStepFast1" ref="gefa68c714bb3c8f70503f101ea062c03" args="(dWorldID, dReal stepsize, int maxiterations)" -->
651<div class="memitem">
652<div class="memproto">
653 <table class="memname">
654 <tr>
655 <td class="memname">ODE_API void dWorldStepFast1 </td>
656 <td>(</td>
657 <td class="paramtype">dWorldID&nbsp;</td>
658 <td class="paramname">, </td>
659 </tr>
660 <tr>
661 <td class="paramkey"></td>
662 <td></td>
663 <td class="paramtype">dReal&nbsp;</td>
664 <td class="paramname"> <em>stepsize</em>, </td>
665 </tr>
666 <tr>
667 <td class="paramkey"></td>
668 <td></td>
669 <td class="paramtype">int&nbsp;</td>
670 <td class="paramname"> <em>maxiterations</em></td><td>&nbsp;</td>
671 </tr>
672 <tr>
673 <td></td>
674 <td>)</td>
675 <td></td><td></td><td width="100%"></td>
676 </tr>
677 </table>
678</div>
679<div class="memdoc">
680
681<p>
682Step the world using the StepFast1 algorithm.
683<p>
684<dl compact><dt><b>Parameters:</b></dt><dd>
685 <table border="0" cellspacing="2" cellpadding="0">
686 <tr><td valign="top"></td><td valign="top"><em>stepsize</em>&nbsp;</td><td>the nr of seconds to advance the simulation. </td></tr>
687 <tr><td valign="top"></td><td valign="top"><em>maxiterations</em>&nbsp;</td><td>The number of iterations to perform. </td></tr>
688 </table>
689</dl>
690
691</div>
692</div><p>
693<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
694<a href="http://www.doxygen.org/index.html">
695<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
696</body>
697</html>
diff --git a/libraries/ode-0.9/docs/index.html b/libraries/ode-0.9/docs/index.html
new file mode 100644
index 0000000..a2112e7
--- /dev/null
+++ b/libraries/ode-0.9/docs/index.html
@@ -0,0 +1,27 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Open Dynamics Engine API Reference</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>Open Dynamics Engine API Reference</h1>
17<p>
18<center><em>This document is &copy; Russell Smith and the ODE Project</em></center><p>
19The Open Dynamics Engine (ODE) is a free, industrial quality library for simulating articulated rigid body dynamics. ODE is being developed by <a href="http://www.q12.org/">Russell Smith</a> with help from several <a href="http://ode.org/community.html">contributors</a>.<p>
20This document describes the library API. For a more general introduction to ODE, please see the <a href="http://opende.sourceforge.net/wiki/index.php/Manual">Online Handbook</a>.<p>
21<h2>Important: this document is not yet complete!</h2>
22<p>
23We are still working on getting the full API documentated. In the meantime, please refer to the <a href="http://opende.sourceforge.net/wiki/index.php/Manual">Online Handbook</a> <hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
24<a href="http://www.doxygen.org/index.html">
25<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
26</body>
27</html>
diff --git a/libraries/ode-0.9/docs/mass_8h-source.html b/libraries/ode-0.9/docs/mass_8h-source.html
new file mode 100644
index 0000000..145605b
--- /dev/null
+++ b/libraries/ode-0.9/docs/mass_8h-source.html
@@ -0,0 +1,137 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: mass.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>mass.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_MASS_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_MASS_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
42<a name="l00027"></a>00027
43<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __cplusplus</span>
44<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
45<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span>
47<a name="l00032"></a>00032 <span class="keyword">struct </span>dMass;
48<a name="l00033"></a>00033 <span class="keyword">typedef</span> <span class="keyword">struct </span>dMass dMass;
49<a name="l00034"></a>00034
50<a name="l00043"></a>00043 ODE_API <span class="keywordtype">int</span> dMassCheck(<span class="keyword">const</span> dMass *m);
51<a name="l00044"></a>00044
52<a name="l00045"></a>00045 ODE_API <span class="keywordtype">void</span> dMassSetZero (dMass *);
53<a name="l00046"></a>00046
54<a name="l00047"></a>00047 ODE_API <span class="keywordtype">void</span> dMassSetParameters (dMass *, dReal themass,
55<a name="l00048"></a>00048 dReal cgx, dReal cgy, dReal cgz,
56<a name="l00049"></a>00049 dReal I11, dReal I22, dReal I33,
57<a name="l00050"></a>00050 dReal I12, dReal I13, dReal I23);
58<a name="l00051"></a>00051
59<a name="l00052"></a>00052 ODE_API <span class="keywordtype">void</span> dMassSetSphere (dMass *, dReal density, dReal radius);
60<a name="l00053"></a>00053 ODE_API <span class="keywordtype">void</span> dMassSetSphereTotal (dMass *, dReal total_mass, dReal radius);
61<a name="l00054"></a>00054
62<a name="l00055"></a>00055 ODE_API <span class="keywordtype">void</span> dMassSetCapsule (dMass *, dReal density, <span class="keywordtype">int</span> direction,
63<a name="l00056"></a>00056 dReal radius, dReal length);
64<a name="l00057"></a>00057 ODE_API <span class="keywordtype">void</span> dMassSetCapsuleTotal (dMass *, dReal total_mass, <span class="keywordtype">int</span> direction,
65<a name="l00058"></a>00058 dReal radius, dReal length);
66<a name="l00059"></a>00059
67<a name="l00060"></a>00060 ODE_API <span class="keywordtype">void</span> dMassSetCylinder (dMass *, dReal density, <span class="keywordtype">int</span> direction,
68<a name="l00061"></a>00061 dReal radius, dReal length);
69<a name="l00062"></a>00062 ODE_API <span class="keywordtype">void</span> dMassSetCylinderTotal (dMass *, dReal total_mass, <span class="keywordtype">int</span> direction,
70<a name="l00063"></a>00063 dReal radius, dReal length);
71<a name="l00064"></a>00064
72<a name="l00065"></a>00065 ODE_API <span class="keywordtype">void</span> dMassSetBox (dMass *, dReal density,
73<a name="l00066"></a>00066 dReal lx, dReal ly, dReal lz);
74<a name="l00067"></a>00067 ODE_API <span class="keywordtype">void</span> dMassSetBoxTotal (dMass *, dReal total_mass,
75<a name="l00068"></a>00068 dReal lx, dReal ly, dReal lz);
76<a name="l00069"></a>00069
77<a name="l00070"></a>00070 ODE_API <span class="keywordtype">void</span> dMassSetTrimesh (dMass *, dReal density, dGeomID g);
78<a name="l00071"></a>00071
79<a name="l00072"></a>00072 ODE_API <span class="keywordtype">void</span> dMassSetTrimeshTotal (dMass *m, dReal total_mass, dGeomID g);
80<a name="l00073"></a>00073
81<a name="l00074"></a>00074 ODE_API <span class="keywordtype">void</span> dMassAdjust (dMass *, dReal newmass);
82<a name="l00075"></a>00075
83<a name="l00076"></a>00076 ODE_API <span class="keywordtype">void</span> dMassTranslate (dMass *, dReal x, dReal y, dReal z);
84<a name="l00077"></a>00077
85<a name="l00078"></a>00078 ODE_API <span class="keywordtype">void</span> dMassRotate (dMass *, <span class="keyword">const</span> dMatrix3 R);
86<a name="l00079"></a>00079
87<a name="l00080"></a>00080 ODE_API <span class="keywordtype">void</span> dMassAdd (dMass *a, <span class="keyword">const</span> dMass *b);
88<a name="l00081"></a>00081
89<a name="l00082"></a>00082 <span class="comment">// Backwards compatible API</span>
90<a name="l00083"></a>00083 <span class="preprocessor">#define dMassSetCappedCylinder dMassSetCapsule</span>
91<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#define dMassSetCappedCylinderTotal dMassSetCapsuleTotal</span>
92<a name="l00085"></a>00085 <span class="preprocessor"></span>
93<a name="l00086"></a>00086
94<a name="l00087"></a>00087 <span class="keyword">struct </span>dMass {
95<a name="l00088"></a>00088 dReal mass;
96<a name="l00089"></a>00089 dVector4 c;
97<a name="l00090"></a>00090 dMatrix3 I;
98<a name="l00091"></a>00091
99<a name="l00092"></a>00092 <span class="preprocessor">#ifdef __cplusplus</span>
100<a name="l00093"></a>00093 <span class="preprocessor"></span> dMass()
101<a name="l00094"></a>00094 { dMassSetZero (<span class="keyword">this</span>); }
102<a name="l00095"></a>00095 <span class="keywordtype">void</span> setZero()
103<a name="l00096"></a>00096 { dMassSetZero (<span class="keyword">this</span>); }
104<a name="l00097"></a>00097 <span class="keywordtype">void</span> setParameters (dReal themass, dReal cgx, dReal cgy, dReal cgz,
105<a name="l00098"></a>00098 dReal I11, dReal I22, dReal I33,
106<a name="l00099"></a>00099 dReal I12, dReal I13, dReal I23)
107<a name="l00100"></a>00100 { dMassSetParameters (<span class="keyword">this</span>,themass,cgx,cgy,cgz,I11,I22,I33,I12,I13,I23); }
108<a name="l00101"></a>00101 <span class="keywordtype">void</span> setSphere (dReal density, dReal radius)
109<a name="l00102"></a>00102 { dMassSetSphere (<span class="keyword">this</span>,density,radius); }
110<a name="l00103"></a>00103 <span class="keywordtype">void</span> setCapsule (dReal density, <span class="keywordtype">int</span> direction, dReal a, dReal b)
111<a name="l00104"></a>00104 { dMassSetCappedCylinder (<span class="keyword">this</span>,density,direction,a,b); }
112<a name="l00105"></a>00105 <span class="keywordtype">void</span> setCappedCylinder (dReal density, <span class="keywordtype">int</span> direction, dReal a, dReal b)
113<a name="l00106"></a>00106 { setCapsule(density, direction, a, b); }
114<a name="l00107"></a>00107 <span class="keywordtype">void</span> setBox (dReal density, dReal lx, dReal ly, dReal lz)
115<a name="l00108"></a>00108 { dMassSetBox (<span class="keyword">this</span>,density,lx,ly,lz); }
116<a name="l00109"></a>00109 <span class="keywordtype">void</span> adjust (dReal newmass)
117<a name="l00110"></a>00110 { dMassAdjust (<span class="keyword">this</span>,newmass); }
118<a name="l00111"></a>00111 <span class="keywordtype">void</span> translate (dReal x, dReal y, dReal z)
119<a name="l00112"></a>00112 { dMassTranslate (<span class="keyword">this</span>,x,y,z); }
120<a name="l00113"></a>00113 <span class="keywordtype">void</span> rotate (<span class="keyword">const</span> dMatrix3 R)
121<a name="l00114"></a>00114 { dMassRotate (<span class="keyword">this</span>,R); }
122<a name="l00115"></a>00115 <span class="keywordtype">void</span> <span class="keyword">add</span> (<span class="keyword">const</span> dMass *b)
123<a name="l00116"></a>00116 { dMassAdd (<span class="keyword">this</span>,b); }
124<a name="l00117"></a>00117 <span class="preprocessor">#endif</span>
125<a name="l00118"></a>00118 <span class="preprocessor"></span>};
126<a name="l00119"></a>00119
127<a name="l00120"></a>00120
128<a name="l00121"></a>00121 <span class="preprocessor">#ifdef __cplusplus</span>
129<a name="l00122"></a>00122 <span class="preprocessor"></span>}
130<a name="l00123"></a>00123 <span class="preprocessor">#endif</span>
131<a name="l00124"></a>00124 <span class="preprocessor"></span>
132<a name="l00125"></a>00125 <span class="preprocessor">#endif</span>
133</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
134<a href="http://www.doxygen.org/index.html">
135<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
136</body>
137</html>
diff --git a/libraries/ode-0.9/docs/matrix_8h-source.html b/libraries/ode-0.9/docs/matrix_8h-source.html
new file mode 100644
index 0000000..8f34e5e
--- /dev/null
+++ b/libraries/ode-0.9/docs/matrix_8h-source.html
@@ -0,0 +1,214 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: matrix.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>matrix.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="comment">/* optimized and unoptimized vector and matrix functions */</span>
39<a name="l00024"></a>00024
40<a name="l00025"></a>00025 <span class="preprocessor">#ifndef _ODE_MATRIX_H_</span>
41<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_MATRIX_H_</span>
42<a name="l00027"></a>00027 <span class="preprocessor"></span>
43<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
44<a name="l00029"></a>00029
45<a name="l00030"></a>00030
46<a name="l00031"></a>00031 <span class="preprocessor">#ifdef __cplusplus</span>
47<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
48<a name="l00033"></a>00033 <span class="preprocessor">#endif</span>
49<a name="l00034"></a>00034 <span class="preprocessor"></span>
50<a name="l00035"></a>00035
51<a name="l00036"></a>00036 <span class="comment">/* set a vector/matrix of size n to all zeros, or to a specific value. */</span>
52<a name="l00037"></a>00037
53<a name="l00038"></a>00038 ODE_API <span class="keywordtype">void</span> dSetZero (dReal *a, <span class="keywordtype">int</span> n);
54<a name="l00039"></a>00039 ODE_API <span class="keywordtype">void</span> dSetValue (dReal *a, <span class="keywordtype">int</span> n, dReal value);
55<a name="l00040"></a>00040
56<a name="l00041"></a>00041
57<a name="l00042"></a>00042 <span class="comment">/* get the dot product of two n*1 vectors. if n &lt;= 0 then</span>
58<a name="l00043"></a>00043 <span class="comment"> * zero will be returned (in which case a and b need not be valid).</span>
59<a name="l00044"></a>00044 <span class="comment"> */</span>
60<a name="l00045"></a>00045
61<a name="l00046"></a>00046 ODE_API dReal dDot (<span class="keyword">const</span> dReal *a, <span class="keyword">const</span> dReal *b, <span class="keywordtype">int</span> n);
62<a name="l00047"></a>00047
63<a name="l00048"></a>00048
64<a name="l00049"></a>00049 <span class="comment">/* get the dot products of (a0,b), (a1,b), etc and return them in outsum.</span>
65<a name="l00050"></a>00050 <span class="comment"> * all vectors are n*1. if n &lt;= 0 then zeroes will be returned (in which case</span>
66<a name="l00051"></a>00051 <span class="comment"> * the input vectors need not be valid). this function is somewhat faster</span>
67<a name="l00052"></a>00052 <span class="comment"> * than calling dDot() for all of the combinations separately.</span>
68<a name="l00053"></a>00053 <span class="comment"> */</span>
69<a name="l00054"></a>00054
70<a name="l00055"></a>00055 <span class="comment">/* NOT INCLUDED in the library for now.</span>
71<a name="l00056"></a>00056 <span class="comment">void dMultidot2 (const dReal *a0, const dReal *a1,</span>
72<a name="l00057"></a>00057 <span class="comment"> const dReal *b, dReal *outsum, int n);</span>
73<a name="l00058"></a>00058 <span class="comment">*/</span>
74<a name="l00059"></a>00059
75<a name="l00060"></a>00060
76<a name="l00061"></a>00061 <span class="comment">/* matrix multiplication. all matrices are stored in standard row format.</span>
77<a name="l00062"></a>00062 <span class="comment"> * the digit refers to the argument that is transposed:</span>
78<a name="l00063"></a>00063 <span class="comment"> * 0: A = B * C (sizes: A:p*r B:p*q C:q*r)</span>
79<a name="l00064"></a>00064 <span class="comment"> * 1: A = B' * C (sizes: A:p*r B:q*p C:q*r)</span>
80<a name="l00065"></a>00065 <span class="comment"> * 2: A = B * C' (sizes: A:p*r B:p*q C:r*q)</span>
81<a name="l00066"></a>00066 <span class="comment"> * case 1,2 are equivalent to saying that the operation is A=B*C but</span>
82<a name="l00067"></a>00067 <span class="comment"> * B or C are stored in standard column format.</span>
83<a name="l00068"></a>00068 <span class="comment"> */</span>
84<a name="l00069"></a>00069
85<a name="l00070"></a>00070 ODE_API <span class="keywordtype">void</span> dMultiply0 (dReal *A, <span class="keyword">const</span> dReal *B, <span class="keyword">const</span> dReal *C, <span class="keywordtype">int</span> p,<span class="keywordtype">int</span> q,<span class="keywordtype">int</span> r);
86<a name="l00071"></a>00071 ODE_API <span class="keywordtype">void</span> dMultiply1 (dReal *A, <span class="keyword">const</span> dReal *B, <span class="keyword">const</span> dReal *C, <span class="keywordtype">int</span> p,<span class="keywordtype">int</span> q,<span class="keywordtype">int</span> r);
87<a name="l00072"></a>00072 ODE_API <span class="keywordtype">void</span> dMultiply2 (dReal *A, <span class="keyword">const</span> dReal *B, <span class="keyword">const</span> dReal *C, <span class="keywordtype">int</span> p,<span class="keywordtype">int</span> q,<span class="keywordtype">int</span> r);
88<a name="l00073"></a>00073
89<a name="l00074"></a>00074
90<a name="l00075"></a>00075 <span class="comment">/* do an in-place cholesky decomposition on the lower triangle of the n*n</span>
91<a name="l00076"></a>00076 <span class="comment"> * symmetric matrix A (which is stored by rows). the resulting lower triangle</span>
92<a name="l00077"></a>00077 <span class="comment"> * will be such that L*L'=A. return 1 on success and 0 on failure (on failure</span>
93<a name="l00078"></a>00078 <span class="comment"> * the matrix is not positive definite).</span>
94<a name="l00079"></a>00079 <span class="comment"> */</span>
95<a name="l00080"></a>00080
96<a name="l00081"></a>00081 ODE_API <span class="keywordtype">int</span> dFactorCholesky (dReal *A, <span class="keywordtype">int</span> n);
97<a name="l00082"></a>00082
98<a name="l00083"></a>00083
99<a name="l00084"></a>00084 <span class="comment">/* solve for x: L*L'*x = b, and put the result back into x.</span>
100<a name="l00085"></a>00085 <span class="comment"> * L is size n*n, b is size n*1. only the lower triangle of L is considered.</span>
101<a name="l00086"></a>00086 <span class="comment"> */</span>
102<a name="l00087"></a>00087
103<a name="l00088"></a>00088 ODE_API <span class="keywordtype">void</span> dSolveCholesky (<span class="keyword">const</span> dReal *L, dReal *b, <span class="keywordtype">int</span> n);
104<a name="l00089"></a>00089
105<a name="l00090"></a>00090
106<a name="l00091"></a>00091 <span class="comment">/* compute the inverse of the n*n positive definite matrix A and put it in</span>
107<a name="l00092"></a>00092 <span class="comment"> * Ainv. this is not especially fast. this returns 1 on success (A was</span>
108<a name="l00093"></a>00093 <span class="comment"> * positive definite) or 0 on failure (not PD).</span>
109<a name="l00094"></a>00094 <span class="comment"> */</span>
110<a name="l00095"></a>00095
111<a name="l00096"></a>00096 ODE_API <span class="keywordtype">int</span> dInvertPDMatrix (<span class="keyword">const</span> dReal *A, dReal *Ainv, <span class="keywordtype">int</span> n);
112<a name="l00097"></a>00097
113<a name="l00098"></a>00098
114<a name="l00099"></a>00099 <span class="comment">/* check whether an n*n matrix A is positive definite, return 1/0 (yes/no).</span>
115<a name="l00100"></a>00100 <span class="comment"> * positive definite means that x'*A*x &gt; 0 for any x. this performs a</span>
116<a name="l00101"></a>00101 <span class="comment"> * cholesky decomposition of A. if the decomposition fails then the matrix</span>
117<a name="l00102"></a>00102 <span class="comment"> * is not positive definite. A is stored by rows. A is not altered.</span>
118<a name="l00103"></a>00103 <span class="comment"> */</span>
119<a name="l00104"></a>00104
120<a name="l00105"></a>00105 ODE_API <span class="keywordtype">int</span> dIsPositiveDefinite (<span class="keyword">const</span> dReal *A, <span class="keywordtype">int</span> n);
121<a name="l00106"></a>00106
122<a name="l00107"></a>00107
123<a name="l00108"></a>00108 <span class="comment">/* factorize a matrix A into L*D*L', where L is lower triangular with ones on</span>
124<a name="l00109"></a>00109 <span class="comment"> * the diagonal, and D is diagonal.</span>
125<a name="l00110"></a>00110 <span class="comment"> * A is an n*n matrix stored by rows, with a leading dimension of n rounded</span>
126<a name="l00111"></a>00111 <span class="comment"> * up to 4. L is written into the strict lower triangle of A (the ones are not</span>
127<a name="l00112"></a>00112 <span class="comment"> * written) and the reciprocal of the diagonal elements of D are written into</span>
128<a name="l00113"></a>00113 <span class="comment"> * d.</span>
129<a name="l00114"></a>00114 <span class="comment"> */</span>
130<a name="l00115"></a>00115 ODE_API <span class="keywordtype">void</span> dFactorLDLT (dReal *A, dReal *d, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> nskip);
131<a name="l00116"></a>00116
132<a name="l00117"></a>00117
133<a name="l00118"></a>00118 <span class="comment">/* solve L*x=b, where L is n*n lower triangular with ones on the diagonal,</span>
134<a name="l00119"></a>00119 <span class="comment"> * and x,b are n*1. b is overwritten with x.</span>
135<a name="l00120"></a>00120 <span class="comment"> * the leading dimension of L is `nskip'.</span>
136<a name="l00121"></a>00121 <span class="comment"> */</span>
137<a name="l00122"></a>00122 ODE_API <span class="keywordtype">void</span> dSolveL1 (<span class="keyword">const</span> dReal *L, dReal *b, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> nskip);
138<a name="l00123"></a>00123
139<a name="l00124"></a>00124
140<a name="l00125"></a>00125 <span class="comment">/* solve L'*x=b, where L is n*n lower triangular with ones on the diagonal,</span>
141<a name="l00126"></a>00126 <span class="comment"> * and x,b are n*1. b is overwritten with x.</span>
142<a name="l00127"></a>00127 <span class="comment"> * the leading dimension of L is `nskip'.</span>
143<a name="l00128"></a>00128 <span class="comment"> */</span>
144<a name="l00129"></a>00129 ODE_API <span class="keywordtype">void</span> dSolveL1T (<span class="keyword">const</span> dReal *L, dReal *b, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> nskip);
145<a name="l00130"></a>00130
146<a name="l00131"></a>00131
147<a name="l00132"></a>00132 <span class="comment">/* in matlab syntax: a(1:n) = a(1:n) .* d(1:n) */</span>
148<a name="l00133"></a>00133
149<a name="l00134"></a>00134 ODE_API <span class="keywordtype">void</span> dVectorScale (dReal *a, <span class="keyword">const</span> dReal *d, <span class="keywordtype">int</span> n);
150<a name="l00135"></a>00135
151<a name="l00136"></a>00136
152<a name="l00137"></a>00137 <span class="comment">/* given `L', a n*n lower triangular matrix with ones on the diagonal,</span>
153<a name="l00138"></a>00138 <span class="comment"> * and `d', a n*1 vector of the reciprocal diagonal elements of an n*n matrix</span>
154<a name="l00139"></a>00139 <span class="comment"> * D, solve L*D*L'*x=b where x,b are n*1. x overwrites b.</span>
155<a name="l00140"></a>00140 <span class="comment"> * the leading dimension of L is `nskip'.</span>
156<a name="l00141"></a>00141 <span class="comment"> */</span>
157<a name="l00142"></a>00142
158<a name="l00143"></a>00143 ODE_API <span class="keywordtype">void</span> dSolveLDLT (<span class="keyword">const</span> dReal *L, <span class="keyword">const</span> dReal *d, dReal *b, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> nskip);
159<a name="l00144"></a>00144
160<a name="l00145"></a>00145
161<a name="l00146"></a>00146 <span class="comment">/* given an L*D*L' factorization of an n*n matrix A, return the updated</span>
162<a name="l00147"></a>00147 <span class="comment"> * factorization L2*D2*L2' of A plus the following "top left" matrix:</span>
163<a name="l00148"></a>00148 <span class="comment"> *</span>
164<a name="l00149"></a>00149 <span class="comment"> * [ b a' ] &lt;-- b is a[0]</span>
165<a name="l00150"></a>00150 <span class="comment"> * [ a 0 ] &lt;-- a is a[1..n-1]</span>
166<a name="l00151"></a>00151 <span class="comment"> *</span>
167<a name="l00152"></a>00152 <span class="comment"> * - L has size n*n, its leading dimension is nskip. L is lower triangular</span>
168<a name="l00153"></a>00153 <span class="comment"> * with ones on the diagonal. only the lower triangle of L is referenced.</span>
169<a name="l00154"></a>00154 <span class="comment"> * - d has size n. d contains the reciprocal diagonal elements of D.</span>
170<a name="l00155"></a>00155 <span class="comment"> * - a has size n.</span>
171<a name="l00156"></a>00156 <span class="comment"> * the result is written into L, except that the left column of L and d[0]</span>
172<a name="l00157"></a>00157 <span class="comment"> * are not actually modified. see ldltaddTL.m for further comments. </span>
173<a name="l00158"></a>00158 <span class="comment"> */</span>
174<a name="l00159"></a>00159 ODE_API <span class="keywordtype">void</span> dLDLTAddTL (dReal *L, dReal *d, <span class="keyword">const</span> dReal *a, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> nskip);
175<a name="l00160"></a>00160
176<a name="l00161"></a>00161
177<a name="l00162"></a>00162 <span class="comment">/* given an L*D*L' factorization of a permuted matrix A, produce a new</span>
178<a name="l00163"></a>00163 <span class="comment"> * factorization for row and column `r' removed.</span>
179<a name="l00164"></a>00164 <span class="comment"> * - A has size n1*n1, its leading dimension in nskip. A is symmetric and</span>
180<a name="l00165"></a>00165 <span class="comment"> * positive definite. only the lower triangle of A is referenced.</span>
181<a name="l00166"></a>00166 <span class="comment"> * A itself may actually be an array of row pointers.</span>
182<a name="l00167"></a>00167 <span class="comment"> * - L has size n2*n2, its leading dimension in nskip. L is lower triangular</span>
183<a name="l00168"></a>00168 <span class="comment"> * with ones on the diagonal. only the lower triangle of L is referenced.</span>
184<a name="l00169"></a>00169 <span class="comment"> * - d has size n2. d contains the reciprocal diagonal elements of D.</span>
185<a name="l00170"></a>00170 <span class="comment"> * - p is a permutation vector. it contains n2 indexes into A. each index</span>
186<a name="l00171"></a>00171 <span class="comment"> * must be in the range 0..n1-1.</span>
187<a name="l00172"></a>00172 <span class="comment"> * - r is the row/column of L to remove.</span>
188<a name="l00173"></a>00173 <span class="comment"> * the new L will be written within the old L, i.e. will have the same leading</span>
189<a name="l00174"></a>00174 <span class="comment"> * dimension. the last row and column of L, and the last element of d, are</span>
190<a name="l00175"></a>00175 <span class="comment"> * undefined on exit.</span>
191<a name="l00176"></a>00176 <span class="comment"> *</span>
192<a name="l00177"></a>00177 <span class="comment"> * a fast O(n^2) algorithm is used. see ldltremove.m for further comments.</span>
193<a name="l00178"></a>00178 <span class="comment"> */</span>
194<a name="l00179"></a>00179 ODE_API <span class="keywordtype">void</span> dLDLTRemove (dReal **A, <span class="keyword">const</span> <span class="keywordtype">int</span> *p, dReal *L, dReal *d,
195<a name="l00180"></a>00180 <span class="keywordtype">int</span> n1, <span class="keywordtype">int</span> n2, <span class="keywordtype">int</span> r, <span class="keywordtype">int</span> nskip);
196<a name="l00181"></a>00181
197<a name="l00182"></a>00182
198<a name="l00183"></a>00183 <span class="comment">/* given an n*n matrix A (with leading dimension nskip), remove the r'th row</span>
199<a name="l00184"></a>00184 <span class="comment"> * and column by moving elements. the new matrix will have the same leading</span>
200<a name="l00185"></a>00185 <span class="comment"> * dimension. the last row and column of A are untouched on exit.</span>
201<a name="l00186"></a>00186 <span class="comment"> */</span>
202<a name="l00187"></a>00187 ODE_API <span class="keywordtype">void</span> dRemoveRowCol (dReal *A, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> nskip, <span class="keywordtype">int</span> r);
203<a name="l00188"></a>00188
204<a name="l00189"></a>00189
205<a name="l00190"></a>00190 <span class="preprocessor">#ifdef __cplusplus</span>
206<a name="l00191"></a>00191 <span class="preprocessor"></span>}
207<a name="l00192"></a>00192 <span class="preprocessor">#endif</span>
208<a name="l00193"></a>00193 <span class="preprocessor"></span>
209<a name="l00194"></a>00194 <span class="preprocessor">#endif</span>
210</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
211<a href="http://www.doxygen.org/index.html">
212<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
213</body>
214</html>
diff --git a/libraries/ode-0.9/docs/memory_8h-source.html b/libraries/ode-0.9/docs/memory_8h-source.html
new file mode 100644
index 0000000..001fd88
--- /dev/null
+++ b/libraries/ode-0.9/docs/memory_8h-source.html
@@ -0,0 +1,79 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: memory.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>memory.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="comment">/* this comes from the `reuse' library. copy any changes back to the source */</span>
39<a name="l00024"></a>00024
40<a name="l00025"></a>00025 <span class="preprocessor">#ifndef _ODE_MEMORY_H_</span>
41<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_MEMORY_H_</span>
42<a name="l00027"></a>00027 <span class="preprocessor"></span>
43<a name="l00028"></a>00028 <span class="preprocessor">#include "ode/config.h"</span>
44<a name="l00029"></a>00029
45<a name="l00030"></a>00030 <span class="preprocessor">#ifdef __cplusplus</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
47<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
48<a name="l00033"></a>00033 <span class="preprocessor"></span>
49<a name="l00034"></a>00034 <span class="comment">/* function types to allocate and free memory */</span>
50<a name="l00035"></a>00035 <span class="keyword">typedef</span> <span class="keywordtype">void</span> * dAllocFunction (<span class="keywordtype">size_t</span> size);
51<a name="l00036"></a>00036 <span class="keyword">typedef</span> <span class="keywordtype">void</span> * dReallocFunction (<span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> oldsize, <span class="keywordtype">size_t</span> newsize);
52<a name="l00037"></a>00037 <span class="keyword">typedef</span> <span class="keywordtype">void</span> dFreeFunction (<span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> size);
53<a name="l00038"></a>00038
54<a name="l00039"></a>00039 <span class="comment">/* set new memory management functions. if fn is 0, the default handlers are</span>
55<a name="l00040"></a>00040 <span class="comment"> * used. */</span>
56<a name="l00041"></a>00041 ODE_API <span class="keywordtype">void</span> dSetAllocHandler (dAllocFunction *fn);
57<a name="l00042"></a>00042 ODE_API <span class="keywordtype">void</span> dSetReallocHandler (dReallocFunction *fn);
58<a name="l00043"></a>00043 ODE_API <span class="keywordtype">void</span> dSetFreeHandler (dFreeFunction *fn);
59<a name="l00044"></a>00044
60<a name="l00045"></a>00045 <span class="comment">/* get current memory management functions */</span>
61<a name="l00046"></a>00046 ODE_API dAllocFunction *dGetAllocHandler (<span class="keywordtype">void</span>);
62<a name="l00047"></a>00047 ODE_API dReallocFunction *dGetReallocHandler (<span class="keywordtype">void</span>);
63<a name="l00048"></a>00048 ODE_API dFreeFunction *dGetFreeHandler (<span class="keywordtype">void</span>);
64<a name="l00049"></a>00049
65<a name="l00050"></a>00050 <span class="comment">/* allocate and free memory. */</span>
66<a name="l00051"></a>00051 ODE_API <span class="keywordtype">void</span> * dAlloc (<span class="keywordtype">size_t</span> size);
67<a name="l00052"></a>00052 ODE_API <span class="keywordtype">void</span> * dRealloc (<span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> oldsize, <span class="keywordtype">size_t</span> newsize);
68<a name="l00053"></a>00053 ODE_API <span class="keywordtype">void</span> dFree (<span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> size);
69<a name="l00054"></a>00054
70<a name="l00055"></a>00055 <span class="preprocessor">#ifdef __cplusplus</span>
71<a name="l00056"></a>00056 <span class="preprocessor"></span>}
72<a name="l00057"></a>00057 <span class="preprocessor">#endif</span>
73<a name="l00058"></a>00058 <span class="preprocessor"></span>
74<a name="l00059"></a>00059 <span class="preprocessor">#endif</span>
75</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
76<a href="http://www.doxygen.org/index.html">
77<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
78</body>
79</html>
diff --git a/libraries/ode-0.9/docs/misc_8h-source.html b/libraries/ode-0.9/docs/misc_8h-source.html
new file mode 100644
index 0000000..72bbc10
--- /dev/null
+++ b/libraries/ode-0.9/docs/misc_8h-source.html
@@ -0,0 +1,105 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: misc.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>misc.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="comment">/* miscellaneous math functions. these are mostly useful for testing */</span>
39<a name="l00024"></a>00024
40<a name="l00025"></a>00025 <span class="preprocessor">#ifndef _ODE_MISC_H_</span>
41<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_MISC_H_</span>
42<a name="l00027"></a>00027 <span class="preprocessor"></span>
43<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
44<a name="l00029"></a>00029
45<a name="l00030"></a>00030
46<a name="l00031"></a>00031 <span class="preprocessor">#ifdef __cplusplus</span>
47<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
48<a name="l00033"></a>00033 <span class="preprocessor">#endif</span>
49<a name="l00034"></a>00034 <span class="preprocessor"></span>
50<a name="l00035"></a>00035
51<a name="l00036"></a>00036 <span class="comment">/* return 1 if the random number generator is working. */</span>
52<a name="l00037"></a>00037 ODE_API <span class="keywordtype">int</span> dTestRand(<span class="keywordtype">void</span>);
53<a name="l00038"></a>00038
54<a name="l00039"></a>00039 <span class="comment">/* return next 32 bit random number. this uses a not-very-random linear</span>
55<a name="l00040"></a>00040 <span class="comment"> * congruential method.</span>
56<a name="l00041"></a>00041 <span class="comment"> */</span>
57<a name="l00042"></a>00042 ODE_API <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> dRand(<span class="keywordtype">void</span>);
58<a name="l00043"></a>00043
59<a name="l00044"></a>00044 <span class="comment">/* get and set the current random number seed. */</span>
60<a name="l00045"></a>00045 ODE_API <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> dRandGetSeed(<span class="keywordtype">void</span>);
61<a name="l00046"></a>00046 ODE_API <span class="keywordtype">void</span> dRandSetSeed (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> s);
62<a name="l00047"></a>00047
63<a name="l00048"></a>00048 <span class="comment">/* return a random integer between 0..n-1. the distribution will get worse</span>
64<a name="l00049"></a>00049 <span class="comment"> * as n approaches 2^32.</span>
65<a name="l00050"></a>00050 <span class="comment"> */</span>
66<a name="l00051"></a>00051 ODE_API <span class="keywordtype">int</span> dRandInt (<span class="keywordtype">int</span> n);
67<a name="l00052"></a>00052
68<a name="l00053"></a>00053 <span class="comment">/* return a random real number between 0..1 */</span>
69<a name="l00054"></a>00054 ODE_API dReal dRandReal(<span class="keywordtype">void</span>);
70<a name="l00055"></a>00055
71<a name="l00056"></a>00056 <span class="comment">/* print out a matrix */</span>
72<a name="l00057"></a>00057 <span class="preprocessor">#ifdef __cplusplus</span>
73<a name="l00058"></a>00058 <span class="preprocessor"></span>ODE_API <span class="keywordtype">void</span> dPrintMatrix (<span class="keyword">const</span> dReal *A, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, <span class="keywordtype">char</span> *fmt = <span class="stringliteral">"%10.4f "</span>,
74<a name="l00059"></a>00059 FILE *f=stdout);
75<a name="l00060"></a>00060 <span class="preprocessor">#else</span>
76<a name="l00061"></a>00061 <span class="preprocessor"></span>ODE_API <span class="keywordtype">void</span> dPrintMatrix (<span class="keyword">const</span> dReal *A, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, <span class="keywordtype">char</span> *fmt, FILE *f);
77<a name="l00062"></a>00062 <span class="preprocessor">#endif</span>
78<a name="l00063"></a>00063 <span class="preprocessor"></span>
79<a name="l00064"></a>00064 <span class="comment">/* make a random vector with entries between +/- range. A has n elements. */</span>
80<a name="l00065"></a>00065 ODE_API <span class="keywordtype">void</span> dMakeRandomVector (dReal *A, <span class="keywordtype">int</span> n, dReal range);
81<a name="l00066"></a>00066
82<a name="l00067"></a>00067 <span class="comment">/* make a random matrix with entries between +/- range. A has size n*m. */</span>
83<a name="l00068"></a>00068 ODE_API <span class="keywordtype">void</span> dMakeRandomMatrix (dReal *A, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, dReal range);
84<a name="l00069"></a>00069
85<a name="l00070"></a>00070 <span class="comment">/* clear the upper triangle of a square matrix */</span>
86<a name="l00071"></a>00071 ODE_API <span class="keywordtype">void</span> dClearUpperTriangle (dReal *A, <span class="keywordtype">int</span> n);
87<a name="l00072"></a>00072
88<a name="l00073"></a>00073 <span class="comment">/* return the maximum element difference between the two n*m matrices */</span>
89<a name="l00074"></a>00074 ODE_API dReal dMaxDifference (<span class="keyword">const</span> dReal *A, <span class="keyword">const</span> dReal *B, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m);
90<a name="l00075"></a>00075
91<a name="l00076"></a>00076 <span class="comment">/* return the maximum element difference between the lower triangle of two</span>
92<a name="l00077"></a>00077 <span class="comment"> * n*n matrices */</span>
93<a name="l00078"></a>00078 ODE_API dReal dMaxDifferenceLowerTriangle (<span class="keyword">const</span> dReal *A, <span class="keyword">const</span> dReal *B, <span class="keywordtype">int</span> n);
94<a name="l00079"></a>00079
95<a name="l00080"></a>00080
96<a name="l00081"></a>00081 <span class="preprocessor">#ifdef __cplusplus</span>
97<a name="l00082"></a>00082 <span class="preprocessor"></span>}
98<a name="l00083"></a>00083 <span class="preprocessor">#endif</span>
99<a name="l00084"></a>00084 <span class="preprocessor"></span>
100<a name="l00085"></a>00085 <span class="preprocessor">#endif</span>
101</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
102<a href="http://www.doxygen.org/index.html">
103<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
104</body>
105</html>
diff --git a/libraries/ode-0.9/docs/modules.html b/libraries/ode-0.9/docs/modules.html
new file mode 100644
index 0000000..60c4d80
--- /dev/null
+++ b/libraries/ode-0.9/docs/modules.html
@@ -0,0 +1,32 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Module Index</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li class="current"><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>Open Dynamics Engine Modules</h1>Here is a list of all modules:<ul>
17<li><a class="el" href="group__collide.html">Collision Detection</a>
18<ul>
19<li><a class="el" href="group__collide__sphere.html">Sphere Class</a>
20<li><a class="el" href="group__collide__box.html">Box Class</a>
21</ul>
22<li><a class="el" href="group__world.html">World</a>
23<li><a class="el" href="group__disable.html">Automatic Enabling and Disabling</a>
24<li><a class="el" href="group__bodies.html">Rigid Bodies</a>
25<li><a class="el" href="group__joints.html">Joints</a>
26<li><a class="el" href="group__drawstuff.html">DrawStuff</a>
27</ul>
28<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by&nbsp;
29<a href="http://www.doxygen.org/index.html">
30<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
31</body>
32</html>
diff --git a/libraries/ode-0.9/docs/objects_8h-source.html b/libraries/ode-0.9/docs/objects_8h-source.html
new file mode 100644
index 0000000..33871df
--- /dev/null
+++ b/libraries/ode-0.9/docs/objects_8h-source.html
@@ -0,0 +1,563 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: objects.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>objects.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_OBJECTS_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_OBJECTS_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
42<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;ode/mass.h&gt;</span>
43<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ode/contact.h&gt;</span>
44<a name="l00029"></a>00029
45<a name="l00030"></a>00030 <span class="preprocessor">#ifdef __cplusplus</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
47<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
48<a name="l00033"></a>00033 <span class="preprocessor"></span>
49<a name="l00052"></a>00052 ODE_API dWorldID <a class="code" href="group__world.html#g929067266d630fb745f752042d685fc7" title="Create a new, empty world and return its ID number.">dWorldCreate</a>(<span class="keywordtype">void</span>);
50<a name="l00053"></a>00053
51<a name="l00054"></a>00054
52<a name="l00064"></a>00064 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#g5a2e5b1d2d6a1376dca239b488e629f9" title="Destroy a world and everything in it.">dWorldDestroy</a> (dWorldID world);
53<a name="l00065"></a>00065
54<a name="l00066"></a>00066
55<a name="l00075"></a>00075 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#ga1b220b922215b335572c699cf8f8cad" title="Set the world&amp;#39;s global gravity vector.">dWorldSetGravity</a> (dWorldID, dReal x, dReal y, dReal z);
56<a name="l00076"></a>00076
57<a name="l00077"></a>00077
58<a name="l00082"></a>00082 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#ge1a29b6a91cc1910a982c916ae4dee4a" title="Get the gravity vector for a given world.">dWorldGetGravity</a> (dWorldID, dVector3 gravity);
59<a name="l00083"></a>00083
60<a name="l00084"></a>00084
61<a name="l00092"></a>00092 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#gacd0778bdaa939d22f093fc2d5d5f868" title="Set the global ERP value, that controls how much error correction is performed in...">dWorldSetERP</a> (dWorldID, dReal erp);
62<a name="l00093"></a>00093
63<a name="l00099"></a>00099 ODE_API dReal <a class="code" href="group__world.html#g033cd87a0b22889a94d4d84149bda5a0" title="Get the error reduction parameter.">dWorldGetERP</a> (dWorldID);
64<a name="l00100"></a>00100
65<a name="l00101"></a>00101
66<a name="l00109"></a>00109 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#g8b7913fe46d0afc468418c655da79233" title="Set the global CFM (constraint force mixing) value.">dWorldSetCFM</a> (dWorldID, dReal cfm);
67<a name="l00110"></a>00110
68<a name="l00116"></a>00116 ODE_API dReal <a class="code" href="group__world.html#gc7a431f2b3fc6f887fe91ad676828ba3" title="Get the constraint force mixing value.">dWorldGetCFM</a> (dWorldID);
69<a name="l00117"></a>00117
70<a name="l00118"></a>00118
71<a name="l00129"></a>00129 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#g8f547ebeb3deed27e0f7b8143d475f50" title="Step the world.">dWorldStep</a> (dWorldID, dReal stepsize);
72<a name="l00130"></a>00130
73<a name="l00131"></a>00131
74<a name="l00146"></a>00146 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#ga9c564b4dd7d8fa4c6f4b32dd95fc33a" title="Converts an impulse to a force.">dWorldImpulseToForce</a>
75<a name="l00147"></a>00147 (
76<a name="l00148"></a>00148 dWorldID, dReal stepsize,
77<a name="l00149"></a>00149 dReal ix, dReal iy, dReal iz, dVector3 force
78<a name="l00150"></a>00150 );
79<a name="l00151"></a>00151
80<a name="l00152"></a>00152
81<a name="l00184"></a>00184 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#gc24fadc1d42b65ca3563e40bc1f0fec1" title="Step the world.">dWorldQuickStep</a> (dWorldID w, dReal stepsize);
82<a name="l00185"></a>00185
83<a name="l00186"></a>00186
84<a name="l00196"></a>00196 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#g9d852689d87d28a3d4947eda59c5ba7e" title="Set the number of iterations that the QuickStep method performs per step.">dWorldSetQuickStepNumIterations</a> (dWorldID, <span class="keywordtype">int</span> num);
85<a name="l00197"></a>00197
86<a name="l00198"></a>00198
87<a name="l00205"></a>00205 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__world.html#ga51acfac06347fd27ff926d37672ce3c" title="Get the number of iterations that the QuickStep method performs per step.">dWorldGetQuickStepNumIterations</a> (dWorldID);
88<a name="l00206"></a>00206
89<a name="l00212"></a>00212 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#gf741ee61e3f9981ae102729f23aad535" title="Set the SOR over-relaxation parameter.">dWorldSetQuickStepW</a> (dWorldID, dReal over_relaxation);
90<a name="l00213"></a>00213
91<a name="l00219"></a>00219 ODE_API dReal <a class="code" href="group__world.html#ga7fef06f7a8293f21778939dfea36951" title="Get the SOR over-relaxation parameter.">dWorldGetQuickStepW</a> (dWorldID);
92<a name="l00220"></a>00220
93<a name="l00221"></a>00221 <span class="comment">/* World contact parameter functions */</span>
94<a name="l00222"></a>00222
95<a name="l00231"></a>00231 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#g2cec4be3f40d49c5950ceac1a28440d8" title="Set the maximum correcting velocity that contacts are allowed to generate.">dWorldSetContactMaxCorrectingVel</a> (dWorldID, dReal vel);
96<a name="l00232"></a>00232
97<a name="l00238"></a>00238 ODE_API dReal <a class="code" href="group__world.html#g7673e6d0db3ddb319642caea7d14959d" title="Get the maximum correcting velocity that contacts are allowed to generated.">dWorldGetContactMaxCorrectingVel</a> (dWorldID);
98<a name="l00239"></a>00239
99<a name="l00251"></a>00251 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#g8f6f964bc15b6cf0937d3214f6e3a1f1" title="Set the depth of the surface layer around all geometry objects.">dWorldSetContactSurfaceLayer</a> (dWorldID, dReal depth);
100<a name="l00252"></a>00252
101<a name="l00258"></a>00258 ODE_API dReal <a class="code" href="group__world.html#g97e1c98f55d9b56d00e7838900ad5e58" title="Get the depth of the surface layer around all geometry objects.">dWorldGetContactSurfaceLayer</a> (dWorldID);
102<a name="l00259"></a>00259
103<a name="l00260"></a>00260 <span class="comment">/* StepFast1 functions */</span>
104<a name="l00261"></a>00261
105<a name="l00268"></a>00268 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__world.html#gefa68c714bb3c8f70503f101ea062c03" title="Step the world using the StepFast1 algorithm.">dWorldStepFast1</a>(dWorldID, dReal stepsize, <span class="keywordtype">int</span> maxiterations);
106<a name="l00269"></a>00269
107<a name="l00270"></a>00270
108<a name="l00306"></a>00306 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__disable.html#g280c6deffe6b4b8ba39d60bf25355347" title="Set the AutoEnableDepth parameter used by the StepFast1 algorithm.">dWorldSetAutoEnableDepthSF1</a>(dWorldID, <span class="keywordtype">int</span> autoEnableDepth);
109<a name="l00307"></a>00307
110<a name="l00312"></a>00312 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__disable.html#g5438f43d9c71d8090a44171f685de196" title="Get the AutoEnableDepth parameter used by the StepFast1 algorithm.">dWorldGetAutoEnableDepthSF1</a>(dWorldID);
111<a name="l00313"></a>00313
112<a name="l00319"></a>00319 ODE_API dReal <a class="code" href="group__disable.html#g48802a9736cc8cc9c1a14cbc3125d9b2" title="Get auto disable linear threshold for newly created bodies.">dWorldGetAutoDisableLinearThreshold</a> (dWorldID);
113<a name="l00320"></a>00320
114<a name="l00326"></a>00326 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__disable.html#ga1070c6f127352fb0a87ab1d42677b8e" title="Set auto disable linear threshold for newly created bodies.">dWorldSetAutoDisableLinearThreshold</a> (dWorldID, dReal linear_threshold);
115<a name="l00327"></a>00327
116<a name="l00333"></a>00333 ODE_API dReal <a class="code" href="group__disable.html#g9d32b31b5d343c324897434a97387abc" title="Get auto disable angular threshold for newly created bodies.">dWorldGetAutoDisableAngularThreshold</a> (dWorldID);
117<a name="l00334"></a>00334
118<a name="l00340"></a>00340 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__disable.html#g61cae2bd156129a918c3a1e69ac1b6dd" title="Set auto disable angular threshold for newly created bodies.">dWorldSetAutoDisableAngularThreshold</a> (dWorldID, dReal angular_threshold);
119<a name="l00341"></a>00341
120<a name="l00347"></a>00347 ODE_API dReal <a class="code" href="group__disable.html#g947e2d43df920a26fb52b5273ea9856b" title="Get auto disable linear average threshold for newly created bodies.">dWorldGetAutoDisableLinearAverageThreshold</a> (dWorldID);
121<a name="l00348"></a>00348
122<a name="l00354"></a>00354 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__disable.html#g3e5ef82227b955c545efc40d60ef1b21" title="Set auto disable linear average threshold for newly created bodies.">dWorldSetAutoDisableLinearAverageThreshold</a> (dWorldID, dReal linear_average_threshold);
123<a name="l00355"></a>00355
124<a name="l00361"></a>00361 ODE_API dReal <a class="code" href="group__disable.html#gb9bd57f1bef49a8d9d6985462c078b02" title="Get auto disable angular average threshold for newly created bodies.">dWorldGetAutoDisableAngularAverageThreshold</a> (dWorldID);
125<a name="l00362"></a>00362
126<a name="l00368"></a>00368 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__disable.html#gca94337cc27914fe4bc00ebce83f231a" title="Set auto disable angular average threshold for newly created bodies.">dWorldSetAutoDisableAngularAverageThreshold</a> (dWorldID, dReal angular_average_threshold);
127<a name="l00369"></a>00369
128<a name="l00375"></a>00375 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__disable.html#g4343cfd23eb87f3ee629a9d13833c2ac" title="Get auto disable sample count for newly created bodies.">dWorldGetAutoDisableAverageSamplesCount</a> (dWorldID);
129<a name="l00376"></a>00376
130<a name="l00383"></a>00383 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__disable.html#g2babd1af3df87518e5bac9dfcb392593" title="Set auto disable average sample count for newly created bodies.">dWorldSetAutoDisableAverageSamplesCount</a> (dWorldID, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> average_samples_count );
131<a name="l00384"></a>00384
132<a name="l00390"></a>00390 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__disable.html#gb0a26f648b9e40d8d4639bf187d5ac94" title="Get auto disable steps for newly created bodies.">dWorldGetAutoDisableSteps</a> (dWorldID);
133<a name="l00391"></a>00391
134<a name="l00397"></a>00397 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__disable.html#gdb9f69119d1aa259a0e32a8ff94e2535" title="Set auto disable steps for newly created bodies.">dWorldSetAutoDisableSteps</a> (dWorldID, <span class="keywordtype">int</span> steps);
135<a name="l00398"></a>00398
136<a name="l00404"></a>00404 ODE_API dReal <a class="code" href="group__disable.html#gbc004c37efff5f962fa2ac271b3be8e1" title="Get auto disable time for newly created bodies.">dWorldGetAutoDisableTime</a> (dWorldID);
137<a name="l00405"></a>00405
138<a name="l00411"></a>00411 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__disable.html#g06828866a19cab7aeb129ca9ec76863b" title="Set auto disable time for newly created bodies.">dWorldSetAutoDisableTime</a> (dWorldID, dReal time);
139<a name="l00412"></a>00412
140<a name="l00418"></a>00418 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__disable.html#g7617d19f08c7b1d22cf17ccf22bbdc00" title="Get auto disable flag for newly created bodies.">dWorldGetAutoDisableFlag</a> (dWorldID);
141<a name="l00419"></a>00419
142<a name="l00425"></a>00425 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__disable.html#g58959b92ae4706e612bca673e85bfc50" title="Set auto disable flag for newly created bodies.">dWorldSetAutoDisableFlag</a> (dWorldID, <span class="keywordtype">int</span> do_auto_disable);
143<a name="l00426"></a>00426
144<a name="l00427"></a>00427
145<a name="l00428"></a>00428
146<a name="l00468"></a>00468 ODE_API dReal <a class="code" href="group__bodies.html#g57c1e1b1bd50fdcafc5140c1ed89c7d7" title="Get auto disable linear average threshold.">dBodyGetAutoDisableLinearThreshold</a> (dBodyID);
147<a name="l00469"></a>00469
148<a name="l00475"></a>00475 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gb8f6e736830cfea86c35e7a0cdfa3112" title="Set auto disable linear average threshold.">dBodySetAutoDisableLinearThreshold</a> (dBodyID, dReal linear_average_threshold);
149<a name="l00476"></a>00476
150<a name="l00482"></a>00482 ODE_API dReal <a class="code" href="group__bodies.html#g5b988719423e9bc3af1be2146872e2d6" title="Get auto disable angular average threshold.">dBodyGetAutoDisableAngularThreshold</a> (dBodyID);
151<a name="l00483"></a>00483
152<a name="l00489"></a>00489 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g206ccf22f027a62aaf5e45a16ddc4040" title="Set auto disable angular average threshold.">dBodySetAutoDisableAngularThreshold</a> (dBodyID, dReal angular_average_threshold);
153<a name="l00490"></a>00490
154<a name="l00496"></a>00496 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__bodies.html#gf398254a02ab5bedcdf7e4fb2918a902" title="Get auto disable average size (samples count).">dBodyGetAutoDisableAverageSamplesCount</a> (dBodyID);
155<a name="l00497"></a>00497
156<a name="l00503"></a>00503 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g4bce13aaa5ffb7d4b3452191974c3be6" title="Set auto disable average buffer size (average steps).">dBodySetAutoDisableAverageSamplesCount</a> (dBodyID, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> average_samples_count);
157<a name="l00504"></a>00504
158<a name="l00505"></a>00505
159<a name="l00511"></a>00511 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__bodies.html#g797ad84c737a2ae4ef3f8a37dfa02183" title="Get auto steps a body must be thought of as idle to disable.">dBodyGetAutoDisableSteps</a> (dBodyID);
160<a name="l00512"></a>00512
161<a name="l00518"></a>00518 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g03cc329bdc8e19e59c4bfe62cf736578" title="Set auto disable steps.">dBodySetAutoDisableSteps</a> (dBodyID, <span class="keywordtype">int</span> steps);
162<a name="l00519"></a>00519
163<a name="l00525"></a>00525 ODE_API dReal <a class="code" href="group__bodies.html#ga2f4d01a8fb5c4d7e77efd5f0e4dd72b" title="Get auto disable time.">dBodyGetAutoDisableTime</a> (dBodyID);
164<a name="l00526"></a>00526
165<a name="l00532"></a>00532 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g0ae2f08bb38359934151f9420cdef341" title="Set auto disable time.">dBodySetAutoDisableTime</a> (dBodyID, dReal time);
166<a name="l00533"></a>00533
167<a name="l00539"></a>00539 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__bodies.html#gfe44b3ae620abb1091472089cb07f64e" title="Get auto disable flag.">dBodyGetAutoDisableFlag</a> (dBodyID);
168<a name="l00540"></a>00540
169<a name="l00546"></a>00546 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#ge352fdcd8851224f07da53f35691ceb7" title="Set auto disable flag.">dBodySetAutoDisableFlag</a> (dBodyID, <span class="keywordtype">int</span> do_auto_disable);
170<a name="l00547"></a>00547
171<a name="l00554"></a>00554 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g00969db4aebc2e8629cd9c45f3b7385e" title="Set auto disable defaults.">dBodySetAutoDisableDefaults</a> (dBodyID);
172<a name="l00555"></a>00555
173<a name="l00556"></a>00556
174<a name="l00563"></a>00563 ODE_API dWorldID <a class="code" href="group__bodies.html#gb044b0a466f2ec2af3fd29ae399e822e" title="Retrives the world attached to te given body.">dBodyGetWorld</a> (dBodyID);
175<a name="l00564"></a>00564
176<a name="l00571"></a>00571 ODE_API dBodyID <a class="code" href="group__bodies.html#g578137bbaf82d4b8896d2baee3a032a6" title="Create a body in given world.">dBodyCreate</a> (dWorldID);
177<a name="l00572"></a>00572
178<a name="l00581"></a>00581 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gc1a0ee96898f14017a29b2afa0eafe13" title="Destroy a body.">dBodyDestroy</a> (dBodyID);
179<a name="l00582"></a>00582
180<a name="l00588"></a>00588 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gf9cbe9e1ed1bd4559bb5603b8d0f92f2" title="Set the body&amp;#39;s user-data pointer.">dBodySetData</a> (dBodyID, <span class="keywordtype">void</span> *data);
181<a name="l00589"></a>00589
182<a name="l00595"></a>00595 ODE_API <span class="keywordtype">void</span> *<a class="code" href="group__bodies.html#g68d3d80c7476776dd4512d577bf70325" title="Get the body&amp;#39;s user-data pointer.">dBodyGetData</a> (dBodyID);
183<a name="l00596"></a>00596
184<a name="l00605"></a>00605 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gb84612b793366f18ff5b5cbdbed092da" title="Set position of a body.">dBodySetPosition</a> (dBodyID, dReal x, dReal y, dReal z);
185<a name="l00606"></a>00606
186<a name="l00615"></a>00615 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gb5f04968ec37ef46d2aaffad6c344468" title="Set the orientation of a body.">dBodySetRotation</a> (dBodyID, <span class="keyword">const</span> dMatrix3 R);
187<a name="l00616"></a>00616
188<a name="l00625"></a>00625 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#ga5f51dd3605c402320e9eae4231d7ad4" title="Set the orientation of a body.">dBodySetQuaternion</a> (dBodyID, <span class="keyword">const</span> dQuaternion q);
189<a name="l00626"></a>00626
190<a name="l00631"></a>00631 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gafe72e03c1df0f2150e2d7b8677e1460" title="Set the linear velocity of a body.">dBodySetLinearVel</a> (dBodyID, dReal x, dReal y, dReal z);
191<a name="l00632"></a>00632
192<a name="l00637"></a>00637 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g7b4f90c1986333395375c086c4f3ec41" title="Set the angular velocity of a body.">dBodySetAngularVel</a> (dBodyID, dReal x, dReal y, dReal z);
193<a name="l00638"></a>00638
194<a name="l00648"></a>00648 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__bodies.html#g2bddae29591b9f14c5175411b783d570" title="Get the position of a body.">dBodyGetPosition</a> (dBodyID);
195<a name="l00649"></a>00649
196<a name="l00650"></a>00650
197<a name="l00658"></a>00658 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gf69c1ebd1c8d7d165fe740c9f1146217" title="Copy the position of a body into a vector.">dBodyCopyPosition</a> (dBodyID body, dVector3 pos);
198<a name="l00659"></a>00659
199<a name="l00660"></a>00660
200<a name="l00666"></a>00666 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__bodies.html#g2374da7ff88a2bac607e2fbce529ad27" title="Get the rotation of a body.">dBodyGetRotation</a> (dBodyID);
201<a name="l00667"></a>00667
202<a name="l00668"></a>00668
203<a name="l00676"></a>00676 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#ga992006681bc720c6c6ef644768226e5" title="Copy the rotation of a body.">dBodyCopyRotation</a> (dBodyID, dMatrix3 R);
204<a name="l00677"></a>00677
205<a name="l00678"></a>00678
206<a name="l00684"></a>00684 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__bodies.html#g36b7e19622ed47fe6b9dcfbac20237e7" title="Get the rotation of a body.">dBodyGetQuaternion</a> (dBodyID);
207<a name="l00685"></a>00685
208<a name="l00686"></a>00686
209<a name="l00694"></a>00694 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gd906c3ad061b7f70d1c60d6957aa2d0f" title="Copy the orientation of a body into a quaternion.">dBodyCopyQuaternion</a>(dBodyID body, dQuaternion quat);
210<a name="l00695"></a>00695
211<a name="l00696"></a>00696
212<a name="l00701"></a>00701 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__bodies.html#g2a0a986c12d53efd5a3753dd4b509cac" title="Get the linear velocity of a body.">dBodyGetLinearVel</a> (dBodyID);
213<a name="l00702"></a>00702
214<a name="l00707"></a>00707 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__bodies.html#g54dc73be9562cdece52d0a7d8decd1d0" title="Get the angular velocity of a body.">dBodyGetAngularVel</a> (dBodyID);
215<a name="l00708"></a>00708
216<a name="l00713"></a>00713 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gf3609b58548e34471ef8ad4727b33e52" title="Set the mass of a body.">dBodySetMass</a> (dBodyID, <span class="keyword">const</span> dMass *mass);
217<a name="l00714"></a>00714
218<a name="l00719"></a>00719 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g7aa7944f6e36a96d3e578f3369ac4171" title="Get the mass of a body.">dBodyGetMass</a> (dBodyID, dMass *mass);
219<a name="l00720"></a>00720
220<a name="l00725"></a>00725 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g1e1352dc350ad42bff5818f2200ba792" title="Add force at centre of mass of body in absolute coordinates.">dBodyAddForce</a> (dBodyID, dReal fx, dReal fy, dReal fz);
221<a name="l00726"></a>00726
222<a name="l00731"></a>00731 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g8378560dd168ee8d7a4b74e3de510ebc" title="Add torque at centre of mass of body in absolute coordinates.">dBodyAddTorque</a> (dBodyID, dReal fx, dReal fy, dReal fz);
223<a name="l00732"></a>00732
224<a name="l00737"></a>00737 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g0a91e5416c5af7729177c465346837ad" title="Add force at centre of mass of body in coordinates relative to body.">dBodyAddRelForce</a> (dBodyID, dReal fx, dReal fy, dReal fz);
225<a name="l00738"></a>00738
226<a name="l00743"></a>00743 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g172a59e64f6dfa4a59bcd45b694585de" title="Add torque at centre of mass of body in coordinates relative to body.">dBodyAddRelTorque</a> (dBodyID, dReal fx, dReal fy, dReal fz);
227<a name="l00744"></a>00744
228<a name="l00749"></a>00749 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gfa134c6b7b455680b890b677c5789c2b" title="Add force at specified point in body in global coordinates.">dBodyAddForceAtPos</a> (dBodyID, dReal fx, dReal fy, dReal fz,
229<a name="l00750"></a>00750 dReal px, dReal py, dReal pz);
230<a name="l00755"></a>00755 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g77606cdb23029337a7ed43dee5a59ee1" title="Add force at specified point in body in local coordinates.">dBodyAddForceAtRelPos</a> (dBodyID, dReal fx, dReal fy, dReal fz,
231<a name="l00756"></a>00756 dReal px, dReal py, dReal pz);
232<a name="l00761"></a>00761 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#ga024b08f8dfb85705b86e18b99a0ef8e" title="Add force at specified point in body in global coordinates.">dBodyAddRelForceAtPos</a> (dBodyID, dReal fx, dReal fy, dReal fz,
233<a name="l00762"></a>00762 dReal px, dReal py, dReal pz);
234<a name="l00767"></a>00767 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g7e5d20b6bb36f74d0dedb08f5eefddcb" title="Add force at specified point in body in local coordinates.">dBodyAddRelForceAtRelPos</a> (dBodyID, dReal fx, dReal fy, dReal fz,
235<a name="l00768"></a>00768 dReal px, dReal py, dReal pz);
236<a name="l00769"></a>00769
237<a name="l00779"></a>00779 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__bodies.html#g3b458397a79f09b1957cb6e5a85e9eba" title="Return the current accumulated force vector.">dBodyGetForce</a> (dBodyID);
238<a name="l00780"></a>00780
239<a name="l00790"></a>00790 ODE_API <span class="keyword">const</span> dReal * <a class="code" href="group__bodies.html#gfe88a5bc363fc812c8f154e3d5f8ea5d" title="Return the current accumulated torque vector.">dBodyGetTorque</a> (dBodyID);
240<a name="l00791"></a>00791
241<a name="l00800"></a>00800 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gbd56079db36d4562db0e18aebea4f95f" title="Set the body force accumulation vector.">dBodySetForce</a> (dBodyID b, dReal x, dReal y, dReal z);
242<a name="l00801"></a>00801
243<a name="l00810"></a>00810 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gfcd3e44223a878ba52428ad3a124fa94" title="Set the body torque accumulation vector.">dBodySetTorque</a> (dBodyID b, dReal x, dReal y, dReal z);
244<a name="l00811"></a>00811
245<a name="l00817"></a>00817 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gfcf00cd9c4c754c82189fb9d1eb9f102" title="Get world position of a relative point on body.">dBodyGetRelPointPos</a>
246<a name="l00818"></a>00818 (
247<a name="l00819"></a>00819 dBodyID, dReal px, dReal py, dReal pz,
248<a name="l00820"></a>00820 dVector3 result
249<a name="l00821"></a>00821 );
250<a name="l00822"></a>00822
251<a name="l00828"></a>00828 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g7fd4f4c7e70c59380da11277b2e97510" title="Get velocity vector in global coords of a relative point on body.">dBodyGetRelPointVel</a>
252<a name="l00829"></a>00829 (
253<a name="l00830"></a>00830 dBodyID, dReal px, dReal py, dReal pz,
254<a name="l00831"></a>00831 dVector3 result
255<a name="l00832"></a>00832 );
256<a name="l00833"></a>00833
257<a name="l00840"></a>00840 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g89dd6a4a3c6f3cd98c8377e8d4dec015" title="Get velocity vector in global coords of a globally specified point on a body.">dBodyGetPointVel</a>
258<a name="l00841"></a>00841 (
259<a name="l00842"></a>00842 dBodyID, dReal px, dReal py, dReal pz,
260<a name="l00843"></a>00843 dVector3 result
261<a name="l00844"></a>00844 );
262<a name="l00845"></a>00845
263<a name="l00854"></a>00854 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g0334d9d523cbfeec742ac4a814834199" title="takes a point in global coordinates and returns the point&amp;#39;s position in body-relative...">dBodyGetPosRelPoint</a>
264<a name="l00855"></a>00855 (
265<a name="l00856"></a>00856 dBodyID, dReal px, dReal py, dReal pz,
266<a name="l00857"></a>00857 dVector3 result
267<a name="l00858"></a>00858 );
268<a name="l00859"></a>00859
269<a name="l00865"></a>00865 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g0a2cd6f7499bcfeb8275cbb981465bbf" title="Convert from local to world coordinates.">dBodyVectorToWorld</a>
270<a name="l00866"></a>00866 (
271<a name="l00867"></a>00867 dBodyID, dReal px, dReal py, dReal pz,
272<a name="l00868"></a>00868 dVector3 result
273<a name="l00869"></a>00869 );
274<a name="l00870"></a>00870
275<a name="l00876"></a>00876 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g1e3ac3ef038e806d4942ea8b399ab575" title="Convert from world to local coordinates.">dBodyVectorFromWorld</a>
276<a name="l00877"></a>00877 (
277<a name="l00878"></a>00878 dBodyID, dReal px, dReal py, dReal pz,
278<a name="l00879"></a>00879 dVector3 result
279<a name="l00880"></a>00880 );
280<a name="l00881"></a>00881
281<a name="l00899"></a>00899 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gc474ca36d734fb67b8bd504b672527fa" title="controls the way a body&amp;#39;s orientation is updated at each timestep.">dBodySetFiniteRotationMode</a> (dBodyID, <span class="keywordtype">int</span> mode);
282<a name="l00900"></a>00900
283<a name="l00917"></a>00917 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#ga9546c1ea6119fcbf80c71a96f56d052" title="sets the finite rotation axis for a body.">dBodySetFiniteRotationAxis</a> (dBodyID, dReal x, dReal y, dReal z);
284<a name="l00918"></a>00918
285<a name="l00924"></a>00924 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__bodies.html#g3fb10ac984d64c92e4f138e50b704f9e" title="Get the way a body&amp;#39;s orientation is updated each timestep.">dBodyGetFiniteRotationMode</a> (dBodyID);
286<a name="l00925"></a>00925
287<a name="l00931"></a>00931 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gfc8853ff678be731881665ff7abf61ad" title="Get the finite rotation axis.">dBodyGetFiniteRotationAxis</a> (dBodyID, dVector3 result);
288<a name="l00932"></a>00932
289<a name="l00938"></a>00938 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__bodies.html#g79fd517a57ac9c3594cb71850f649af7" title="Get the number of joints that are attached to this body.">dBodyGetNumJoints</a> (dBodyID b);
290<a name="l00939"></a>00939
291<a name="l00946"></a>00946 ODE_API dJointID <a class="code" href="group__bodies.html#g095e41c5b5632b22aa9bd1a4bd051f8d" title="Return a joint attached to this body, given by index.">dBodyGetJoint</a> (dBodyID, <span class="keywordtype">int</span> index);
292<a name="l00947"></a>00947
293<a name="l00953"></a>00953 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#gd0776c40f667b235f8642e10755543f8" title="Manually enable a body.">dBodyEnable</a> (dBodyID);
294<a name="l00954"></a>00954
295<a name="l00962"></a>00962 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#ga78092d7cadae36373441aa9be7e6157" title="Manually disable a body.">dBodyDisable</a> (dBodyID);
296<a name="l00963"></a>00963
297<a name="l00969"></a>00969 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__bodies.html#g7e7803132dfcfceee04a6ab0ca1e0bf8" title="Check wether a body is enabled.">dBodyIsEnabled</a> (dBodyID);
298<a name="l00970"></a>00970
299<a name="l00978"></a>00978 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__bodies.html#g5465d605e7fbe82d63a0d4e1000da731" title="Set whether the body is influenced by the world&amp;#39;s gravity or not.">dBodySetGravityMode</a> (dBodyID b, <span class="keywordtype">int</span> mode);
300<a name="l00979"></a>00979
301<a name="l00985"></a>00985 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__bodies.html#g0df2f4fed454c567f10fc8bbb8c70455" title="Get whether the body is influenced by the world&amp;#39;s gravity or not.">dBodyGetGravityMode</a> (dBodyID b);
302<a name="l00986"></a>00986
303<a name="l00987"></a>00987
304<a name="l00988"></a>00988
305<a name="l01064"></a>01064 ODE_API dJointID <a class="code" href="group__joints.html#g2d23509f8d6c6066b361af4cf14166f7" title="Create a new joint of the ball type.">dJointCreateBall</a> (dWorldID, dJointGroupID);
306<a name="l01065"></a>01065
307<a name="l01072"></a>01072 ODE_API dJointID <a class="code" href="group__joints.html#g2f18d431d48c905abc9d72ce011c00bd" title="Create a new joint of the hinge type.">dJointCreateHinge</a> (dWorldID, dJointGroupID);
308<a name="l01073"></a>01073
309<a name="l01080"></a>01080 ODE_API dJointID <a class="code" href="group__joints.html#geccc4c67b2d409016685a6a9163be539" title="Create a new joint of the slider type.">dJointCreateSlider</a> (dWorldID, dJointGroupID);
310<a name="l01081"></a>01081
311<a name="l01088"></a>01088 ODE_API dJointID <a class="code" href="group__joints.html#gfa5e1543239ba44ecbdc178ebc7c3cc4" title="Create a new joint of the contact type.">dJointCreateContact</a> (dWorldID, dJointGroupID, <span class="keyword">const</span> dContact *);
312<a name="l01089"></a>01089
313<a name="l01096"></a>01096 ODE_API dJointID <a class="code" href="group__joints.html#g6a6e32d35bdda9352d1be8d4df973f8f" title="Create a new joint of the hinge2 type.">dJointCreateHinge2</a> (dWorldID, dJointGroupID);
314<a name="l01097"></a>01097
315<a name="l01104"></a>01104 ODE_API dJointID <a class="code" href="group__joints.html#g1cb2e7668242313b5d24acb5d43e5c62" title="Create a new joint of the universal type.">dJointCreateUniversal</a> (dWorldID, dJointGroupID);
316<a name="l01105"></a>01105
317<a name="l01112"></a>01112 ODE_API dJointID <a class="code" href="group__joints.html#gdc867f10ba9931d191244fa879e43cb2" title="Create a new joint of the PR (Prismatic and Rotoide) type.">dJointCreatePR</a> (dWorldID, dJointGroupID);
318<a name="l01113"></a>01113
319<a name="l01120"></a>01120 ODE_API dJointID <a class="code" href="group__joints.html#ge568995d03077e1acb13882a627dcf32" title="Create a new joint of the fixed type.">dJointCreateFixed</a> (dWorldID, dJointGroupID);
320<a name="l01121"></a>01121
321<a name="l01122"></a>01122 ODE_API dJointID dJointCreateNull (dWorldID, dJointGroupID);
322<a name="l01123"></a>01123
323<a name="l01130"></a>01130 ODE_API dJointID <a class="code" href="group__joints.html#gf23195ce77e12031393e591abd0e28e6" title="Create a new joint of the A-motor type.">dJointCreateAMotor</a> (dWorldID, dJointGroupID);
324<a name="l01131"></a>01131
325<a name="l01138"></a>01138 ODE_API dJointID <a class="code" href="group__joints.html#g21c8c99615269c5d9d3c57c674f6fd56" title="Create a new joint of the L-motor type.">dJointCreateLMotor</a> (dWorldID, dJointGroupID);
326<a name="l01139"></a>01139
327<a name="l01146"></a>01146 ODE_API dJointID <a class="code" href="group__joints.html#g7e68f39530acad9c0e7a38c8a3799b38" title="Create a new joint of the plane-2d type.">dJointCreatePlane2D</a> (dWorldID, dJointGroupID);
328<a name="l01147"></a>01147
329<a name="l01156"></a>01156 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (dJointID);
330<a name="l01157"></a>01157
331<a name="l01158"></a>01158
332<a name="l01164"></a>01164 ODE_API dJointGroupID <a class="code" href="group__joints.html#gaaec687b184a1214133a41503e7c628f" title="Create a joint group.">dJointGroupCreate</a> (<span class="keywordtype">int</span> max_size);
333<a name="l01165"></a>01165
334<a name="l01172"></a>01172 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g49e664ee9a8bd7bfe5e6932bf936bb8f" title="Destroy a joint group.">dJointGroupDestroy</a> (dJointGroupID);
335<a name="l01173"></a>01173
336<a name="l01181"></a>01181 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g6e055bac8a0a3261bda3b6d07499c4ea" title="Empty a joint group.">dJointGroupEmpty</a> (dJointGroupID);
337<a name="l01182"></a>01182
338<a name="l01196"></a>01196 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g8f1c9b1302c799a1b87bc29b76d0dcec" title="Attach the joint to some new bodies.">dJointAttach</a> (dJointID, dBodyID body1, dBodyID body2);
339<a name="l01197"></a>01197
340<a name="l01202"></a>01202 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g5ca72d8bd498ef1ba920b0b473e79d02" title="Set the user-data pointer.">dJointSetData</a> (dJointID, <span class="keywordtype">void</span> *data);
341<a name="l01203"></a>01203
342<a name="l01208"></a>01208 ODE_API <span class="keywordtype">void</span> *<a class="code" href="group__joints.html#g607702a11bae2d2613295f67088b0e82" title="Get the user-data pointer.">dJointGetData</a> (dJointID);
343<a name="l01209"></a>01209
344<a name="l01224"></a>01224 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__joints.html#g6f12f69d9b1a457428a28c2f77148174" title="Get the type of the joint.">dJointGetType</a> (dJointID);
345<a name="l01225"></a>01225
346<a name="l01236"></a>01236 ODE_API dBodyID <a class="code" href="group__joints.html#gff13cbb464f1bfdc225fc9202c2c54c3" title="Return the bodies that this joint connects.">dJointGetBody</a> (dJointID, <span class="keywordtype">int</span> index);
347<a name="l01237"></a>01237
348<a name="l01245"></a>01245 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g87ddb9beb95e9383a4280cb8a4186f01" title="Sets the datastructure that is to receive the feedback.">dJointSetFeedback</a> (dJointID, dJointFeedback *);
349<a name="l01246"></a>01246
350<a name="l01251"></a>01251 ODE_API dJointFeedback *<a class="code" href="group__joints.html#gda1deef60d7afbb6b9375ddbf97e09a1" title="Gets the datastructure that is to receive the feedback.">dJointGetFeedback</a> (dJointID);
351<a name="l01252"></a>01252
352<a name="l01260"></a>01260 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g058c33a3da1ff935a1125034f779dc4a" title="Set the joint anchor point.">dJointSetBallAnchor</a> (dJointID, dReal x, dReal y, dReal z);
353<a name="l01261"></a>01261
354<a name="l01266"></a>01266 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g51eb42782182a714be26bbd68f7a6d9a" title="Set the joint anchor point.">dJointSetBallAnchor2</a> (dJointID, dReal x, dReal y, dReal z);
355<a name="l01267"></a>01267
356<a name="l01272"></a>01272 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ge58f5e11c0829aa8615622a74dd11d85" title="Param setting for Ball joints.">dJointSetBallParam</a> (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
357<a name="l01273"></a>01273
358<a name="l01278"></a>01278 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gc5727a125de0abbe2abd61af7a55da26" title="Set hinge anchor parameter.">dJointSetHingeAnchor</a> (dJointID, dReal x, dReal y, dReal z);
359<a name="l01279"></a>01279
360<a name="l01280"></a>01280 ODE_API <span class="keywordtype">void</span> dJointSetHingeAnchorDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
361<a name="l01281"></a>01281
362<a name="l01286"></a>01286 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ga434229f033472ec7aa031a01c6cabed" title="Set hinge axis.">dJointSetHingeAxis</a> (dJointID, dReal x, dReal y, dReal z);
363<a name="l01287"></a>01287
364<a name="l01292"></a>01292 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g6f9d34a01181e65639eb1f67da7a3e4c" title="set joint parameter">dJointSetHingeParam</a> (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
365<a name="l01293"></a>01293
366<a name="l01302"></a>01302 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ga1725abe170f80b0731321ed38785019" title="Applies the torque about the hinge axis.">dJointAddHingeTorque</a>(dJointID joint, dReal torque);
367<a name="l01303"></a>01303
368<a name="l01308"></a>01308 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gb2f662b1190507551f49ffa29d276b61" title="set the joint axis">dJointSetSliderAxis</a> (dJointID, dReal x, dReal y, dReal z);
369<a name="l01309"></a>01309
370<a name="l01313"></a>01313 ODE_API <span class="keywordtype">void</span> dJointSetSliderAxisDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
371<a name="l01314"></a>01314
372<a name="l01319"></a>01319 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g648964f4ca4122309e71a9cc6c24c985" title="set joint parameter">dJointSetSliderParam</a> (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
373<a name="l01320"></a>01320
374<a name="l01329"></a>01329 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g8b0e018cc3df6ea5ddb42320913455e7" title="Applies the given force in the slider&amp;#39;s direction.">dJointAddSliderForce</a>(dJointID joint, dReal force);
375<a name="l01330"></a>01330
376<a name="l01335"></a>01335 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gf839c13fa85aff0287a87986ff447d29" title="set anchor">dJointSetHinge2Anchor</a> (dJointID, dReal x, dReal y, dReal z);
377<a name="l01336"></a>01336
378<a name="l01341"></a>01341 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gcdf78fbb0f5b0a09b4d3ac2059b07002" title="set axis">dJointSetHinge2Axis1</a> (dJointID, dReal x, dReal y, dReal z);
379<a name="l01342"></a>01342
380<a name="l01347"></a>01347 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gdfef9f6365c87dacb95b4850a9e9f0ee" title="set axis">dJointSetHinge2Axis2</a> (dJointID, dReal x, dReal y, dReal z);
381<a name="l01348"></a>01348
382<a name="l01353"></a>01353 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g9a2d8d03776ccb22869667337457a7a9" title="set joint parameter">dJointSetHinge2Param</a> (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
383<a name="l01354"></a>01354
384<a name="l01361"></a>01361 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ga5ba1541d092f28c93b1bdc3bfb1b69f" title="Applies torque1 about the hinge2&amp;#39;s axis 1, torque2 about the hinge2&amp;#39;s axis...">dJointAddHinge2Torques</a>(dJointID joint, dReal torque1, dReal torque2);
385<a name="l01362"></a>01362
386<a name="l01367"></a>01367 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gaf4657aed67f3cd7cce775215995c05d" title="set anchor">dJointSetUniversalAnchor</a> (dJointID, dReal x, dReal y, dReal z);
387<a name="l01368"></a>01368
388<a name="l01373"></a>01373 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ge0a831da9447ff65d76a0808502038e8" title="set axis">dJointSetUniversalAxis1</a> (dJointID, dReal x, dReal y, dReal z);
389<a name="l01374"></a>01374
390<a name="l01379"></a>01379 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gf3668eed7dc5aaf8fee19d7f87347343" title="set axis">dJointSetUniversalAxis2</a> (dJointID, dReal x, dReal y, dReal z);
391<a name="l01380"></a>01380
392<a name="l01385"></a>01385 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g3c58284c43e997a028b06dc250064e32" title="set joint parameter">dJointSetUniversalParam</a> (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
393<a name="l01386"></a>01386
394<a name="l01393"></a>01393 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g36607569e2ee26f39d3d42cba2397898" title="Applies torque1 about the universal&amp;#39;s axis 1, torque2 about the universal&amp;#39;s...">dJointAddUniversalTorques</a>(dJointID joint, dReal torque1, dReal torque2);
395<a name="l01394"></a>01394
396<a name="l01395"></a>01395
397<a name="l01400"></a>01400 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ge46251e2cea2d31521b1fb9b151f640f" title="set anchor">dJointSetPRAnchor</a> (dJointID, dReal x, dReal y, dReal z);
398<a name="l01401"></a>01401
399<a name="l01406"></a>01406 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ga2ae3ab1fa58ec22bd443476f786fa81" title="set the axis for the prismatic articulation">dJointSetPRAxis1</a> (dJointID, dReal x, dReal y, dReal z);
400<a name="l01407"></a>01407
401<a name="l01412"></a>01412 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gc8c61c6dd7b28a58a4c0eaf2e91ecbd5" title="set the axis for the rotoide articulation">dJointSetPRAxis2</a> (dJointID, dReal x, dReal y, dReal z);
402<a name="l01413"></a>01413
403<a name="l01420"></a>01420 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gc08a28659605f17307d563f45db0824b" title="set joint parameter">dJointSetPRParam</a> (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
404<a name="l01421"></a>01421
405<a name="l01430"></a>01430 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ge675b0e0e332ddcd907ac9d1461b1961" title="Applies the torque about the rotoide axis of the PR joint.">dJointAddPRTorque</a> (dJointID j, dReal torque);
406<a name="l01431"></a>01431
407<a name="l01432"></a>01432
408<a name="l01439"></a>01439 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g8051a8232b4232f7b0d0fd57a3932072" title="Call this on the fixed joint after it has been attached to remember the current desired...">dJointSetFixed</a> (dJointID);
409<a name="l01440"></a>01440
410<a name="l01441"></a>01441 <span class="comment">/*</span>
411<a name="l01442"></a>01442 <span class="comment"> * @brief Sets joint parameter</span>
412<a name="l01443"></a>01443 <span class="comment"> *</span>
413<a name="l01444"></a>01444 <span class="comment"> * @ingroup joints</span>
414<a name="l01445"></a>01445 <span class="comment"> */</span>
415<a name="l01446"></a>01446 ODE_API <span class="keywordtype">void</span> dJointSetFixedParam (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
416<a name="l01447"></a>01447
417<a name="l01453"></a>01453 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g1406f976045a1b7edffbb46bf626d04f" title="set the nr of axes">dJointSetAMotorNumAxes</a> (dJointID, <span class="keywordtype">int</span> num);
418<a name="l01454"></a>01454
419<a name="l01459"></a>01459 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gbef7d92227b62e04b60eb9df02359603" title="set axis">dJointSetAMotorAxis</a> (dJointID, <span class="keywordtype">int</span> anum, <span class="keywordtype">int</span> rel,
420<a name="l01460"></a>01460 dReal x, dReal y, dReal z);
421<a name="l01461"></a>01461
422<a name="l01471"></a>01471 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g17b2089e6512e22d71340befb40100d2" title="Tell the AMotor what the current angle is along axis anum.">dJointSetAMotorAngle</a> (dJointID, <span class="keywordtype">int</span> anum, dReal angle);
423<a name="l01472"></a>01472
424<a name="l01477"></a>01477 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gac3f00196ee0cdb772e00dc259ef639a" title="set joint parameter">dJointSetAMotorParam</a> (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
425<a name="l01478"></a>01478
426<a name="l01483"></a>01483 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gb0a3a8527810717c62a2c68dc4dfa822" title="set mode">dJointSetAMotorMode</a> (dJointID, <span class="keywordtype">int</span> mode);
427<a name="l01484"></a>01484
428<a name="l01493"></a>01493 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g69d13d54516716020d2adb841699b77b" title="Applies torque0 about the AMotor&amp;#39;s axis 0, torque1 about the AMotor&amp;#39;s axis...">dJointAddAMotorTorques</a> (dJointID, dReal torque1, dReal torque2, dReal torque3);
429<a name="l01494"></a>01494
430<a name="l01500"></a>01500 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gcbfb4014567d69010aba3024d9b7bccd" title="Set the number of axes that will be controlled by the LMotor.">dJointSetLMotorNumAxes</a> (dJointID, <span class="keywordtype">int</span> num);
431<a name="l01501"></a>01501
432<a name="l01513"></a>01513 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g080b7739f5b2b37a798742cee0ef38a4" title="Set the AMotor axes.">dJointSetLMotorAxis</a> (dJointID, <span class="keywordtype">int</span> anum, <span class="keywordtype">int</span> rel, dReal x, dReal y, dReal z);
433<a name="l01514"></a>01514
434<a name="l01519"></a>01519 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g791bfa6e65d0c3dce99ca0bcd3beb8d6" title="set joint parameter">dJointSetLMotorParam</a> (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
435<a name="l01520"></a>01520
436<a name="l01524"></a>01524 ODE_API <span class="keywordtype">void</span> dJointSetPlane2DXParam (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
437<a name="l01525"></a>01525
438<a name="l01530"></a>01530 ODE_API <span class="keywordtype">void</span> dJointSetPlane2DYParam (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
439<a name="l01531"></a>01531
440<a name="l01535"></a>01535 ODE_API <span class="keywordtype">void</span> dJointSetPlane2DAngleParam (dJointID, <span class="keywordtype">int</span> parameter, dReal value);
441<a name="l01536"></a>01536
442<a name="l01543"></a>01543 ODE_API <span class="keywordtype">void</span> dJointGetBallAnchor (dJointID, dVector3 result);
443<a name="l01544"></a>01544
444<a name="l01555"></a>01555 ODE_API <span class="keywordtype">void</span> dJointGetBallAnchor2 (dJointID, dVector3 result);
445<a name="l01556"></a>01556
446<a name="l01561"></a>01561 ODE_API dReal <a class="code" href="group__joints.html#g20a27c479a75443552942059542f26ad" title="get joint parameter">dJointGetBallParam</a> (dJointID, <span class="keywordtype">int</span> parameter);
447<a name="l01562"></a>01562
448<a name="l01570"></a>01570 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g1d1c4f9b10c550f6fec550f9cc80c7ab" title="Get the hinge anchor point, in world coordinates.">dJointGetHingeAnchor</a> (dJointID, dVector3 result);
449<a name="l01571"></a>01571
450<a name="l01580"></a>01580 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gfdc1d9c7bd8824ec3e79cc5aa67ddfa1" title="Get the joint anchor point, in world coordinates.">dJointGetHingeAnchor2</a> (dJointID, dVector3 result);
451<a name="l01581"></a>01581
452<a name="l01586"></a>01586 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g17b812897bc5faab33584cc5e3e4d3a4" title="get axis">dJointGetHingeAxis</a> (dJointID, dVector3 result);
453<a name="l01587"></a>01587
454<a name="l01592"></a>01592 ODE_API dReal <a class="code" href="group__joints.html#g43416613e72d1b16a32331a0ba3c7d70" title="get joint parameter">dJointGetHingeParam</a> (dJointID, <span class="keywordtype">int</span> parameter);
455<a name="l01593"></a>01593
456<a name="l01604"></a>01604 ODE_API dReal <a class="code" href="group__joints.html#g7ca6bdfe2b919b6bc2a27ba6f0e069f0" title="Get the hinge angle.">dJointGetHingeAngle</a> (dJointID);
457<a name="l01605"></a>01605
458<a name="l01610"></a>01610 ODE_API dReal <a class="code" href="group__joints.html#g0d92377b748eb468dc38252df12afc76" title="Get the hinge angle time derivative.">dJointGetHingeAngleRate</a> (dJointID);
459<a name="l01611"></a>01611
460<a name="l01619"></a>01619 ODE_API dReal <a class="code" href="group__joints.html#g7f35449914cbc4a86b845dcd85a617c0" title="Get the slider linear position (i.e. the slider&amp;#39;s extension).">dJointGetSliderPosition</a> (dJointID);
461<a name="l01620"></a>01620
462<a name="l01625"></a>01625 ODE_API dReal <a class="code" href="group__joints.html#g93378c9c2d0cd50c79cfb78ca881f8ec" title="Get the slider linear position&amp;#39;s time derivative.">dJointGetSliderPositionRate</a> (dJointID);
463<a name="l01626"></a>01626
464<a name="l01631"></a>01631 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g17e31e7a877446213c39d1431269788e" title="Get the slider axis.">dJointGetSliderAxis</a> (dJointID, dVector3 result);
465<a name="l01632"></a>01632
466<a name="l01637"></a>01637 ODE_API dReal <a class="code" href="group__joints.html#gc76d8bb4bf8587af70ef5932025048fe" title="get joint parameter">dJointGetSliderParam</a> (dJointID, <span class="keywordtype">int</span> parameter);
467<a name="l01638"></a>01638
468<a name="l01645"></a>01645 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g879999d011f82c73acf94029132cc198" title="Get the joint anchor point, in world coordinates.">dJointGetHinge2Anchor</a> (dJointID, dVector3 result);
469<a name="l01646"></a>01646
470<a name="l01655"></a>01655 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ga67cde755a0c9b699859ead5b5c81d26" title="Get the joint anchor point, in world coordinates. This returns the point on body...">dJointGetHinge2Anchor2</a> (dJointID, dVector3 result);
471<a name="l01656"></a>01656
472<a name="l01661"></a>01661 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g5d3e60c78ed85e8086dd60b13c3054f5" title="Get joint axis.">dJointGetHinge2Axis1</a> (dJointID, dVector3 result);
473<a name="l01662"></a>01662
474<a name="l01667"></a>01667 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g9459009e9370ea1a1e4de10f60053c87" title="Get joint axis.">dJointGetHinge2Axis2</a> (dJointID, dVector3 result);
475<a name="l01668"></a>01668
476<a name="l01673"></a>01673 ODE_API dReal <a class="code" href="group__joints.html#g9fe8b60ba59aa9451e5758491e34045a" title="get joint parameter">dJointGetHinge2Param</a> (dJointID, <span class="keywordtype">int</span> parameter);
477<a name="l01674"></a>01674
478<a name="l01679"></a>01679 ODE_API dReal <a class="code" href="group__joints.html#g430ed7cafe907e88929b28fdb17533c0" title="Get angle.">dJointGetHinge2Angle1</a> (dJointID);
479<a name="l01680"></a>01680
480<a name="l01685"></a>01685 ODE_API dReal <a class="code" href="group__joints.html#g61881501e905ec1072aba05464fe44fb" title="Get time derivative of angle.">dJointGetHinge2Angle1Rate</a> (dJointID);
481<a name="l01686"></a>01686
482<a name="l01691"></a>01691 ODE_API dReal <a class="code" href="group__joints.html#g028c47d8ff409f6856492d9eb0367c8a" title="Get time derivative of angle.">dJointGetHinge2Angle2Rate</a> (dJointID);
483<a name="l01692"></a>01692
484<a name="l01699"></a>01699 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#ga768432c561cb76ba2490913f42d1aaf" title="Get the joint anchor point, in world coordinates.">dJointGetUniversalAnchor</a> (dJointID, dVector3 result);
485<a name="l01700"></a>01700
486<a name="l01714"></a>01714 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g00d5018903a90d75c324c4f870b0e7ea" title="Get the joint anchor point, in world coordinates.">dJointGetUniversalAnchor2</a> (dJointID, dVector3 result);
487<a name="l01715"></a>01715
488<a name="l01720"></a>01720 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#geaa8e546d93c304755a86ad3fa6d2abe" title="Get axis.">dJointGetUniversalAxis1</a> (dJointID, dVector3 result);
489<a name="l01721"></a>01721
490<a name="l01726"></a>01726 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g13c01cbc9c5e918740bac0540f6473b3" title="Get axis.">dJointGetUniversalAxis2</a> (dJointID, dVector3 result);
491<a name="l01727"></a>01727
492<a name="l01728"></a>01728
493<a name="l01733"></a>01733 ODE_API dReal <a class="code" href="group__joints.html#gf96e70e676058b7eb385f5810fec641a" title="get joint parameter">dJointGetUniversalParam</a> (dJointID, <span class="keywordtype">int</span> parameter);
494<a name="l01734"></a>01734
495<a name="l01746"></a>01746 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g3c0fafbd1ccd8e450c01012ce600f6ab" title="Get both angles at the same time.">dJointGetUniversalAngles</a> (dJointID, dReal *angle1, dReal *angle2);
496<a name="l01747"></a>01747
497<a name="l01752"></a>01752 ODE_API dReal <a class="code" href="group__joints.html#g3a08e2fed2e88eb0c964a33fb8c0c61f" title="Get angle.">dJointGetUniversalAngle1</a> (dJointID);
498<a name="l01753"></a>01753
499<a name="l01758"></a>01758 ODE_API dReal <a class="code" href="group__joints.html#g4026a7331d7956eef31e72e20e0c703b" title="Get angle.">dJointGetUniversalAngle2</a> (dJointID);
500<a name="l01759"></a>01759
501<a name="l01764"></a>01764 ODE_API dReal <a class="code" href="group__joints.html#g1f8ff99b6c33d3da2004a8846112427c" title="Get time derivative of angle.">dJointGetUniversalAngle1Rate</a> (dJointID);
502<a name="l01765"></a>01765
503<a name="l01770"></a>01770 ODE_API dReal <a class="code" href="group__joints.html#g94fb28ecb65cb0711b555558c22396cf" title="Get time derivative of angle.">dJointGetUniversalAngle2Rate</a> (dJointID);
504<a name="l01771"></a>01771
505<a name="l01772"></a>01772
506<a name="l01773"></a>01773
507<a name="l01780"></a>01780 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g88b176c70948c3f96e5c9173904b04fe" title="Get the joint anchor point, in world coordinates.">dJointGetPRAnchor</a> (dJointID, dVector3 result);
508<a name="l01781"></a>01781
509<a name="l01793"></a>01793 ODE_API dReal <a class="code" href="group__joints.html#gd8b95871e93525f44badcdaf8e521da7" title="Get the PR linear position (i.e. the prismatic&amp;#39;s extension).">dJointGetPRPosition</a> (dJointID);
510<a name="l01794"></a>01794
511<a name="l01800"></a>01800 ODE_API dReal <a class="code" href="group__joints.html#gc3a434069c8bf31ae5140e2bff3bbb26" title="Get the PR linear position&amp;#39;s time derivative.">dJointGetPRPositionRate</a> (dJointID);
512<a name="l01801"></a>01801
513<a name="l01802"></a>01802
514<a name="l01807"></a>01807 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g826424aac5023739bb13426df672ab32" title="Get the prismatic axis.">dJointGetPRAxis1</a> (dJointID, dVector3 result);
515<a name="l01808"></a>01808
516<a name="l01813"></a>01813 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g5f175ed66c5df1119a251fad8a51059d" title="Get the Rotoide axis.">dJointGetPRAxis2</a> (dJointID, dVector3 result);
517<a name="l01814"></a>01814
518<a name="l01819"></a>01819 ODE_API dReal <a class="code" href="group__joints.html#g968b868bd1598b24a3101a04320206c6" title="get joint parameter">dJointGetPRParam</a> (dJointID, <span class="keywordtype">int</span> parameter);
519<a name="l01820"></a>01820
520<a name="l01821"></a>01821
521<a name="l01822"></a>01822
522<a name="l01831"></a>01831 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__joints.html#g35f0392af69ece0d0c3ef7ed88b532bf" title="Get the number of angular axes that will be controlled by the AMotor.">dJointGetAMotorNumAxes</a> (dJointID);
523<a name="l01832"></a>01832
524<a name="l01842"></a>01842 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#gef1af77cc19d81b24ad00025f3c9d5ec" title="Get the AMotor axes.">dJointGetAMotorAxis</a> (dJointID, <span class="keywordtype">int</span> anum, dVector3 result);
525<a name="l01843"></a>01843
526<a name="l01860"></a>01860 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__joints.html#g1887538374f044e22f9742650d14ae69" title="Get axis.">dJointGetAMotorAxisRel</a> (dJointID, <span class="keywordtype">int</span> anum);
527<a name="l01861"></a>01861
528<a name="l01870"></a>01870 ODE_API dReal <a class="code" href="group__joints.html#g3634444b00ac33a5f34a7af4fffda8b2" title="Get the current angle for axis.">dJointGetAMotorAngle</a> (dJointID, <span class="keywordtype">int</span> anum);
529<a name="l01871"></a>01871
530<a name="l01880"></a>01880 ODE_API dReal <a class="code" href="group__joints.html#ga65abc36177390330037299b689b70c7" title="Get the current angle rate for axis anum.">dJointGetAMotorAngleRate</a> (dJointID, <span class="keywordtype">int</span> anum);
531<a name="l01881"></a>01881
532<a name="l01886"></a>01886 ODE_API dReal <a class="code" href="group__joints.html#gfc4cd1046089baa4309d30ae7832d289" title="get joint parameter">dJointGetAMotorParam</a> (dJointID, <span class="keywordtype">int</span> parameter);
533<a name="l01887"></a>01887
534<a name="l01901"></a>01901 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__joints.html#gf2430c2062414bc28660bdc06a0d72d5" title="Get the angular motor mode.">dJointGetAMotorMode</a> (dJointID);
535<a name="l01902"></a>01902
536<a name="l01907"></a>01907 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__joints.html#g6d7557b5e94e0ee37561cadc5bf85cb7" title="Get nr of axes.">dJointGetLMotorNumAxes</a> (dJointID);
537<a name="l01908"></a>01908
538<a name="l01913"></a>01913 ODE_API <span class="keywordtype">void</span> <a class="code" href="group__joints.html#g4ef7e0ca633583e82d90679c8eb6d5c3" title="Get axis.">dJointGetLMotorAxis</a> (dJointID, <span class="keywordtype">int</span> anum, dVector3 result);
539<a name="l01914"></a>01914
540<a name="l01919"></a>01919 ODE_API dReal <a class="code" href="group__joints.html#gcbc48fd61857e3843923166abf81a7a0" title="get joint parameter">dJointGetLMotorParam</a> (dJointID, <span class="keywordtype">int</span> parameter);
541<a name="l01920"></a>01920
542<a name="l01925"></a>01925 ODE_API dReal <a class="code" href="group__joints.html#ge433a5eac5f8600d8e6325666c2e12c2" title="get joint parameter">dJointGetFixedParam</a> (dJointID, <span class="keywordtype">int</span> parameter);
543<a name="l01926"></a>01926
544<a name="l01927"></a>01927
545<a name="l01931"></a>01931 ODE_API dJointID dConnectingJoint (dBodyID, dBodyID);
546<a name="l01932"></a>01932
547<a name="l01936"></a>01936 ODE_API <span class="keywordtype">int</span> dConnectingJointList (dBodyID, dBodyID, dJointID*);
548<a name="l01937"></a>01937
549<a name="l01944"></a>01944 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__joints.html#g68eb2f4daea03713db4d8b4daca663ae" title="Utility function.">dAreConnected</a> (dBodyID, dBodyID);
550<a name="l01945"></a>01945
551<a name="l01959"></a>01959 ODE_API <span class="keywordtype">int</span> <a class="code" href="group__joints.html#gc1eafde1fde036633136be6fd254ca5d" title="Utility function.">dAreConnectedExcluding</a> (dBodyID body1, dBodyID body2, <span class="keywordtype">int</span> joint_type);
552<a name="l01960"></a>01960
553<a name="l01961"></a>01961
554<a name="l01962"></a>01962 <span class="preprocessor">#ifdef __cplusplus</span>
555<a name="l01963"></a>01963 <span class="preprocessor"></span>}
556<a name="l01964"></a>01964 <span class="preprocessor">#endif</span>
557<a name="l01965"></a>01965 <span class="preprocessor"></span>
558<a name="l01966"></a>01966 <span class="preprocessor">#endif</span>
559</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
560<a href="http://www.doxygen.org/index.html">
561<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
562</body>
563</html>
diff --git a/libraries/ode-0.9/docs/ode_8h-source.html b/libraries/ode-0.9/docs/ode_8h-source.html
new file mode 100644
index 0000000..6b083e0
--- /dev/null
+++ b/libraries/ode-0.9/docs/ode_8h-source.html
@@ -0,0 +1,67 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: ode.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>ode.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_ODE_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_ODE_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="comment">/* include *everything* here */</span>
42<a name="l00027"></a>00027
43<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ode/config.h&gt;</span>
44<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;ode/compatibility.h&gt;</span>
45<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
46<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;ode/contact.h&gt;</span>
47<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;ode/error.h&gt;</span>
48<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;ode/memory.h&gt;</span>
49<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;ode/odemath.h&gt;</span>
50<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;ode/matrix.h&gt;</span>
51<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;ode/timer.h&gt;</span>
52<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;ode/rotation.h&gt;</span>
53<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;ode/mass.h&gt;</span>
54<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;ode/misc.h&gt;</span>
55<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;ode/objects.h&gt;</span>
56<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;ode/odecpp.h&gt;</span>
57<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;ode/collision_space.h&gt;</span>
58<a name="l00043"></a>00043 <span class="preprocessor">#include &lt;ode/collision.h&gt;</span>
59<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;ode/odecpp_collision.h&gt;</span>
60<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;ode/export-dif.h&gt;</span>
61<a name="l00046"></a>00046
62<a name="l00047"></a>00047 <span class="preprocessor">#endif</span>
63</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
64<a href="http://www.doxygen.org/index.html">
65<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
66</body>
67</html>
diff --git a/libraries/ode-0.9/docs/odecpp_8h-source.html b/libraries/ode-0.9/docs/odecpp_8h-source.html
new file mode 100644
index 0000000..33c6dac
--- /dev/null
+++ b/libraries/ode-0.9/docs/odecpp_8h-source.html
@@ -0,0 +1,732 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: odecpp.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>odecpp.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="comment">/* C++ interface for non-collision stuff */</span>
39<a name="l00024"></a>00024
40<a name="l00025"></a>00025
41<a name="l00026"></a>00026 <span class="preprocessor">#ifndef _ODE_ODECPP_H_</span>
42<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_ODECPP_H_</span>
43<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#ifdef __cplusplus</span>
44<a name="l00029"></a>00029 <span class="preprocessor"></span>
45<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;ode/error.h&gt;</span>
46<a name="l00031"></a>00031
47<a name="l00032"></a>00032
48<a name="l00033"></a>00033 <span class="keyword">class </span>dWorld {
49<a name="l00034"></a>00034 dWorldID _id;
50<a name="l00035"></a>00035
51<a name="l00036"></a>00036 <span class="comment">// intentionally undefined, don't use these</span>
52<a name="l00037"></a>00037 dWorld (<span class="keyword">const</span> dWorld &amp;);
53<a name="l00038"></a>00038 <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dWorld &amp;);
54<a name="l00039"></a>00039
55<a name="l00040"></a>00040 <span class="keyword">public</span>:
56<a name="l00041"></a>00041 dWorld()
57<a name="l00042"></a>00042 { _id = <a class="code" href="group__world.html#g929067266d630fb745f752042d685fc7" title="Create a new, empty world and return its ID number.">dWorldCreate</a>(); }
58<a name="l00043"></a>00043 ~dWorld()
59<a name="l00044"></a>00044 { <a class="code" href="group__world.html#g5a2e5b1d2d6a1376dca239b488e629f9" title="Destroy a world and everything in it.">dWorldDestroy</a> (_id); }
60<a name="l00045"></a>00045
61<a name="l00046"></a>00046 dWorldID id()<span class="keyword"> const</span>
62<a name="l00047"></a>00047 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
63<a name="l00048"></a>00048 operator dWorldID()<span class="keyword"> const</span>
64<a name="l00049"></a>00049 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
65<a name="l00050"></a>00050
66<a name="l00051"></a>00051 <span class="keywordtype">void</span> setGravity (dReal x, dReal y, dReal z)
67<a name="l00052"></a>00052 { <a class="code" href="group__world.html#ga1b220b922215b335572c699cf8f8cad" title="Set the world&amp;#39;s global gravity vector.">dWorldSetGravity</a> (_id,x,y,z); }
68<a name="l00053"></a>00053 <span class="keywordtype">void</span> getGravity (dVector3 g)<span class="keyword"> const</span>
69<a name="l00054"></a>00054 <span class="keyword"> </span>{ <a class="code" href="group__world.html#ge1a29b6a91cc1910a982c916ae4dee4a" title="Get the gravity vector for a given world.">dWorldGetGravity</a> (_id,g); }
70<a name="l00055"></a>00055
71<a name="l00056"></a>00056 <span class="keywordtype">void</span> setERP (dReal erp)
72<a name="l00057"></a>00057 { <a class="code" href="group__world.html#gacd0778bdaa939d22f093fc2d5d5f868" title="Set the global ERP value, that controls how much error correction is performed in...">dWorldSetERP</a>(_id, erp); }
73<a name="l00058"></a>00058 dReal getERP()<span class="keyword"> const</span>
74<a name="l00059"></a>00059 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__world.html#g033cd87a0b22889a94d4d84149bda5a0" title="Get the error reduction parameter.">dWorldGetERP</a>(_id); }
75<a name="l00060"></a>00060
76<a name="l00061"></a>00061 <span class="keywordtype">void</span> setCFM (dReal cfm)
77<a name="l00062"></a>00062 { <a class="code" href="group__world.html#g8b7913fe46d0afc468418c655da79233" title="Set the global CFM (constraint force mixing) value.">dWorldSetCFM</a>(_id, cfm); }
78<a name="l00063"></a>00063 dReal getCFM()<span class="keyword"> const</span>
79<a name="l00064"></a>00064 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__world.html#gc7a431f2b3fc6f887fe91ad676828ba3" title="Get the constraint force mixing value.">dWorldGetCFM</a>(_id); }
80<a name="l00065"></a>00065
81<a name="l00066"></a>00066 <span class="keywordtype">void</span> step (dReal stepsize)
82<a name="l00067"></a>00067 { <a class="code" href="group__world.html#g8f547ebeb3deed27e0f7b8143d475f50" title="Step the world.">dWorldStep</a> (_id,stepsize); }
83<a name="l00068"></a>00068
84<a name="l00069"></a>00069 <span class="keywordtype">void</span> stepFast1 (dReal stepsize, <span class="keywordtype">int</span> maxiterations)
85<a name="l00070"></a>00070 { <a class="code" href="group__world.html#gefa68c714bb3c8f70503f101ea062c03" title="Step the world using the StepFast1 algorithm.">dWorldStepFast1</a> (_id,stepsize,maxiterations); }
86<a name="l00071"></a>00071 <span class="keywordtype">void</span> setAutoEnableDepthSF1(dWorldID, <span class="keywordtype">int</span> depth)
87<a name="l00072"></a>00072 { <a class="code" href="group__disable.html#g280c6deffe6b4b8ba39d60bf25355347" title="Set the AutoEnableDepth parameter used by the StepFast1 algorithm.">dWorldSetAutoEnableDepthSF1</a> (_id, depth); }
88<a name="l00073"></a>00073 <span class="keywordtype">int</span> getAutoEnableDepthSF1(dWorldID)
89<a name="l00074"></a>00074 { <span class="keywordflow">return</span> <a class="code" href="group__disable.html#g5438f43d9c71d8090a44171f685de196" title="Get the AutoEnableDepth parameter used by the StepFast1 algorithm.">dWorldGetAutoEnableDepthSF1</a> (_id); }
90<a name="l00075"></a>00075
91<a name="l00076"></a>00076 <span class="keywordtype">void</span> setAutoDisableLinearThreshold (dReal threshold)
92<a name="l00077"></a>00077 { <a class="code" href="group__disable.html#ga1070c6f127352fb0a87ab1d42677b8e" title="Set auto disable linear threshold for newly created bodies.">dWorldSetAutoDisableLinearThreshold</a> (_id,threshold); }
93<a name="l00078"></a>00078 dReal getAutoDisableLinearThreshold()
94<a name="l00079"></a>00079 { <span class="keywordflow">return</span> <a class="code" href="group__disable.html#g48802a9736cc8cc9c1a14cbc3125d9b2" title="Get auto disable linear threshold for newly created bodies.">dWorldGetAutoDisableLinearThreshold</a> (_id); }
95<a name="l00080"></a>00080 <span class="keywordtype">void</span> setAutoDisableAngularThreshold (dReal threshold)
96<a name="l00081"></a>00081 { <a class="code" href="group__disable.html#g61cae2bd156129a918c3a1e69ac1b6dd" title="Set auto disable angular threshold for newly created bodies.">dWorldSetAutoDisableAngularThreshold</a> (_id,threshold); }
97<a name="l00082"></a>00082 dReal getAutoDisableAngularThreshold()
98<a name="l00083"></a>00083 { <span class="keywordflow">return</span> <a class="code" href="group__disable.html#g9d32b31b5d343c324897434a97387abc" title="Get auto disable angular threshold for newly created bodies.">dWorldGetAutoDisableAngularThreshold</a> (_id); }
99<a name="l00084"></a>00084 <span class="keywordtype">void</span> setAutoDisableSteps (<span class="keywordtype">int</span> steps)
100<a name="l00085"></a>00085 { <a class="code" href="group__disable.html#gdb9f69119d1aa259a0e32a8ff94e2535" title="Set auto disable steps for newly created bodies.">dWorldSetAutoDisableSteps</a> (_id,steps); }
101<a name="l00086"></a>00086 <span class="keywordtype">int</span> getAutoDisableSteps()
102<a name="l00087"></a>00087 { <span class="keywordflow">return</span> <a class="code" href="group__disable.html#gb0a26f648b9e40d8d4639bf187d5ac94" title="Get auto disable steps for newly created bodies.">dWorldGetAutoDisableSteps</a> (_id); }
103<a name="l00088"></a>00088 <span class="keywordtype">void</span> setAutoDisableTime (dReal time)
104<a name="l00089"></a>00089 { <a class="code" href="group__disable.html#g06828866a19cab7aeb129ca9ec76863b" title="Set auto disable time for newly created bodies.">dWorldSetAutoDisableTime</a> (_id,time); }
105<a name="l00090"></a>00090 dReal getAutoDisableTime()
106<a name="l00091"></a>00091 { <span class="keywordflow">return</span> <a class="code" href="group__disable.html#gbc004c37efff5f962fa2ac271b3be8e1" title="Get auto disable time for newly created bodies.">dWorldGetAutoDisableTime</a> (_id); }
107<a name="l00092"></a>00092 <span class="keywordtype">void</span> setAutoDisableFlag (<span class="keywordtype">int</span> do_auto_disable)
108<a name="l00093"></a>00093 { <a class="code" href="group__disable.html#g58959b92ae4706e612bca673e85bfc50" title="Set auto disable flag for newly created bodies.">dWorldSetAutoDisableFlag</a> (_id,do_auto_disable); }
109<a name="l00094"></a>00094 <span class="keywordtype">int</span> getAutoDisableFlag()
110<a name="l00095"></a>00095 { <span class="keywordflow">return</span> <a class="code" href="group__disable.html#g7617d19f08c7b1d22cf17ccf22bbdc00" title="Get auto disable flag for newly created bodies.">dWorldGetAutoDisableFlag</a> (_id); }
111<a name="l00096"></a>00096
112<a name="l00097"></a>00097 <span class="keywordtype">void</span> impulseToForce (dReal stepsize, dReal ix, dReal iy, dReal iz,
113<a name="l00098"></a>00098 dVector3 force)
114<a name="l00099"></a>00099 { <a class="code" href="group__world.html#ga9c564b4dd7d8fa4c6f4b32dd95fc33a" title="Converts an impulse to a force.">dWorldImpulseToForce</a> (_id,stepsize,ix,iy,iz,force); }
115<a name="l00100"></a>00100 };
116<a name="l00101"></a>00101
117<a name="l00102"></a>00102
118<a name="l00103"></a>00103 <span class="keyword">class </span>dBody {
119<a name="l00104"></a>00104 dBodyID _id;
120<a name="l00105"></a>00105
121<a name="l00106"></a>00106 <span class="comment">// intentionally undefined, don't use these</span>
122<a name="l00107"></a>00107 dBody (<span class="keyword">const</span> dBody &amp;);
123<a name="l00108"></a>00108 <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dBody &amp;);
124<a name="l00109"></a>00109
125<a name="l00110"></a>00110 <span class="keyword">public</span>:
126<a name="l00111"></a>00111 dBody()
127<a name="l00112"></a>00112 { _id = 0; }
128<a name="l00113"></a>00113 dBody (dWorldID world)
129<a name="l00114"></a>00114 { _id = <a class="code" href="group__bodies.html#g578137bbaf82d4b8896d2baee3a032a6" title="Create a body in given world.">dBodyCreate</a> (world); }
130<a name="l00115"></a>00115 ~dBody()
131<a name="l00116"></a>00116 { <span class="keywordflow">if</span> (_id) <a class="code" href="group__bodies.html#gc1a0ee96898f14017a29b2afa0eafe13" title="Destroy a body.">dBodyDestroy</a> (_id); }
132<a name="l00117"></a>00117
133<a name="l00118"></a>00118 <span class="keywordtype">void</span> create (dWorldID world) {
134<a name="l00119"></a>00119 <span class="keywordflow">if</span> (_id) <a class="code" href="group__bodies.html#gc1a0ee96898f14017a29b2afa0eafe13" title="Destroy a body.">dBodyDestroy</a> (_id);
135<a name="l00120"></a>00120 _id = <a class="code" href="group__bodies.html#g578137bbaf82d4b8896d2baee3a032a6" title="Create a body in given world.">dBodyCreate</a> (world);
136<a name="l00121"></a>00121 }
137<a name="l00122"></a>00122
138<a name="l00123"></a>00123 dBodyID id()<span class="keyword"> const</span>
139<a name="l00124"></a>00124 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
140<a name="l00125"></a>00125 operator dBodyID()<span class="keyword"> const</span>
141<a name="l00126"></a>00126 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
142<a name="l00127"></a>00127
143<a name="l00128"></a>00128 <span class="keywordtype">void</span> setData (<span class="keywordtype">void</span> *data)
144<a name="l00129"></a>00129 { <a class="code" href="group__bodies.html#gf9cbe9e1ed1bd4559bb5603b8d0f92f2" title="Set the body&amp;#39;s user-data pointer.">dBodySetData</a> (_id,data); }
145<a name="l00130"></a>00130 <span class="keywordtype">void</span> *getData()<span class="keyword"> const</span>
146<a name="l00131"></a>00131 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g68d3d80c7476776dd4512d577bf70325" title="Get the body&amp;#39;s user-data pointer.">dBodyGetData</a> (_id); }
147<a name="l00132"></a>00132
148<a name="l00133"></a>00133 <span class="keywordtype">void</span> setPosition (dReal x, dReal y, dReal z)
149<a name="l00134"></a>00134 { <a class="code" href="group__bodies.html#gb84612b793366f18ff5b5cbdbed092da" title="Set position of a body.">dBodySetPosition</a> (_id,x,y,z); }
150<a name="l00135"></a>00135 <span class="keywordtype">void</span> setRotation (<span class="keyword">const</span> dMatrix3 R)
151<a name="l00136"></a>00136 { <a class="code" href="group__bodies.html#gb5f04968ec37ef46d2aaffad6c344468" title="Set the orientation of a body.">dBodySetRotation</a> (_id,R); }
152<a name="l00137"></a>00137 <span class="keywordtype">void</span> setQuaternion (<span class="keyword">const</span> dQuaternion q)
153<a name="l00138"></a>00138 { <a class="code" href="group__bodies.html#ga5f51dd3605c402320e9eae4231d7ad4" title="Set the orientation of a body.">dBodySetQuaternion</a> (_id,q); }
154<a name="l00139"></a>00139 <span class="keywordtype">void</span> setLinearVel (dReal x, dReal y, dReal z)
155<a name="l00140"></a>00140 { <a class="code" href="group__bodies.html#gafe72e03c1df0f2150e2d7b8677e1460" title="Set the linear velocity of a body.">dBodySetLinearVel</a> (_id,x,y,z); }
156<a name="l00141"></a>00141 <span class="keywordtype">void</span> setAngularVel (dReal x, dReal y, dReal z)
157<a name="l00142"></a>00142 { <a class="code" href="group__bodies.html#g7b4f90c1986333395375c086c4f3ec41" title="Set the angular velocity of a body.">dBodySetAngularVel</a> (_id,x,y,z); }
158<a name="l00143"></a>00143
159<a name="l00144"></a>00144 <span class="keyword">const</span> dReal * getPosition()<span class="keyword"> const</span>
160<a name="l00145"></a>00145 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g2bddae29591b9f14c5175411b783d570" title="Get the position of a body.">dBodyGetPosition</a> (_id); }
161<a name="l00146"></a>00146 <span class="keyword">const</span> dReal * getRotation()<span class="keyword"> const</span>
162<a name="l00147"></a>00147 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g2374da7ff88a2bac607e2fbce529ad27" title="Get the rotation of a body.">dBodyGetRotation</a> (_id); }
163<a name="l00148"></a>00148 <span class="keyword">const</span> dReal * getQuaternion()<span class="keyword"> const</span>
164<a name="l00149"></a>00149 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g36b7e19622ed47fe6b9dcfbac20237e7" title="Get the rotation of a body.">dBodyGetQuaternion</a> (_id); }
165<a name="l00150"></a>00150 <span class="keyword">const</span> dReal * getLinearVel()<span class="keyword"> const</span>
166<a name="l00151"></a>00151 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g2a0a986c12d53efd5a3753dd4b509cac" title="Get the linear velocity of a body.">dBodyGetLinearVel</a> (_id); }
167<a name="l00152"></a>00152 <span class="keyword">const</span> dReal * getAngularVel()<span class="keyword"> const</span>
168<a name="l00153"></a>00153 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g54dc73be9562cdece52d0a7d8decd1d0" title="Get the angular velocity of a body.">dBodyGetAngularVel</a> (_id); }
169<a name="l00154"></a>00154
170<a name="l00155"></a>00155 <span class="keywordtype">void</span> setMass (<span class="keyword">const</span> dMass *mass)
171<a name="l00156"></a>00156 { <a class="code" href="group__bodies.html#gf3609b58548e34471ef8ad4727b33e52" title="Set the mass of a body.">dBodySetMass</a> (_id,mass); }
172<a name="l00157"></a>00157 <span class="keywordtype">void</span> getMass (dMass *mass)<span class="keyword"> const</span>
173<a name="l00158"></a>00158 <span class="keyword"> </span>{ <a class="code" href="group__bodies.html#g7aa7944f6e36a96d3e578f3369ac4171" title="Get the mass of a body.">dBodyGetMass</a> (_id,mass); }
174<a name="l00159"></a>00159
175<a name="l00160"></a>00160 <span class="keywordtype">void</span> addForce (dReal fx, dReal fy, dReal fz)
176<a name="l00161"></a>00161 { <a class="code" href="group__bodies.html#g1e1352dc350ad42bff5818f2200ba792" title="Add force at centre of mass of body in absolute coordinates.">dBodyAddForce</a> (_id, fx, fy, fz); }
177<a name="l00162"></a>00162 <span class="keywordtype">void</span> addTorque (dReal fx, dReal fy, dReal fz)
178<a name="l00163"></a>00163 { <a class="code" href="group__bodies.html#g8378560dd168ee8d7a4b74e3de510ebc" title="Add torque at centre of mass of body in absolute coordinates.">dBodyAddTorque</a> (_id, fx, fy, fz); }
179<a name="l00164"></a>00164 <span class="keywordtype">void</span> addRelForce (dReal fx, dReal fy, dReal fz)
180<a name="l00165"></a>00165 { <a class="code" href="group__bodies.html#g0a91e5416c5af7729177c465346837ad" title="Add force at centre of mass of body in coordinates relative to body.">dBodyAddRelForce</a> (_id, fx, fy, fz); }
181<a name="l00166"></a>00166 <span class="keywordtype">void</span> addRelTorque (dReal fx, dReal fy, dReal fz)
182<a name="l00167"></a>00167 { <a class="code" href="group__bodies.html#g172a59e64f6dfa4a59bcd45b694585de" title="Add torque at centre of mass of body in coordinates relative to body.">dBodyAddRelTorque</a> (_id, fx, fy, fz); }
183<a name="l00168"></a>00168 <span class="keywordtype">void</span> addForceAtPos (dReal fx, dReal fy, dReal fz,
184<a name="l00169"></a>00169 dReal px, dReal py, dReal pz)
185<a name="l00170"></a>00170 { <a class="code" href="group__bodies.html#gfa134c6b7b455680b890b677c5789c2b" title="Add force at specified point in body in global coordinates.">dBodyAddForceAtPos</a> (_id, fx, fy, fz, px, py, pz); }
186<a name="l00171"></a>00171 <span class="keywordtype">void</span> addForceAtRelPos (dReal fx, dReal fy, dReal fz,
187<a name="l00172"></a>00172 dReal px, dReal py, dReal pz)
188<a name="l00173"></a>00173 { <a class="code" href="group__bodies.html#g77606cdb23029337a7ed43dee5a59ee1" title="Add force at specified point in body in local coordinates.">dBodyAddForceAtRelPos</a> (_id, fx, fy, fz, px, py, pz); }
189<a name="l00174"></a>00174 <span class="keywordtype">void</span> addRelForceAtPos (dReal fx, dReal fy, dReal fz,
190<a name="l00175"></a>00175 dReal px, dReal py, dReal pz)
191<a name="l00176"></a>00176 { <a class="code" href="group__bodies.html#ga024b08f8dfb85705b86e18b99a0ef8e" title="Add force at specified point in body in global coordinates.">dBodyAddRelForceAtPos</a> (_id, fx, fy, fz, px, py, pz); }
192<a name="l00177"></a>00177 <span class="keywordtype">void</span> addRelForceAtRelPos (dReal fx, dReal fy, dReal fz,
193<a name="l00178"></a>00178 dReal px, dReal py, dReal pz)
194<a name="l00179"></a>00179 { <a class="code" href="group__bodies.html#g7e5d20b6bb36f74d0dedb08f5eefddcb" title="Add force at specified point in body in local coordinates.">dBodyAddRelForceAtRelPos</a> (_id, fx, fy, fz, px, py, pz); }
195<a name="l00180"></a>00180
196<a name="l00181"></a>00181 <span class="keyword">const</span> dReal * getForce()<span class="keyword"> const</span>
197<a name="l00182"></a>00182 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g3b458397a79f09b1957cb6e5a85e9eba" title="Return the current accumulated force vector.">dBodyGetForce</a>(_id); }
198<a name="l00183"></a>00183 <span class="keyword">const</span> dReal * getTorque()<span class="keyword"> const</span>
199<a name="l00184"></a>00184 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#gfe88a5bc363fc812c8f154e3d5f8ea5d" title="Return the current accumulated torque vector.">dBodyGetTorque</a>(_id); }
200<a name="l00185"></a>00185 <span class="keywordtype">void</span> setForce (dReal x, dReal y, dReal z)
201<a name="l00186"></a>00186 { <a class="code" href="group__bodies.html#gbd56079db36d4562db0e18aebea4f95f" title="Set the body force accumulation vector.">dBodySetForce</a> (_id,x,y,z); }
202<a name="l00187"></a>00187 <span class="keywordtype">void</span> setTorque (dReal x, dReal y, dReal z)
203<a name="l00188"></a>00188 { <a class="code" href="group__bodies.html#gfcd3e44223a878ba52428ad3a124fa94" title="Set the body torque accumulation vector.">dBodySetTorque</a> (_id,x,y,z); }
204<a name="l00189"></a>00189
205<a name="l00190"></a>00190 <span class="keywordtype">void</span> enable()
206<a name="l00191"></a>00191 { <a class="code" href="group__bodies.html#gd0776c40f667b235f8642e10755543f8" title="Manually enable a body.">dBodyEnable</a> (_id); }
207<a name="l00192"></a>00192 <span class="keywordtype">void</span> disable()
208<a name="l00193"></a>00193 { <a class="code" href="group__bodies.html#ga78092d7cadae36373441aa9be7e6157" title="Manually disable a body.">dBodyDisable</a> (_id); }
209<a name="l00194"></a>00194 <span class="keywordtype">int</span> isEnabled()<span class="keyword"> const</span>
210<a name="l00195"></a>00195 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g7e7803132dfcfceee04a6ab0ca1e0bf8" title="Check wether a body is enabled.">dBodyIsEnabled</a> (_id); }
211<a name="l00196"></a>00196
212<a name="l00197"></a>00197 <span class="keywordtype">void</span> getRelPointPos (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
213<a name="l00198"></a>00198 <span class="keyword"> </span>{ <a class="code" href="group__bodies.html#gfcf00cd9c4c754c82189fb9d1eb9f102" title="Get world position of a relative point on body.">dBodyGetRelPointPos</a> (_id, px, py, pz, result); }
214<a name="l00199"></a>00199 <span class="keywordtype">void</span> getRelPointVel (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
215<a name="l00200"></a>00200 <span class="keyword"> </span>{ <a class="code" href="group__bodies.html#g7fd4f4c7e70c59380da11277b2e97510" title="Get velocity vector in global coords of a relative point on body.">dBodyGetRelPointVel</a> (_id, px, py, pz, result); }
216<a name="l00201"></a>00201 <span class="keywordtype">void</span> getPointVel (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
217<a name="l00202"></a>00202 <span class="keyword"> </span>{ <a class="code" href="group__bodies.html#g89dd6a4a3c6f3cd98c8377e8d4dec015" title="Get velocity vector in global coords of a globally specified point on a body.">dBodyGetPointVel</a> (_id,px,py,pz,result); }
218<a name="l00203"></a>00203 <span class="keywordtype">void</span> getPosRelPoint (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
219<a name="l00204"></a>00204 <span class="keyword"> </span>{ <a class="code" href="group__bodies.html#g0334d9d523cbfeec742ac4a814834199" title="takes a point in global coordinates and returns the point&amp;#39;s position in body-relative...">dBodyGetPosRelPoint</a> (_id,px,py,pz,result); }
220<a name="l00205"></a>00205 <span class="keywordtype">void</span> vectorToWorld (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
221<a name="l00206"></a>00206 <span class="keyword"> </span>{ <a class="code" href="group__bodies.html#g0a2cd6f7499bcfeb8275cbb981465bbf" title="Convert from local to world coordinates.">dBodyVectorToWorld</a> (_id,px,py,pz,result); }
222<a name="l00207"></a>00207 <span class="keywordtype">void</span> vectorFromWorld (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
223<a name="l00208"></a>00208 <span class="keyword"> </span>{ <a class="code" href="group__bodies.html#g1e3ac3ef038e806d4942ea8b399ab575" title="Convert from world to local coordinates.">dBodyVectorFromWorld</a> (_id,px,py,pz,result); }
224<a name="l00209"></a>00209
225<a name="l00210"></a>00210 <span class="keywordtype">void</span> setFiniteRotationMode (<span class="keywordtype">int</span> mode)
226<a name="l00211"></a>00211 { <a class="code" href="group__bodies.html#gc474ca36d734fb67b8bd504b672527fa" title="controls the way a body&amp;#39;s orientation is updated at each timestep.">dBodySetFiniteRotationMode</a> (_id, mode); }
227<a name="l00212"></a>00212 <span class="keywordtype">void</span> setFiniteRotationAxis (dReal x, dReal y, dReal z)
228<a name="l00213"></a>00213 { <a class="code" href="group__bodies.html#ga9546c1ea6119fcbf80c71a96f56d052" title="sets the finite rotation axis for a body.">dBodySetFiniteRotationAxis</a> (_id, x, y, z); }
229<a name="l00214"></a>00214
230<a name="l00215"></a>00215 <span class="keywordtype">int</span> getFiniteRotationMode()<span class="keyword"> const</span>
231<a name="l00216"></a>00216 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g3fb10ac984d64c92e4f138e50b704f9e" title="Get the way a body&amp;#39;s orientation is updated each timestep.">dBodyGetFiniteRotationMode</a> (_id); }
232<a name="l00217"></a>00217 <span class="keywordtype">void</span> getFiniteRotationAxis (dVector3 result)<span class="keyword"> const</span>
233<a name="l00218"></a>00218 <span class="keyword"> </span>{ <a class="code" href="group__bodies.html#gfc8853ff678be731881665ff7abf61ad" title="Get the finite rotation axis.">dBodyGetFiniteRotationAxis</a> (_id, result); }
234<a name="l00219"></a>00219
235<a name="l00220"></a>00220 <span class="keywordtype">int</span> getNumJoints()<span class="keyword"> const</span>
236<a name="l00221"></a>00221 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g79fd517a57ac9c3594cb71850f649af7" title="Get the number of joints that are attached to this body.">dBodyGetNumJoints</a> (_id); }
237<a name="l00222"></a>00222 dJointID getJoint (<span class="keywordtype">int</span> index)<span class="keyword"> const</span>
238<a name="l00223"></a>00223 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g095e41c5b5632b22aa9bd1a4bd051f8d" title="Return a joint attached to this body, given by index.">dBodyGetJoint</a> (_id, index); }
239<a name="l00224"></a>00224
240<a name="l00225"></a>00225 <span class="keywordtype">void</span> setGravityMode (<span class="keywordtype">int</span> mode)
241<a name="l00226"></a>00226 { <a class="code" href="group__bodies.html#g5465d605e7fbe82d63a0d4e1000da731" title="Set whether the body is influenced by the world&amp;#39;s gravity or not.">dBodySetGravityMode</a> (_id,mode); }
242<a name="l00227"></a>00227 <span class="keywordtype">int</span> getGravityMode()<span class="keyword"> const</span>
243<a name="l00228"></a>00228 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g0df2f4fed454c567f10fc8bbb8c70455" title="Get whether the body is influenced by the world&amp;#39;s gravity or not.">dBodyGetGravityMode</a> (_id); }
244<a name="l00229"></a>00229
245<a name="l00230"></a>00230 <span class="keywordtype">int</span> isConnectedTo (dBodyID body)<span class="keyword"> const</span>
246<a name="l00231"></a>00231 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g68eb2f4daea03713db4d8b4daca663ae" title="Utility function.">dAreConnected</a> (_id, body); }
247<a name="l00232"></a>00232
248<a name="l00233"></a>00233 <span class="keywordtype">void</span> setAutoDisableLinearThreshold (dReal threshold)
249<a name="l00234"></a>00234 { <a class="code" href="group__bodies.html#gb8f6e736830cfea86c35e7a0cdfa3112" title="Set auto disable linear average threshold.">dBodySetAutoDisableLinearThreshold</a> (_id,threshold); }
250<a name="l00235"></a>00235 dReal getAutoDisableLinearThreshold()
251<a name="l00236"></a>00236 { <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g57c1e1b1bd50fdcafc5140c1ed89c7d7" title="Get auto disable linear average threshold.">dBodyGetAutoDisableLinearThreshold</a> (_id); }
252<a name="l00237"></a>00237 <span class="keywordtype">void</span> setAutoDisableAngularThreshold (dReal threshold)
253<a name="l00238"></a>00238 { <a class="code" href="group__bodies.html#g206ccf22f027a62aaf5e45a16ddc4040" title="Set auto disable angular average threshold.">dBodySetAutoDisableAngularThreshold</a> (_id,threshold); }
254<a name="l00239"></a>00239 dReal getAutoDisableAngularThreshold()
255<a name="l00240"></a>00240 { <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g5b988719423e9bc3af1be2146872e2d6" title="Get auto disable angular average threshold.">dBodyGetAutoDisableAngularThreshold</a> (_id); }
256<a name="l00241"></a>00241 <span class="keywordtype">void</span> setAutoDisableSteps (<span class="keywordtype">int</span> steps)
257<a name="l00242"></a>00242 { <a class="code" href="group__bodies.html#g03cc329bdc8e19e59c4bfe62cf736578" title="Set auto disable steps.">dBodySetAutoDisableSteps</a> (_id,steps); }
258<a name="l00243"></a>00243 <span class="keywordtype">int</span> getAutoDisableSteps()
259<a name="l00244"></a>00244 { <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#g797ad84c737a2ae4ef3f8a37dfa02183" title="Get auto steps a body must be thought of as idle to disable.">dBodyGetAutoDisableSteps</a> (_id); }
260<a name="l00245"></a>00245 <span class="keywordtype">void</span> setAutoDisableTime (dReal time)
261<a name="l00246"></a>00246 { <a class="code" href="group__bodies.html#g0ae2f08bb38359934151f9420cdef341" title="Set auto disable time.">dBodySetAutoDisableTime</a> (_id,time); }
262<a name="l00247"></a>00247 dReal getAutoDisableTime()
263<a name="l00248"></a>00248 { <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#ga2f4d01a8fb5c4d7e77efd5f0e4dd72b" title="Get auto disable time.">dBodyGetAutoDisableTime</a> (_id); }
264<a name="l00249"></a>00249 <span class="keywordtype">void</span> setAutoDisableFlag (<span class="keywordtype">int</span> do_auto_disable)
265<a name="l00250"></a>00250 { <a class="code" href="group__bodies.html#ge352fdcd8851224f07da53f35691ceb7" title="Set auto disable flag.">dBodySetAutoDisableFlag</a> (_id,do_auto_disable); }
266<a name="l00251"></a>00251 <span class="keywordtype">int</span> getAutoDisableFlag()
267<a name="l00252"></a>00252 { <span class="keywordflow">return</span> <a class="code" href="group__bodies.html#gfe44b3ae620abb1091472089cb07f64e" title="Get auto disable flag.">dBodyGetAutoDisableFlag</a> (_id); }
268<a name="l00253"></a>00253 };
269<a name="l00254"></a>00254
270<a name="l00255"></a>00255
271<a name="l00256"></a>00256 <span class="keyword">class </span>dJointGroup {
272<a name="l00257"></a>00257 dJointGroupID _id;
273<a name="l00258"></a>00258
274<a name="l00259"></a>00259 <span class="comment">// intentionally undefined, don't use these</span>
275<a name="l00260"></a>00260 dJointGroup (<span class="keyword">const</span> dJointGroup &amp;);
276<a name="l00261"></a>00261 <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dJointGroup &amp;);
277<a name="l00262"></a>00262
278<a name="l00263"></a>00263 <span class="keyword">public</span>:
279<a name="l00264"></a>00264 dJointGroup (<span class="keywordtype">int</span> dummy_arg=0)
280<a name="l00265"></a>00265 { _id = <a class="code" href="group__joints.html#gaaec687b184a1214133a41503e7c628f" title="Create a joint group.">dJointGroupCreate</a> (0); }
281<a name="l00266"></a>00266 ~dJointGroup()
282<a name="l00267"></a>00267 { <a class="code" href="group__joints.html#g49e664ee9a8bd7bfe5e6932bf936bb8f" title="Destroy a joint group.">dJointGroupDestroy</a> (_id); }
283<a name="l00268"></a>00268 <span class="keywordtype">void</span> create (<span class="keywordtype">int</span> dummy_arg=0) {
284<a name="l00269"></a>00269 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g49e664ee9a8bd7bfe5e6932bf936bb8f" title="Destroy a joint group.">dJointGroupDestroy</a> (_id);
285<a name="l00270"></a>00270 _id = <a class="code" href="group__joints.html#gaaec687b184a1214133a41503e7c628f" title="Create a joint group.">dJointGroupCreate</a> (0);
286<a name="l00271"></a>00271 }
287<a name="l00272"></a>00272
288<a name="l00273"></a>00273 dJointGroupID id()<span class="keyword"> const</span>
289<a name="l00274"></a>00274 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
290<a name="l00275"></a>00275 operator dJointGroupID()<span class="keyword"> const</span>
291<a name="l00276"></a>00276 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
292<a name="l00277"></a>00277
293<a name="l00278"></a>00278 <span class="keywordtype">void</span> empty()
294<a name="l00279"></a>00279 { <a class="code" href="group__joints.html#g6e055bac8a0a3261bda3b6d07499c4ea" title="Empty a joint group.">dJointGroupEmpty</a> (_id); }
295<a name="l00280"></a>00280 };
296<a name="l00281"></a>00281
297<a name="l00282"></a>00282
298<a name="l00283"></a>00283 <span class="keyword">class </span>dJoint {
299<a name="l00284"></a>00284 <span class="keyword">private</span>:
300<a name="l00285"></a>00285 <span class="comment">// intentionally undefined, don't use these</span>
301<a name="l00286"></a>00286 dJoint (<span class="keyword">const</span> dJoint &amp;) ;
302<a name="l00287"></a>00287 <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dJoint &amp;);
303<a name="l00288"></a>00288
304<a name="l00289"></a>00289 <span class="keyword">protected</span>:
305<a name="l00290"></a>00290 dJointID _id;
306<a name="l00291"></a>00291
307<a name="l00292"></a>00292 <span class="keyword">public</span>:
308<a name="l00293"></a>00293 dJoint()
309<a name="l00294"></a>00294 { _id = 0; }
310<a name="l00295"></a>00295 ~dJoint()
311<a name="l00296"></a>00296 { <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id); }
312<a name="l00297"></a>00297
313<a name="l00298"></a>00298 dJointID id()<span class="keyword"> const</span>
314<a name="l00299"></a>00299 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
315<a name="l00300"></a>00300 operator dJointID()<span class="keyword"> const</span>
316<a name="l00301"></a>00301 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
317<a name="l00302"></a>00302
318<a name="l00303"></a>00303 <span class="keywordtype">void</span> attach (dBodyID body1, dBodyID body2)
319<a name="l00304"></a>00304 { <a class="code" href="group__joints.html#g8f1c9b1302c799a1b87bc29b76d0dcec" title="Attach the joint to some new bodies.">dJointAttach</a> (_id, body1, body2); }
320<a name="l00305"></a>00305
321<a name="l00306"></a>00306 <span class="keywordtype">void</span> setData (<span class="keywordtype">void</span> *data)
322<a name="l00307"></a>00307 { <a class="code" href="group__joints.html#g5ca72d8bd498ef1ba920b0b473e79d02" title="Set the user-data pointer.">dJointSetData</a> (_id, data); }
323<a name="l00308"></a>00308 <span class="keywordtype">void</span> *getData()<span class="keyword"> const</span>
324<a name="l00309"></a>00309 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g607702a11bae2d2613295f67088b0e82" title="Get the user-data pointer.">dJointGetData</a> (_id); }
325<a name="l00310"></a>00310
326<a name="l00311"></a>00311 <span class="keywordtype">int</span> getType()<span class="keyword"> const</span>
327<a name="l00312"></a>00312 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g6f12f69d9b1a457428a28c2f77148174" title="Get the type of the joint.">dJointGetType</a> (_id); }
328<a name="l00313"></a>00313
329<a name="l00314"></a>00314 dBodyID getBody (<span class="keywordtype">int</span> index)<span class="keyword"> const</span>
330<a name="l00315"></a>00315 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#gff13cbb464f1bfdc225fc9202c2c54c3" title="Return the bodies that this joint connects.">dJointGetBody</a> (_id, index); }
331<a name="l00316"></a>00316
332<a name="l00317"></a>00317 <span class="keywordtype">void</span> setFeedback(dJointFeedback *fb)
333<a name="l00318"></a>00318 { <a class="code" href="group__joints.html#g87ddb9beb95e9383a4280cb8a4186f01" title="Sets the datastructure that is to receive the feedback.">dJointSetFeedback</a>(_id, fb); }
334<a name="l00319"></a>00319 dJointFeedback *getFeedback()<span class="keyword"> const</span>
335<a name="l00320"></a>00320 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#gda1deef60d7afbb6b9375ddbf97e09a1" title="Gets the datastructure that is to receive the feedback.">dJointGetFeedback</a>(_id); }
336<a name="l00321"></a>00321 };
337<a name="l00322"></a>00322
338<a name="l00323"></a>00323
339<a name="l00324"></a>00324 <span class="keyword">class </span>dBallJoint : <span class="keyword">public</span> dJoint {
340<a name="l00325"></a>00325 <span class="keyword">private</span>:
341<a name="l00326"></a>00326 <span class="comment">// intentionally undefined, don't use these</span>
342<a name="l00327"></a>00327 dBallJoint (<span class="keyword">const</span> dBallJoint &amp;);
343<a name="l00328"></a>00328 <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dBallJoint &amp;);
344<a name="l00329"></a>00329
345<a name="l00330"></a>00330 <span class="keyword">public</span>:
346<a name="l00331"></a>00331 dBallJoint() { }
347<a name="l00332"></a>00332 dBallJoint (dWorldID world, dJointGroupID group=0)
348<a name="l00333"></a>00333 { _id = <a class="code" href="group__joints.html#g2d23509f8d6c6066b361af4cf14166f7" title="Create a new joint of the ball type.">dJointCreateBall</a> (world, group); }
349<a name="l00334"></a>00334
350<a name="l00335"></a>00335 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
351<a name="l00336"></a>00336 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
352<a name="l00337"></a>00337 _id = <a class="code" href="group__joints.html#g2d23509f8d6c6066b361af4cf14166f7" title="Create a new joint of the ball type.">dJointCreateBall</a> (world, group);
353<a name="l00338"></a>00338 }
354<a name="l00339"></a>00339
355<a name="l00340"></a>00340 <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
356<a name="l00341"></a>00341 { <a class="code" href="group__joints.html#g058c33a3da1ff935a1125034f779dc4a" title="Set the joint anchor point.">dJointSetBallAnchor</a> (_id, x, y, z); }
357<a name="l00342"></a>00342 <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
358<a name="l00343"></a>00343 <span class="keyword"> </span>{ dJointGetBallAnchor (_id, result); }
359<a name="l00344"></a>00344 <span class="keywordtype">void</span> getAnchor2 (dVector3 result)<span class="keyword"> const</span>
360<a name="l00345"></a>00345 <span class="keyword"> </span>{ dJointGetBallAnchor2 (_id, result); }
361<a name="l00346"></a>00346 <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
362<a name="l00347"></a>00347 { <a class="code" href="group__joints.html#ge58f5e11c0829aa8615622a74dd11d85" title="Param setting for Ball joints.">dJointSetBallParam</a> (_id, parameter, value); }
363<a name="l00348"></a>00348 dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
364<a name="l00349"></a>00349 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g20a27c479a75443552942059542f26ad" title="get joint parameter">dJointGetBallParam</a> (_id, parameter); }
365<a name="l00350"></a>00350 } ;
366<a name="l00351"></a>00351
367<a name="l00352"></a>00352
368<a name="l00353"></a>00353 <span class="keyword">class </span>dHingeJoint : <span class="keyword">public</span> dJoint {
369<a name="l00354"></a>00354 <span class="comment">// intentionally undefined, don't use these</span>
370<a name="l00355"></a>00355 dHingeJoint (<span class="keyword">const</span> dHingeJoint &amp;);
371<a name="l00356"></a>00356 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dHingeJoint &amp;);
372<a name="l00357"></a>00357
373<a name="l00358"></a>00358 <span class="keyword">public</span>:
374<a name="l00359"></a>00359 dHingeJoint() { }
375<a name="l00360"></a>00360 dHingeJoint (dWorldID world, dJointGroupID group=0)
376<a name="l00361"></a>00361 { _id = <a class="code" href="group__joints.html#g2f18d431d48c905abc9d72ce011c00bd" title="Create a new joint of the hinge type.">dJointCreateHinge</a> (world, group); }
377<a name="l00362"></a>00362
378<a name="l00363"></a>00363 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
379<a name="l00364"></a>00364 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
380<a name="l00365"></a>00365 _id = <a class="code" href="group__joints.html#g2f18d431d48c905abc9d72ce011c00bd" title="Create a new joint of the hinge type.">dJointCreateHinge</a> (world, group);
381<a name="l00366"></a>00366 }
382<a name="l00367"></a>00367
383<a name="l00368"></a>00368 <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
384<a name="l00369"></a>00369 { <a class="code" href="group__joints.html#gc5727a125de0abbe2abd61af7a55da26" title="Set hinge anchor parameter.">dJointSetHingeAnchor</a> (_id, x, y, z); }
385<a name="l00370"></a>00370 <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
386<a name="l00371"></a>00371 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g1d1c4f9b10c550f6fec550f9cc80c7ab" title="Get the hinge anchor point, in world coordinates.">dJointGetHingeAnchor</a> (_id, result); }
387<a name="l00372"></a>00372 <span class="keywordtype">void</span> getAnchor2 (dVector3 result)<span class="keyword"> const</span>
388<a name="l00373"></a>00373 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#gfdc1d9c7bd8824ec3e79cc5aa67ddfa1" title="Get the joint anchor point, in world coordinates.">dJointGetHingeAnchor2</a> (_id, result); }
389<a name="l00374"></a>00374
390<a name="l00375"></a>00375 <span class="keywordtype">void</span> setAxis (dReal x, dReal y, dReal z)
391<a name="l00376"></a>00376 { <a class="code" href="group__joints.html#ga434229f033472ec7aa031a01c6cabed" title="Set hinge axis.">dJointSetHingeAxis</a> (_id, x, y, z); }
392<a name="l00377"></a>00377 <span class="keywordtype">void</span> getAxis (dVector3 result)<span class="keyword"> const</span>
393<a name="l00378"></a>00378 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g17b812897bc5faab33584cc5e3e4d3a4" title="get axis">dJointGetHingeAxis</a> (_id, result); }
394<a name="l00379"></a>00379
395<a name="l00380"></a>00380 dReal getAngle()<span class="keyword"> const</span>
396<a name="l00381"></a>00381 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g7ca6bdfe2b919b6bc2a27ba6f0e069f0" title="Get the hinge angle.">dJointGetHingeAngle</a> (_id); }
397<a name="l00382"></a>00382 dReal getAngleRate()<span class="keyword"> const</span>
398<a name="l00383"></a>00383 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g0d92377b748eb468dc38252df12afc76" title="Get the hinge angle time derivative.">dJointGetHingeAngleRate</a> (_id); }
399<a name="l00384"></a>00384
400<a name="l00385"></a>00385 <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
401<a name="l00386"></a>00386 { <a class="code" href="group__joints.html#g6f9d34a01181e65639eb1f67da7a3e4c" title="set joint parameter">dJointSetHingeParam</a> (_id, parameter, value); }
402<a name="l00387"></a>00387 dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
403<a name="l00388"></a>00388 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g43416613e72d1b16a32331a0ba3c7d70" title="get joint parameter">dJointGetHingeParam</a> (_id, parameter); }
404<a name="l00389"></a>00389
405<a name="l00390"></a>00390 <span class="keywordtype">void</span> addTorque (dReal torque)
406<a name="l00391"></a>00391 { <a class="code" href="group__joints.html#ga1725abe170f80b0731321ed38785019" title="Applies the torque about the hinge axis.">dJointAddHingeTorque</a>(_id, torque); }
407<a name="l00392"></a>00392 };
408<a name="l00393"></a>00393
409<a name="l00394"></a>00394
410<a name="l00395"></a>00395 <span class="keyword">class </span>dSliderJoint : <span class="keyword">public</span> dJoint {
411<a name="l00396"></a>00396 <span class="comment">// intentionally undefined, don't use these</span>
412<a name="l00397"></a>00397 dSliderJoint (<span class="keyword">const</span> dSliderJoint &amp;);
413<a name="l00398"></a>00398 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dSliderJoint &amp;);
414<a name="l00399"></a>00399
415<a name="l00400"></a>00400 <span class="keyword">public</span>:
416<a name="l00401"></a>00401 dSliderJoint() { }
417<a name="l00402"></a>00402 dSliderJoint (dWorldID world, dJointGroupID group=0)
418<a name="l00403"></a>00403 { _id = <a class="code" href="group__joints.html#geccc4c67b2d409016685a6a9163be539" title="Create a new joint of the slider type.">dJointCreateSlider</a> (world, group); }
419<a name="l00404"></a>00404
420<a name="l00405"></a>00405 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
421<a name="l00406"></a>00406 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
422<a name="l00407"></a>00407 _id = <a class="code" href="group__joints.html#geccc4c67b2d409016685a6a9163be539" title="Create a new joint of the slider type.">dJointCreateSlider</a> (world, group);
423<a name="l00408"></a>00408 }
424<a name="l00409"></a>00409
425<a name="l00410"></a>00410 <span class="keywordtype">void</span> setAxis (dReal x, dReal y, dReal z)
426<a name="l00411"></a>00411 { <a class="code" href="group__joints.html#gb2f662b1190507551f49ffa29d276b61" title="set the joint axis">dJointSetSliderAxis</a> (_id, x, y, z); }
427<a name="l00412"></a>00412 <span class="keywordtype">void</span> getAxis (dVector3 result)<span class="keyword"> const</span>
428<a name="l00413"></a>00413 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g17e31e7a877446213c39d1431269788e" title="Get the slider axis.">dJointGetSliderAxis</a> (_id, result); }
429<a name="l00414"></a>00414
430<a name="l00415"></a>00415 dReal getPosition()<span class="keyword"> const</span>
431<a name="l00416"></a>00416 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g7f35449914cbc4a86b845dcd85a617c0" title="Get the slider linear position (i.e. the slider&amp;#39;s extension).">dJointGetSliderPosition</a> (_id); }
432<a name="l00417"></a>00417 dReal getPositionRate()<span class="keyword"> const</span>
433<a name="l00418"></a>00418 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g93378c9c2d0cd50c79cfb78ca881f8ec" title="Get the slider linear position&amp;#39;s time derivative.">dJointGetSliderPositionRate</a> (_id); }
434<a name="l00419"></a>00419
435<a name="l00420"></a>00420 <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
436<a name="l00421"></a>00421 { <a class="code" href="group__joints.html#g648964f4ca4122309e71a9cc6c24c985" title="set joint parameter">dJointSetSliderParam</a> (_id, parameter, value); }
437<a name="l00422"></a>00422 dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
438<a name="l00423"></a>00423 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#gc76d8bb4bf8587af70ef5932025048fe" title="get joint parameter">dJointGetSliderParam</a> (_id, parameter); }
439<a name="l00424"></a>00424
440<a name="l00425"></a>00425 <span class="keywordtype">void</span> addForce (dReal force)
441<a name="l00426"></a>00426 { <a class="code" href="group__joints.html#g8b0e018cc3df6ea5ddb42320913455e7" title="Applies the given force in the slider&amp;#39;s direction.">dJointAddSliderForce</a>(_id, force); }
442<a name="l00427"></a>00427 };
443<a name="l00428"></a>00428
444<a name="l00429"></a>00429
445<a name="l00430"></a>00430 <span class="keyword">class </span>dUniversalJoint : <span class="keyword">public</span> dJoint {
446<a name="l00431"></a>00431 <span class="comment">// intentionally undefined, don't use these</span>
447<a name="l00432"></a>00432 dUniversalJoint (<span class="keyword">const</span> dUniversalJoint &amp;);
448<a name="l00433"></a>00433 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dUniversalJoint &amp;);
449<a name="l00434"></a>00434
450<a name="l00435"></a>00435 <span class="keyword">public</span>:
451<a name="l00436"></a>00436 dUniversalJoint() { }
452<a name="l00437"></a>00437 dUniversalJoint (dWorldID world, dJointGroupID group=0)
453<a name="l00438"></a>00438 { _id = <a class="code" href="group__joints.html#g1cb2e7668242313b5d24acb5d43e5c62" title="Create a new joint of the universal type.">dJointCreateUniversal</a> (world, group); }
454<a name="l00439"></a>00439
455<a name="l00440"></a>00440 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
456<a name="l00441"></a>00441 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
457<a name="l00442"></a>00442 _id = <a class="code" href="group__joints.html#g1cb2e7668242313b5d24acb5d43e5c62" title="Create a new joint of the universal type.">dJointCreateUniversal</a> (world, group);
458<a name="l00443"></a>00443 }
459<a name="l00444"></a>00444
460<a name="l00445"></a>00445 <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
461<a name="l00446"></a>00446 { <a class="code" href="group__joints.html#gaf4657aed67f3cd7cce775215995c05d" title="set anchor">dJointSetUniversalAnchor</a> (_id, x, y, z); }
462<a name="l00447"></a>00447 <span class="keywordtype">void</span> setAxis1 (dReal x, dReal y, dReal z)
463<a name="l00448"></a>00448 { <a class="code" href="group__joints.html#ge0a831da9447ff65d76a0808502038e8" title="set axis">dJointSetUniversalAxis1</a> (_id, x, y, z); }
464<a name="l00449"></a>00449 <span class="keywordtype">void</span> setAxis2 (dReal x, dReal y, dReal z)
465<a name="l00450"></a>00450 { <a class="code" href="group__joints.html#gf3668eed7dc5aaf8fee19d7f87347343" title="set axis">dJointSetUniversalAxis2</a> (_id, x, y, z); }
466<a name="l00451"></a>00451 <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
467<a name="l00452"></a>00452 { <a class="code" href="group__joints.html#g3c58284c43e997a028b06dc250064e32" title="set joint parameter">dJointSetUniversalParam</a> (_id, parameter, value); }
468<a name="l00453"></a>00453
469<a name="l00454"></a>00454 <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
470<a name="l00455"></a>00455 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#ga768432c561cb76ba2490913f42d1aaf" title="Get the joint anchor point, in world coordinates.">dJointGetUniversalAnchor</a> (_id, result); }
471<a name="l00456"></a>00456 <span class="keywordtype">void</span> getAnchor2 (dVector3 result)<span class="keyword"> const</span>
472<a name="l00457"></a>00457 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g00d5018903a90d75c324c4f870b0e7ea" title="Get the joint anchor point, in world coordinates.">dJointGetUniversalAnchor2</a> (_id, result); }
473<a name="l00458"></a>00458 <span class="keywordtype">void</span> getAxis1 (dVector3 result)<span class="keyword"> const</span>
474<a name="l00459"></a>00459 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#geaa8e546d93c304755a86ad3fa6d2abe" title="Get axis.">dJointGetUniversalAxis1</a> (_id, result); }
475<a name="l00460"></a>00460 <span class="keywordtype">void</span> getAxis2 (dVector3 result)<span class="keyword"> const</span>
476<a name="l00461"></a>00461 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g13c01cbc9c5e918740bac0540f6473b3" title="Get axis.">dJointGetUniversalAxis2</a> (_id, result); }
477<a name="l00462"></a>00462 dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
478<a name="l00463"></a>00463 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#gf96e70e676058b7eb385f5810fec641a" title="get joint parameter">dJointGetUniversalParam</a> (_id, parameter); }
479<a name="l00464"></a>00464 <span class="keywordtype">void</span> getAngles(dReal *angle1, dReal *angle2)<span class="keyword"> const</span>
480<a name="l00465"></a>00465 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g3c0fafbd1ccd8e450c01012ce600f6ab" title="Get both angles at the same time.">dJointGetUniversalAngles</a> (_id, angle1, angle2); }
481<a name="l00466"></a>00466
482<a name="l00467"></a>00467 dReal getAngle1()<span class="keyword"> const</span>
483<a name="l00468"></a>00468 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g3a08e2fed2e88eb0c964a33fb8c0c61f" title="Get angle.">dJointGetUniversalAngle1</a> (_id); }
484<a name="l00469"></a>00469 dReal getAngle1Rate()<span class="keyword"> const</span>
485<a name="l00470"></a>00470 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g1f8ff99b6c33d3da2004a8846112427c" title="Get time derivative of angle.">dJointGetUniversalAngle1Rate</a> (_id); }
486<a name="l00471"></a>00471 dReal getAngle2()<span class="keyword"> const</span>
487<a name="l00472"></a>00472 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g4026a7331d7956eef31e72e20e0c703b" title="Get angle.">dJointGetUniversalAngle2</a> (_id); }
488<a name="l00473"></a>00473 dReal getAngle2Rate()<span class="keyword"> const</span>
489<a name="l00474"></a>00474 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g94fb28ecb65cb0711b555558c22396cf" title="Get time derivative of angle.">dJointGetUniversalAngle2Rate</a> (_id); }
490<a name="l00475"></a>00475
491<a name="l00476"></a>00476 <span class="keywordtype">void</span> addTorques (dReal torque1, dReal torque2)
492<a name="l00477"></a>00477 { <a class="code" href="group__joints.html#g36607569e2ee26f39d3d42cba2397898" title="Applies torque1 about the universal&amp;#39;s axis 1, torque2 about the universal&amp;#39;s...">dJointAddUniversalTorques</a>(_id, torque1, torque2); }
493<a name="l00478"></a>00478 };
494<a name="l00479"></a>00479
495<a name="l00480"></a>00480
496<a name="l00481"></a>00481 <span class="keyword">class </span>dHinge2Joint : <span class="keyword">public</span> dJoint {
497<a name="l00482"></a>00482 <span class="comment">// intentionally undefined, don't use these</span>
498<a name="l00483"></a>00483 dHinge2Joint (<span class="keyword">const</span> dHinge2Joint &amp;);
499<a name="l00484"></a>00484 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dHinge2Joint &amp;);
500<a name="l00485"></a>00485
501<a name="l00486"></a>00486 <span class="keyword">public</span>:
502<a name="l00487"></a>00487 dHinge2Joint() { }
503<a name="l00488"></a>00488 dHinge2Joint (dWorldID world, dJointGroupID group=0)
504<a name="l00489"></a>00489 { _id = <a class="code" href="group__joints.html#g6a6e32d35bdda9352d1be8d4df973f8f" title="Create a new joint of the hinge2 type.">dJointCreateHinge2</a> (world, group); }
505<a name="l00490"></a>00490
506<a name="l00491"></a>00491 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
507<a name="l00492"></a>00492 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
508<a name="l00493"></a>00493 _id = <a class="code" href="group__joints.html#g6a6e32d35bdda9352d1be8d4df973f8f" title="Create a new joint of the hinge2 type.">dJointCreateHinge2</a> (world, group);
509<a name="l00494"></a>00494 }
510<a name="l00495"></a>00495
511<a name="l00496"></a>00496 <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
512<a name="l00497"></a>00497 { <a class="code" href="group__joints.html#gf839c13fa85aff0287a87986ff447d29" title="set anchor">dJointSetHinge2Anchor</a> (_id, x, y, z); }
513<a name="l00498"></a>00498 <span class="keywordtype">void</span> setAxis1 (dReal x, dReal y, dReal z)
514<a name="l00499"></a>00499 { <a class="code" href="group__joints.html#gcdf78fbb0f5b0a09b4d3ac2059b07002" title="set axis">dJointSetHinge2Axis1</a> (_id, x, y, z); }
515<a name="l00500"></a>00500 <span class="keywordtype">void</span> setAxis2 (dReal x, dReal y, dReal z)
516<a name="l00501"></a>00501 { <a class="code" href="group__joints.html#gdfef9f6365c87dacb95b4850a9e9f0ee" title="set axis">dJointSetHinge2Axis2</a> (_id, x, y, z); }
517<a name="l00502"></a>00502
518<a name="l00503"></a>00503 <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
519<a name="l00504"></a>00504 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g879999d011f82c73acf94029132cc198" title="Get the joint anchor point, in world coordinates.">dJointGetHinge2Anchor</a> (_id, result); }
520<a name="l00505"></a>00505 <span class="keywordtype">void</span> getAnchor2 (dVector3 result)<span class="keyword"> const</span>
521<a name="l00506"></a>00506 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#ga67cde755a0c9b699859ead5b5c81d26" title="Get the joint anchor point, in world coordinates. This returns the point on body...">dJointGetHinge2Anchor2</a> (_id, result); }
522<a name="l00507"></a>00507 <span class="keywordtype">void</span> getAxis1 (dVector3 result)<span class="keyword"> const</span>
523<a name="l00508"></a>00508 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g5d3e60c78ed85e8086dd60b13c3054f5" title="Get joint axis.">dJointGetHinge2Axis1</a> (_id, result); }
524<a name="l00509"></a>00509 <span class="keywordtype">void</span> getAxis2 (dVector3 result)<span class="keyword"> const</span>
525<a name="l00510"></a>00510 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g9459009e9370ea1a1e4de10f60053c87" title="Get joint axis.">dJointGetHinge2Axis2</a> (_id, result); }
526<a name="l00511"></a>00511
527<a name="l00512"></a>00512 dReal getAngle1()<span class="keyword"> const</span>
528<a name="l00513"></a>00513 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g430ed7cafe907e88929b28fdb17533c0" title="Get angle.">dJointGetHinge2Angle1</a> (_id); }
529<a name="l00514"></a>00514 dReal getAngle1Rate()<span class="keyword"> const</span>
530<a name="l00515"></a>00515 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g61881501e905ec1072aba05464fe44fb" title="Get time derivative of angle.">dJointGetHinge2Angle1Rate</a> (_id); }
531<a name="l00516"></a>00516 dReal getAngle2Rate()<span class="keyword"> const</span>
532<a name="l00517"></a>00517 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g028c47d8ff409f6856492d9eb0367c8a" title="Get time derivative of angle.">dJointGetHinge2Angle2Rate</a> (_id); }
533<a name="l00518"></a>00518
534<a name="l00519"></a>00519 <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
535<a name="l00520"></a>00520 { <a class="code" href="group__joints.html#g9a2d8d03776ccb22869667337457a7a9" title="set joint parameter">dJointSetHinge2Param</a> (_id, parameter, value); }
536<a name="l00521"></a>00521 dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
537<a name="l00522"></a>00522 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g9fe8b60ba59aa9451e5758491e34045a" title="get joint parameter">dJointGetHinge2Param</a> (_id, parameter); }
538<a name="l00523"></a>00523
539<a name="l00524"></a>00524 <span class="keywordtype">void</span> addTorques(dReal torque1, dReal torque2)
540<a name="l00525"></a>00525 { <a class="code" href="group__joints.html#ga5ba1541d092f28c93b1bdc3bfb1b69f" title="Applies torque1 about the hinge2&amp;#39;s axis 1, torque2 about the hinge2&amp;#39;s axis...">dJointAddHinge2Torques</a>(_id, torque1, torque2); }
541<a name="l00526"></a>00526 };
542<a name="l00527"></a>00527
543<a name="l00528"></a>00528
544<a name="l00529"></a>00529 <span class="keyword">class </span>dPRJoint : <span class="keyword">public</span> dJoint {
545<a name="l00530"></a>00530 dPRJoint (<span class="keyword">const</span> dPRJoint &amp;);
546<a name="l00531"></a>00531 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dPRJoint &amp;);
547<a name="l00532"></a>00532
548<a name="l00533"></a>00533 <span class="keyword">public</span>:
549<a name="l00534"></a>00534 dPRJoint() { }
550<a name="l00535"></a>00535 dPRJoint (dWorldID world, dJointGroupID group=0)
551<a name="l00536"></a>00536 { _id = <a class="code" href="group__joints.html#gdc867f10ba9931d191244fa879e43cb2" title="Create a new joint of the PR (Prismatic and Rotoide) type.">dJointCreatePR</a> (world, group); }
552<a name="l00537"></a>00537
553<a name="l00538"></a>00538 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
554<a name="l00539"></a>00539 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
555<a name="l00540"></a>00540 _id = <a class="code" href="group__joints.html#gdc867f10ba9931d191244fa879e43cb2" title="Create a new joint of the PR (Prismatic and Rotoide) type.">dJointCreatePR</a> (world, group);
556<a name="l00541"></a>00541 }
557<a name="l00542"></a>00542
558<a name="l00543"></a>00543 <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
559<a name="l00544"></a>00544 { <a class="code" href="group__joints.html#ge46251e2cea2d31521b1fb9b151f640f" title="set anchor">dJointSetPRAnchor</a> (_id, x, y, z); }
560<a name="l00545"></a>00545 <span class="keywordtype">void</span> setAxis1 (dReal x, dReal y, dReal z)
561<a name="l00546"></a>00546 { <a class="code" href="group__joints.html#ga2ae3ab1fa58ec22bd443476f786fa81" title="set the axis for the prismatic articulation">dJointSetPRAxis1</a> (_id, x, y, z); }
562<a name="l00547"></a>00547 <span class="keywordtype">void</span> setAxis2 (dReal x, dReal y, dReal z)
563<a name="l00548"></a>00548 { <a class="code" href="group__joints.html#gc8c61c6dd7b28a58a4c0eaf2e91ecbd5" title="set the axis for the rotoide articulation">dJointSetPRAxis2</a> (_id, x, y, z); }
564<a name="l00549"></a>00549
565<a name="l00550"></a>00550 <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
566<a name="l00551"></a>00551 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g88b176c70948c3f96e5c9173904b04fe" title="Get the joint anchor point, in world coordinates.">dJointGetPRAnchor</a> (_id, result); }
567<a name="l00552"></a>00552 <span class="keywordtype">void</span> getAxis1 (dVector3 result)<span class="keyword"> const</span>
568<a name="l00553"></a>00553 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g826424aac5023739bb13426df672ab32" title="Get the prismatic axis.">dJointGetPRAxis1</a> (_id, result); }
569<a name="l00554"></a>00554 <span class="keywordtype">void</span> getAxis2 (dVector3 result)<span class="keyword"> const</span>
570<a name="l00555"></a>00555 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g5f175ed66c5df1119a251fad8a51059d" title="Get the Rotoide axis.">dJointGetPRAxis2</a> (_id, result); }
571<a name="l00556"></a>00556
572<a name="l00557"></a>00557 dReal getPosition()<span class="keyword"> const</span>
573<a name="l00558"></a>00558 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#gd8b95871e93525f44badcdaf8e521da7" title="Get the PR linear position (i.e. the prismatic&amp;#39;s extension).">dJointGetPRPosition</a> (_id); }
574<a name="l00559"></a>00559 dReal getPositionRate()<span class="keyword"> const</span>
575<a name="l00560"></a>00560 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#gc3a434069c8bf31ae5140e2bff3bbb26" title="Get the PR linear position&amp;#39;s time derivative.">dJointGetPRPositionRate</a> (_id); }
576<a name="l00561"></a>00561
577<a name="l00562"></a>00562 <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
578<a name="l00563"></a>00563 { <a class="code" href="group__joints.html#gc08a28659605f17307d563f45db0824b" title="set joint parameter">dJointSetPRParam</a> (_id, parameter, value); }
579<a name="l00564"></a>00564 dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
580<a name="l00565"></a>00565 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g968b868bd1598b24a3101a04320206c6" title="get joint parameter">dJointGetPRParam</a> (_id, parameter); }
581<a name="l00566"></a>00566 };
582<a name="l00567"></a>00567
583<a name="l00568"></a>00568
584<a name="l00569"></a>00569 <span class="keyword">class </span>dFixedJoint : <span class="keyword">public</span> dJoint {
585<a name="l00570"></a>00570 <span class="comment">// intentionally undefined, don't use these</span>
586<a name="l00571"></a>00571 dFixedJoint (<span class="keyword">const</span> dFixedJoint &amp;);
587<a name="l00572"></a>00572 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dFixedJoint &amp;);
588<a name="l00573"></a>00573
589<a name="l00574"></a>00574 <span class="keyword">public</span>:
590<a name="l00575"></a>00575 dFixedJoint() { }
591<a name="l00576"></a>00576 dFixedJoint (dWorldID world, dJointGroupID group=0)
592<a name="l00577"></a>00577 { _id = <a class="code" href="group__joints.html#ge568995d03077e1acb13882a627dcf32" title="Create a new joint of the fixed type.">dJointCreateFixed</a> (world, group); }
593<a name="l00578"></a>00578
594<a name="l00579"></a>00579 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
595<a name="l00580"></a>00580 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
596<a name="l00581"></a>00581 _id = <a class="code" href="group__joints.html#ge568995d03077e1acb13882a627dcf32" title="Create a new joint of the fixed type.">dJointCreateFixed</a> (world, group);
597<a name="l00582"></a>00582 }
598<a name="l00583"></a>00583
599<a name="l00584"></a>00584 <span class="keywordtype">void</span> <span class="keyword">set</span>()
600<a name="l00585"></a>00585 { <a class="code" href="group__joints.html#g8051a8232b4232f7b0d0fd57a3932072" title="Call this on the fixed joint after it has been attached to remember the current desired...">dJointSetFixed</a> (_id); }
601<a name="l00586"></a>00586
602<a name="l00587"></a>00587 <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
603<a name="l00588"></a>00588 { dJointSetFixedParam (_id, parameter, value); }
604<a name="l00589"></a>00589
605<a name="l00590"></a>00590 dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
606<a name="l00591"></a>00591 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#ge433a5eac5f8600d8e6325666c2e12c2" title="get joint parameter">dJointGetFixedParam</a> (_id, parameter); }
607<a name="l00592"></a>00592 };
608<a name="l00593"></a>00593
609<a name="l00594"></a>00594
610<a name="l00595"></a>00595 <span class="keyword">class </span>dContactJoint : <span class="keyword">public</span> dJoint {
611<a name="l00596"></a>00596 <span class="comment">// intentionally undefined, don't use these</span>
612<a name="l00597"></a>00597 dContactJoint (<span class="keyword">const</span> dContactJoint &amp;);
613<a name="l00598"></a>00598 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dContactJoint &amp;);
614<a name="l00599"></a>00599
615<a name="l00600"></a>00600 <span class="keyword">public</span>:
616<a name="l00601"></a>00601 dContactJoint() { }
617<a name="l00602"></a>00602 dContactJoint (dWorldID world, dJointGroupID group, dContact *contact)
618<a name="l00603"></a>00603 { _id = <a class="code" href="group__joints.html#gfa5e1543239ba44ecbdc178ebc7c3cc4" title="Create a new joint of the contact type.">dJointCreateContact</a> (world, group, contact); }
619<a name="l00604"></a>00604
620<a name="l00605"></a>00605 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group, dContact *contact) {
621<a name="l00606"></a>00606 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
622<a name="l00607"></a>00607 _id = <a class="code" href="group__joints.html#gfa5e1543239ba44ecbdc178ebc7c3cc4" title="Create a new joint of the contact type.">dJointCreateContact</a> (world, group, contact);
623<a name="l00608"></a>00608 }
624<a name="l00609"></a>00609 };
625<a name="l00610"></a>00610
626<a name="l00611"></a>00611
627<a name="l00612"></a>00612 <span class="keyword">class </span>dNullJoint : <span class="keyword">public</span> dJoint {
628<a name="l00613"></a>00613 <span class="comment">// intentionally undefined, don't use these</span>
629<a name="l00614"></a>00614 dNullJoint (<span class="keyword">const</span> dNullJoint &amp;);
630<a name="l00615"></a>00615 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dNullJoint &amp;);
631<a name="l00616"></a>00616
632<a name="l00617"></a>00617 <span class="keyword">public</span>:
633<a name="l00618"></a>00618 dNullJoint() { }
634<a name="l00619"></a>00619 dNullJoint (dWorldID world, dJointGroupID group=0)
635<a name="l00620"></a>00620 { _id = dJointCreateNull (world, group); }
636<a name="l00621"></a>00621
637<a name="l00622"></a>00622 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
638<a name="l00623"></a>00623 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
639<a name="l00624"></a>00624 _id = dJointCreateNull (world, group);
640<a name="l00625"></a>00625 }
641<a name="l00626"></a>00626 };
642<a name="l00627"></a>00627
643<a name="l00628"></a>00628
644<a name="l00629"></a>00629 <span class="keyword">class </span>dAMotorJoint : <span class="keyword">public</span> dJoint {
645<a name="l00630"></a>00630 <span class="comment">// intentionally undefined, don't use these</span>
646<a name="l00631"></a>00631 dAMotorJoint (<span class="keyword">const</span> dAMotorJoint &amp;);
647<a name="l00632"></a>00632 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dAMotorJoint &amp;);
648<a name="l00633"></a>00633
649<a name="l00634"></a>00634 <span class="keyword">public</span>:
650<a name="l00635"></a>00635 dAMotorJoint() { }
651<a name="l00636"></a>00636 dAMotorJoint (dWorldID world, dJointGroupID group=0)
652<a name="l00637"></a>00637 { _id = <a class="code" href="group__joints.html#gf23195ce77e12031393e591abd0e28e6" title="Create a new joint of the A-motor type.">dJointCreateAMotor</a> (world, group); }
653<a name="l00638"></a>00638
654<a name="l00639"></a>00639 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
655<a name="l00640"></a>00640 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
656<a name="l00641"></a>00641 _id = <a class="code" href="group__joints.html#gf23195ce77e12031393e591abd0e28e6" title="Create a new joint of the A-motor type.">dJointCreateAMotor</a> (world, group);
657<a name="l00642"></a>00642 }
658<a name="l00643"></a>00643
659<a name="l00644"></a>00644 <span class="keywordtype">void</span> setMode (<span class="keywordtype">int</span> mode)
660<a name="l00645"></a>00645 { <a class="code" href="group__joints.html#gb0a3a8527810717c62a2c68dc4dfa822" title="set mode">dJointSetAMotorMode</a> (_id, mode); }
661<a name="l00646"></a>00646 <span class="keywordtype">int</span> getMode()<span class="keyword"> const</span>
662<a name="l00647"></a>00647 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#gf2430c2062414bc28660bdc06a0d72d5" title="Get the angular motor mode.">dJointGetAMotorMode</a> (_id); }
663<a name="l00648"></a>00648
664<a name="l00649"></a>00649 <span class="keywordtype">void</span> setNumAxes (<span class="keywordtype">int</span> num)
665<a name="l00650"></a>00650 { <a class="code" href="group__joints.html#g1406f976045a1b7edffbb46bf626d04f" title="set the nr of axes">dJointSetAMotorNumAxes</a> (_id, num); }
666<a name="l00651"></a>00651 <span class="keywordtype">int</span> getNumAxes()<span class="keyword"> const</span>
667<a name="l00652"></a>00652 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g35f0392af69ece0d0c3ef7ed88b532bf" title="Get the number of angular axes that will be controlled by the AMotor.">dJointGetAMotorNumAxes</a> (_id); }
668<a name="l00653"></a>00653
669<a name="l00654"></a>00654 <span class="keywordtype">void</span> setAxis (<span class="keywordtype">int</span> anum, <span class="keywordtype">int</span> rel, dReal x, dReal y, dReal z)
670<a name="l00655"></a>00655 { <a class="code" href="group__joints.html#gbef7d92227b62e04b60eb9df02359603" title="set axis">dJointSetAMotorAxis</a> (_id, anum, rel, x, y, z); }
671<a name="l00656"></a>00656 <span class="keywordtype">void</span> getAxis (<span class="keywordtype">int</span> anum, dVector3 result)<span class="keyword"> const</span>
672<a name="l00657"></a>00657 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#gef1af77cc19d81b24ad00025f3c9d5ec" title="Get the AMotor axes.">dJointGetAMotorAxis</a> (_id, anum, result); }
673<a name="l00658"></a>00658 <span class="keywordtype">int</span> getAxisRel (<span class="keywordtype">int</span> anum)<span class="keyword"> const</span>
674<a name="l00659"></a>00659 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g1887538374f044e22f9742650d14ae69" title="Get axis.">dJointGetAMotorAxisRel</a> (_id, anum); }
675<a name="l00660"></a>00660
676<a name="l00661"></a>00661 <span class="keywordtype">void</span> setAngle (<span class="keywordtype">int</span> anum, dReal angle)
677<a name="l00662"></a>00662 { <a class="code" href="group__joints.html#g17b2089e6512e22d71340befb40100d2" title="Tell the AMotor what the current angle is along axis anum.">dJointSetAMotorAngle</a> (_id, anum, angle); }
678<a name="l00663"></a>00663 dReal getAngle (<span class="keywordtype">int</span> anum)<span class="keyword"> const</span>
679<a name="l00664"></a>00664 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g3634444b00ac33a5f34a7af4fffda8b2" title="Get the current angle for axis.">dJointGetAMotorAngle</a> (_id, anum); }
680<a name="l00665"></a>00665 dReal getAngleRate (<span class="keywordtype">int</span> anum)
681<a name="l00666"></a>00666 { <span class="keywordflow">return</span> <a class="code" href="group__joints.html#ga65abc36177390330037299b689b70c7" title="Get the current angle rate for axis anum.">dJointGetAMotorAngleRate</a> (_id,anum); }
682<a name="l00667"></a>00667
683<a name="l00668"></a>00668 <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
684<a name="l00669"></a>00669 { <a class="code" href="group__joints.html#gac3f00196ee0cdb772e00dc259ef639a" title="set joint parameter">dJointSetAMotorParam</a> (_id, parameter, value); }
685<a name="l00670"></a>00670 dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
686<a name="l00671"></a>00671 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#gfc4cd1046089baa4309d30ae7832d289" title="get joint parameter">dJointGetAMotorParam</a> (_id, parameter); }
687<a name="l00672"></a>00672
688<a name="l00673"></a>00673 <span class="keywordtype">void</span> addTorques(dReal torque1, dReal torque2, dReal torque3)
689<a name="l00674"></a>00674 { <a class="code" href="group__joints.html#g69d13d54516716020d2adb841699b77b" title="Applies torque0 about the AMotor&amp;#39;s axis 0, torque1 about the AMotor&amp;#39;s axis...">dJointAddAMotorTorques</a>(_id, torque1, torque2, torque3); }
690<a name="l00675"></a>00675 };
691<a name="l00676"></a>00676
692<a name="l00677"></a>00677
693<a name="l00678"></a>00678 <span class="keyword">class </span>dLMotorJoint : <span class="keyword">public</span> dJoint {
694<a name="l00679"></a>00679 <span class="comment">// intentionally undefined, don't use these</span>
695<a name="l00680"></a>00680 dLMotorJoint (<span class="keyword">const</span> dLMotorJoint &amp;);
696<a name="l00681"></a>00681 <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dLMotorJoint &amp;);
697<a name="l00682"></a>00682
698<a name="l00683"></a>00683 <span class="keyword">public</span>:
699<a name="l00684"></a>00684 dLMotorJoint() { }
700<a name="l00685"></a>00685 dLMotorJoint (dWorldID world, dJointGroupID group=0)
701<a name="l00686"></a>00686 { _id = <a class="code" href="group__joints.html#g21c8c99615269c5d9d3c57c674f6fd56" title="Create a new joint of the L-motor type.">dJointCreateLMotor</a> (world, group); }
702<a name="l00687"></a>00687
703<a name="l00688"></a>00688 <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
704<a name="l00689"></a>00689 <span class="keywordflow">if</span> (_id) <a class="code" href="group__joints.html#g2187ccbcf51c951f680eb6c9a210801a" title="Destroy a joint.">dJointDestroy</a> (_id);
705<a name="l00690"></a>00690 _id = <a class="code" href="group__joints.html#g21c8c99615269c5d9d3c57c674f6fd56" title="Create a new joint of the L-motor type.">dJointCreateLMotor</a> (world, group);
706<a name="l00691"></a>00691 }
707<a name="l00692"></a>00692
708<a name="l00693"></a>00693 <span class="keywordtype">void</span> setNumAxes (<span class="keywordtype">int</span> num)
709<a name="l00694"></a>00694 { <a class="code" href="group__joints.html#gcbfb4014567d69010aba3024d9b7bccd" title="Set the number of axes that will be controlled by the LMotor.">dJointSetLMotorNumAxes</a> (_id, num); }
710<a name="l00695"></a>00695 <span class="keywordtype">int</span> getNumAxes()<span class="keyword"> const</span>
711<a name="l00696"></a>00696 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#g6d7557b5e94e0ee37561cadc5bf85cb7" title="Get nr of axes.">dJointGetLMotorNumAxes</a> (_id); }
712<a name="l00697"></a>00697
713<a name="l00698"></a>00698 <span class="keywordtype">void</span> setAxis (<span class="keywordtype">int</span> anum, <span class="keywordtype">int</span> rel, dReal x, dReal y, dReal z)
714<a name="l00699"></a>00699 { <a class="code" href="group__joints.html#g080b7739f5b2b37a798742cee0ef38a4" title="Set the AMotor axes.">dJointSetLMotorAxis</a> (_id, anum, rel, x, y, z); }
715<a name="l00700"></a>00700 <span class="keywordtype">void</span> getAxis (<span class="keywordtype">int</span> anum, dVector3 result)<span class="keyword"> const</span>
716<a name="l00701"></a>00701 <span class="keyword"> </span>{ <a class="code" href="group__joints.html#g4ef7e0ca633583e82d90679c8eb6d5c3" title="Get axis.">dJointGetLMotorAxis</a> (_id, anum, result); }
717<a name="l00702"></a>00702
718<a name="l00703"></a>00703 <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
719<a name="l00704"></a>00704 { <a class="code" href="group__joints.html#g791bfa6e65d0c3dce99ca0bcd3beb8d6" title="set joint parameter">dJointSetLMotorParam</a> (_id, parameter, value); }
720<a name="l00705"></a>00705 dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
721<a name="l00706"></a>00706 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__joints.html#gcbc48fd61857e3843923166abf81a7a0" title="get joint parameter">dJointGetLMotorParam</a> (_id, parameter); }
722<a name="l00707"></a>00707 };
723<a name="l00708"></a>00708
724<a name="l00709"></a>00709
725<a name="l00710"></a>00710
726<a name="l00711"></a>00711 <span class="preprocessor">#endif</span>
727<a name="l00712"></a>00712 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
728</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
729<a href="http://www.doxygen.org/index.html">
730<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
731</body>
732</html>
diff --git a/libraries/ode-0.9/docs/odecpp__collision_8h-source.html b/libraries/ode-0.9/docs/odecpp__collision_8h-source.html
new file mode 100644
index 0000000..f4943ba
--- /dev/null
+++ b/libraries/ode-0.9/docs/odecpp__collision_8h-source.html
@@ -0,0 +1,366 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: odecpp_collision.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>odecpp_collision.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="comment">/* C++ interface for new collision API */</span>
39<a name="l00024"></a>00024
40<a name="l00025"></a>00025
41<a name="l00026"></a>00026 <span class="preprocessor">#ifndef _ODE_ODECPP_COLLISION_H_</span>
42<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_ODECPP_COLLISION_H_</span>
43<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#ifdef __cplusplus</span>
44<a name="l00029"></a>00029 <span class="preprocessor"></span>
45<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;ode/error.h&gt;</span>
46<a name="l00031"></a>00031
47<a name="l00032"></a>00032
48<a name="l00033"></a>00033 <span class="keyword">class </span>dGeom {
49<a name="l00034"></a>00034 <span class="comment">// intentionally undefined, don't use these</span>
50<a name="l00035"></a>00035 dGeom (dGeom &amp;);
51<a name="l00036"></a>00036 <span class="keywordtype">void</span> operator= (dGeom &amp;);
52<a name="l00037"></a>00037
53<a name="l00038"></a>00038 <span class="keyword">protected</span>:
54<a name="l00039"></a>00039 dGeomID _id;
55<a name="l00040"></a>00040
56<a name="l00041"></a>00041 <span class="keyword">public</span>:
57<a name="l00042"></a>00042 dGeom()
58<a name="l00043"></a>00043 { _id = 0; }
59<a name="l00044"></a>00044 ~dGeom()
60<a name="l00045"></a>00045 { <span class="keywordflow">if</span> (_id) <a class="code" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> (_id); }
61<a name="l00046"></a>00046
62<a name="l00047"></a>00047 dGeomID id()<span class="keyword"> const</span>
63<a name="l00048"></a>00048 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
64<a name="l00049"></a>00049 operator dGeomID()<span class="keyword"> const</span>
65<a name="l00050"></a>00050 <span class="keyword"> </span>{ <span class="keywordflow">return</span> _id; }
66<a name="l00051"></a>00051
67<a name="l00052"></a>00052 <span class="keywordtype">void</span> destroy() {
68<a name="l00053"></a>00053 <span class="keywordflow">if</span> (_id) <a class="code" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> (_id);
69<a name="l00054"></a>00054 _id = 0;
70<a name="l00055"></a>00055 }
71<a name="l00056"></a>00056
72<a name="l00057"></a>00057 <span class="keywordtype">int</span> getClass()<span class="keyword"> const</span>
73<a name="l00058"></a>00058 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__collide.html#g07b5ed5b915f756f419a4a7ce69dc67e" title="Given a geom, this returns its class.">dGeomGetClass</a> (_id); }
74<a name="l00059"></a>00059
75<a name="l00060"></a>00060 dSpaceID getSpace()<span class="keyword"> const</span>
76<a name="l00061"></a>00061 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__collide.html#gfdc35eade2cbd0b6886ce957325d7c03" title="Query for the space containing a particular geom.">dGeomGetSpace</a> (_id); }
77<a name="l00062"></a>00062
78<a name="l00063"></a>00063 <span class="keywordtype">void</span> setData (<span class="keywordtype">void</span> *data)
79<a name="l00064"></a>00064 { <a class="code" href="group__collide.html#gf68eb443d5c66ab1aaa8a7d38d1dbc4f" title="Set the user-defined data pointer stored in the geom.">dGeomSetData</a> (_id,data); }
80<a name="l00065"></a>00065 <span class="keywordtype">void</span> *getData()<span class="keyword"> const</span>
81<a name="l00066"></a>00066 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__collide.html#gc1a185e22b136814fd3afc8469d98996" title="Get the user-defined data pointer stored in the geom.">dGeomGetData</a> (_id); }
82<a name="l00067"></a>00067
83<a name="l00068"></a>00068 <span class="keywordtype">void</span> setBody (dBodyID b)
84<a name="l00069"></a>00069 { <a class="code" href="group__collide.html#g97cad1194789477eac19fe364d986505" title="Set the body associated with a placeable geom.">dGeomSetBody</a> (_id,b); }
85<a name="l00070"></a>00070 dBodyID getBody()<span class="keyword"> const</span>
86<a name="l00071"></a>00071 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__collide.html#gd6cedf77fde0dddf751c5d42fcc8eebf" title="Get the body associated with a placeable geom.">dGeomGetBody</a> (_id); }
87<a name="l00072"></a>00072
88<a name="l00073"></a>00073 <span class="keywordtype">void</span> setPosition (dReal x, dReal y, dReal z)
89<a name="l00074"></a>00074 { <a class="code" href="group__collide.html#g71043b70a735e8f5451c3e13cef345fe" title="Set the position vector of a placeable geom.">dGeomSetPosition</a> (_id,x,y,z); }
90<a name="l00075"></a>00075 <span class="keyword">const</span> dReal * getPosition()<span class="keyword"> const</span>
91<a name="l00076"></a>00076 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__collide.html#g95b93f803880cac2619fe2635aa93ad8" title="Get the position vector of a placeable geom.">dGeomGetPosition</a> (_id); }
92<a name="l00077"></a>00077
93<a name="l00078"></a>00078 <span class="keywordtype">void</span> setRotation (<span class="keyword">const</span> dMatrix3 R)
94<a name="l00079"></a>00079 { <a class="code" href="group__collide.html#g76c510f4b7d5a036d8a36f2d60d670e5" title="Set the rotation matrix of a placeable geom.">dGeomSetRotation</a> (_id,R); }
95<a name="l00080"></a>00080 <span class="keyword">const</span> dReal * getRotation()<span class="keyword"> const</span>
96<a name="l00081"></a>00081 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__collide.html#g293b2264cefb12f9a6659cacc6a722f7" title="Get the rotation matrix of a placeable geom.">dGeomGetRotation</a> (_id); }
97<a name="l00082"></a>00082
98<a name="l00083"></a>00083 <span class="keywordtype">void</span> setQuaternion (<span class="keyword">const</span> dQuaternion quat)
99<a name="l00084"></a>00084 { <a class="code" href="group__collide.html#g989149d93162264d699444a57b045150" title="Set the rotation of a placeable geom.">dGeomSetQuaternion</a> (_id,quat); }
100<a name="l00085"></a>00085 <span class="keywordtype">void</span> getQuaternion (dQuaternion quat)<span class="keyword"> const</span>
101<a name="l00086"></a>00086 <span class="keyword"> </span>{ <a class="code" href="group__collide.html#g11ad7f0098639b06f4bcd2d681122842" title="Get the rotation quaternion of a placeable geom.">dGeomGetQuaternion</a> (_id,quat); }
102<a name="l00087"></a>00087
103<a name="l00088"></a>00088 <span class="keywordtype">void</span> getAABB (dReal aabb[6])<span class="keyword"> const</span>
104<a name="l00089"></a>00089 <span class="keyword"> </span>{ <a class="code" href="group__collide.html#g904e360ac6e9e85a05e67929990e5b72" title="Return the axis-aligned bounding box.">dGeomGetAABB</a> (_id, aabb); }
105<a name="l00090"></a>00090
106<a name="l00091"></a>00091 <span class="keywordtype">int</span> isSpace()
107<a name="l00092"></a>00092 { <span class="keywordflow">return</span> <a class="code" href="group__collide.html#ge5a58bdc78fb4f163a0e9c3ecabf64c9" title="Determing if a geom is a space.">dGeomIsSpace</a> (_id); }
108<a name="l00093"></a>00093
109<a name="l00094"></a>00094 <span class="keywordtype">void</span> setCategoryBits (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> bits)
110<a name="l00095"></a>00095 { <a class="code" href="group__collide.html#g80fd5741701eb48472521780d5e2f9b9" title="Set the &amp;quot;category&amp;quot; bitfield for the given geom.">dGeomSetCategoryBits</a> (_id, bits); }
111<a name="l00096"></a>00096 <span class="keywordtype">void</span> setCollideBits (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> bits)
112<a name="l00097"></a>00097 { <a class="code" href="group__collide.html#ga55b4de01a61be41668685857b78455d" title="Set the &amp;quot;collide&amp;quot; bitfield for the given geom.">dGeomSetCollideBits</a> (_id, bits); }
113<a name="l00098"></a>00098 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> getCategoryBits()
114<a name="l00099"></a>00099 { <span class="keywordflow">return</span> <a class="code" href="group__collide.html#gfb62d3493b6789382f65776ab931e78d" title="Get the &amp;quot;category&amp;quot; bitfield for the given geom.">dGeomGetCategoryBits</a> (_id); }
115<a name="l00100"></a>00100 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> getCollideBits()
116<a name="l00101"></a>00101 { <span class="keywordflow">return</span> <a class="code" href="group__collide.html#g5591e5c496a5a6f8b66dc57e03d0cd8d" title="Get the &amp;quot;collide&amp;quot; bitfield for the given geom.">dGeomGetCollideBits</a> (_id); }
117<a name="l00102"></a>00102
118<a name="l00103"></a>00103 <span class="keywordtype">void</span> enable()
119<a name="l00104"></a>00104 { <a class="code" href="group__collide.html#ga7c64b8fcae37ee9541208a0351f3d05" title="Enable a geom.">dGeomEnable</a> (_id); }
120<a name="l00105"></a>00105 <span class="keywordtype">void</span> disable()
121<a name="l00106"></a>00106 { <a class="code" href="group__collide.html#g6cb32b4161435fe491859680b463fc12" title="Disable a geom.">dGeomDisable</a> (_id); }
122<a name="l00107"></a>00107 <span class="keywordtype">int</span> isEnabled()
123<a name="l00108"></a>00108 { <span class="keywordflow">return</span> <a class="code" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e" title="Check to see if a geom is enabled.">dGeomIsEnabled</a> (_id); }
124<a name="l00109"></a>00109
125<a name="l00110"></a>00110 <span class="keywordtype">void</span> collide2 (dGeomID g, <span class="keywordtype">void</span> *data, <a class="code" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0" title="User callback for geom-geom collision testing.">dNearCallback</a> *callback)
126<a name="l00111"></a>00111 { <a class="code" href="group__collide.html#g72a6bb0b550d3e181f8b7a9be7179db5" title="Determines which geoms from one space may potentially intersect with geoms from another...">dSpaceCollide2</a> (_id,g,data,callback); }
127<a name="l00112"></a>00112 };
128<a name="l00113"></a>00113
129<a name="l00114"></a>00114
130<a name="l00115"></a>00115 <span class="keyword">class </span>dSpace : <span class="keyword">public</span> dGeom {
131<a name="l00116"></a>00116 <span class="comment">// intentionally undefined, don't use these</span>
132<a name="l00117"></a>00117 dSpace (dSpace &amp;);
133<a name="l00118"></a>00118 <span class="keywordtype">void</span> operator= (dSpace &amp;);
134<a name="l00119"></a>00119
135<a name="l00120"></a>00120 <span class="keyword">protected</span>:
136<a name="l00121"></a>00121 <span class="comment">// the default constructor is protected so that you</span>
137<a name="l00122"></a>00122 <span class="comment">// can't instance this class. you must instance one</span>
138<a name="l00123"></a>00123 <span class="comment">// of its subclasses instead.</span>
139<a name="l00124"></a>00124 dSpace () { _id = 0; }
140<a name="l00125"></a>00125
141<a name="l00126"></a>00126 <span class="keyword">public</span>:
142<a name="l00127"></a>00127 dSpaceID id()<span class="keyword"> const</span>
143<a name="l00128"></a>00128 <span class="keyword"> </span>{ <span class="keywordflow">return</span> (dSpaceID) _id; }
144<a name="l00129"></a>00129 operator dSpaceID()<span class="keyword"> const</span>
145<a name="l00130"></a>00130 <span class="keyword"> </span>{ <span class="keywordflow">return</span> (dSpaceID) _id; }
146<a name="l00131"></a>00131
147<a name="l00132"></a>00132 <span class="keywordtype">void</span> setCleanup (<span class="keywordtype">int</span> mode)
148<a name="l00133"></a>00133 { dSpaceSetCleanup (<span class="keywordtype">id</span>(), mode); }
149<a name="l00134"></a>00134 <span class="keywordtype">int</span> getCleanup()
150<a name="l00135"></a>00135 { <span class="keywordflow">return</span> dSpaceGetCleanup (<span class="keywordtype">id</span>()); }
151<a name="l00136"></a>00136
152<a name="l00137"></a>00137 <span class="keywordtype">void</span> <span class="keyword">add</span> (dGeomID x)
153<a name="l00138"></a>00138 { dSpaceAdd (<span class="keywordtype">id</span>(), x); }
154<a name="l00139"></a>00139 <span class="keywordtype">void</span> <span class="keyword">remove</span> (dGeomID x)
155<a name="l00140"></a>00140 { dSpaceRemove (<span class="keywordtype">id</span>(), x); }
156<a name="l00141"></a>00141 <span class="keywordtype">int</span> query (dGeomID x)
157<a name="l00142"></a>00142 { <span class="keywordflow">return</span> dSpaceQuery (<span class="keywordtype">id</span>(),x); }
158<a name="l00143"></a>00143
159<a name="l00144"></a>00144 <span class="keywordtype">int</span> getNumGeoms()
160<a name="l00145"></a>00145 { <span class="keywordflow">return</span> dSpaceGetNumGeoms (<span class="keywordtype">id</span>()); }
161<a name="l00146"></a>00146 dGeomID getGeom (<span class="keywordtype">int</span> i)
162<a name="l00147"></a>00147 { <span class="keywordflow">return</span> dSpaceGetGeom (<span class="keywordtype">id</span>(),i); }
163<a name="l00148"></a>00148
164<a name="l00149"></a>00149 <span class="keywordtype">void</span> collide (<span class="keywordtype">void</span> *data, <a class="code" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0" title="User callback for geom-geom collision testing.">dNearCallback</a> *callback)
165<a name="l00150"></a>00150 { <a class="code" href="group__collide.html#gfd185829b6940e2b3238517e1acd2fbb" title="Determines which pairs of geoms in a space may potentially intersect, and calls the...">dSpaceCollide</a> (<span class="keywordtype">id</span>(),data,callback); }
166<a name="l00151"></a>00151 };
167<a name="l00152"></a>00152
168<a name="l00153"></a>00153
169<a name="l00154"></a>00154 <span class="keyword">class </span>dSimpleSpace : <span class="keyword">public</span> dSpace {
170<a name="l00155"></a>00155 <span class="comment">// intentionally undefined, don't use these</span>
171<a name="l00156"></a>00156 dSimpleSpace (dSimpleSpace &amp;);
172<a name="l00157"></a>00157 <span class="keywordtype">void</span> operator= (dSimpleSpace &amp;);
173<a name="l00158"></a>00158
174<a name="l00159"></a>00159 <span class="keyword">public</span>:
175<a name="l00160"></a>00160 dSimpleSpace (dSpaceID space)
176<a name="l00161"></a>00161 { _id = (dGeomID) dSimpleSpaceCreate (space); }
177<a name="l00162"></a>00162 };
178<a name="l00163"></a>00163
179<a name="l00164"></a>00164
180<a name="l00165"></a>00165 <span class="keyword">class </span>dHashSpace : <span class="keyword">public</span> dSpace {
181<a name="l00166"></a>00166 <span class="comment">// intentionally undefined, don't use these</span>
182<a name="l00167"></a>00167 dHashSpace (dHashSpace &amp;);
183<a name="l00168"></a>00168 <span class="keywordtype">void</span> operator= (dHashSpace &amp;);
184<a name="l00169"></a>00169
185<a name="l00170"></a>00170 <span class="keyword">public</span>:
186<a name="l00171"></a>00171 dHashSpace (dSpaceID space)
187<a name="l00172"></a>00172 { _id = (dGeomID) dHashSpaceCreate (space); }
188<a name="l00173"></a>00173 <span class="keywordtype">void</span> setLevels (<span class="keywordtype">int</span> minlevel, <span class="keywordtype">int</span> maxlevel)
189<a name="l00174"></a>00174 { dHashSpaceSetLevels (<span class="keywordtype">id</span>(),minlevel,maxlevel); }
190<a name="l00175"></a>00175 };
191<a name="l00176"></a>00176
192<a name="l00177"></a>00177
193<a name="l00178"></a>00178 <span class="keyword">class </span>dQuadTreeSpace : <span class="keyword">public</span> dSpace {
194<a name="l00179"></a>00179 <span class="comment">// intentionally undefined, don't use these</span>
195<a name="l00180"></a>00180 dQuadTreeSpace (dQuadTreeSpace &amp;);
196<a name="l00181"></a>00181 <span class="keywordtype">void</span> operator= (dQuadTreeSpace &amp;);
197<a name="l00182"></a>00182
198<a name="l00183"></a>00183 <span class="keyword">public</span>:
199<a name="l00184"></a>00184 dQuadTreeSpace (dSpaceID space, dVector3 center, dVector3 extents, <span class="keywordtype">int</span> depth)
200<a name="l00185"></a>00185 { _id = (dGeomID) dQuadTreeSpaceCreate (space,center,extents,depth); }
201<a name="l00186"></a>00186 };
202<a name="l00187"></a>00187
203<a name="l00188"></a>00188
204<a name="l00189"></a>00189 <span class="keyword">class </span>dSphere : <span class="keyword">public</span> dGeom {
205<a name="l00190"></a>00190 <span class="comment">// intentionally undefined, don't use these</span>
206<a name="l00191"></a>00191 dSphere (dSphere &amp;);
207<a name="l00192"></a>00192 <span class="keywordtype">void</span> operator= (dSphere &amp;);
208<a name="l00193"></a>00193
209<a name="l00194"></a>00194 <span class="keyword">public</span>:
210<a name="l00195"></a>00195 dSphere () { }
211<a name="l00196"></a>00196 dSphere (dSpaceID space, dReal radius)
212<a name="l00197"></a>00197 { _id = <a class="code" href="group__collide__sphere.html#g53c79c860638ca3600744a193da68474" title="Create a sphere geom of the given radius, and return its ID.">dCreateSphere</a> (space, radius); }
213<a name="l00198"></a>00198
214<a name="l00199"></a>00199 <span class="keywordtype">void</span> create (dSpaceID space, dReal radius) {
215<a name="l00200"></a>00200 <span class="keywordflow">if</span> (_id) <a class="code" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> (_id);
216<a name="l00201"></a>00201 _id = <a class="code" href="group__collide__sphere.html#g53c79c860638ca3600744a193da68474" title="Create a sphere geom of the given radius, and return its ID.">dCreateSphere</a> (space, radius);
217<a name="l00202"></a>00202 }
218<a name="l00203"></a>00203
219<a name="l00204"></a>00204 <span class="keywordtype">void</span> setRadius (dReal radius)
220<a name="l00205"></a>00205 { <a class="code" href="group__collide__sphere.html#g2341ae9b3b733571eff7a1857109f394" title="Set the radius of a sphere geom.">dGeomSphereSetRadius</a> (_id, radius); }
221<a name="l00206"></a>00206 dReal getRadius()<span class="keyword"> const</span>
222<a name="l00207"></a>00207 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="group__collide__sphere.html#g0e7f664deb9f557a6a24f93705b29fa9" title="Retrieves the radius of a sphere geom.">dGeomSphereGetRadius</a> (_id); }
223<a name="l00208"></a>00208 };
224<a name="l00209"></a>00209
225<a name="l00210"></a>00210
226<a name="l00211"></a>00211 <span class="keyword">class </span>dBox : <span class="keyword">public</span> dGeom {
227<a name="l00212"></a>00212 <span class="comment">// intentionally undefined, don't use these</span>
228<a name="l00213"></a>00213 dBox (dBox &amp;);
229<a name="l00214"></a>00214 <span class="keywordtype">void</span> operator= (dBox &amp;);
230<a name="l00215"></a>00215
231<a name="l00216"></a>00216 <span class="keyword">public</span>:
232<a name="l00217"></a>00217 dBox () { }
233<a name="l00218"></a>00218 dBox (dSpaceID space, dReal lx, dReal ly, dReal lz)
234<a name="l00219"></a>00219 { _id = <a class="code" href="group__collide__box.html#g3e3b0b249a8ccd40a9969e3a26548397" title="Create a box geom with the provided side lengths.">dCreateBox</a> (space,lx,ly,lz); }
235<a name="l00220"></a>00220
236<a name="l00221"></a>00221 <span class="keywordtype">void</span> create (dSpaceID space, dReal lx, dReal ly, dReal lz) {
237<a name="l00222"></a>00222 <span class="keywordflow">if</span> (_id) <a class="code" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> (_id);
238<a name="l00223"></a>00223 _id = <a class="code" href="group__collide__box.html#g3e3b0b249a8ccd40a9969e3a26548397" title="Create a box geom with the provided side lengths.">dCreateBox</a> (space,lx,ly,lz);
239<a name="l00224"></a>00224 }
240<a name="l00225"></a>00225
241<a name="l00226"></a>00226 <span class="keywordtype">void</span> setLengths (dReal lx, dReal ly, dReal lz)
242<a name="l00227"></a>00227 { <a class="code" href="group__collide__box.html#g4c7060780be9eaf74228565910168273" title="Set the side lengths of the given box.">dGeomBoxSetLengths</a> (_id, lx, ly, lz); }
243<a name="l00228"></a>00228 <span class="keywordtype">void</span> getLengths (dVector3 result)<span class="keyword"> const</span>
244<a name="l00229"></a>00229 <span class="keyword"> </span>{ <a class="code" href="group__collide__box.html#ge24d9264235d2487b2e2d52b2c62c879" title="Get the side lengths of a box.">dGeomBoxGetLengths</a> (_id,result); }
245<a name="l00230"></a>00230 };
246<a name="l00231"></a>00231
247<a name="l00232"></a>00232
248<a name="l00233"></a>00233 <span class="keyword">class </span>dPlane : <span class="keyword">public</span> dGeom {
249<a name="l00234"></a>00234 <span class="comment">// intentionally undefined, don't use these</span>
250<a name="l00235"></a>00235 dPlane (dPlane &amp;);
251<a name="l00236"></a>00236 <span class="keywordtype">void</span> operator= (dPlane &amp;);
252<a name="l00237"></a>00237
253<a name="l00238"></a>00238 <span class="keyword">public</span>:
254<a name="l00239"></a>00239 dPlane() { }
255<a name="l00240"></a>00240 dPlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d)
256<a name="l00241"></a>00241 { _id = dCreatePlane (space,a,b,c,d); }
257<a name="l00242"></a>00242
258<a name="l00243"></a>00243 <span class="keywordtype">void</span> create (dSpaceID space, dReal a, dReal b, dReal c, dReal d) {
259<a name="l00244"></a>00244 <span class="keywordflow">if</span> (_id) <a class="code" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> (_id);
260<a name="l00245"></a>00245 _id = dCreatePlane (space,a,b,c,d);
261<a name="l00246"></a>00246 }
262<a name="l00247"></a>00247
263<a name="l00248"></a>00248 <span class="keywordtype">void</span> setParams (dReal a, dReal b, dReal c, dReal d)
264<a name="l00249"></a>00249 { dGeomPlaneSetParams (_id, a, b, c, d); }
265<a name="l00250"></a>00250 <span class="keywordtype">void</span> getParams (dVector4 result)<span class="keyword"> const</span>
266<a name="l00251"></a>00251 <span class="keyword"> </span>{ dGeomPlaneGetParams (_id,result); }
267<a name="l00252"></a>00252 };
268<a name="l00253"></a>00253
269<a name="l00254"></a>00254
270<a name="l00255"></a>00255 <span class="keyword">class </span>dCapsule : <span class="keyword">public</span> dGeom {
271<a name="l00256"></a>00256 <span class="comment">// intentionally undefined, don't use these</span>
272<a name="l00257"></a>00257 dCapsule (dCapsule &amp;);
273<a name="l00258"></a>00258 <span class="keywordtype">void</span> operator= (dCapsule &amp;);
274<a name="l00259"></a>00259
275<a name="l00260"></a>00260 <span class="keyword">public</span>:
276<a name="l00261"></a>00261 dCapsule() { }
277<a name="l00262"></a>00262 dCapsule (dSpaceID space, dReal radius, dReal length)
278<a name="l00263"></a>00263 { _id = dCreateCapsule (space,radius,length); }
279<a name="l00264"></a>00264
280<a name="l00265"></a>00265 <span class="keywordtype">void</span> create (dSpaceID space, dReal radius, dReal length) {
281<a name="l00266"></a>00266 <span class="keywordflow">if</span> (_id) <a class="code" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> (_id);
282<a name="l00267"></a>00267 _id = dCreateCapsule (space,radius,length);
283<a name="l00268"></a>00268 }
284<a name="l00269"></a>00269
285<a name="l00270"></a>00270 <span class="keywordtype">void</span> setParams (dReal radius, dReal length)
286<a name="l00271"></a>00271 { dGeomCapsuleSetParams (_id, radius, length); }
287<a name="l00272"></a>00272 <span class="keywordtype">void</span> getParams (dReal *radius, dReal *length)<span class="keyword"> const</span>
288<a name="l00273"></a>00273 <span class="keyword"> </span>{ dGeomCapsuleGetParams (_id,radius,length); }
289<a name="l00274"></a>00274 };
290<a name="l00275"></a>00275
291<a name="l00276"></a>00276
292<a name="l00277"></a>00277 <span class="keyword">class </span>dRay : <span class="keyword">public</span> dGeom {
293<a name="l00278"></a>00278 <span class="comment">// intentionally undefined, don't use these</span>
294<a name="l00279"></a>00279 dRay (dRay &amp;);
295<a name="l00280"></a>00280 <span class="keywordtype">void</span> operator= (dRay &amp;);
296<a name="l00281"></a>00281
297<a name="l00282"></a>00282 <span class="keyword">public</span>:
298<a name="l00283"></a>00283 dRay() { }
299<a name="l00284"></a>00284 dRay (dSpaceID space, dReal length)
300<a name="l00285"></a>00285 { _id = dCreateRay (space,length); }
301<a name="l00286"></a>00286
302<a name="l00287"></a>00287 <span class="keywordtype">void</span> create (dSpaceID space, dReal length) {
303<a name="l00288"></a>00288 <span class="keywordflow">if</span> (_id) <a class="code" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> (_id);
304<a name="l00289"></a>00289 _id = dCreateRay (space,length);
305<a name="l00290"></a>00290 }
306<a name="l00291"></a>00291
307<a name="l00292"></a>00292 <span class="keywordtype">void</span> setLength (dReal length)
308<a name="l00293"></a>00293 { dGeomRaySetLength (_id, length); }
309<a name="l00294"></a>00294 dReal getLength()
310<a name="l00295"></a>00295 { <span class="keywordflow">return</span> dGeomRayGetLength (_id); }
311<a name="l00296"></a>00296
312<a name="l00297"></a>00297 <span class="keywordtype">void</span> <span class="keyword">set</span> (dReal px, dReal py, dReal pz, dReal dx, dReal dy, dReal dz)
313<a name="l00298"></a>00298 { dGeomRaySet (_id, px, py, pz, dx, dy, dz); }
314<a name="l00299"></a>00299 <span class="keywordtype">void</span> <span class="keyword">get</span> (dVector3 start, dVector3 dir)
315<a name="l00300"></a>00300 { dGeomRayGet (_id, start, dir); }
316<a name="l00301"></a>00301
317<a name="l00302"></a>00302 <span class="keywordtype">void</span> setParams (<span class="keywordtype">int</span> firstContact, <span class="keywordtype">int</span> backfaceCull)
318<a name="l00303"></a>00303 { dGeomRaySetParams (_id, firstContact, backfaceCull); }
319<a name="l00304"></a>00304 <span class="keywordtype">void</span> getParams (<span class="keywordtype">int</span> *firstContact, <span class="keywordtype">int</span> *backfaceCull)
320<a name="l00305"></a>00305 { dGeomRayGetParams (_id, firstContact, backfaceCull); }
321<a name="l00306"></a>00306 <span class="keywordtype">void</span> setClosestHit (<span class="keywordtype">int</span> closestHit)
322<a name="l00307"></a>00307 { dGeomRaySetClosestHit (_id, closestHit); }
323<a name="l00308"></a>00308 <span class="keywordtype">int</span> getClosestHit()
324<a name="l00309"></a>00309 { <span class="keywordflow">return</span> dGeomRayGetClosestHit (_id); }
325<a name="l00310"></a>00310 };
326<a name="l00311"></a>00311
327<a name="l00312"></a>00312
328<a name="l00313"></a>00313 <span class="keyword">class </span>dGeomTransform : <span class="keyword">public</span> dGeom {
329<a name="l00314"></a>00314 <span class="comment">// intentionally undefined, don't use these</span>
330<a name="l00315"></a>00315 dGeomTransform (dGeomTransform &amp;);
331<a name="l00316"></a>00316 <span class="keywordtype">void</span> operator= (dGeomTransform &amp;);
332<a name="l00317"></a>00317
333<a name="l00318"></a>00318 <span class="keyword">public</span>:
334<a name="l00319"></a>00319 dGeomTransform() { }
335<a name="l00320"></a>00320 dGeomTransform (dSpaceID space)
336<a name="l00321"></a>00321 { _id = dCreateGeomTransform (space); }
337<a name="l00322"></a>00322
338<a name="l00323"></a>00323 <span class="keywordtype">void</span> create (dSpaceID space=0) {
339<a name="l00324"></a>00324 <span class="keywordflow">if</span> (_id) <a class="code" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6" title="Destroy a geom, removing it from any space.">dGeomDestroy</a> (_id);
340<a name="l00325"></a>00325 _id = dCreateGeomTransform (space);
341<a name="l00326"></a>00326 }
342<a name="l00327"></a>00327
343<a name="l00328"></a>00328 <span class="keywordtype">void</span> setGeom (dGeomID geom)
344<a name="l00329"></a>00329 { dGeomTransformSetGeom (_id, geom); }
345<a name="l00330"></a>00330 dGeomID getGeom()<span class="keyword"> const</span>
346<a name="l00331"></a>00331 <span class="keyword"> </span>{ <span class="keywordflow">return</span> dGeomTransformGetGeom (_id); }
347<a name="l00332"></a>00332
348<a name="l00333"></a>00333 <span class="keywordtype">void</span> setCleanup (<span class="keywordtype">int</span> mode)
349<a name="l00334"></a>00334 { dGeomTransformSetCleanup (_id,mode); }
350<a name="l00335"></a>00335 <span class="keywordtype">int</span> getCleanup ()
351<a name="l00336"></a>00336 { <span class="keywordflow">return</span> dGeomTransformGetCleanup (_id); }
352<a name="l00337"></a>00337
353<a name="l00338"></a>00338 <span class="keywordtype">void</span> setInfo (<span class="keywordtype">int</span> mode)
354<a name="l00339"></a>00339 { dGeomTransformSetInfo (_id,mode); }
355<a name="l00340"></a>00340 <span class="keywordtype">int</span> getInfo()
356<a name="l00341"></a>00341 { <span class="keywordflow">return</span> dGeomTransformGetInfo (_id); }
357<a name="l00342"></a>00342 };
358<a name="l00343"></a>00343
359<a name="l00344"></a>00344
360<a name="l00345"></a>00345 <span class="preprocessor">#endif</span>
361<a name="l00346"></a>00346 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
362</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
363<a href="http://www.doxygen.org/index.html">
364<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
365</body>
366</html>
diff --git a/libraries/ode-0.9/docs/odemath_8h-source.html b/libraries/ode-0.9/docs/odemath_8h-source.html
new file mode 100644
index 0000000..b330c60
--- /dev/null
+++ b/libraries/ode-0.9/docs/odemath_8h-source.html
@@ -0,0 +1,350 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: odemath.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>odemath.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_ODEMATH_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_ODEMATH_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
42<a name="l00027"></a>00027
43<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __GNUC__</span>
44<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define PURE_INLINE extern inline</span>
45<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#else</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define PURE_INLINE inline</span>
47<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
48<a name="l00033"></a>00033 <span class="preprocessor"></span>
49<a name="l00034"></a>00034 <span class="comment">/*</span>
50<a name="l00035"></a>00035 <span class="comment"> * macro to access elements i,j in an NxM matrix A, independent of the</span>
51<a name="l00036"></a>00036 <span class="comment"> * matrix storage convention.</span>
52<a name="l00037"></a>00037 <span class="comment"> */</span>
53<a name="l00038"></a>00038 <span class="preprocessor">#define dACCESS33(A,i,j) ((A)[(i)*4+(j)])</span>
54<a name="l00039"></a>00039 <span class="preprocessor"></span>
55<a name="l00040"></a>00040 <span class="comment">/*</span>
56<a name="l00041"></a>00041 <span class="comment"> * Macro to test for valid floating point values</span>
57<a name="l00042"></a>00042 <span class="comment"> */</span>
58<a name="l00043"></a>00043 <span class="preprocessor">#define dVALIDVEC3(v) (!(dIsNan(v[0]) || dIsNan(v[1]) || dIsNan(v[2])))</span>
59<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#define dVALIDVEC4(v) (!(dIsNan(v[0]) || dIsNan(v[1]) || dIsNan(v[2]) || dIsNan(v[3])))</span>
60<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#define dVALIDMAT3(m) (!(dIsNan(m[0]) || dIsNan(m[1]) || dIsNan(m[2]) || dIsNan(m[3]) || dIsNan(m[4]) || dIsNan(m[5]) || dIsNan(m[6]) || dIsNan(m[7]) || dIsNan(m[8]) || dIsNan(m[9]) || dIsNan(m[10]) || dIsNan(m[11])))</span>
61<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define dVALIDMAT4(m) (!(dIsNan(m[0]) || dIsNan(m[1]) || dIsNan(m[2]) || dIsNan(m[3]) || dIsNan(m[4]) || dIsNan(m[5]) || dIsNan(m[6]) || dIsNan(m[7]) || dIsNan(m[8]) || dIsNan(m[9]) || dIsNan(m[10]) || dIsNan(m[11]) || dIsNan(m[12]) || dIsNan(m[13]) || dIsNan(m[14]) || dIsNan(m[15]) ))</span>
62<a name="l00047"></a>00047 <span class="preprocessor"></span>
63<a name="l00048"></a>00048
64<a name="l00049"></a>00049
65<a name="l00050"></a>00050 <span class="comment">/*</span>
66<a name="l00051"></a>00051 <span class="comment"> * General purpose vector operations with other vectors or constants.</span>
67<a name="l00052"></a>00052 <span class="comment"> */</span>
68<a name="l00053"></a>00053
69<a name="l00054"></a>00054 <span class="preprocessor">#define dOP(a,op,b,c) \</span>
70<a name="l00055"></a>00055 <span class="preprocessor"> (a)[0] = ((b)[0]) op ((c)[0]); \</span>
71<a name="l00056"></a>00056 <span class="preprocessor"> (a)[1] = ((b)[1]) op ((c)[1]); \</span>
72<a name="l00057"></a>00057 <span class="preprocessor"> (a)[2] = ((b)[2]) op ((c)[2]);</span>
73<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#define dOPC(a,op,b,c) \</span>
74<a name="l00059"></a>00059 <span class="preprocessor"> (a)[0] = ((b)[0]) op (c); \</span>
75<a name="l00060"></a>00060 <span class="preprocessor"> (a)[1] = ((b)[1]) op (c); \</span>
76<a name="l00061"></a>00061 <span class="preprocessor"> (a)[2] = ((b)[2]) op (c);</span>
77<a name="l00062"></a>00062 <span class="preprocessor"></span><span class="preprocessor">#define dOPE(a,op,b) \</span>
78<a name="l00063"></a>00063 <span class="preprocessor"> (a)[0] op ((b)[0]); \</span>
79<a name="l00064"></a>00064 <span class="preprocessor"> (a)[1] op ((b)[1]); \</span>
80<a name="l00065"></a>00065 <span class="preprocessor"> (a)[2] op ((b)[2]);</span>
81<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define dOPEC(a,op,c) \</span>
82<a name="l00067"></a>00067 <span class="preprocessor"> (a)[0] op (c); \</span>
83<a name="l00068"></a>00068 <span class="preprocessor"> (a)[1] op (c); \</span>
84<a name="l00069"></a>00069 <span class="preprocessor"> (a)[2] op (c);</span>
85<a name="l00070"></a>00070 <span class="preprocessor"></span>
86<a name="l00071"></a>00071
87<a name="l00072"></a>00072 <span class="comment">/*</span>
88<a name="l00073"></a>00073 <span class="comment"> * Length, and squared length helpers. dLENGTH returns the length of a dVector3.</span>
89<a name="l00074"></a>00074 <span class="comment"> * dLENGTHSQUARED return the squared length of a dVector3.</span>
90<a name="l00075"></a>00075 <span class="comment"> */</span>
91<a name="l00076"></a>00076
92<a name="l00077"></a>00077 <span class="preprocessor">#define dLENGTHSQUARED(a) (((a)[0])*((a)[0]) + ((a)[1])*((a)[1]) + ((a)[2])*((a)[2]))</span>
93<a name="l00078"></a>00078 <span class="preprocessor"></span>
94<a name="l00079"></a>00079 <span class="preprocessor">#ifdef __cplusplus</span>
95<a name="l00080"></a>00080 <span class="preprocessor"></span>
96<a name="l00081"></a>00081 PURE_INLINE dReal dLENGTH (<span class="keyword">const</span> dReal *a) { <span class="keywordflow">return</span> dSqrt(dLENGTHSQUARED(a)); }
97<a name="l00082"></a>00082
98<a name="l00083"></a>00083 <span class="preprocessor">#else</span>
99<a name="l00084"></a>00084 <span class="preprocessor"></span>
100<a name="l00085"></a>00085 <span class="preprocessor">#define dLENGTH(a) ( dSqrt( ((a)[0])*((a)[0]) + ((a)[1])*((a)[1]) + ((a)[2])*((a)[2]) ) )</span>
101<a name="l00086"></a>00086 <span class="preprocessor"></span>
102<a name="l00087"></a>00087 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
103<a name="l00088"></a>00088
104<a name="l00089"></a>00089
105<a name="l00090"></a>00090
106<a name="l00091"></a>00091
107<a name="l00092"></a>00092
108<a name="l00093"></a>00093 <span class="comment">/*</span>
109<a name="l00094"></a>00094 <span class="comment"> * 3-way dot product. dDOTpq means that elements of `a' and `b' are spaced</span>
110<a name="l00095"></a>00095 <span class="comment"> * p and q indexes apart respectively. dDOT() means dDOT11.</span>
111<a name="l00096"></a>00096 <span class="comment"> * in C++ we could use function templates to get all the versions of these</span>
112<a name="l00097"></a>00097 <span class="comment"> * functions - but on some compilers this will result in sub-optimal code.</span>
113<a name="l00098"></a>00098 <span class="comment"> */</span>
114<a name="l00099"></a>00099
115<a name="l00100"></a>00100 <span class="preprocessor">#define dDOTpq(a,b,p,q) ((a)[0]*(b)[0] + (a)[p]*(b)[q] + (a)[2*(p)]*(b)[2*(q)])</span>
116<a name="l00101"></a>00101 <span class="preprocessor"></span>
117<a name="l00102"></a>00102 <span class="preprocessor">#ifdef __cplusplus</span>
118<a name="l00103"></a>00103 <span class="preprocessor"></span>
119<a name="l00104"></a>00104 PURE_INLINE dReal dDOT (<span class="keyword">const</span> dReal *a, <span class="keyword">const</span> dReal *b) { <span class="keywordflow">return</span> dDOTpq(a,b,1,1); }
120<a name="l00105"></a>00105 PURE_INLINE dReal dDOT13 (<span class="keyword">const</span> dReal *a, <span class="keyword">const</span> dReal *b) { <span class="keywordflow">return</span> dDOTpq(a,b,1,3); }
121<a name="l00106"></a>00106 PURE_INLINE dReal dDOT31 (<span class="keyword">const</span> dReal *a, <span class="keyword">const</span> dReal *b) { <span class="keywordflow">return</span> dDOTpq(a,b,3,1); }
122<a name="l00107"></a>00107 PURE_INLINE dReal dDOT33 (<span class="keyword">const</span> dReal *a, <span class="keyword">const</span> dReal *b) { <span class="keywordflow">return</span> dDOTpq(a,b,3,3); }
123<a name="l00108"></a>00108 PURE_INLINE dReal dDOT14 (<span class="keyword">const</span> dReal *a, <span class="keyword">const</span> dReal *b) { <span class="keywordflow">return</span> dDOTpq(a,b,1,4); }
124<a name="l00109"></a>00109 PURE_INLINE dReal dDOT41 (<span class="keyword">const</span> dReal *a, <span class="keyword">const</span> dReal *b) { <span class="keywordflow">return</span> dDOTpq(a,b,4,1); }
125<a name="l00110"></a>00110 PURE_INLINE dReal dDOT44 (<span class="keyword">const</span> dReal *a, <span class="keyword">const</span> dReal *b) { <span class="keywordflow">return</span> dDOTpq(a,b,4,4); }
126<a name="l00111"></a>00111
127<a name="l00112"></a>00112 <span class="preprocessor">#else</span>
128<a name="l00113"></a>00113 <span class="preprocessor"></span>
129<a name="l00114"></a>00114 <span class="preprocessor">#define dDOT(a,b) dDOTpq(a,b,1,1)</span>
130<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#define dDOT13(a,b) dDOTpq(a,b,1,3)</span>
131<a name="l00116"></a>00116 <span class="preprocessor"></span><span class="preprocessor">#define dDOT31(a,b) dDOTpq(a,b,3,1)</span>
132<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="preprocessor">#define dDOT33(a,b) dDOTpq(a,b,3,3)</span>
133<a name="l00118"></a>00118 <span class="preprocessor"></span><span class="preprocessor">#define dDOT14(a,b) dDOTpq(a,b,1,4)</span>
134<a name="l00119"></a>00119 <span class="preprocessor"></span><span class="preprocessor">#define dDOT41(a,b) dDOTpq(a,b,4,1)</span>
135<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor">#define dDOT44(a,b) dDOTpq(a,b,4,4)</span>
136<a name="l00121"></a>00121 <span class="preprocessor"></span>
137<a name="l00122"></a>00122 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
138<a name="l00123"></a>00123
139<a name="l00124"></a>00124
140<a name="l00125"></a>00125 <span class="comment">/*</span>
141<a name="l00126"></a>00126 <span class="comment"> * cross product, set a = b x c. dCROSSpqr means that elements of `a', `b'</span>
142<a name="l00127"></a>00127 <span class="comment"> * and `c' are spaced p, q and r indexes apart respectively.</span>
143<a name="l00128"></a>00128 <span class="comment"> * dCROSS() means dCROSS111. `op' is normally `=', but you can set it to</span>
144<a name="l00129"></a>00129 <span class="comment"> * +=, -= etc to get other effects.</span>
145<a name="l00130"></a>00130 <span class="comment"> */</span>
146<a name="l00131"></a>00131
147<a name="l00132"></a>00132 <span class="preprocessor">#define dCROSS(a,op,b,c) \</span>
148<a name="l00133"></a>00133 <span class="preprocessor">do { \</span>
149<a name="l00134"></a>00134 <span class="preprocessor"> (a)[0] op ((b)[1]*(c)[2] - (b)[2]*(c)[1]); \</span>
150<a name="l00135"></a>00135 <span class="preprocessor"> (a)[1] op ((b)[2]*(c)[0] - (b)[0]*(c)[2]); \</span>
151<a name="l00136"></a>00136 <span class="preprocessor"> (a)[2] op ((b)[0]*(c)[1] - (b)[1]*(c)[0]); \</span>
152<a name="l00137"></a>00137 <span class="preprocessor">} while(0)</span>
153<a name="l00138"></a>00138 <span class="preprocessor"></span><span class="preprocessor">#define dCROSSpqr(a,op,b,c,p,q,r) \</span>
154<a name="l00139"></a>00139 <span class="preprocessor">do { \</span>
155<a name="l00140"></a>00140 <span class="preprocessor"> (a)[ 0] op ((b)[ q]*(c)[2*r] - (b)[2*q]*(c)[ r]); \</span>
156<a name="l00141"></a>00141 <span class="preprocessor"> (a)[ p] op ((b)[2*q]*(c)[ 0] - (b)[ 0]*(c)[2*r]); \</span>
157<a name="l00142"></a>00142 <span class="preprocessor"> (a)[2*p] op ((b)[ 0]*(c)[ r] - (b)[ q]*(c)[ 0]); \</span>
158<a name="l00143"></a>00143 <span class="preprocessor">} while(0)</span>
159<a name="l00144"></a>00144 <span class="preprocessor"></span><span class="preprocessor">#define dCROSS114(a,op,b,c) dCROSSpqr(a,op,b,c,1,1,4)</span>
160<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="preprocessor">#define dCROSS141(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,1)</span>
161<a name="l00146"></a>00146 <span class="preprocessor"></span><span class="preprocessor">#define dCROSS144(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,4)</span>
162<a name="l00147"></a>00147 <span class="preprocessor"></span><span class="preprocessor">#define dCROSS411(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,1)</span>
163<a name="l00148"></a>00148 <span class="preprocessor"></span><span class="preprocessor">#define dCROSS414(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,4)</span>
164<a name="l00149"></a>00149 <span class="preprocessor"></span><span class="preprocessor">#define dCROSS441(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,1)</span>
165<a name="l00150"></a>00150 <span class="preprocessor"></span><span class="preprocessor">#define dCROSS444(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,4)</span>
166<a name="l00151"></a>00151 <span class="preprocessor"></span>
167<a name="l00152"></a>00152
168<a name="l00153"></a>00153 <span class="comment">/*</span>
169<a name="l00154"></a>00154 <span class="comment"> * set a 3x3 submatrix of A to a matrix such that submatrix(A)*b = a x b.</span>
170<a name="l00155"></a>00155 <span class="comment"> * A is stored by rows, and has `skip' elements per row. the matrix is</span>
171<a name="l00156"></a>00156 <span class="comment"> * assumed to be already zero, so this does not write zero elements!</span>
172<a name="l00157"></a>00157 <span class="comment"> * if (plus,minus) is (+,-) then a positive version will be written.</span>
173<a name="l00158"></a>00158 <span class="comment"> * if (plus,minus) is (-,+) then a negative version will be written.</span>
174<a name="l00159"></a>00159 <span class="comment"> */</span>
175<a name="l00160"></a>00160
176<a name="l00161"></a>00161 <span class="preprocessor">#define dCROSSMAT(A,a,skip,plus,minus) \</span>
177<a name="l00162"></a>00162 <span class="preprocessor">do { \</span>
178<a name="l00163"></a>00163 <span class="preprocessor"> (A)[1] = minus (a)[2]; \</span>
179<a name="l00164"></a>00164 <span class="preprocessor"> (A)[2] = plus (a)[1]; \</span>
180<a name="l00165"></a>00165 <span class="preprocessor"> (A)[(skip)+0] = plus (a)[2]; \</span>
181<a name="l00166"></a>00166 <span class="preprocessor"> (A)[(skip)+2] = minus (a)[0]; \</span>
182<a name="l00167"></a>00167 <span class="preprocessor"> (A)[2*(skip)+0] = minus (a)[1]; \</span>
183<a name="l00168"></a>00168 <span class="preprocessor"> (A)[2*(skip)+1] = plus (a)[0]; \</span>
184<a name="l00169"></a>00169 <span class="preprocessor">} while(0)</span>
185<a name="l00170"></a>00170 <span class="preprocessor"></span>
186<a name="l00171"></a>00171
187<a name="l00172"></a>00172 <span class="comment">/*</span>
188<a name="l00173"></a>00173 <span class="comment"> * compute the distance between two 3D-vectors</span>
189<a name="l00174"></a>00174 <span class="comment"> */</span>
190<a name="l00175"></a>00175
191<a name="l00176"></a>00176 <span class="preprocessor">#ifdef __cplusplus</span>
192<a name="l00177"></a>00177 <span class="preprocessor"></span>PURE_INLINE dReal dDISTANCE (<span class="keyword">const</span> dVector3 a, <span class="keyword">const</span> dVector3 b)
193<a name="l00178"></a>00178 { <span class="keywordflow">return</span> dSqrt( (a[0]-b[0])*(a[0]-b[0]) + (a[1]-b[1])*(a[1]-b[1]) + (a[2]-b[2])*(a[2]-b[2]) ); }
194<a name="l00179"></a>00179 <span class="preprocessor">#else</span>
195<a name="l00180"></a>00180 <span class="preprocessor"></span><span class="preprocessor">#define dDISTANCE(a,b) \</span>
196<a name="l00181"></a>00181 <span class="preprocessor"> (dSqrt( ((a)[0]-(b)[0])*((a)[0]-(b)[0]) + ((a)[1]-(b)[1])*((a)[1]-(b)[1]) + ((a)[2]-(b)[2])*((a)[2]-(b)[2]) ))</span>
197<a name="l00182"></a>00182 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
198<a name="l00183"></a>00183 <span class="preprocessor"></span>
199<a name="l00184"></a>00184
200<a name="l00185"></a>00185 <span class="comment">/*</span>
201<a name="l00186"></a>00186 <span class="comment"> * special case matrix multipication, with operator selection</span>
202<a name="l00187"></a>00187 <span class="comment"> */</span>
203<a name="l00188"></a>00188
204<a name="l00189"></a>00189 <span class="preprocessor">#define dMULTIPLYOP0_331(A,op,B,C) \</span>
205<a name="l00190"></a>00190 <span class="preprocessor">do { \</span>
206<a name="l00191"></a>00191 <span class="preprocessor"> (A)[0] op dDOT((B),(C)); \</span>
207<a name="l00192"></a>00192 <span class="preprocessor"> (A)[1] op dDOT((B+4),(C)); \</span>
208<a name="l00193"></a>00193 <span class="preprocessor"> (A)[2] op dDOT((B+8),(C)); \</span>
209<a name="l00194"></a>00194 <span class="preprocessor">} while(0)</span>
210<a name="l00195"></a>00195 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYOP1_331(A,op,B,C) \</span>
211<a name="l00196"></a>00196 <span class="preprocessor">do { \</span>
212<a name="l00197"></a>00197 <span class="preprocessor"> (A)[0] op dDOT41((B),(C)); \</span>
213<a name="l00198"></a>00198 <span class="preprocessor"> (A)[1] op dDOT41((B+1),(C)); \</span>
214<a name="l00199"></a>00199 <span class="preprocessor"> (A)[2] op dDOT41((B+2),(C)); \</span>
215<a name="l00200"></a>00200 <span class="preprocessor">} while(0)</span>
216<a name="l00201"></a>00201 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYOP0_133(A,op,B,C) \</span>
217<a name="l00202"></a>00202 <span class="preprocessor">do { \</span>
218<a name="l00203"></a>00203 <span class="preprocessor"> (A)[0] op dDOT14((B),(C)); \</span>
219<a name="l00204"></a>00204 <span class="preprocessor"> (A)[1] op dDOT14((B),(C+1)); \</span>
220<a name="l00205"></a>00205 <span class="preprocessor"> (A)[2] op dDOT14((B),(C+2)); \</span>
221<a name="l00206"></a>00206 <span class="preprocessor">} while(0)</span>
222<a name="l00207"></a>00207 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYOP0_333(A,op,B,C) \</span>
223<a name="l00208"></a>00208 <span class="preprocessor">do { \</span>
224<a name="l00209"></a>00209 <span class="preprocessor"> (A)[0] op dDOT14((B),(C)); \</span>
225<a name="l00210"></a>00210 <span class="preprocessor"> (A)[1] op dDOT14((B),(C+1)); \</span>
226<a name="l00211"></a>00211 <span class="preprocessor"> (A)[2] op dDOT14((B),(C+2)); \</span>
227<a name="l00212"></a>00212 <span class="preprocessor"> (A)[4] op dDOT14((B+4),(C)); \</span>
228<a name="l00213"></a>00213 <span class="preprocessor"> (A)[5] op dDOT14((B+4),(C+1)); \</span>
229<a name="l00214"></a>00214 <span class="preprocessor"> (A)[6] op dDOT14((B+4),(C+2)); \</span>
230<a name="l00215"></a>00215 <span class="preprocessor"> (A)[8] op dDOT14((B+8),(C)); \</span>
231<a name="l00216"></a>00216 <span class="preprocessor"> (A)[9] op dDOT14((B+8),(C+1)); \</span>
232<a name="l00217"></a>00217 <span class="preprocessor"> (A)[10] op dDOT14((B+8),(C+2)); \</span>
233<a name="l00218"></a>00218 <span class="preprocessor">} while(0)</span>
234<a name="l00219"></a>00219 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYOP1_333(A,op,B,C) \</span>
235<a name="l00220"></a>00220 <span class="preprocessor">do { \</span>
236<a name="l00221"></a>00221 <span class="preprocessor"> (A)[0] op dDOT44((B),(C)); \</span>
237<a name="l00222"></a>00222 <span class="preprocessor"> (A)[1] op dDOT44((B),(C+1)); \</span>
238<a name="l00223"></a>00223 <span class="preprocessor"> (A)[2] op dDOT44((B),(C+2)); \</span>
239<a name="l00224"></a>00224 <span class="preprocessor"> (A)[4] op dDOT44((B+1),(C)); \</span>
240<a name="l00225"></a>00225 <span class="preprocessor"> (A)[5] op dDOT44((B+1),(C+1)); \</span>
241<a name="l00226"></a>00226 <span class="preprocessor"> (A)[6] op dDOT44((B+1),(C+2)); \</span>
242<a name="l00227"></a>00227 <span class="preprocessor"> (A)[8] op dDOT44((B+2),(C)); \</span>
243<a name="l00228"></a>00228 <span class="preprocessor"> (A)[9] op dDOT44((B+2),(C+1)); \</span>
244<a name="l00229"></a>00229 <span class="preprocessor"> (A)[10] op dDOT44((B+2),(C+2)); \</span>
245<a name="l00230"></a>00230 <span class="preprocessor">} while(0)</span>
246<a name="l00231"></a>00231 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYOP2_333(A,op,B,C) \</span>
247<a name="l00232"></a>00232 <span class="preprocessor">do { \</span>
248<a name="l00233"></a>00233 <span class="preprocessor"> (A)[0] op dDOT((B),(C)); \</span>
249<a name="l00234"></a>00234 <span class="preprocessor"> (A)[1] op dDOT((B),(C+4)); \</span>
250<a name="l00235"></a>00235 <span class="preprocessor"> (A)[2] op dDOT((B),(C+8)); \</span>
251<a name="l00236"></a>00236 <span class="preprocessor"> (A)[4] op dDOT((B+4),(C)); \</span>
252<a name="l00237"></a>00237 <span class="preprocessor"> (A)[5] op dDOT((B+4),(C+4)); \</span>
253<a name="l00238"></a>00238 <span class="preprocessor"> (A)[6] op dDOT((B+4),(C+8)); \</span>
254<a name="l00239"></a>00239 <span class="preprocessor"> (A)[8] op dDOT((B+8),(C)); \</span>
255<a name="l00240"></a>00240 <span class="preprocessor"> (A)[9] op dDOT((B+8),(C+4)); \</span>
256<a name="l00241"></a>00241 <span class="preprocessor"> (A)[10] op dDOT((B+8),(C+8)); \</span>
257<a name="l00242"></a>00242 <span class="preprocessor">} while(0)</span>
258<a name="l00243"></a>00243 <span class="preprocessor"></span>
259<a name="l00244"></a>00244 <span class="preprocessor">#ifdef __cplusplus</span>
260<a name="l00245"></a>00245 <span class="preprocessor"></span>
261<a name="l00246"></a>00246 <span class="preprocessor">#define DECL template &lt;class TA, class TB, class TC&gt; PURE_INLINE void</span>
262<a name="l00247"></a>00247 <span class="preprocessor"></span>
263<a name="l00248"></a>00248 DECL dMULTIPLY0_331(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP0_331(A,=,B,C); }
264<a name="l00249"></a>00249 DECL dMULTIPLY1_331(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP1_331(A,=,B,C); }
265<a name="l00250"></a>00250 DECL dMULTIPLY0_133(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP0_133(A,=,B,C); }
266<a name="l00251"></a>00251 DECL dMULTIPLY0_333(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP0_333(A,=,B,C); }
267<a name="l00252"></a>00252 DECL dMULTIPLY1_333(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP1_333(A,=,B,C); }
268<a name="l00253"></a>00253 DECL dMULTIPLY2_333(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP2_333(A,=,B,C); }
269<a name="l00254"></a>00254
270<a name="l00255"></a>00255 DECL dMULTIPLYADD0_331(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP0_331(A,+=,B,C); }
271<a name="l00256"></a>00256 DECL dMULTIPLYADD1_331(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP1_331(A,+=,B,C); }
272<a name="l00257"></a>00257 DECL dMULTIPLYADD0_133(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP0_133(A,+=,B,C); }
273<a name="l00258"></a>00258 DECL dMULTIPLYADD0_333(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP0_333(A,+=,B,C); }
274<a name="l00259"></a>00259 DECL dMULTIPLYADD1_333(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP1_333(A,+=,B,C); }
275<a name="l00260"></a>00260 DECL dMULTIPLYADD2_333(TA *A, <span class="keyword">const</span> TB *B, <span class="keyword">const</span> TC *C) { dMULTIPLYOP2_333(A,+=,B,C); }
276<a name="l00261"></a>00261
277<a name="l00262"></a>00262 <span class="preprocessor">#undef DECL</span>
278<a name="l00263"></a>00263 <span class="preprocessor"></span>
279<a name="l00264"></a>00264 <span class="preprocessor">#else</span>
280<a name="l00265"></a>00265 <span class="preprocessor"></span>
281<a name="l00266"></a>00266 <span class="preprocessor">#define dMULTIPLY0_331(A,B,C) dMULTIPLYOP0_331(A,=,B,C)</span>
282<a name="l00267"></a>00267 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLY1_331(A,B,C) dMULTIPLYOP1_331(A,=,B,C)</span>
283<a name="l00268"></a>00268 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLY0_133(A,B,C) dMULTIPLYOP0_133(A,=,B,C)</span>
284<a name="l00269"></a>00269 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLY0_333(A,B,C) dMULTIPLYOP0_333(A,=,B,C)</span>
285<a name="l00270"></a>00270 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLY1_333(A,B,C) dMULTIPLYOP1_333(A,=,B,C)</span>
286<a name="l00271"></a>00271 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLY2_333(A,B,C) dMULTIPLYOP2_333(A,=,B,C)</span>
287<a name="l00272"></a>00272 <span class="preprocessor"></span>
288<a name="l00273"></a>00273 <span class="preprocessor">#define dMULTIPLYADD0_331(A,B,C) dMULTIPLYOP0_331(A,+=,B,C)</span>
289<a name="l00274"></a>00274 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYADD1_331(A,B,C) dMULTIPLYOP1_331(A,+=,B,C)</span>
290<a name="l00275"></a>00275 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYADD0_133(A,B,C) dMULTIPLYOP0_133(A,+=,B,C)</span>
291<a name="l00276"></a>00276 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYADD0_333(A,B,C) dMULTIPLYOP0_333(A,+=,B,C)</span>
292<a name="l00277"></a>00277 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYADD1_333(A,B,C) dMULTIPLYOP1_333(A,+=,B,C)</span>
293<a name="l00278"></a>00278 <span class="preprocessor"></span><span class="preprocessor">#define dMULTIPLYADD2_333(A,B,C) dMULTIPLYOP2_333(A,+=,B,C)</span>
294<a name="l00279"></a>00279 <span class="preprocessor"></span>
295<a name="l00280"></a>00280 <span class="preprocessor">#endif</span>
296<a name="l00281"></a>00281 <span class="preprocessor"></span>
297<a name="l00282"></a>00282
298<a name="l00283"></a>00283 <span class="preprocessor">#ifdef __cplusplus</span>
299<a name="l00284"></a>00284 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
300<a name="l00285"></a>00285 <span class="preprocessor">#endif</span>
301<a name="l00286"></a>00286 <span class="preprocessor"></span>
302<a name="l00287"></a>00287 <span class="comment">/*</span>
303<a name="l00288"></a>00288 <span class="comment"> * normalize 3x1 and 4x1 vectors (i.e. scale them to unit length)</span>
304<a name="l00289"></a>00289 <span class="comment"> */</span>
305<a name="l00290"></a>00290 ODE_API <span class="keywordtype">int</span> dSafeNormalize3 (dVector3 a);
306<a name="l00291"></a>00291 ODE_API <span class="keywordtype">int</span> dSafeNormalize4 (dVector4 a);
307<a name="l00292"></a>00292
308<a name="l00293"></a>00293 <span class="comment">// For some reason demo_chain1.c does not understand "inline" keyword.</span>
309<a name="l00294"></a>00294 <span class="keyword">static</span> __inline <span class="keywordtype">void</span> _dNormalize3(dVector3 a)
310<a name="l00295"></a>00295 {
311<a name="l00296"></a>00296 <span class="keywordtype">int</span> bNormalizationResult = dSafeNormalize3(a);
312<a name="l00297"></a>00297 dIASSERT(bNormalizationResult);
313<a name="l00298"></a>00298 dVARIABLEUSED(bNormalizationResult);
314<a name="l00299"></a>00299 }
315<a name="l00300"></a>00300
316<a name="l00301"></a>00301 <span class="keyword">static</span> __inline <span class="keywordtype">void</span> _dNormalize4(dVector4 a)
317<a name="l00302"></a>00302 {
318<a name="l00303"></a>00303 <span class="keywordtype">int</span> bNormalizationResult = dSafeNormalize4(a);
319<a name="l00304"></a>00304 dIASSERT(bNormalizationResult);
320<a name="l00305"></a>00305 dVARIABLEUSED(bNormalizationResult);
321<a name="l00306"></a>00306 }
322<a name="l00307"></a>00307
323<a name="l00308"></a>00308 <span class="comment">// For DLL export</span>
324<a name="l00309"></a>00309 ODE_API <span class="keywordtype">void</span> dNormalize3 (dVector3 a); <span class="comment">// Potentially asserts on zero vec</span>
325<a name="l00310"></a>00310 ODE_API <span class="keywordtype">void</span> dNormalize4 (dVector4 a); <span class="comment">// Potentially asserts on zero vec</span>
326<a name="l00311"></a>00311
327<a name="l00312"></a>00312 <span class="comment">// For internal use</span>
328<a name="l00313"></a>00313 <span class="preprocessor">#define dNormalize3(a) _dNormalize3(a)</span>
329<a name="l00314"></a>00314 <span class="preprocessor"></span><span class="preprocessor">#define dNormalize4(a) _dNormalize4(a)</span>
330<a name="l00315"></a>00315 <span class="preprocessor"></span>
331<a name="l00316"></a>00316 <span class="comment">/*</span>
332<a name="l00317"></a>00317 <span class="comment"> * given a unit length "normal" vector n, generate vectors p and q vectors</span>
333<a name="l00318"></a>00318 <span class="comment"> * that are an orthonormal basis for the plane space perpendicular to n.</span>
334<a name="l00319"></a>00319 <span class="comment"> * i.e. this makes p,q such that n,p,q are all perpendicular to each other.</span>
335<a name="l00320"></a>00320 <span class="comment"> * q will equal n x p. if n is not unit length then p will be unit length but</span>
336<a name="l00321"></a>00321 <span class="comment"> * q wont be.</span>
337<a name="l00322"></a>00322 <span class="comment"> */</span>
338<a name="l00323"></a>00323
339<a name="l00324"></a>00324 ODE_API <span class="keywordtype">void</span> dPlaneSpace (<span class="keyword">const</span> dVector3 n, dVector3 p, dVector3 q);
340<a name="l00325"></a>00325
341<a name="l00326"></a>00326 <span class="preprocessor">#ifdef __cplusplus</span>
342<a name="l00327"></a>00327 <span class="preprocessor"></span>}
343<a name="l00328"></a>00328 <span class="preprocessor">#endif</span>
344<a name="l00329"></a>00329 <span class="preprocessor"></span>
345<a name="l00330"></a>00330 <span class="preprocessor">#endif</span>
346</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
347<a href="http://www.doxygen.org/index.html">
348<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
349</body>
350</html>
diff --git a/libraries/ode-0.9/docs/rotation_8h-source.html b/libraries/ode-0.9/docs/rotation_8h-source.html
new file mode 100644
index 0000000..54ca248
--- /dev/null
+++ b/libraries/ode-0.9/docs/rotation_8h-source.html
@@ -0,0 +1,90 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: rotation.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>rotation.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_ROTATION_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_ROTATION_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/common.h&gt;</span>
42<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;ode/compatibility.h&gt;</span>
43<a name="l00028"></a>00028
44<a name="l00029"></a>00029 <span class="preprocessor">#ifdef __cplusplus</span>
45<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
46<a name="l00031"></a>00031 <span class="preprocessor">#endif</span>
47<a name="l00032"></a>00032 <span class="preprocessor"></span>
48<a name="l00033"></a>00033
49<a name="l00034"></a>00034 ODE_API <span class="keywordtype">void</span> dRSetIdentity (dMatrix3 R);
50<a name="l00035"></a>00035
51<a name="l00036"></a>00036 ODE_API <span class="keywordtype">void</span> dRFromAxisAndAngle (dMatrix3 R, dReal ax, dReal ay, dReal az,
52<a name="l00037"></a>00037 dReal angle);
53<a name="l00038"></a>00038
54<a name="l00039"></a>00039 ODE_API <span class="keywordtype">void</span> dRFromEulerAngles (dMatrix3 R, dReal phi, dReal theta, dReal psi);
55<a name="l00040"></a>00040
56<a name="l00041"></a>00041 ODE_API <span class="keywordtype">void</span> dRFrom2Axes (dMatrix3 R, dReal ax, dReal ay, dReal az,
57<a name="l00042"></a>00042 dReal bx, dReal by, dReal bz);
58<a name="l00043"></a>00043
59<a name="l00044"></a>00044 ODE_API <span class="keywordtype">void</span> dRFromZAxis (dMatrix3 R, dReal ax, dReal ay, dReal az);
60<a name="l00045"></a>00045
61<a name="l00046"></a>00046 ODE_API <span class="keywordtype">void</span> dQSetIdentity (dQuaternion q);
62<a name="l00047"></a>00047
63<a name="l00048"></a>00048 ODE_API <span class="keywordtype">void</span> dQFromAxisAndAngle (dQuaternion q, dReal ax, dReal ay, dReal az,
64<a name="l00049"></a>00049 dReal angle);
65<a name="l00050"></a>00050
66<a name="l00051"></a>00051 <span class="comment">/* Quaternion multiplication, analogous to the matrix multiplication routines. */</span>
67<a name="l00052"></a>00052 <span class="comment">/* qa = rotate by qc, then qb */</span>
68<a name="l00053"></a>00053 ODE_API <span class="keywordtype">void</span> dQMultiply0 (dQuaternion qa, <span class="keyword">const</span> dQuaternion qb, <span class="keyword">const</span> dQuaternion qc);
69<a name="l00054"></a>00054 <span class="comment">/* qa = rotate by qc, then by inverse of qb */</span>
70<a name="l00055"></a>00055 ODE_API <span class="keywordtype">void</span> dQMultiply1 (dQuaternion qa, <span class="keyword">const</span> dQuaternion qb, <span class="keyword">const</span> dQuaternion qc);
71<a name="l00056"></a>00056 <span class="comment">/* qa = rotate by inverse of qc, then by qb */</span>
72<a name="l00057"></a>00057 ODE_API <span class="keywordtype">void</span> dQMultiply2 (dQuaternion qa, <span class="keyword">const</span> dQuaternion qb, <span class="keyword">const</span> dQuaternion qc);
73<a name="l00058"></a>00058 <span class="comment">/* qa = rotate by inverse of qc, then by inverse of qb */</span>
74<a name="l00059"></a>00059 ODE_API <span class="keywordtype">void</span> dQMultiply3 (dQuaternion qa, <span class="keyword">const</span> dQuaternion qb, <span class="keyword">const</span> dQuaternion qc);
75<a name="l00060"></a>00060
76<a name="l00061"></a>00061 ODE_API <span class="keywordtype">void</span> dRfromQ (dMatrix3 R, <span class="keyword">const</span> dQuaternion q);
77<a name="l00062"></a>00062 ODE_API <span class="keywordtype">void</span> dQfromR (dQuaternion q, <span class="keyword">const</span> dMatrix3 R);
78<a name="l00063"></a>00063 ODE_API <span class="keywordtype">void</span> dDQfromW (dReal dq[4], <span class="keyword">const</span> dVector3 w, <span class="keyword">const</span> dQuaternion q);
79<a name="l00064"></a>00064
80<a name="l00065"></a>00065
81<a name="l00066"></a>00066 <span class="preprocessor">#ifdef __cplusplus</span>
82<a name="l00067"></a>00067 <span class="preprocessor"></span>}
83<a name="l00068"></a>00068 <span class="preprocessor">#endif</span>
84<a name="l00069"></a>00069 <span class="preprocessor"></span>
85<a name="l00070"></a>00070 <span class="preprocessor">#endif</span>
86</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
87<a href="http://www.doxygen.org/index.html">
88<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
89</body>
90</html>
diff --git a/libraries/ode-0.9/docs/structd_contact_geom.html b/libraries/ode-0.9/docs/structd_contact_geom.html
new file mode 100644
index 0000000..9be3fca
--- /dev/null
+++ b/libraries/ode-0.9/docs/structd_contact_geom.html
@@ -0,0 +1,70 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: dContactGeom Struct Reference</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<div class="tabs">
17 <ul>
18 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
19 <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
20 </ul>
21</div>
22<h1>dContactGeom Struct Reference<br>
23<small>
24[<a class="el" href="group__collide.html">Collision Detection</a>]</small>
25</h1><!-- doxytag: class="dContactGeom" -->Describe the contact point between two geoms.
26<a href="#_details">More...</a>
27<p>
28<code>#include &lt;<a class="el" href="contact_8h-source.html">contact.h</a>&gt;</code>
29<p>
30<table border="0" cellpadding="0" cellspacing="0">
31<tr><td></td></tr>
32<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
33<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2fa7323ee3826d1f55c8cad6157e38a5"></a><!-- doxytag: member="dContactGeom::pos" ref="2fa7323ee3826d1f55c8cad6157e38a5" args="" -->
34dVector3&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structd_contact_geom.html#2fa7323ee3826d1f55c8cad6157e38a5">pos</a></td></tr>
35
36<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">contact position <br></td></tr>
37<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7665d3379904821bbdb7b7d1028fcda3"></a><!-- doxytag: member="dContactGeom::normal" ref="7665d3379904821bbdb7b7d1028fcda3" args="" -->
38dVector3&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structd_contact_geom.html#7665d3379904821bbdb7b7d1028fcda3">normal</a></td></tr>
39
40<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">normal vector <br></td></tr>
41<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="29c32c1cb4355186d4110b7abeb58bf0"></a><!-- doxytag: member="dContactGeom::depth" ref="29c32c1cb4355186d4110b7abeb58bf0" args="" -->
42dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structd_contact_geom.html#29c32c1cb4355186d4110b7abeb58bf0">depth</a></td></tr>
43
44<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">penetration depth <br></td></tr>
45<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6049a3a67dba58f65a6ce15a4d9b4cfd"></a><!-- doxytag: member="dContactGeom::g1" ref="6049a3a67dba58f65a6ce15a4d9b4cfd" args="" -->
46dGeomID&nbsp;</td><td class="memItemRight" valign="bottom"><b>g1</b></td></tr>
47
48<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7dd16e7bbc0c5b5e17116c1e5179281b"></a><!-- doxytag: member="dContactGeom::g2" ref="7dd16e7bbc0c5b5e17116c1e5179281b" args="" -->
49dGeomID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structd_contact_geom.html#7dd16e7bbc0c5b5e17116c1e5179281b">g2</a></td></tr>
50
51<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the colliding geoms <br></td></tr>
52<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="10bb8b02cd842d19240e3b643469fb33"></a><!-- doxytag: member="dContactGeom::side1" ref="10bb8b02cd842d19240e3b643469fb33" args="" -->
53int&nbsp;</td><td class="memItemRight" valign="bottom"><b>side1</b></td></tr>
54
55<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7a8a080b98c12e0d1f52c86d2738552e"></a><!-- doxytag: member="dContactGeom::side2" ref="7a8a080b98c12e0d1f52c86d2738552e" args="" -->
56int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structd_contact_geom.html#7a8a080b98c12e0d1f52c86d2738552e">side2</a></td></tr>
57
58<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">(to be documented) <br></td></tr>
59</table>
60<hr><a name="_details"></a><h2>Detailed Description</h2>
61Describe the contact point between two geoms.
62<p>
63If two bodies touch, or if a body touches a static feature in its environment, the contact is represented by one or more "contact points", described by <a class="el" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a>.<p>
64The convention is that if body 1 is moved along the normal vector by a distance depth (or equivalently if body 2 is moved the same distance in the opposite direction) then the contact depth will be reduced to zero. This means that the normal vector points "in" to body 1. <hr>The documentation for this struct was generated from the following file:<ul>
65<li><a class="el" href="contact_8h-source.html">contact.h</a></ul>
66<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by&nbsp;
67<a href="http://www.doxygen.org/index.html">
68<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
69</body>
70</html>
diff --git a/libraries/ode-0.9/docs/structds_functions.html b/libraries/ode-0.9/docs/structds_functions.html
new file mode 100644
index 0000000..6d5685a
--- /dev/null
+++ b/libraries/ode-0.9/docs/structds_functions.html
@@ -0,0 +1,59 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: dsFunctions Struct Reference</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<div class="tabs">
17 <ul>
18 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
19 <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
20 </ul>
21</div>
22<h1>dsFunctions Struct Reference<br>
23<small>
24[<a class="el" href="group__drawstuff.html">DrawStuff</a>]</small>
25</h1><!-- doxytag: class="dsFunctions" -->Set of functions to be used as callbacks by the simulation loop.
26<a href="#_details">More...</a>
27<p>
28<code>#include &lt;<a class="el" href="drawstuff_8h-source.html">drawstuff.h</a>&gt;</code>
29<p>
30<table border="0" cellpadding="0" cellspacing="0">
31<tr><td></td></tr>
32<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
33<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b9dd3fbba4366fad5531214cebb47d94"></a><!-- doxytag: member="dsFunctions::version" ref="b9dd3fbba4366fad5531214cebb47d94" args="" -->
34int&nbsp;</td><td class="memItemRight" valign="bottom"><b>version</b></td></tr>
35
36<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="22cef28f3bb9f83bc497a1343f4305d0"></a><!-- doxytag: member="dsFunctions::start" ref="22cef28f3bb9f83bc497a1343f4305d0" args=")()" -->
37void(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>start</b> )()</td></tr>
38
39<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="232c4ad2d795826a52592b4267b5cbe9"></a><!-- doxytag: member="dsFunctions::step" ref="232c4ad2d795826a52592b4267b5cbe9" args=")(int pause)" -->
40void(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>step</b> )(int pause)</td></tr>
41
42<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e9481850ebd8267a71764556cd454d9c"></a><!-- doxytag: member="dsFunctions::command" ref="e9481850ebd8267a71764556cd454d9c" args=")(int cmd)" -->
43void(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>command</b> )(int cmd)</td></tr>
44
45<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0b6965c89af9af4b92243a611f8787b"></a><!-- doxytag: member="dsFunctions::stop" ref="a0b6965c89af9af4b92243a611f8787b" args=")()" -->
46void(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>stop</b> )()</td></tr>
47
48<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="65706b30adf57fe5eefdf6e141d249dd"></a><!-- doxytag: member="dsFunctions::path_to_textures" ref="65706b30adf57fe5eefdf6e141d249dd" args="" -->
49char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>path_to_textures</b></td></tr>
50
51</table>
52<hr><a name="_details"></a><h2>Detailed Description</h2>
53Set of functions to be used as callbacks by the simulation loop. <hr>The documentation for this struct was generated from the following file:<ul>
54<li><a class="el" href="drawstuff_8h-source.html">drawstuff.h</a></ul>
55<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by&nbsp;
56<a href="http://www.doxygen.org/index.html">
57<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
58</body>
59</html>
diff --git a/libraries/ode-0.9/docs/tab_b.gif b/libraries/ode-0.9/docs/tab_b.gif
new file mode 100644
index 0000000..0d62348
--- /dev/null
+++ b/libraries/ode-0.9/docs/tab_b.gif
Binary files differ
diff --git a/libraries/ode-0.9/docs/tab_l.gif b/libraries/ode-0.9/docs/tab_l.gif
new file mode 100644
index 0000000..9b1e633
--- /dev/null
+++ b/libraries/ode-0.9/docs/tab_l.gif
Binary files differ
diff --git a/libraries/ode-0.9/docs/tab_r.gif b/libraries/ode-0.9/docs/tab_r.gif
new file mode 100644
index 0000000..ce9dd9f
--- /dev/null
+++ b/libraries/ode-0.9/docs/tab_r.gif
Binary files differ
diff --git a/libraries/ode-0.9/docs/tabs.css b/libraries/ode-0.9/docs/tabs.css
new file mode 100644
index 0000000..c37faaf
--- /dev/null
+++ b/libraries/ode-0.9/docs/tabs.css
@@ -0,0 +1,102 @@
1/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
2
3DIV.tabs
4{
5 float : left;
6 width : 100%;
7 background : url("tab_b.gif") repeat-x bottom;
8 margin-bottom : 4px;
9}
10
11DIV.tabs UL
12{
13 margin : 0px;
14 padding-left : 10px;
15 list-style : none;
16}
17
18DIV.tabs LI, DIV.tabs FORM
19{
20 display : inline;
21 margin : 0px;
22 padding : 0px;
23}
24
25DIV.tabs FORM
26{
27 float : right;
28}
29
30DIV.tabs A
31{
32 float : left;
33 background : url("tab_r.gif") no-repeat right top;
34 border-bottom : 1px solid #84B0C7;
35 font-size : x-small;
36 font-weight : bold;
37 text-decoration : none;
38}
39
40DIV.tabs A:hover
41{
42 background-position: 100% -150px;
43}
44
45DIV.tabs A:link, DIV.tabs A:visited,
46DIV.tabs A:active, DIV.tabs A:hover
47{
48 color: #1A419D;
49}
50
51DIV.tabs SPAN
52{
53 float : left;
54 display : block;
55 background : url("tab_l.gif") no-repeat left top;
56 padding : 5px 9px;
57 white-space : nowrap;
58}
59
60DIV.tabs INPUT
61{
62 float : right;
63 display : inline;
64 font-size : 1em;
65}
66
67DIV.tabs TD
68{
69 font-size : x-small;
70 font-weight : bold;
71 text-decoration : none;
72}
73
74
75
76/* Commented Backslash Hack hides rule from IE5-Mac \*/
77DIV.tabs SPAN {float : none;}
78/* End IE5-Mac hack */
79
80DIV.tabs A:hover SPAN
81{
82 background-position: 0% -150px;
83}
84
85DIV.tabs LI.current A
86{
87 background-position: 100% -150px;
88 border-width : 0px;
89}
90
91DIV.tabs LI.current SPAN
92{
93 background-position: 0% -150px;
94 padding-bottom : 6px;
95}
96
97DIV.nav
98{
99 background : none;
100 border : none;
101 border-bottom : 1px solid #84B0C7;
102}
diff --git a/libraries/ode-0.9/docs/timer_8h-source.html b/libraries/ode-0.9/docs/timer_8h-source.html
new file mode 100644
index 0000000..3d0b1e6
--- /dev/null
+++ b/libraries/ode-0.9/docs/timer_8h-source.html
@@ -0,0 +1,96 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: timer.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>timer.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_TIMER_H_</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_TIMER_H_</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;ode/config.h&gt;</span>
42<a name="l00027"></a>00027
43<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __cplusplus</span>
44<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
45<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
46<a name="l00031"></a>00031 <span class="preprocessor"></span>
47<a name="l00032"></a>00032
48<a name="l00033"></a>00033 <span class="comment">/* stop watch objects */</span>
49<a name="l00034"></a>00034
50<a name="l00035"></a>00035 <span class="keyword">typedef</span> <span class="keyword">struct </span>dStopwatch {
51<a name="l00036"></a>00036 <span class="keywordtype">double</span> time; <span class="comment">/* total clock count */</span>
52<a name="l00037"></a>00037 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> cc[2]; <span class="comment">/* clock count since last `start' */</span>
53<a name="l00038"></a>00038 } dStopwatch;
54<a name="l00039"></a>00039
55<a name="l00040"></a>00040 ODE_API <span class="keywordtype">void</span> dStopwatchReset (dStopwatch *);
56<a name="l00041"></a>00041 ODE_API <span class="keywordtype">void</span> dStopwatchStart (dStopwatch *);
57<a name="l00042"></a>00042 ODE_API <span class="keywordtype">void</span> dStopwatchStop (dStopwatch *);
58<a name="l00043"></a>00043 ODE_API <span class="keywordtype">double</span> dStopwatchTime (dStopwatch *); <span class="comment">/* returns total time in secs */</span>
59<a name="l00044"></a>00044
60<a name="l00045"></a>00045
61<a name="l00046"></a>00046 <span class="comment">/* code timers */</span>
62<a name="l00047"></a>00047
63<a name="l00048"></a>00048 ODE_API <span class="keywordtype">void</span> dTimerStart (<span class="keyword">const</span> <span class="keywordtype">char</span> *description); <span class="comment">/* pass a static string here */</span>
64<a name="l00049"></a>00049 ODE_API <span class="keywordtype">void</span> dTimerNow (<span class="keyword">const</span> <span class="keywordtype">char</span> *description); <span class="comment">/* pass a static string here */</span>
65<a name="l00050"></a>00050 ODE_API <span class="keywordtype">void</span> dTimerEnd(<span class="keywordtype">void</span>);
66<a name="l00051"></a>00051
67<a name="l00052"></a>00052 <span class="comment">/* print out a timer report. if `average' is nonzero, print out the average</span>
68<a name="l00053"></a>00053 <span class="comment"> * time for each slot (this is only meaningful if the same start-now-end</span>
69<a name="l00054"></a>00054 <span class="comment"> * calls are being made repeatedly.</span>
70<a name="l00055"></a>00055 <span class="comment"> */</span>
71<a name="l00056"></a>00056 ODE_API <span class="keywordtype">void</span> dTimerReport (FILE *fout, <span class="keywordtype">int</span> average);
72<a name="l00057"></a>00057
73<a name="l00058"></a>00058
74<a name="l00059"></a>00059 <span class="comment">/* resolution */</span>
75<a name="l00060"></a>00060
76<a name="l00061"></a>00061 <span class="comment">/* returns the timer ticks per second implied by the timing hardware or API.</span>
77<a name="l00062"></a>00062 <span class="comment"> * the actual timer resolution may not be this great.</span>
78<a name="l00063"></a>00063 <span class="comment"> */</span>
79<a name="l00064"></a>00064 ODE_API <span class="keywordtype">double</span> dTimerTicksPerSecond(<span class="keywordtype">void</span>);
80<a name="l00065"></a>00065
81<a name="l00066"></a>00066 <span class="comment">/* returns an estimate of the actual timer resolution, in seconds. this may</span>
82<a name="l00067"></a>00067 <span class="comment"> * be greater than 1/ticks_per_second.</span>
83<a name="l00068"></a>00068 <span class="comment"> */</span>
84<a name="l00069"></a>00069 ODE_API <span class="keywordtype">double</span> dTimerResolution(<span class="keywordtype">void</span>);
85<a name="l00070"></a>00070
86<a name="l00071"></a>00071
87<a name="l00072"></a>00072 <span class="preprocessor">#ifdef __cplusplus</span>
88<a name="l00073"></a>00073 <span class="preprocessor"></span>}
89<a name="l00074"></a>00074 <span class="preprocessor">#endif</span>
90<a name="l00075"></a>00075 <span class="preprocessor"></span>
91<a name="l00076"></a>00076 <span class="preprocessor">#endif</span>
92</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
93<a href="http://www.doxygen.org/index.html">
94<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
95</body>
96</html>
diff --git a/libraries/ode-0.9/docs/version_8h-source.html b/libraries/ode-0.9/docs/version_8h-source.html
new file mode 100644
index 0000000..74430d1
--- /dev/null
+++ b/libraries/ode-0.9/docs/version_8h-source.html
@@ -0,0 +1,49 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: version.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9 <ul>
10 <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11 <li><a href="modules.html"><span>Modules</span></a></li>
12 <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13 <li class="current"><a href="files.html"><span>Files</span></a></li>
14 </ul>
15</div>
16<h1>version.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
17<a name="l00002"></a>00002 <span class="comment"> * *</span>
18<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
19<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
20<a name="l00005"></a>00005 <span class="comment"> * *</span>
21<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
22<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
23<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
24<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
25<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
26<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
27<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
28<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
29<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
30<a name="l00015"></a>00015 <span class="comment"> * *</span>
31<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
32<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
33<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
34<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
35<a name="l00020"></a>00020 <span class="comment"> * *</span>
36<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
37<a name="l00022"></a>00022
38<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __VERSION_H</span>
39<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __VERSION_H</span>
40<a name="l00025"></a>00025 <span class="preprocessor"></span>
41<a name="l00026"></a>00026 <span class="comment">/* high byte is major version, low byte is minor version */</span>
42<a name="l00027"></a>00027 <span class="preprocessor">#define DS_VERSION 0x0002</span>
43<a name="l00028"></a>00028 <span class="preprocessor"></span>
44<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
45</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
46<a href="http://www.doxygen.org/index.html">
47<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
48</body>
49</html>