aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ode-0.9/docs/odecpp_8h-source.html
blob: 33c6dacf5feb659dddd0b90990d56fc26239abc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Open Dynamics Engine: odecpp.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
  </ul>
</div>
<h1>odecpp.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
<a name="l00002"></a>00002 <span class="comment"> *                          *</span>
<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.    *</span>
<a name="l00004"></a>00004 <span class="comment"> * All rights reserved.  Email: russ@q12.org   Web: www.q12.org    *</span>
<a name="l00005"></a>00005 <span class="comment"> *                          *</span>
<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or   *</span>
<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER:             *</span>
<a name="l00008"></a>00008 <span class="comment"> *   (1) The GNU Lesser General Public License as published by the Free  *</span>
<a name="l00009"></a>00009 <span class="comment"> *  Software Foundation; either version 2.1 of the License, or (at  *</span>
<a name="l00010"></a>00010 <span class="comment"> *  your option) any later version. The text of the GNU Lesser  *</span>
<a name="l00011"></a>00011 <span class="comment"> *  General Public License is included with this library in the    *</span>
<a name="l00012"></a>00012 <span class="comment"> *  file LICENSE.TXT.                   *</span>
<a name="l00013"></a>00013 <span class="comment"> *   (2) The BSD-style license that is included with this library in  *</span>
<a name="l00014"></a>00014 <span class="comment"> *  the file LICENSE-BSD.TXT.              *</span>
<a name="l00015"></a>00015 <span class="comment"> *                          *</span>
<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful,    *</span>
<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of  *</span>
<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *</span>
<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details.         *</span>
<a name="l00020"></a>00020 <span class="comment"> *                          *</span>
<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
<a name="l00022"></a>00022 
<a name="l00023"></a>00023 <span class="comment">/* C++ interface for non-collision stuff */</span>
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 
<a name="l00026"></a>00026 <span class="preprocessor">#ifndef _ODE_ODECPP_H_</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_ODECPP_H_</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;ode/error.h&gt;</span>
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 
<a name="l00033"></a>00033 <span class="keyword">class </span>dWorld {
<a name="l00034"></a>00034   dWorldID _id;
<a name="l00035"></a>00035 
<a name="l00036"></a>00036   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00037"></a>00037   dWorld (<span class="keyword">const</span> dWorld &amp;);
<a name="l00038"></a>00038   <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dWorld &amp;);
<a name="l00039"></a>00039 
<a name="l00040"></a>00040 <span class="keyword">public</span>:
<a name="l00041"></a>00041   dWorld()
<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>(); }
<a name="l00043"></a>00043   ~dWorld()
<a name="l00044"></a>00044     { <a class="code" href="group__world.html#g5a2e5b1d2d6a1376dca239b488e629f9" title="Destroy a world and everything in it.">dWorldDestroy</a> (_id); }
<a name="l00045"></a>00045 
<a name="l00046"></a>00046   dWorldID id()<span class="keyword"> const</span>
<a name="l00047"></a>00047 <span class="keyword">    </span>{ <span class="keywordflow">return</span> _id; }
<a name="l00048"></a>00048   operator dWorldID()<span class="keyword"> const</span>
<a name="l00049"></a>00049 <span class="keyword">    </span>{ <span class="keywordflow">return</span> _id; }
<a name="l00050"></a>00050 
<a name="l00051"></a>00051   <span class="keywordtype">void</span> setGravity (dReal x, dReal y, dReal z)
<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); }
<a name="l00053"></a>00053   <span class="keywordtype">void</span> getGravity (dVector3 g)<span class="keyword"> const</span>
<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); }
<a name="l00055"></a>00055 
<a name="l00056"></a>00056   <span class="keywordtype">void</span> setERP (dReal erp)
<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); }
<a name="l00058"></a>00058   dReal getERP()<span class="keyword"> const</span>
<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); }
<a name="l00060"></a>00060 
<a name="l00061"></a>00061   <span class="keywordtype">void</span> setCFM (dReal cfm)
<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); }
<a name="l00063"></a>00063   dReal getCFM()<span class="keyword"> const</span>
<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); }
<a name="l00065"></a>00065 
<a name="l00066"></a>00066   <span class="keywordtype">void</span> step (dReal stepsize)
<a name="l00067"></a>00067     { <a class="code" href="group__world.html#g8f547ebeb3deed27e0f7b8143d475f50" title="Step the world.">dWorldStep</a> (_id,stepsize); }
<a name="l00068"></a>00068 
<a name="l00069"></a>00069   <span class="keywordtype">void</span> stepFast1 (dReal stepsize, <span class="keywordtype">int</span> maxiterations)
<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); }
<a name="l00071"></a>00071   <span class="keywordtype">void</span> setAutoEnableDepthSF1(dWorldID, <span class="keywordtype">int</span> depth)
<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); }
<a name="l00073"></a>00073   <span class="keywordtype">int</span> getAutoEnableDepthSF1(dWorldID)
<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); }
<a name="l00075"></a>00075 
<a name="l00076"></a>00076   <span class="keywordtype">void</span>  setAutoDisableLinearThreshold (dReal threshold) 
<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); }
<a name="l00078"></a>00078   dReal getAutoDisableLinearThreshold()
<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); }
<a name="l00080"></a>00080   <span class="keywordtype">void</span> setAutoDisableAngularThreshold (dReal threshold)
<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); }
<a name="l00082"></a>00082   dReal getAutoDisableAngularThreshold()
<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); }
<a name="l00084"></a>00084   <span class="keywordtype">void</span> setAutoDisableSteps (<span class="keywordtype">int</span> steps)
<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); }
<a name="l00086"></a>00086   <span class="keywordtype">int</span> getAutoDisableSteps()
<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); }
<a name="l00088"></a>00088   <span class="keywordtype">void</span> setAutoDisableTime (dReal time)
<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); }
<a name="l00090"></a>00090   dReal getAutoDisableTime()
<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); }
<a name="l00092"></a>00092   <span class="keywordtype">void</span> setAutoDisableFlag (<span class="keywordtype">int</span> do_auto_disable)
<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); }
<a name="l00094"></a>00094   <span class="keywordtype">int</span> getAutoDisableFlag()
<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); }
<a name="l00096"></a>00096 
<a name="l00097"></a>00097   <span class="keywordtype">void</span> impulseToForce (dReal stepsize, dReal ix, dReal iy, dReal iz,
<a name="l00098"></a>00098              dVector3 force)
<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); }
<a name="l00100"></a>00100 };
<a name="l00101"></a>00101 
<a name="l00102"></a>00102 
<a name="l00103"></a>00103 <span class="keyword">class </span>dBody {
<a name="l00104"></a>00104   dBodyID _id;
<a name="l00105"></a>00105 
<a name="l00106"></a>00106   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00107"></a>00107   dBody (<span class="keyword">const</span> dBody &amp;);
<a name="l00108"></a>00108   <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dBody &amp;);
<a name="l00109"></a>00109 
<a name="l00110"></a>00110 <span class="keyword">public</span>:
<a name="l00111"></a>00111   dBody()
<a name="l00112"></a>00112     { _id = 0; }
<a name="l00113"></a>00113   dBody (dWorldID world)
<a name="l00114"></a>00114     { _id = <a class="code" href="group__bodies.html#g578137bbaf82d4b8896d2baee3a032a6" title="Create a body in given world.">dBodyCreate</a> (world); }
<a name="l00115"></a>00115   ~dBody()
<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); }
<a name="l00117"></a>00117 
<a name="l00118"></a>00118   <span class="keywordtype">void</span> create (dWorldID world) {
<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);
<a name="l00120"></a>00120     _id = <a class="code" href="group__bodies.html#g578137bbaf82d4b8896d2baee3a032a6" title="Create a body in given world.">dBodyCreate</a> (world);
<a name="l00121"></a>00121   }
<a name="l00122"></a>00122 
<a name="l00123"></a>00123   dBodyID id()<span class="keyword"> const</span>
<a name="l00124"></a>00124 <span class="keyword">    </span>{ <span class="keywordflow">return</span> _id; }
<a name="l00125"></a>00125   operator dBodyID()<span class="keyword"> const</span>
<a name="l00126"></a>00126 <span class="keyword">    </span>{ <span class="keywordflow">return</span> _id; }
<a name="l00127"></a>00127 
<a name="l00128"></a>00128   <span class="keywordtype">void</span> setData (<span class="keywordtype">void</span> *data)
<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); }
<a name="l00130"></a>00130   <span class="keywordtype">void</span> *getData()<span class="keyword"> const</span>
<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); }
<a name="l00132"></a>00132 
<a name="l00133"></a>00133   <span class="keywordtype">void</span> setPosition (dReal x, dReal y, dReal z)
<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); }
<a name="l00135"></a>00135   <span class="keywordtype">void</span> setRotation (<span class="keyword">const</span> dMatrix3 R)
<a name="l00136"></a>00136     { <a class="code" href="group__bodies.html#gb5f04968ec37ef46d2aaffad6c344468" title="Set the orientation of a body.">dBodySetRotation</a> (_id,R); }
<a name="l00137"></a>00137   <span class="keywordtype">void</span> setQuaternion (<span class="keyword">const</span> dQuaternion q)
<a name="l00138"></a>00138     { <a class="code" href="group__bodies.html#ga5f51dd3605c402320e9eae4231d7ad4" title="Set the orientation of a body.">dBodySetQuaternion</a> (_id,q); }
<a name="l00139"></a>00139   <span class="keywordtype">void</span> setLinearVel  (dReal x, dReal y, dReal z)
<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); }
<a name="l00141"></a>00141   <span class="keywordtype">void</span> setAngularVel (dReal x, dReal y, dReal z)
<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); }
<a name="l00143"></a>00143 
<a name="l00144"></a>00144   <span class="keyword">const</span> dReal * getPosition()<span class="keyword"> const</span>
<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); }
<a name="l00146"></a>00146   <span class="keyword">const</span> dReal * getRotation()<span class="keyword"> const</span>
<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); }
<a name="l00148"></a>00148   <span class="keyword">const</span> dReal * getQuaternion()<span class="keyword"> const</span>
<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); }
<a name="l00150"></a>00150   <span class="keyword">const</span> dReal * getLinearVel()<span class="keyword"> const</span>
<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); }
<a name="l00152"></a>00152   <span class="keyword">const</span> dReal * getAngularVel()<span class="keyword"> const</span>
<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); }
<a name="l00154"></a>00154 
<a name="l00155"></a>00155   <span class="keywordtype">void</span> setMass (<span class="keyword">const</span> dMass *mass)
<a name="l00156"></a>00156     { <a class="code" href="group__bodies.html#gf3609b58548e34471ef8ad4727b33e52" title="Set the mass of a body.">dBodySetMass</a> (_id,mass); }
<a name="l00157"></a>00157   <span class="keywordtype">void</span> getMass (dMass *mass)<span class="keyword"> const</span>
<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); }
<a name="l00159"></a>00159 
<a name="l00160"></a>00160   <span class="keywordtype">void</span> addForce (dReal fx, dReal fy, dReal fz)
<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); }
<a name="l00162"></a>00162   <span class="keywordtype">void</span> addTorque (dReal fx, dReal fy, dReal fz)
<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); }
<a name="l00164"></a>00164   <span class="keywordtype">void</span> addRelForce (dReal fx, dReal fy, dReal fz)
<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); }
<a name="l00166"></a>00166   <span class="keywordtype">void</span> addRelTorque (dReal fx, dReal fy, dReal fz)
<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); }
<a name="l00168"></a>00168   <span class="keywordtype">void</span> addForceAtPos (dReal fx, dReal fy, dReal fz,
<a name="l00169"></a>00169             dReal px, dReal py, dReal pz)
<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); }
<a name="l00171"></a>00171   <span class="keywordtype">void</span> addForceAtRelPos (dReal fx, dReal fy, dReal fz,
<a name="l00172"></a>00172             dReal px, dReal py, dReal pz)
<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); }
<a name="l00174"></a>00174   <span class="keywordtype">void</span> addRelForceAtPos (dReal fx, dReal fy, dReal fz,
<a name="l00175"></a>00175           dReal px, dReal py, dReal pz)
<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); }
<a name="l00177"></a>00177   <span class="keywordtype">void</span> addRelForceAtRelPos (dReal fx, dReal fy, dReal fz,
<a name="l00178"></a>00178              dReal px, dReal py, dReal pz)
<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); }
<a name="l00180"></a>00180 
<a name="l00181"></a>00181   <span class="keyword">const</span> dReal * getForce()<span class="keyword"> const</span>
<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); }
<a name="l00183"></a>00183   <span class="keyword">const</span> dReal * getTorque()<span class="keyword"> const</span>
<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); }
<a name="l00185"></a>00185   <span class="keywordtype">void</span> setForce (dReal x, dReal y, dReal z)
<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); }
<a name="l00187"></a>00187   <span class="keywordtype">void</span> setTorque (dReal x, dReal y, dReal z)
<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); }
<a name="l00189"></a>00189 
<a name="l00190"></a>00190   <span class="keywordtype">void</span> enable()
<a name="l00191"></a>00191     { <a class="code" href="group__bodies.html#gd0776c40f667b235f8642e10755543f8" title="Manually enable a body.">dBodyEnable</a> (_id); }
<a name="l00192"></a>00192   <span class="keywordtype">void</span> disable()
<a name="l00193"></a>00193     { <a class="code" href="group__bodies.html#ga78092d7cadae36373441aa9be7e6157" title="Manually disable a body.">dBodyDisable</a> (_id); }
<a name="l00194"></a>00194   <span class="keywordtype">int</span> isEnabled()<span class="keyword"> const</span>
<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); }
<a name="l00196"></a>00196 
<a name="l00197"></a>00197   <span class="keywordtype">void</span> getRelPointPos (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00199"></a>00199   <span class="keywordtype">void</span> getRelPointVel (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00201"></a>00201   <span class="keywordtype">void</span> getPointVel (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00203"></a>00203   <span class="keywordtype">void</span> getPosRelPoint (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00205"></a>00205   <span class="keywordtype">void</span> vectorToWorld (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00207"></a>00207   <span class="keywordtype">void</span> vectorFromWorld (dReal px, dReal py, dReal pz, dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00209"></a>00209 
<a name="l00210"></a>00210   <span class="keywordtype">void</span> setFiniteRotationMode (<span class="keywordtype">int</span> mode)
<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); }
<a name="l00212"></a>00212   <span class="keywordtype">void</span> setFiniteRotationAxis (dReal x, dReal y, dReal z)
<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); }
<a name="l00214"></a>00214 
<a name="l00215"></a>00215   <span class="keywordtype">int</span> getFiniteRotationMode()<span class="keyword"> const</span>
<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); }
<a name="l00217"></a>00217   <span class="keywordtype">void</span> getFiniteRotationAxis (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00219"></a>00219 
<a name="l00220"></a>00220   <span class="keywordtype">int</span> getNumJoints()<span class="keyword"> const</span>
<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); }
<a name="l00222"></a>00222   dJointID getJoint (<span class="keywordtype">int</span> index)<span class="keyword"> const</span>
<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); }
<a name="l00224"></a>00224 
<a name="l00225"></a>00225   <span class="keywordtype">void</span> setGravityMode (<span class="keywordtype">int</span> mode)
<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); }
<a name="l00227"></a>00227   <span class="keywordtype">int</span> getGravityMode()<span class="keyword"> const</span>
<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); }
<a name="l00229"></a>00229 
<a name="l00230"></a>00230   <span class="keywordtype">int</span> isConnectedTo (dBodyID body)<span class="keyword"> const</span>
<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); }
<a name="l00232"></a>00232 
<a name="l00233"></a>00233   <span class="keywordtype">void</span>  setAutoDisableLinearThreshold (dReal threshold) 
<a name="l00234"></a>00234     { <a class="code" href="group__bodies.html#gb8f6e736830cfea86c35e7a0cdfa3112" title="Set auto disable linear average threshold.">dBodySetAutoDisableLinearThreshold</a> (_id,threshold); }
<a name="l00235"></a>00235   dReal getAutoDisableLinearThreshold()
<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); }
<a name="l00237"></a>00237   <span class="keywordtype">void</span> setAutoDisableAngularThreshold (dReal threshold)
<a name="l00238"></a>00238     { <a class="code" href="group__bodies.html#g206ccf22f027a62aaf5e45a16ddc4040" title="Set auto disable angular average threshold.">dBodySetAutoDisableAngularThreshold</a> (_id,threshold); }
<a name="l00239"></a>00239   dReal getAutoDisableAngularThreshold()
<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); }
<a name="l00241"></a>00241   <span class="keywordtype">void</span> setAutoDisableSteps (<span class="keywordtype">int</span> steps)
<a name="l00242"></a>00242     { <a class="code" href="group__bodies.html#g03cc329bdc8e19e59c4bfe62cf736578" title="Set auto disable steps.">dBodySetAutoDisableSteps</a> (_id,steps); }
<a name="l00243"></a>00243   <span class="keywordtype">int</span> getAutoDisableSteps()
<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); }
<a name="l00245"></a>00245   <span class="keywordtype">void</span> setAutoDisableTime (dReal time)
<a name="l00246"></a>00246     { <a class="code" href="group__bodies.html#g0ae2f08bb38359934151f9420cdef341" title="Set auto disable time.">dBodySetAutoDisableTime</a> (_id,time); }
<a name="l00247"></a>00247   dReal getAutoDisableTime()
<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); }
<a name="l00249"></a>00249   <span class="keywordtype">void</span> setAutoDisableFlag (<span class="keywordtype">int</span> do_auto_disable)
<a name="l00250"></a>00250     { <a class="code" href="group__bodies.html#ge352fdcd8851224f07da53f35691ceb7" title="Set auto disable flag.">dBodySetAutoDisableFlag</a> (_id,do_auto_disable); }
<a name="l00251"></a>00251   <span class="keywordtype">int</span> getAutoDisableFlag()
<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); }
<a name="l00253"></a>00253 };
<a name="l00254"></a>00254 
<a name="l00255"></a>00255 
<a name="l00256"></a>00256 <span class="keyword">class </span>dJointGroup {
<a name="l00257"></a>00257   dJointGroupID _id;
<a name="l00258"></a>00258 
<a name="l00259"></a>00259   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00260"></a>00260   dJointGroup (<span class="keyword">const</span> dJointGroup &amp;);
<a name="l00261"></a>00261   <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dJointGroup &amp;);
<a name="l00262"></a>00262 
<a name="l00263"></a>00263 <span class="keyword">public</span>:
<a name="l00264"></a>00264   dJointGroup (<span class="keywordtype">int</span> dummy_arg=0)
<a name="l00265"></a>00265     { _id = <a class="code" href="group__joints.html#gaaec687b184a1214133a41503e7c628f" title="Create a joint group.">dJointGroupCreate</a> (0); }
<a name="l00266"></a>00266   ~dJointGroup()
<a name="l00267"></a>00267     { <a class="code" href="group__joints.html#g49e664ee9a8bd7bfe5e6932bf936bb8f" title="Destroy a joint group.">dJointGroupDestroy</a> (_id); }
<a name="l00268"></a>00268   <span class="keywordtype">void</span> create (<span class="keywordtype">int</span> dummy_arg=0) {
<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);
<a name="l00270"></a>00270     _id = <a class="code" href="group__joints.html#gaaec687b184a1214133a41503e7c628f" title="Create a joint group.">dJointGroupCreate</a> (0);
<a name="l00271"></a>00271   }
<a name="l00272"></a>00272 
<a name="l00273"></a>00273   dJointGroupID id()<span class="keyword"> const</span>
<a name="l00274"></a>00274 <span class="keyword">    </span>{ <span class="keywordflow">return</span> _id; }
<a name="l00275"></a>00275   operator dJointGroupID()<span class="keyword"> const</span>
<a name="l00276"></a>00276 <span class="keyword">    </span>{ <span class="keywordflow">return</span> _id; }
<a name="l00277"></a>00277 
<a name="l00278"></a>00278   <span class="keywordtype">void</span> empty()
<a name="l00279"></a>00279     { <a class="code" href="group__joints.html#g6e055bac8a0a3261bda3b6d07499c4ea" title="Empty a joint group.">dJointGroupEmpty</a> (_id); }
<a name="l00280"></a>00280 };
<a name="l00281"></a>00281 
<a name="l00282"></a>00282 
<a name="l00283"></a>00283 <span class="keyword">class </span>dJoint {
<a name="l00284"></a>00284 <span class="keyword">private</span>:
<a name="l00285"></a>00285   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00286"></a>00286   dJoint (<span class="keyword">const</span> dJoint &amp;) ;
<a name="l00287"></a>00287   <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dJoint &amp;);
<a name="l00288"></a>00288 
<a name="l00289"></a>00289 <span class="keyword">protected</span>:
<a name="l00290"></a>00290   dJointID _id;
<a name="l00291"></a>00291 
<a name="l00292"></a>00292 <span class="keyword">public</span>:
<a name="l00293"></a>00293   dJoint()
<a name="l00294"></a>00294     { _id = 0; }
<a name="l00295"></a>00295   ~dJoint()
<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); }
<a name="l00297"></a>00297 
<a name="l00298"></a>00298   dJointID id()<span class="keyword"> const</span>
<a name="l00299"></a>00299 <span class="keyword">    </span>{ <span class="keywordflow">return</span> _id; }
<a name="l00300"></a>00300   operator dJointID()<span class="keyword"> const</span>
<a name="l00301"></a>00301 <span class="keyword">    </span>{ <span class="keywordflow">return</span> _id; }
<a name="l00302"></a>00302 
<a name="l00303"></a>00303   <span class="keywordtype">void</span> attach (dBodyID body1, dBodyID body2)
<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); }
<a name="l00305"></a>00305 
<a name="l00306"></a>00306   <span class="keywordtype">void</span> setData (<span class="keywordtype">void</span> *data)
<a name="l00307"></a>00307     { <a class="code" href="group__joints.html#g5ca72d8bd498ef1ba920b0b473e79d02" title="Set the user-data pointer.">dJointSetData</a> (_id, data); }
<a name="l00308"></a>00308   <span class="keywordtype">void</span> *getData()<span class="keyword"> const</span>
<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); }
<a name="l00310"></a>00310 
<a name="l00311"></a>00311   <span class="keywordtype">int</span> getType()<span class="keyword"> const</span>
<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); }
<a name="l00313"></a>00313 
<a name="l00314"></a>00314   dBodyID getBody (<span class="keywordtype">int</span> index)<span class="keyword"> const</span>
<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); }
<a name="l00316"></a>00316 
<a name="l00317"></a>00317   <span class="keywordtype">void</span> setFeedback(dJointFeedback *fb)
<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); }
<a name="l00319"></a>00319   dJointFeedback *getFeedback()<span class="keyword"> const</span>
<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); }
<a name="l00321"></a>00321 };
<a name="l00322"></a>00322 
<a name="l00323"></a>00323 
<a name="l00324"></a>00324 <span class="keyword">class </span>dBallJoint : <span class="keyword">public</span> dJoint {
<a name="l00325"></a>00325 <span class="keyword">private</span>:
<a name="l00326"></a>00326   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00327"></a>00327   dBallJoint (<span class="keyword">const</span> dBallJoint &amp;);
<a name="l00328"></a>00328   <span class="keywordtype">void</span> operator= (<span class="keyword">const</span> dBallJoint &amp;);
<a name="l00329"></a>00329 
<a name="l00330"></a>00330 <span class="keyword">public</span>:
<a name="l00331"></a>00331   dBallJoint() { }
<a name="l00332"></a>00332   dBallJoint (dWorldID world, dJointGroupID group=0)
<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); }
<a name="l00334"></a>00334 
<a name="l00335"></a>00335   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<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);
<a name="l00338"></a>00338   }
<a name="l00339"></a>00339 
<a name="l00340"></a>00340   <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
<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); }
<a name="l00342"></a>00342   <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
<a name="l00343"></a>00343 <span class="keyword">    </span>{ dJointGetBallAnchor (_id, result); }
<a name="l00344"></a>00344   <span class="keywordtype">void</span> getAnchor2 (dVector3 result)<span class="keyword"> const</span>
<a name="l00345"></a>00345 <span class="keyword">    </span>{ dJointGetBallAnchor2 (_id, result); }
<a name="l00346"></a>00346   <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
<a name="l00347"></a>00347     { <a class="code" href="group__joints.html#ge58f5e11c0829aa8615622a74dd11d85" title="Param setting for Ball joints.">dJointSetBallParam</a> (_id, parameter, value); }
<a name="l00348"></a>00348   dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
<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); }
<a name="l00350"></a>00350 } ;
<a name="l00351"></a>00351 
<a name="l00352"></a>00352 
<a name="l00353"></a>00353 <span class="keyword">class </span>dHingeJoint : <span class="keyword">public</span> dJoint {
<a name="l00354"></a>00354   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00355"></a>00355   dHingeJoint (<span class="keyword">const</span> dHingeJoint &amp;);
<a name="l00356"></a>00356   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dHingeJoint &amp;);
<a name="l00357"></a>00357 
<a name="l00358"></a>00358 <span class="keyword">public</span>:
<a name="l00359"></a>00359   dHingeJoint() { }
<a name="l00360"></a>00360   dHingeJoint (dWorldID world, dJointGroupID group=0)
<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); }
<a name="l00362"></a>00362 
<a name="l00363"></a>00363   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<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);
<a name="l00366"></a>00366   }
<a name="l00367"></a>00367 
<a name="l00368"></a>00368   <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
<a name="l00369"></a>00369     { <a class="code" href="group__joints.html#gc5727a125de0abbe2abd61af7a55da26" title="Set hinge anchor parameter.">dJointSetHingeAnchor</a> (_id, x, y, z); }
<a name="l00370"></a>00370   <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00372"></a>00372   <span class="keywordtype">void</span> getAnchor2 (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00374"></a>00374 
<a name="l00375"></a>00375   <span class="keywordtype">void</span> setAxis (dReal x, dReal y, dReal z)
<a name="l00376"></a>00376     { <a class="code" href="group__joints.html#ga434229f033472ec7aa031a01c6cabed" title="Set hinge axis.">dJointSetHingeAxis</a> (_id, x, y, z); }
<a name="l00377"></a>00377   <span class="keywordtype">void</span> getAxis (dVector3 result)<span class="keyword"> const</span>
<a name="l00378"></a>00378 <span class="keyword">    </span>{ <a class="code" href="group__joints.html#g17b812897bc5faab33584cc5e3e4d3a4" title="get axis">dJointGetHingeAxis</a> (_id, result); }
<a name="l00379"></a>00379 
<a name="l00380"></a>00380   dReal getAngle()<span class="keyword"> const</span>
<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); }
<a name="l00382"></a>00382   dReal getAngleRate()<span class="keyword"> const</span>
<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); }
<a name="l00384"></a>00384 
<a name="l00385"></a>00385   <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
<a name="l00386"></a>00386     { <a class="code" href="group__joints.html#g6f9d34a01181e65639eb1f67da7a3e4c" title="set joint parameter">dJointSetHingeParam</a> (_id, parameter, value); }
<a name="l00387"></a>00387   dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
<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); }
<a name="l00389"></a>00389 
<a name="l00390"></a>00390   <span class="keywordtype">void</span> addTorque (dReal torque)
<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); }
<a name="l00392"></a>00392 };
<a name="l00393"></a>00393 
<a name="l00394"></a>00394 
<a name="l00395"></a>00395 <span class="keyword">class </span>dSliderJoint : <span class="keyword">public</span> dJoint {
<a name="l00396"></a>00396   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00397"></a>00397   dSliderJoint (<span class="keyword">const</span> dSliderJoint &amp;);
<a name="l00398"></a>00398   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dSliderJoint &amp;);
<a name="l00399"></a>00399 
<a name="l00400"></a>00400 <span class="keyword">public</span>:
<a name="l00401"></a>00401   dSliderJoint() { }
<a name="l00402"></a>00402   dSliderJoint (dWorldID world, dJointGroupID group=0)
<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); }
<a name="l00404"></a>00404 
<a name="l00405"></a>00405   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<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);
<a name="l00408"></a>00408   }
<a name="l00409"></a>00409 
<a name="l00410"></a>00410   <span class="keywordtype">void</span> setAxis (dReal x, dReal y, dReal z)
<a name="l00411"></a>00411     { <a class="code" href="group__joints.html#gb2f662b1190507551f49ffa29d276b61" title="set the joint axis">dJointSetSliderAxis</a> (_id, x, y, z); }
<a name="l00412"></a>00412   <span class="keywordtype">void</span> getAxis (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00414"></a>00414 
<a name="l00415"></a>00415   dReal getPosition()<span class="keyword"> const</span>
<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); }
<a name="l00417"></a>00417   dReal getPositionRate()<span class="keyword"> const</span>
<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); }
<a name="l00419"></a>00419 
<a name="l00420"></a>00420   <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
<a name="l00421"></a>00421     { <a class="code" href="group__joints.html#g648964f4ca4122309e71a9cc6c24c985" title="set joint parameter">dJointSetSliderParam</a> (_id, parameter, value); }
<a name="l00422"></a>00422   dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
<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); }
<a name="l00424"></a>00424 
<a name="l00425"></a>00425   <span class="keywordtype">void</span> addForce (dReal force)
<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); }
<a name="l00427"></a>00427 };
<a name="l00428"></a>00428 
<a name="l00429"></a>00429 
<a name="l00430"></a>00430 <span class="keyword">class </span>dUniversalJoint : <span class="keyword">public</span> dJoint {
<a name="l00431"></a>00431   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00432"></a>00432   dUniversalJoint (<span class="keyword">const</span> dUniversalJoint &amp;);
<a name="l00433"></a>00433   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dUniversalJoint &amp;);
<a name="l00434"></a>00434 
<a name="l00435"></a>00435 <span class="keyword">public</span>:
<a name="l00436"></a>00436   dUniversalJoint() { }
<a name="l00437"></a>00437   dUniversalJoint (dWorldID world, dJointGroupID group=0)
<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); }
<a name="l00439"></a>00439 
<a name="l00440"></a>00440   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<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);
<a name="l00443"></a>00443   }
<a name="l00444"></a>00444 
<a name="l00445"></a>00445   <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
<a name="l00446"></a>00446     { <a class="code" href="group__joints.html#gaf4657aed67f3cd7cce775215995c05d" title="set anchor">dJointSetUniversalAnchor</a> (_id, x, y, z); }
<a name="l00447"></a>00447   <span class="keywordtype">void</span> setAxis1 (dReal x, dReal y, dReal z)
<a name="l00448"></a>00448     { <a class="code" href="group__joints.html#ge0a831da9447ff65d76a0808502038e8" title="set axis">dJointSetUniversalAxis1</a> (_id, x, y, z); }
<a name="l00449"></a>00449   <span class="keywordtype">void</span> setAxis2 (dReal x, dReal y, dReal z)
<a name="l00450"></a>00450     { <a class="code" href="group__joints.html#gf3668eed7dc5aaf8fee19d7f87347343" title="set axis">dJointSetUniversalAxis2</a> (_id, x, y, z); }
<a name="l00451"></a>00451   <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
<a name="l00452"></a>00452     { <a class="code" href="group__joints.html#g3c58284c43e997a028b06dc250064e32" title="set joint parameter">dJointSetUniversalParam</a> (_id, parameter, value); }
<a name="l00453"></a>00453 
<a name="l00454"></a>00454   <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00456"></a>00456   <span class="keywordtype">void</span> getAnchor2 (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00458"></a>00458   <span class="keywordtype">void</span> getAxis1 (dVector3 result)<span class="keyword"> const</span>
<a name="l00459"></a>00459 <span class="keyword">    </span>{ <a class="code" href="group__joints.html#geaa8e546d93c304755a86ad3fa6d2abe" title="Get axis.">dJointGetUniversalAxis1</a> (_id, result); }
<a name="l00460"></a>00460   <span class="keywordtype">void</span> getAxis2 (dVector3 result)<span class="keyword"> const</span>
<a name="l00461"></a>00461 <span class="keyword">    </span>{ <a class="code" href="group__joints.html#g13c01cbc9c5e918740bac0540f6473b3" title="Get axis.">dJointGetUniversalAxis2</a> (_id, result); }
<a name="l00462"></a>00462   dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
<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); }
<a name="l00464"></a>00464  <span class="keywordtype">void</span> getAngles(dReal *angle1, dReal *angle2)<span class="keyword"> const</span>
<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); }
<a name="l00466"></a>00466 
<a name="l00467"></a>00467   dReal getAngle1()<span class="keyword"> const</span>
<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); }
<a name="l00469"></a>00469   dReal getAngle1Rate()<span class="keyword"> const</span>
<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); }
<a name="l00471"></a>00471   dReal getAngle2()<span class="keyword"> const</span>
<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); }
<a name="l00473"></a>00473   dReal getAngle2Rate()<span class="keyword"> const</span>
<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); }
<a name="l00475"></a>00475 
<a name="l00476"></a>00476   <span class="keywordtype">void</span> addTorques (dReal torque1, dReal torque2)
<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); }
<a name="l00478"></a>00478 };
<a name="l00479"></a>00479 
<a name="l00480"></a>00480 
<a name="l00481"></a>00481 <span class="keyword">class </span>dHinge2Joint : <span class="keyword">public</span> dJoint {
<a name="l00482"></a>00482   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00483"></a>00483   dHinge2Joint (<span class="keyword">const</span> dHinge2Joint &amp;);
<a name="l00484"></a>00484   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dHinge2Joint &amp;);
<a name="l00485"></a>00485 
<a name="l00486"></a>00486 <span class="keyword">public</span>:
<a name="l00487"></a>00487   dHinge2Joint() { }
<a name="l00488"></a>00488   dHinge2Joint (dWorldID world, dJointGroupID group=0)
<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); }
<a name="l00490"></a>00490 
<a name="l00491"></a>00491   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<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);
<a name="l00494"></a>00494   }
<a name="l00495"></a>00495 
<a name="l00496"></a>00496   <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
<a name="l00497"></a>00497     { <a class="code" href="group__joints.html#gf839c13fa85aff0287a87986ff447d29" title="set anchor">dJointSetHinge2Anchor</a> (_id, x, y, z); }
<a name="l00498"></a>00498   <span class="keywordtype">void</span> setAxis1 (dReal x, dReal y, dReal z)
<a name="l00499"></a>00499     { <a class="code" href="group__joints.html#gcdf78fbb0f5b0a09b4d3ac2059b07002" title="set axis">dJointSetHinge2Axis1</a> (_id, x, y, z); }
<a name="l00500"></a>00500   <span class="keywordtype">void</span> setAxis2 (dReal x, dReal y, dReal z)
<a name="l00501"></a>00501     { <a class="code" href="group__joints.html#gdfef9f6365c87dacb95b4850a9e9f0ee" title="set axis">dJointSetHinge2Axis2</a> (_id, x, y, z); }
<a name="l00502"></a>00502 
<a name="l00503"></a>00503   <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00505"></a>00505   <span class="keywordtype">void</span> getAnchor2 (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00507"></a>00507   <span class="keywordtype">void</span> getAxis1 (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00509"></a>00509   <span class="keywordtype">void</span> getAxis2 (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00511"></a>00511 
<a name="l00512"></a>00512   dReal getAngle1()<span class="keyword"> const</span>
<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); }
<a name="l00514"></a>00514   dReal getAngle1Rate()<span class="keyword"> const</span>
<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); }
<a name="l00516"></a>00516   dReal getAngle2Rate()<span class="keyword"> const</span>
<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); }
<a name="l00518"></a>00518 
<a name="l00519"></a>00519   <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
<a name="l00520"></a>00520     { <a class="code" href="group__joints.html#g9a2d8d03776ccb22869667337457a7a9" title="set joint parameter">dJointSetHinge2Param</a> (_id, parameter, value); }
<a name="l00521"></a>00521   dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
<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); }
<a name="l00523"></a>00523 
<a name="l00524"></a>00524   <span class="keywordtype">void</span> addTorques(dReal torque1, dReal torque2)
<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); }
<a name="l00526"></a>00526 };
<a name="l00527"></a>00527 
<a name="l00528"></a>00528 
<a name="l00529"></a>00529 <span class="keyword">class </span>dPRJoint : <span class="keyword">public</span> dJoint {
<a name="l00530"></a>00530   dPRJoint (<span class="keyword">const</span> dPRJoint &amp;);
<a name="l00531"></a>00531   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dPRJoint &amp;);
<a name="l00532"></a>00532 
<a name="l00533"></a>00533 <span class="keyword">public</span>:
<a name="l00534"></a>00534   dPRJoint() { }
<a name="l00535"></a>00535   dPRJoint (dWorldID world, dJointGroupID group=0)
<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); }
<a name="l00537"></a>00537 
<a name="l00538"></a>00538   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<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);
<a name="l00541"></a>00541   }
<a name="l00542"></a>00542 
<a name="l00543"></a>00543   <span class="keywordtype">void</span> setAnchor (dReal x, dReal y, dReal z)
<a name="l00544"></a>00544     { <a class="code" href="group__joints.html#ge46251e2cea2d31521b1fb9b151f640f" title="set anchor">dJointSetPRAnchor</a> (_id, x, y, z); }
<a name="l00545"></a>00545   <span class="keywordtype">void</span> setAxis1 (dReal x, dReal y, dReal z)
<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); }
<a name="l00547"></a>00547   <span class="keywordtype">void</span> setAxis2 (dReal x, dReal y, dReal z)
<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); }
<a name="l00549"></a>00549 
<a name="l00550"></a>00550   <span class="keywordtype">void</span> getAnchor (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00552"></a>00552   <span class="keywordtype">void</span> getAxis1 (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00554"></a>00554   <span class="keywordtype">void</span> getAxis2 (dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00556"></a>00556 
<a name="l00557"></a>00557   dReal getPosition()<span class="keyword"> const</span>
<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); }
<a name="l00559"></a>00559   dReal getPositionRate()<span class="keyword"> const</span>
<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); }
<a name="l00561"></a>00561 
<a name="l00562"></a>00562   <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
<a name="l00563"></a>00563     { <a class="code" href="group__joints.html#gc08a28659605f17307d563f45db0824b" title="set joint parameter">dJointSetPRParam</a> (_id, parameter, value); }
<a name="l00564"></a>00564   dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
<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); }
<a name="l00566"></a>00566 };
<a name="l00567"></a>00567 
<a name="l00568"></a>00568 
<a name="l00569"></a>00569 <span class="keyword">class </span>dFixedJoint : <span class="keyword">public</span> dJoint {
<a name="l00570"></a>00570   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00571"></a>00571   dFixedJoint (<span class="keyword">const</span> dFixedJoint &amp;);
<a name="l00572"></a>00572   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dFixedJoint &amp;);
<a name="l00573"></a>00573 
<a name="l00574"></a>00574 <span class="keyword">public</span>:
<a name="l00575"></a>00575   dFixedJoint() { }
<a name="l00576"></a>00576   dFixedJoint (dWorldID world, dJointGroupID group=0)
<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); }
<a name="l00578"></a>00578 
<a name="l00579"></a>00579   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<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);
<a name="l00582"></a>00582   }
<a name="l00583"></a>00583 
<a name="l00584"></a>00584   <span class="keywordtype">void</span> <span class="keyword">set</span>()
<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); }
<a name="l00586"></a>00586 
<a name="l00587"></a>00587   <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
<a name="l00588"></a>00588     { dJointSetFixedParam (_id, parameter, value); }
<a name="l00589"></a>00589 
<a name="l00590"></a>00590   dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
<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); }
<a name="l00592"></a>00592 };
<a name="l00593"></a>00593 
<a name="l00594"></a>00594 
<a name="l00595"></a>00595 <span class="keyword">class </span>dContactJoint : <span class="keyword">public</span> dJoint {
<a name="l00596"></a>00596   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00597"></a>00597   dContactJoint (<span class="keyword">const</span> dContactJoint &amp;);
<a name="l00598"></a>00598   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dContactJoint &amp;);
<a name="l00599"></a>00599 
<a name="l00600"></a>00600 <span class="keyword">public</span>:
<a name="l00601"></a>00601   dContactJoint() { }
<a name="l00602"></a>00602   dContactJoint (dWorldID world, dJointGroupID group, dContact *contact)
<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); }
<a name="l00604"></a>00604 
<a name="l00605"></a>00605   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group, dContact *contact) {
<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);
<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);
<a name="l00608"></a>00608   }
<a name="l00609"></a>00609 };
<a name="l00610"></a>00610 
<a name="l00611"></a>00611 
<a name="l00612"></a>00612 <span class="keyword">class </span>dNullJoint : <span class="keyword">public</span> dJoint {
<a name="l00613"></a>00613   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00614"></a>00614   dNullJoint (<span class="keyword">const</span> dNullJoint &amp;);
<a name="l00615"></a>00615   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dNullJoint &amp;);
<a name="l00616"></a>00616 
<a name="l00617"></a>00617 <span class="keyword">public</span>:
<a name="l00618"></a>00618   dNullJoint() { }
<a name="l00619"></a>00619   dNullJoint (dWorldID world, dJointGroupID group=0)
<a name="l00620"></a>00620     { _id = dJointCreateNull (world, group); }
<a name="l00621"></a>00621 
<a name="l00622"></a>00622   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<a name="l00624"></a>00624     _id = dJointCreateNull (world, group);
<a name="l00625"></a>00625   }
<a name="l00626"></a>00626 };
<a name="l00627"></a>00627 
<a name="l00628"></a>00628 
<a name="l00629"></a>00629 <span class="keyword">class </span>dAMotorJoint : <span class="keyword">public</span> dJoint {
<a name="l00630"></a>00630   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00631"></a>00631   dAMotorJoint (<span class="keyword">const</span> dAMotorJoint &amp;);
<a name="l00632"></a>00632   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dAMotorJoint &amp;);
<a name="l00633"></a>00633 
<a name="l00634"></a>00634 <span class="keyword">public</span>:
<a name="l00635"></a>00635   dAMotorJoint() { }
<a name="l00636"></a>00636   dAMotorJoint (dWorldID world, dJointGroupID group=0)
<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); }
<a name="l00638"></a>00638 
<a name="l00639"></a>00639   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<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);
<a name="l00642"></a>00642   }
<a name="l00643"></a>00643 
<a name="l00644"></a>00644   <span class="keywordtype">void</span> setMode (<span class="keywordtype">int</span> mode)
<a name="l00645"></a>00645     { <a class="code" href="group__joints.html#gb0a3a8527810717c62a2c68dc4dfa822" title="set mode">dJointSetAMotorMode</a> (_id, mode); }
<a name="l00646"></a>00646   <span class="keywordtype">int</span> getMode()<span class="keyword"> const</span>
<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); }
<a name="l00648"></a>00648 
<a name="l00649"></a>00649   <span class="keywordtype">void</span> setNumAxes (<span class="keywordtype">int</span> num)
<a name="l00650"></a>00650     { <a class="code" href="group__joints.html#g1406f976045a1b7edffbb46bf626d04f" title="set the nr of axes">dJointSetAMotorNumAxes</a> (_id, num); }
<a name="l00651"></a>00651   <span class="keywordtype">int</span> getNumAxes()<span class="keyword"> const</span>
<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); }
<a name="l00653"></a>00653 
<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)
<a name="l00655"></a>00655     { <a class="code" href="group__joints.html#gbef7d92227b62e04b60eb9df02359603" title="set axis">dJointSetAMotorAxis</a> (_id, anum, rel, x, y, z); }
<a name="l00656"></a>00656   <span class="keywordtype">void</span> getAxis (<span class="keywordtype">int</span> anum, dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00658"></a>00658   <span class="keywordtype">int</span> getAxisRel (<span class="keywordtype">int</span> anum)<span class="keyword"> const</span>
<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); }
<a name="l00660"></a>00660 
<a name="l00661"></a>00661   <span class="keywordtype">void</span> setAngle (<span class="keywordtype">int</span> anum, dReal angle)
<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); }
<a name="l00663"></a>00663   dReal getAngle (<span class="keywordtype">int</span> anum)<span class="keyword"> const</span>
<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); }
<a name="l00665"></a>00665   dReal getAngleRate (<span class="keywordtype">int</span> anum)
<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); }
<a name="l00667"></a>00667 
<a name="l00668"></a>00668   <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
<a name="l00669"></a>00669     { <a class="code" href="group__joints.html#gac3f00196ee0cdb772e00dc259ef639a" title="set joint parameter">dJointSetAMotorParam</a> (_id, parameter, value); }
<a name="l00670"></a>00670   dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
<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); }
<a name="l00672"></a>00672 
<a name="l00673"></a>00673   <span class="keywordtype">void</span> addTorques(dReal torque1, dReal torque2, dReal torque3)
<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); }
<a name="l00675"></a>00675 };
<a name="l00676"></a>00676 
<a name="l00677"></a>00677 
<a name="l00678"></a>00678 <span class="keyword">class </span>dLMotorJoint : <span class="keyword">public</span> dJoint {
<a name="l00679"></a>00679   <span class="comment">// intentionally undefined, don't use these</span>
<a name="l00680"></a>00680   dLMotorJoint (<span class="keyword">const</span> dLMotorJoint &amp;);
<a name="l00681"></a>00681   <span class="keywordtype">void</span> operator = (<span class="keyword">const</span> dLMotorJoint &amp;);
<a name="l00682"></a>00682 
<a name="l00683"></a>00683 <span class="keyword">public</span>:
<a name="l00684"></a>00684   dLMotorJoint() { }
<a name="l00685"></a>00685   dLMotorJoint (dWorldID world, dJointGroupID group=0)
<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); }
<a name="l00687"></a>00687 
<a name="l00688"></a>00688   <span class="keywordtype">void</span> create (dWorldID world, dJointGroupID group=0) {
<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);
<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);
<a name="l00691"></a>00691   }
<a name="l00692"></a>00692 
<a name="l00693"></a>00693   <span class="keywordtype">void</span> setNumAxes (<span class="keywordtype">int</span> num)
<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); }
<a name="l00695"></a>00695   <span class="keywordtype">int</span> getNumAxes()<span class="keyword"> const</span>
<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); }
<a name="l00697"></a>00697 
<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)
<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); }
<a name="l00700"></a>00700   <span class="keywordtype">void</span> getAxis (<span class="keywordtype">int</span> anum, dVector3 result)<span class="keyword"> const</span>
<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); }
<a name="l00702"></a>00702 
<a name="l00703"></a>00703   <span class="keywordtype">void</span> setParam (<span class="keywordtype">int</span> parameter, dReal value)
<a name="l00704"></a>00704     { <a class="code" href="group__joints.html#g791bfa6e65d0c3dce99ca0bcd3beb8d6" title="set joint parameter">dJointSetLMotorParam</a> (_id, parameter, value); }
<a name="l00705"></a>00705   dReal getParam (<span class="keywordtype">int</span> parameter)<span class="keyword"> const</span>
<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); }
<a name="l00707"></a>00707 };
<a name="l00708"></a>00708 
<a name="l00709"></a>00709 
<a name="l00710"></a>00710 
<a name="l00711"></a>00711 <span class="preprocessor">#endif</span>
<a name="l00712"></a>00712 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
</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;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
</body>
</html>