From f205de7847da7ae1c10212d82e7042d0100b4ce0 Mon Sep 17 00:00:00 2001 From: dan miller Date: Fri, 19 Oct 2007 05:24:38 +0000 Subject: from the start... checking in ode-0.9 --- libraries/ode-0.9/docs/annotated.html | 30 + libraries/ode-0.9/docs/collision_8h-source.html | 417 ++++ .../ode-0.9/docs/collision__space_8h-source.html | 81 + .../ode-0.9/docs/collision__trimesh_8h-source.html | 220 ++ libraries/ode-0.9/docs/common_8h-source.html | 408 ++++ .../ode-0.9/docs/compatibility_8h-source.html | 60 + libraries/ode-0.9/docs/config_8h-source.html | 196 ++ libraries/ode-0.9/docs/contact_8h-source.html | 109 + libraries/ode-0.9/docs/doxygen.css | 358 +++ libraries/ode-0.9/docs/doxygen.png | Bin 0 -> 1281 bytes libraries/ode-0.9/docs/drawstuff_8h-source.html | 166 ++ libraries/ode-0.9/docs/error_8h-source.html | 83 + libraries/ode-0.9/docs/export-dif_8h-source.html | 52 + libraries/ode-0.9/docs/files.html | 44 + libraries/ode-0.9/docs/functions.html | 46 + libraries/ode-0.9/docs/functions_vars.html | 46 + libraries/ode-0.9/docs/group__bodies.html | 1827 +++++++++++++++ libraries/ode-0.9/docs/group__collide.html | 2452 ++++++++++++++++++++ libraries/ode-0.9/docs/group__collide__box.html | 182 ++ libraries/ode-0.9/docs/group__collide__sphere.html | 199 ++ libraries/ode-0.9/docs/group__disable.html | 563 +++++ libraries/ode-0.9/docs/group__drawstuff.html | 668 ++++++ libraries/ode-0.9/docs/group__joints.html | 2127 +++++++++++++++++ libraries/ode-0.9/docs/group__world.html | 697 ++++++ libraries/ode-0.9/docs/index.html | 27 + libraries/ode-0.9/docs/mass_8h-source.html | 137 ++ libraries/ode-0.9/docs/matrix_8h-source.html | 214 ++ libraries/ode-0.9/docs/memory_8h-source.html | 79 + libraries/ode-0.9/docs/misc_8h-source.html | 105 + libraries/ode-0.9/docs/modules.html | 32 + libraries/ode-0.9/docs/objects_8h-source.html | 563 +++++ libraries/ode-0.9/docs/ode_8h-source.html | 67 + libraries/ode-0.9/docs/odecpp_8h-source.html | 732 ++++++ .../ode-0.9/docs/odecpp__collision_8h-source.html | 366 +++ libraries/ode-0.9/docs/odemath_8h-source.html | 350 +++ libraries/ode-0.9/docs/rotation_8h-source.html | 90 + libraries/ode-0.9/docs/structd_contact_geom.html | 70 + libraries/ode-0.9/docs/structds_functions.html | 59 + libraries/ode-0.9/docs/tab_b.gif | Bin 0 -> 35 bytes libraries/ode-0.9/docs/tab_l.gif | Bin 0 -> 706 bytes libraries/ode-0.9/docs/tab_r.gif | Bin 0 -> 2585 bytes libraries/ode-0.9/docs/tabs.css | 102 + libraries/ode-0.9/docs/timer_8h-source.html | 96 + libraries/ode-0.9/docs/version_8h-source.html | 49 + 44 files changed, 14169 insertions(+) create mode 100644 libraries/ode-0.9/docs/annotated.html create mode 100644 libraries/ode-0.9/docs/collision_8h-source.html create mode 100644 libraries/ode-0.9/docs/collision__space_8h-source.html create mode 100644 libraries/ode-0.9/docs/collision__trimesh_8h-source.html create mode 100644 libraries/ode-0.9/docs/common_8h-source.html create mode 100644 libraries/ode-0.9/docs/compatibility_8h-source.html create mode 100644 libraries/ode-0.9/docs/config_8h-source.html create mode 100644 libraries/ode-0.9/docs/contact_8h-source.html create mode 100644 libraries/ode-0.9/docs/doxygen.css create mode 100644 libraries/ode-0.9/docs/doxygen.png create mode 100644 libraries/ode-0.9/docs/drawstuff_8h-source.html create mode 100644 libraries/ode-0.9/docs/error_8h-source.html create mode 100644 libraries/ode-0.9/docs/export-dif_8h-source.html create mode 100644 libraries/ode-0.9/docs/files.html create mode 100644 libraries/ode-0.9/docs/functions.html create mode 100644 libraries/ode-0.9/docs/functions_vars.html create mode 100644 libraries/ode-0.9/docs/group__bodies.html create mode 100644 libraries/ode-0.9/docs/group__collide.html create mode 100644 libraries/ode-0.9/docs/group__collide__box.html create mode 100644 libraries/ode-0.9/docs/group__collide__sphere.html create mode 100644 libraries/ode-0.9/docs/group__disable.html create mode 100644 libraries/ode-0.9/docs/group__drawstuff.html create mode 100644 libraries/ode-0.9/docs/group__joints.html create mode 100644 libraries/ode-0.9/docs/group__world.html create mode 100644 libraries/ode-0.9/docs/index.html create mode 100644 libraries/ode-0.9/docs/mass_8h-source.html create mode 100644 libraries/ode-0.9/docs/matrix_8h-source.html create mode 100644 libraries/ode-0.9/docs/memory_8h-source.html create mode 100644 libraries/ode-0.9/docs/misc_8h-source.html create mode 100644 libraries/ode-0.9/docs/modules.html create mode 100644 libraries/ode-0.9/docs/objects_8h-source.html create mode 100644 libraries/ode-0.9/docs/ode_8h-source.html create mode 100644 libraries/ode-0.9/docs/odecpp_8h-source.html create mode 100644 libraries/ode-0.9/docs/odecpp__collision_8h-source.html create mode 100644 libraries/ode-0.9/docs/odemath_8h-source.html create mode 100644 libraries/ode-0.9/docs/rotation_8h-source.html create mode 100644 libraries/ode-0.9/docs/structd_contact_geom.html create mode 100644 libraries/ode-0.9/docs/structds_functions.html create mode 100644 libraries/ode-0.9/docs/tab_b.gif create mode 100644 libraries/ode-0.9/docs/tab_l.gif create mode 100644 libraries/ode-0.9/docs/tab_r.gif create mode 100644 libraries/ode-0.9/docs/tabs.css create mode 100644 libraries/ode-0.9/docs/timer_8h-source.html create mode 100644 libraries/ode-0.9/docs/version_8h-source.html (limited to 'libraries/ode-0.9/docs') 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 @@ + + +Open Dynamics Engine: Data Structures + + + + +
+ +
+
+ +
+

Open Dynamics Engine Data Structures

Here are the data structures with brief descriptions: + + +
dContactGeomDescribe the contact point between two geoms
dsFunctionsSet of functions to be used as callbacks by the simulation loop
+
Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: collision.h Source File + + + + +
+ +
+

collision.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_COLLISION_H_
+00024 #define _ODE_COLLISION_H_
+00025 
+00026 #include <ode/common.h>
+00027 #include <ode/collision_space.h>
+00028 #include <ode/contact.h>
+00029 
+00030 #ifdef __cplusplus
+00031 extern "C" {
+00032 #endif
+00033 
+00049 /* ************************************************************************ */
+00050 /* general functions */
+00051 
+00065 ODE_API void dGeomDestroy (dGeomID geom);
+00066 
+00067 
+00075 ODE_API void dGeomSetData (dGeomID geom, void* data);
+00076 
+00077 
+00084 ODE_API void *dGeomGetData (dGeomID geom);
+00085 
+00086 
+00105 ODE_API void dGeomSetBody (dGeomID geom, dBodyID body);
+00106 
+00107 
+00114 ODE_API dBodyID dGeomGetBody (dGeomID geom);
+00115 
+00116 
+00131 ODE_API void dGeomSetPosition (dGeomID geom, dReal x, dReal y, dReal z);
+00132 
+00133 
+00146 ODE_API void dGeomSetRotation (dGeomID geom, const dMatrix3 R);
+00147 
+00148 
+00162 ODE_API void dGeomSetQuaternion (dGeomID geom, const dQuaternion Q);
+00163 
+00164 
+00181 ODE_API const dReal * dGeomGetPosition (dGeomID geom);
+00182 
+00183 
+00191 ODE_API void dGeomCopyPosition (dGeomID geom, dVector3 pos);
+00192 
+00193 
+00210 ODE_API const dReal * dGeomGetRotation (dGeomID geom);
+00211 
+00212 
+00226 ODE_API void dGeomCopyRotation(dGeomID geom, dMatrix3 R);
+00227 
+00228 
+00242 ODE_API void dGeomGetQuaternion (dGeomID geom, dQuaternion result);
+00243 
+00244 
+00261 ODE_API void dGeomGetAABB (dGeomID geom, dReal aabb[6]);
+00262 
+00263 
+00270 ODE_API int dGeomIsSpace (dGeomID geom);
+00271 
+00272 
+00280 ODE_API dSpaceID dGeomGetSpace (dGeomID);
+00281 
+00282 
+00307 ODE_API int dGeomGetClass (dGeomID geom);
+00308 
+00309 
+00322 ODE_API void dGeomSetCategoryBits (dGeomID geom, unsigned long bits);
+00323 
+00324 
+00337 ODE_API void dGeomSetCollideBits (dGeomID geom, unsigned long bits);
+00338 
+00339 
+00348 ODE_API unsigned long dGeomGetCategoryBits (dGeomID);
+00349 
+00350 
+00359 ODE_API unsigned long dGeomGetCollideBits (dGeomID);
+00360 
+00361 
+00374 ODE_API void dGeomEnable (dGeomID geom);
+00375 
+00376 
+00389 ODE_API void dGeomDisable (dGeomID geom);
+00390 
+00391 
+00405 ODE_API int dGeomIsEnabled (dGeomID geom);
+00406 
+00407 /* ************************************************************************ */
+00408 /* geom offset from body */
+00409 
+00425 ODE_API void dGeomSetOffsetPosition (dGeomID geom, dReal x, dReal y, dReal z);
+00426 
+00427 
+00441 ODE_API void dGeomSetOffsetRotation (dGeomID geom, const dMatrix3 R);
+00442 
+00443 
+00457 ODE_API void dGeomSetOffsetQuaternion (dGeomID geom, const dQuaternion Q);
+00458 
+00459 
+00476 ODE_API void dGeomSetOffsetWorldPosition (dGeomID geom, dReal x, dReal y, dReal z);
+00477 
+00478 
+00493 ODE_API void dGeomSetOffsetWorldRotation (dGeomID geom, const dMatrix3 R);
+00494 
+00495 
+00510 ODE_API void dGeomSetOffsetWorldQuaternion (dGeomID geom, const dQuaternion);
+00511 
+00512 
+00526 ODE_API void dGeomClearOffset(dGeomID geom);
+00527 
+00528 
+00544 ODE_API int dGeomIsOffset(dGeomID geom);
+00545 
+00546 
+00560 ODE_API const dReal * dGeomGetOffsetPosition (dGeomID geom);
+00561 
+00562 
+00573 ODE_API void dGeomCopyOffsetPosition (dGeomID geom, dVector3 pos);
+00574 
+00575 
+00590 ODE_API const dReal * dGeomGetOffsetRotation (dGeomID geom);
+00591 
+00592 
+00604 ODE_API void dGeomCopyOffsetRotation (dGeomID geom, dMatrix3 R);
+00605 
+00606 
+00617 ODE_API void dGeomGetOffsetQuaternion (dGeomID geom, dQuaternion result);
+00618 
+00619 
+00620 /* ************************************************************************ */
+00621 /* collision detection */
+00622 
+00623 /*
+00624  * Just generate any contacts (disables any contact refining).
+00625  */
+00626 #define CONTACTS_UNIMPORTANT        0x80000000
+00627 
+00675 ODE_API int dCollide (dGeomID o1, dGeomID o2, int flags, dContactGeom *contact,
+00676          int skip);
+00677 
+00705 ODE_API void dSpaceCollide (dSpaceID space, void *data, dNearCallback *callback);
+00706 
+00707 
+00742 ODE_API void dSpaceCollide2 (dGeomID space1, dGeomID space2, void *data, dNearCallback *callback);
+00743 
+00744 
+00745 /* ************************************************************************ */
+00746 /* standard classes */
+00747 
+00748 /* the maximum number of user classes that are supported */
+00749 enum {
+00750   dMaxUserClasses = 4
+00751 };
+00752 
+00753 /* class numbers - each geometry object needs a unique number */
+00754 enum {
+00755   dSphereClass = 0,
+00756   dBoxClass,
+00757   dCapsuleClass,
+00758   dCylinderClass,
+00759   dPlaneClass,
+00760   dRayClass,
+00761   dConvexClass,
+00762   dGeomTransformClass,
+00763   dTriMeshClass,
+00764   dHeightfieldClass,
+00765 
+00766   dFirstSpaceClass,
+00767   dSimpleSpaceClass = dFirstSpaceClass,
+00768   dHashSpaceClass,
+00769   dQuadTreeSpaceClass,
+00770   dLastSpaceClass = dQuadTreeSpaceClass,
+00771 
+00772   dFirstUserClass,
+00773   dLastUserClass = dFirstUserClass + dMaxUserClasses - 1,
+00774   dGeomNumClasses
+00775 };
+00776 
+00777 
+00797 ODE_API dGeomID dCreateSphere (dSpaceID space, dReal radius);
+00798 
+00799 
+00809 ODE_API void dGeomSphereSetRadius (dGeomID sphere, dReal radius);
+00810 
+00811 
+00820 ODE_API dReal dGeomSphereGetRadius (dGeomID sphere);
+00821 
+00822 
+00837 ODE_API dReal dGeomSpherePointDepth (dGeomID sphere, dReal x, dReal y, dReal z);
+00838 
+00839 
+00840 //--> Convex Functions
+00841 ODE_API dGeomID dCreateConvex (dSpaceID space,
+00842                 dReal *_planes,
+00843                 unsigned int _planecount,
+00844                 dReal *_points,
+00845                 unsigned int _pointcount,unsigned int *_polygons);
+00846 
+00847 ODE_API void dGeomSetConvex (dGeomID g,
+00848               dReal *_planes,
+00849               unsigned int _count,
+00850               dReal *_points,
+00851               unsigned int _pointcount,unsigned int *_polygons);
+00852 //<-- Convex Functions
+00853 
+00875 ODE_API dGeomID dCreateBox (dSpaceID space, dReal lx, dReal ly, dReal lz);
+00876 
+00877 
+00889 ODE_API void dGeomBoxSetLengths (dGeomID box, dReal lx, dReal ly, dReal lz);
+00890 
+00891 
+00901 ODE_API void dGeomBoxGetLengths (dGeomID box, dVector3 result);
+00902 
+00903 
+00916 ODE_API dReal dGeomBoxPointDepth (dGeomID box, dReal x, dReal y, dReal z);
+00917 
+00918 
+00919 ODE_API dGeomID dCreatePlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d);
+00920 ODE_API void dGeomPlaneSetParams (dGeomID plane, dReal a, dReal b, dReal c, dReal d);
+00921 ODE_API void dGeomPlaneGetParams (dGeomID plane, dVector4 result);
+00922 ODE_API dReal dGeomPlanePointDepth (dGeomID plane, dReal x, dReal y, dReal z);
+00923 
+00924 ODE_API dGeomID dCreateCapsule (dSpaceID space, dReal radius, dReal length);
+00925 ODE_API void dGeomCapsuleSetParams (dGeomID ccylinder, dReal radius, dReal length);
+00926 ODE_API void dGeomCapsuleGetParams (dGeomID ccylinder, dReal *radius, dReal *length);
+00927 ODE_API dReal dGeomCapsulePointDepth (dGeomID ccylinder, dReal x, dReal y, dReal z);
+00928 
+00929 // For now we want to have a backwards compatible C-API, note: C++ API is not.
+00930 #define dCreateCCylinder dCreateCapsule
+00931 #define dGeomCCylinderSetParams dGeomCapsuleSetParams
+00932 #define dGeomCCylinderGetParams dGeomCapsuleGetParams
+00933 #define dGeomCCylinderPointDepth dGeomCapsulePointDepth
+00934 #define dCCylinderClass dCapsuleClass
+00935 
+00936 ODE_API dGeomID dCreateCylinder (dSpaceID space, dReal radius, dReal length);
+00937 ODE_API void dGeomCylinderSetParams (dGeomID cylinder, dReal radius, dReal length);
+00938 ODE_API void dGeomCylinderGetParams (dGeomID cylinder, dReal *radius, dReal *length);
+00939 
+00940 ODE_API dGeomID dCreateRay (dSpaceID space, dReal length);
+00941 ODE_API void dGeomRaySetLength (dGeomID ray, dReal length);
+00942 ODE_API dReal dGeomRayGetLength (dGeomID ray);
+00943 ODE_API void dGeomRaySet (dGeomID ray, dReal px, dReal py, dReal pz,
+00944         dReal dx, dReal dy, dReal dz);
+00945 ODE_API void dGeomRayGet (dGeomID ray, dVector3 start, dVector3 dir);
+00946 
+00947 /*
+00948  * Set/get ray flags that influence ray collision detection.
+00949  * These flags are currently only noticed by the trimesh collider, because
+00950  * they can make a major differences there.
+00951  */
+00952 ODE_API void dGeomRaySetParams (dGeomID g, int FirstContact, int BackfaceCull);
+00953 ODE_API void dGeomRayGetParams (dGeomID g, int *FirstContact, int *BackfaceCull);
+00954 ODE_API void dGeomRaySetClosestHit (dGeomID g, int closestHit);
+00955 ODE_API int dGeomRayGetClosestHit (dGeomID g);
+00956 
+00957 #include "collision_trimesh.h"
+00958 
+00959 ODE_API dGeomID dCreateGeomTransform (dSpaceID space);
+00960 ODE_API void dGeomTransformSetGeom (dGeomID g, dGeomID obj);
+00961 ODE_API dGeomID dGeomTransformGetGeom (dGeomID g);
+00962 ODE_API void dGeomTransformSetCleanup (dGeomID g, int mode);
+00963 ODE_API int dGeomTransformGetCleanup (dGeomID g);
+00964 ODE_API void dGeomTransformSetInfo (dGeomID g, int mode);
+00965 ODE_API int dGeomTransformGetInfo (dGeomID g);
+00966 
+00967 
+00968 /* ************************************************************************ */
+00969 /* heightfield functions */
+00970 
+00971 
+00972 // Data storage for heightfield data.
+00973 struct dxHeightfieldData;
+00974 typedef struct dxHeightfieldData* dHeightfieldDataID;
+00975 
+00976 
+00994 typedef dReal dHeightfieldGetHeight( void* p_user_data, int x, int z );
+00995 
+00996 
+00997 
+01017 ODE_API dGeomID dCreateHeightfield( dSpaceID space,
+01018                dHeightfieldDataID data, int bPlaceable );
+01019 
+01020 
+01033 ODE_API dHeightfieldDataID dGeomHeightfieldDataCreate();
+01034 
+01035 
+01044 ODE_API void dGeomHeightfieldDataDestroy( dHeightfieldDataID d );
+01045 
+01046 
+01047 
+01088 ODE_API void dGeomHeightfieldDataBuildCallback( dHeightfieldDataID d,
+01089             void* pUserData, dHeightfieldGetHeight* pCallback,
+01090             dReal width, dReal depth, int widthSamples, int depthSamples,
+01091             dReal scale, dReal offset, dReal thickness, int bWrap );
+01092 
+01136 ODE_API void dGeomHeightfieldDataBuildByte( dHeightfieldDataID d,
+01137             const unsigned char* pHeightData, int bCopyHeightData,
+01138             dReal width, dReal depth, int widthSamples, int depthSamples,
+01139             dReal scale, dReal offset, dReal thickness,  int bWrap );
+01140 
+01184 ODE_API void dGeomHeightfieldDataBuildShort( dHeightfieldDataID d,
+01185             const short* pHeightData, int bCopyHeightData,
+01186             dReal width, dReal depth, int widthSamples, int depthSamples,
+01187             dReal scale, dReal offset, dReal thickness, int bWrap );
+01188 
+01234 ODE_API void dGeomHeightfieldDataBuildSingle( dHeightfieldDataID d,
+01235             const float* pHeightData, int bCopyHeightData,
+01236             dReal width, dReal depth, int widthSamples, int depthSamples,
+01237             dReal scale, dReal offset, dReal thickness, int bWrap );
+01238 
+01284 ODE_API void dGeomHeightfieldDataBuildDouble( dHeightfieldDataID d,
+01285             const double* pHeightData, int bCopyHeightData,
+01286             dReal width, dReal depth, int widthSamples, int depthSamples,
+01287             dReal scale, dReal offset, dReal thickness, int bWrap );
+01288 
+01306 ODE_API void dGeomHeightfieldDataSetBounds( dHeightfieldDataID d,
+01307             dReal minHeight, dReal maxHeight );
+01308 
+01309 
+01320 ODE_API void dGeomHeightfieldSetHeightfieldData( dGeomID g, dHeightfieldDataID d );
+01321 
+01322 
+01332 ODE_API dHeightfieldDataID dGeomHeightfieldGetHeightfieldData( dGeomID g );
+01333 
+01334 
+01335 
+01336 /* ************************************************************************ */
+01337 /* utility functions */
+01338 
+01339 ODE_API void dClosestLineSegmentPoints (const dVector3 a1, const dVector3 a2,
+01340             const dVector3 b1, const dVector3 b2,
+01341             dVector3 cp1, dVector3 cp2);
+01342 
+01343 ODE_API int dBoxTouchesBox (const dVector3 _p1, const dMatrix3 R1,
+01344           const dVector3 side1, const dVector3 _p2,
+01345           const dMatrix3 R2, const dVector3 side2);
+01346 
+01347 // The meaning of flags parameter is the same as in dCollide()
+01348 ODE_API int dBoxBox (const dVector3 p1, const dMatrix3 R1,
+01349         const dVector3 side1, const dVector3 p2,
+01350         const dMatrix3 R2, const dVector3 side2,
+01351         dVector3 normal, dReal *depth, int *return_code,
+01352         int flags, dContactGeom *contact, int skip);
+01353 
+01354 ODE_API void dInfiniteAABB (dGeomID geom, dReal aabb[6]);
+01355 ODE_API void dInitODE(void);
+01356 ODE_API void dCloseODE(void);
+01357 
+01358 /* ************************************************************************ */
+01359 /* custom classes */
+01360 
+01361 typedef void dGetAABBFn (dGeomID, dReal aabb[6]);
+01362 typedef int dColliderFn (dGeomID o1, dGeomID o2,
+01363           int flags, dContactGeom *contact, int skip);
+01364 typedef dColliderFn * dGetColliderFnFn (int num);
+01365 typedef void dGeomDtorFn (dGeomID o);
+01366 typedef int dAABBTestFn (dGeomID o1, dGeomID o2, dReal aabb[6]);
+01367 
+01368 typedef struct dGeomClass {
+01369   int bytes;
+01370   dGetColliderFnFn *collider;
+01371   dGetAABBFn *aabb;
+01372   dAABBTestFn *aabb_test;
+01373   dGeomDtorFn *dtor;
+01374 } dGeomClass;
+01375 
+01376 ODE_API int dCreateGeomClass (const dGeomClass *classptr);
+01377 ODE_API void * dGeomGetClassData (dGeomID);
+01378 ODE_API dGeomID dCreateGeom (int classnum);
+01379 
+01380 /* ************************************************************************ */
+01381 
+01382 #ifdef __cplusplus
+01383 }
+01384 #endif
+01385 
+01386 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: collision_space.h Source File + + + + +
+ +
+

collision_space.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_COLLISION_SPACE_H_
+00024 #define _ODE_COLLISION_SPACE_H_
+00025 
+00026 #include <ode/common.h>
+00027 
+00028 #ifdef __cplusplus
+00029 extern "C" {
+00030 #endif
+00031 
+00032 struct dContactGeom;
+00033 
+00049 typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2);
+00050 
+00051 
+00052 ODE_API dSpaceID dSimpleSpaceCreate (dSpaceID space);
+00053 ODE_API dSpaceID dHashSpaceCreate (dSpaceID space);
+00054 ODE_API dSpaceID dQuadTreeSpaceCreate (dSpaceID space, dVector3 Center, dVector3 Extents, int Depth);
+00055 
+00056 ODE_API void dSpaceDestroy (dSpaceID);
+00057 
+00058 ODE_API void dHashSpaceSetLevels (dSpaceID space, int minlevel, int maxlevel);
+00059 ODE_API void dHashSpaceGetLevels (dSpaceID space, int *minlevel, int *maxlevel);
+00060 
+00061 ODE_API void dSpaceSetCleanup (dSpaceID space, int mode);
+00062 ODE_API int dSpaceGetCleanup (dSpaceID space);
+00063 
+00064 ODE_API void dSpaceAdd (dSpaceID, dGeomID);
+00065 ODE_API void dSpaceRemove (dSpaceID, dGeomID);
+00066 ODE_API int dSpaceQuery (dSpaceID, dGeomID);
+00067 ODE_API void dSpaceClean (dSpaceID);
+00068 ODE_API int dSpaceGetNumGeoms (dSpaceID);
+00069 ODE_API dGeomID dSpaceGetGeom (dSpaceID, int i);
+00070 
+00071 
+00072 #ifdef __cplusplus
+00073 }
+00074 #endif
+00075 
+00076 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: collision_trimesh.h Source File + + + + +
+ +
+

collision_trimesh.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 /*
+00024  * TriMesh code by Erwin de Vries.
+00025  *
+00026  * Trimesh data.
+00027  * This is where the actual vertexdata (pointers), and BV tree is stored.
+00028  * Vertices should be single precision!
+00029  * This should be more sophisticated, so that the user can easyly implement
+00030  * another collision library, but this is a lot of work, and also costs some
+00031  * performance because some data has to be copied.
+00032  */
+00033 
+00034 #ifndef _ODE_COLLISION_TRIMESH_H_
+00035 #define _ODE_COLLISION_TRIMESH_H_
+00036 
+00037 #ifdef __cplusplus
+00038 extern "C" {
+00039 #endif
+00040 
+00041 /*
+00042  * Data storage for triangle meshes.
+00043  */
+00044 struct dxTriMeshData;
+00045 typedef struct dxTriMeshData* dTriMeshDataID;
+00046 
+00047 /*
+00048  * These dont make much sense now, but they will later when we add more
+00049  * features.
+00050  */
+00051 ODE_API dTriMeshDataID dGeomTriMeshDataCreate(void);
+00052 ODE_API void dGeomTriMeshDataDestroy(dTriMeshDataID g);
+00053 
+00054 
+00055 
+00056 enum { TRIMESH_FACE_NORMALS };
+00057 ODE_API void dGeomTriMeshDataSet(dTriMeshDataID g, int data_id, void* in_data);
+00058 ODE_API void* dGeomTriMeshDataGet(dTriMeshDataID g, int data_id);
+00059 
+00060 
+00061 
+00067 ODE_API void dGeomTriMeshSetLastTransform( dGeomID g, dMatrix4 last_trans );
+00068 ODE_API dReal* dGeomTriMeshGetLastTransform( dGeomID g );
+00069 
+00070 /*
+00071  * Build TriMesh data with single precision used in vertex data .
+00072  */
+00073 ODE_API void dGeomTriMeshDataBuildSingle(dTriMeshDataID g,
+00074                                  const void* Vertices, int VertexStride, int VertexCount, 
+00075                                  const void* Indices, int IndexCount, int TriStride);
+00076 /* same again with a normals array (used as trimesh-trimesh optimization) */
+00077 ODE_API void dGeomTriMeshDataBuildSingle1(dTriMeshDataID g,
+00078                                   const void* Vertices, int VertexStride, int VertexCount, 
+00079                                   const void* Indices, int IndexCount, int TriStride,
+00080                                   const void* Normals);
+00081 /*
+00082 * Build TriMesh data with double pricision used in vertex data .
+00083 */
+00084 ODE_API void dGeomTriMeshDataBuildDouble(dTriMeshDataID g, 
+00085                                  const void* Vertices,  int VertexStride, int VertexCount, 
+00086                                  const void* Indices, int IndexCount, int TriStride);
+00087 /* same again with a normals array (used as trimesh-trimesh optimization) */
+00088 ODE_API void dGeomTriMeshDataBuildDouble1(dTriMeshDataID g, 
+00089                                   const void* Vertices,  int VertexStride, int VertexCount, 
+00090                                   const void* Indices, int IndexCount, int TriStride,
+00091                                   const void* Normals);
+00092 
+00093 /*
+00094  * Simple build. Single/double precision based on dSINGLE/dDOUBLE!
+00095  */
+00096 ODE_API void dGeomTriMeshDataBuildSimple(dTriMeshDataID g,
+00097                                  const dReal* Vertices, int VertexCount,
+00098                                  const int* Indices, int IndexCount);
+00099 /* same again with a normals array (used as trimesh-trimesh optimization) */
+00100 ODE_API void dGeomTriMeshDataBuildSimple1(dTriMeshDataID g,
+00101                                   const dReal* Vertices, int VertexCount,
+00102                                   const int* Indices, int IndexCount,
+00103                                   const int* Normals);
+00104 
+00105 /* Preprocess the trimesh data to remove mark unnecessary edges and vertices */
+00106 ODE_API void dGeomTriMeshDataPreprocess(dTriMeshDataID g);
+00107 /* Get and set the internal preprocessed trimesh data buffer, for loading and saving */
+00108 ODE_API void dGeomTriMeshDataGetBuffer(dTriMeshDataID g, unsigned char** buf, int* bufLen);
+00109 ODE_API void dGeomTriMeshDataSetBuffer(dTriMeshDataID g, unsigned char* buf);
+00110 
+00111 
+00112 /*
+00113  * Per triangle callback. Allows the user to say if he wants a collision with
+00114  * a particular triangle.
+00115  */
+00116 typedef int dTriCallback(dGeomID TriMesh, dGeomID RefObject, int TriangleIndex);
+00117 ODE_API void dGeomTriMeshSetCallback(dGeomID g, dTriCallback* Callback);
+00118 ODE_API dTriCallback* dGeomTriMeshGetCallback(dGeomID g);
+00119 
+00120 /*
+00121  * Per object callback. Allows the user to get the list of triangles in 1
+00122  * shot. Maybe we should remove this one.
+00123  */
+00124 typedef void dTriArrayCallback(dGeomID TriMesh, dGeomID RefObject, const int* TriIndices, int TriCount);
+00125 ODE_API void dGeomTriMeshSetArrayCallback(dGeomID g, dTriArrayCallback* ArrayCallback);
+00126 ODE_API dTriArrayCallback* dGeomTriMeshGetArrayCallback(dGeomID g);
+00127 
+00128 /*
+00129  * Ray callback.
+00130  * Allows the user to say if a ray collides with a triangle on barycentric
+00131  * coords. The user can for example sample a texture with alpha transparency
+00132  * to determine if a collision should occur.
+00133  */
+00134 typedef int dTriRayCallback(dGeomID TriMesh, dGeomID Ray, int TriangleIndex, dReal u, dReal v);
+00135 ODE_API void dGeomTriMeshSetRayCallback(dGeomID g, dTriRayCallback* Callback);
+00136 ODE_API dTriRayCallback* dGeomTriMeshGetRayCallback(dGeomID g);
+00137 
+00138 /*
+00139  * Trimesh class
+00140  * Construction. Callbacks are optional.
+00141  */
+00142 ODE_API dGeomID dCreateTriMesh(dSpaceID space, dTriMeshDataID Data, dTriCallback* Callback, dTriArrayCallback* ArrayCallback, dTriRayCallback* RayCallback);
+00143 
+00144 ODE_API void dGeomTriMeshSetData(dGeomID g, dTriMeshDataID Data);
+00145 ODE_API dTriMeshDataID dGeomTriMeshGetData(dGeomID g);
+00146 
+00147 
+00148 // enable/disable/check temporal coherence
+00149 ODE_API void dGeomTriMeshEnableTC(dGeomID g, int geomClass, int enable);
+00150 ODE_API int dGeomTriMeshIsTCEnabled(dGeomID g, int geomClass);
+00151 
+00152 /*
+00153  * Clears the internal temporal coherence caches. When a geom has its
+00154  * collision checked with a trimesh once, data is stored inside the trimesh.
+00155  * With large worlds with lots of seperate objects this list could get huge.
+00156  * We should be able to do this automagically.
+00157  */
+00158 ODE_API void dGeomTriMeshClearTCCache(dGeomID g);
+00159 
+00160 
+00161 /*
+00162  * returns the TriMeshDataID
+00163  */
+00164 ODE_API dTriMeshDataID dGeomTriMeshGetTriMeshDataID(dGeomID g);
+00165 
+00166 /*
+00167  * Gets a triangle.
+00168  */
+00169 ODE_API void dGeomTriMeshGetTriangle(dGeomID g, int Index, dVector3* v0, dVector3* v1, dVector3* v2);
+00170 
+00171 /*
+00172  * Gets the point on the requested triangle and the given barycentric
+00173  * coordinates.
+00174  */
+00175 ODE_API void dGeomTriMeshGetPoint(dGeomID g, int Index, dReal u, dReal v, dVector3 Out);
+00176 
+00177 /*
+00178 
+00179 This is how the strided data works:
+00180 
+00181 struct StridedVertex{
+00182    dVector3 Vertex;
+00183    // Userdata
+00184 };
+00185 int VertexStride = sizeof(StridedVertex);
+00186 
+00187 struct StridedTri{
+00188    int Indices[3];
+00189    // Userdata
+00190 };
+00191 int TriStride = sizeof(StridedTri);
+00192 
+00193 */
+00194 
+00195 
+00196 ODE_API int dGeomTriMeshGetTriangleCount (dGeomID g);
+00197 
+00198 ODE_API void dGeomTriMeshDataUpdate(dTriMeshDataID g);
+00199 
+00200 #ifdef __cplusplus
+00201 }
+00202 #endif
+00203 
+00204 #endif   /* _ODE_COLLISION_TRIMESH_H_ */
+00205 
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: common.h Source File + + + + +
+ +
+

common.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_COMMON_H_
+00024 #define _ODE_COMMON_H_
+00025 #include <ode/config.h>
+00026 #include <ode/error.h>
+00027 #include <math.h>
+00028 
+00029 #ifdef __cplusplus
+00030 extern "C" {
+00031 #endif
+00032 
+00033 
+00034 /* configuration stuff */
+00035 
+00036 /* the efficient alignment. most platforms align data structures to some
+00037  * number of bytes, but this is not always the most efficient alignment.
+00038  * for example, many x86 compilers align to 4 bytes, but on a pentium it
+00039  * is important to align doubles to 8 byte boundaries (for speed), and
+00040  * the 4 floats in a SIMD register to 16 byte boundaries. many other
+00041  * platforms have similar behavior. setting a larger alignment can waste
+00042  * a (very) small amount of memory. NOTE: this number must be a power of
+00043  * two. this is set to 16 by default.
+00044  */
+00045 #define EFFICIENT_ALIGNMENT 16
+00046 
+00047 
+00048 /* constants */
+00049 
+00050 /* pi and 1/sqrt(2) are defined here if necessary because they don't get
+00051  * defined in <math.h> on some platforms (like MS-Windows)
+00052  */
+00053 
+00054 #ifndef M_PI
+00055 #define M_PI REAL(3.1415926535897932384626433832795029)
+00056 #endif
+00057 #ifndef M_SQRT1_2
+00058 #define M_SQRT1_2 REAL(0.7071067811865475244008443621048490)
+00059 #endif
+00060 
+00061 
+00062 /* debugging:
+00063  *   IASSERT  is an internal assertion, i.e. a consistency check. if it fails
+00064  *            we want to know where.
+00065  *   UASSERT  is a user assertion, i.e. if it fails a nice error message
+00066  *            should be printed for the user.
+00067  *   AASSERT  is an arguments assertion, i.e. if it fails "bad argument(s)"
+00068  *            is printed.
+00069  *   DEBUGMSG just prints out a message
+00070  */
+00071 
+00072 #ifndef dNODEBUG
+00073 #ifdef __GNUC__
+00074 #define dIASSERT(a) if (!(a)) dDebug (d_ERR_IASSERT, \
+00075   "assertion \"" #a "\" failed in %s() [%s]",__FUNCTION__,__FILE__);
+00076 #define dUASSERT(a,msg) if (!(a)) dDebug (d_ERR_UASSERT, \
+00077   msg " in %s()", __FUNCTION__);
+00078 #define dDEBUGMSG(msg) dMessage (d_ERR_UASSERT,          \
+00079 msg " in %s() File %s Line %d", __FUNCTION__, __FILE__,__LINE__);
+00080 #else
+00081 #define dIASSERT(a) if (!(a)) dDebug (d_ERR_IASSERT, \
+00082   "assertion \"" #a "\" failed in %s:%d",__FILE__,__LINE__);
+00083 #define dUASSERT(a,msg) if (!(a)) dDebug (d_ERR_UASSERT, \
+00084   msg " (%s:%d)", __FILE__,__LINE__);
+00085 #define dDEBUGMSG(msg) dMessage (d_ERR_UASSERT, \
+00086   msg " (%s:%d)", __FILE__,__LINE__);
+00087 #endif
+00088 #else
+00089 #define dIASSERT(a) ;
+00090 #define dUASSERT(a,msg) ;
+00091 #define dDEBUGMSG(msg) ;
+00092 #endif
+00093 #define dAASSERT(a) dUASSERT(a,"Bad argument(s)")
+00094 
+00095 // Macro used to suppress unused variable warning
+00096 #define dVARIABLEUSED(a) ((void)a)
+00097 
+00098 /* floating point data type, vector, matrix and quaternion types */
+00099 
+00100 #if defined(dSINGLE)
+00101 typedef float dReal;
+00102 #ifdef dDOUBLE
+00103 #error You can only #define dSINGLE or dDOUBLE, not both.
+00104 #endif // dDOUBLE
+00105 #elif defined(dDOUBLE)
+00106 typedef double dReal;
+00107 #else
+00108 #error You must #define dSINGLE or dDOUBLE
+00109 #endif
+00110 
+00111 // Detect if we've got both trimesh engines enabled.
+00112 #if dTRIMESH_ENABLED
+00113 #if dTRIMESH_OPCODE && dTRIMESH_GIMPACT
+00114 #error You can only #define dTRIMESH_OPCODE or dTRIMESH_GIMPACT, not both.
+00115 #endif
+00116 #endif // dTRIMESH_ENABLED
+00117 
+00118 /* round an integer up to a multiple of 4, except that 0 and 1 are unmodified
+00119  * (used to compute matrix leading dimensions)
+00120  */
+00121 #define dPAD(a) (((a) > 1) ? ((((a)-1)|3)+1) : (a))
+00122 
+00123 /* these types are mainly just used in headers */
+00124 typedef dReal dVector3[4];
+00125 typedef dReal dVector4[4];
+00126 typedef dReal dMatrix3[4*3];
+00127 typedef dReal dMatrix4[4*4];
+00128 typedef dReal dMatrix6[8*6];
+00129 typedef dReal dQuaternion[4];
+00130 
+00131 
+00132 /* precision dependent scalar math functions */
+00133 
+00134 #if defined(dSINGLE)
+00135 
+00136 #define REAL(x) (x ## f)               /* form a constant */
+00137 #define dRecip(x) ((1.0f/(x)))            /* reciprocal */
+00138 #define dSqrt(x) (sqrtf(x))         /* square root */
+00139 #define dRecipSqrt(x) ((1.0f/sqrtf(x)))      /* reciprocal square root */
+00140 #define dSin(x) (sinf(x))           /* sine */
+00141 #define dCos(x) (cosf(x))           /* cosine */
+00142 #define dFabs(x) (fabsf(x))         /* absolute value */
+00143 #define dAtan2(y,x) (atan2f(y,x))      /* arc tangent with 2 args */
+00144 #define dFMod(a,b) (fmodf(a,b))     /* modulo */
+00145 #define dFloor(x) floorf(x)         /* floor */
+00146 
+00147 #ifdef HAVE___ISNANF
+00148 #define dIsNan(x) (__isnanf(x))
+00149 #elif defined(HAVE__ISNANF)
+00150 #define dIsNan(x) (_isnanf(x))
+00151 #elif defined(HAVE_ISNANF)
+00152 #define dIsNan(x) (isnanf(x))
+00153 #else
+00154   /*
+00155      fall back to _isnan which is the VC way,
+00156      this may seem redundant since we already checked
+00157      for _isnan before, but if isnan is detected by
+00158      configure but is not found during compilation
+00159      we should always make sure we check for __isnanf,
+00160      _isnanf and isnanf in that order before falling
+00161      back to a default
+00162   */
+00163 #define dIsNan(x) (_isnan(x))
+00164 #endif
+00165 
+00166 #define dCopySign(a,b) ((dReal)copysignf(a,b))
+00167 
+00168 #elif defined(dDOUBLE)
+00169 
+00170 #define REAL(x) (x)
+00171 #define dRecip(x) (1.0/(x))
+00172 #define dSqrt(x) sqrt(x)
+00173 #define dRecipSqrt(x) (1.0/sqrt(x))
+00174 #define dSin(x) sin(x)
+00175 #define dCos(x) cos(x)
+00176 #define dFabs(x) fabs(x)
+00177 #define dAtan2(y,x) atan2((y),(x))
+00178 #define dFMod(a,b) (fmod((a),(b)))
+00179 #define dFloor(x) floor(x)
+00180 
+00181 #ifdef HAVE___ISNAN
+00182 #define dIsNan(x) (__isnan(x))
+00183 #elif defined(HAVE__ISNAN)
+00184 #define dIsNan(x) (_isnan(x))
+00185 #elif defined(HAVE_ISNAN)
+00186 #define dIsNan(x) (isnan(x))
+00187 #else
+00188 #define dIsNan(x) (_isnan(x))
+00189 #endif
+00190 
+00191 #define dCopySign(a,b) (copysign((a),(b)))
+00192 
+00193 #else
+00194 #error You must #define dSINGLE or dDOUBLE
+00195 #endif
+00196 
+00197 
+00198 /* utility */
+00199 
+00200 
+00201 /* round something up to be a multiple of the EFFICIENT_ALIGNMENT */
+00202 
+00203 #define dEFFICIENT_SIZE(x) ((((x)-1)|(EFFICIENT_ALIGNMENT-1))+1)
+00204 
+00205 
+00206 /* alloca aligned to the EFFICIENT_ALIGNMENT. note that this can waste
+00207  * up to 15 bytes per allocation, depending on what alloca() returns.
+00208  */
+00209 
+00210 #define dALLOCA16(n) \
+00211   ((char*)dEFFICIENT_SIZE(((size_t)(alloca((n)+(EFFICIENT_ALIGNMENT-1))))))
+00212 
+00213 
+00214 // Use the error-checking memory allocation system.  Because this system uses heap
+00215 //  (malloc) instead of stack (alloca), it is slower.  However, it allows you to
+00216 //  simulate larger scenes, as well as handle out-of-memory errors in a somewhat
+00217 //  graceful manner
+00218 
+00219 // #define dUSE_MALLOC_FOR_ALLOCA
+00220 
+00221 #ifdef dUSE_MALLOC_FOR_ALLOCA
+00222 enum {
+00223   d_MEMORY_OK = 0,      /* no memory errors */
+00224   d_MEMORY_OUT_OF_MEMORY   /* malloc failed due to out of memory error */
+00225 };
+00226 
+00227 #endif
+00228 
+00229 
+00230 
+00231 /* internal object types (all prefixed with `dx') */
+00232 
+00233 struct dxWorld;      /* dynamics world */
+00234 struct dxSpace;      /* collision space */
+00235 struct dxBody;    /* rigid body (dynamics object) */
+00236 struct dxGeom;    /* geometry (collision object) */
+00237 struct dxJoint;
+00238 struct dxJointNode;
+00239 struct dxJointGroup;
+00240 
+00241 typedef struct dxWorld *dWorldID;
+00242 typedef struct dxSpace *dSpaceID;
+00243 typedef struct dxBody *dBodyID;
+00244 typedef struct dxGeom *dGeomID;
+00245 typedef struct dxJoint *dJointID;
+00246 typedef struct dxJointGroup *dJointGroupID;
+00247 
+00248 
+00249 /* error numbers */
+00250 
+00251 enum {
+00252   d_ERR_UNKNOWN = 0,    /* unknown error */
+00253   d_ERR_IASSERT,     /* internal assertion failed */
+00254   d_ERR_UASSERT,     /* user assertion failed */
+00255   d_ERR_LCP       /* user assertion failed */
+00256 };
+00257 
+00258 
+00259 /* joint type numbers */
+00260 
+00261 enum {
+00262   dJointTypeNone = 0,      /* or "unknown" */
+00263   dJointTypeBall,
+00264   dJointTypeHinge,
+00265   dJointTypeSlider,
+00266   dJointTypeContact,
+00267   dJointTypeUniversal,
+00268   dJointTypeHinge2,
+00269   dJointTypeFixed,
+00270   dJointTypeNull,
+00271   dJointTypeAMotor,
+00272   dJointTypeLMotor,
+00273   dJointTypePlane2D,
+00274   dJointTypePR
+00275 };
+00276 
+00277 
+00278 /* an alternative way of setting joint parameters, using joint parameter
+00279  * structures and member constants. we don't actually do this yet.
+00280  */
+00281 
+00282 /*
+00283 typedef struct dLimot {
+00284   int mode;
+00285   dReal lostop, histop;
+00286   dReal vel, fmax;
+00287   dReal fudge_factor;
+00288   dReal bounce, soft;
+00289   dReal suspension_erp, suspension_cfm;
+00290 } dLimot;
+00291 
+00292 enum {
+00293   dLimotLoStop    = 0x0001,
+00294   dLimotHiStop    = 0x0002,
+00295   dLimotVel    = 0x0004,
+00296   dLimotFMax      = 0x0008,
+00297   dLimotFudgeFactor  = 0x0010,
+00298   dLimotBounce    = 0x0020,
+00299   dLimotSoft      = 0x0040
+00300 };
+00301 */
+00302 
+00303 
+00304 /* standard joint parameter names. why are these here? - because we don't want
+00305  * to include all the joint function definitions in joint.cpp. hmmmm.
+00306  * MSVC complains if we call D_ALL_PARAM_NAMES_X with a blank second argument,
+00307  * which is why we have the D_ALL_PARAM_NAMES macro as well. please copy and
+00308  * paste between these two.
+00309  */
+00310 
+00311 #define D_ALL_PARAM_NAMES(start) \
+00312   /* parameters for limits and motors */ \
+00313   dParamLoStop = start, \
+00314   dParamHiStop, \
+00315   dParamVel, \
+00316   dParamFMax, \
+00317   dParamFudgeFactor, \
+00318   dParamBounce, \
+00319   dParamCFM, \
+00320   dParamStopERP, \
+00321   dParamStopCFM, \
+00322   /* parameters for suspension */ \
+00323   dParamSuspensionERP, \
+00324   dParamSuspensionCFM, \
+00325   dParamERP, \
+00326 
+00327 #define D_ALL_PARAM_NAMES_X(start,x) \
+00328   /* parameters for limits and motors */ \
+00329   dParamLoStop ## x = start, \
+00330   dParamHiStop ## x, \
+00331   dParamVel ## x, \
+00332   dParamFMax ## x, \
+00333   dParamFudgeFactor ## x, \
+00334   dParamBounce ## x, \
+00335   dParamCFM ## x, \
+00336   dParamStopERP ## x, \
+00337   dParamStopCFM ## x, \
+00338   /* parameters for suspension */ \
+00339   dParamSuspensionERP ## x, \
+00340   dParamSuspensionCFM ## x, \
+00341   dParamERP ## x,
+00342 
+00343 enum {
+00344   D_ALL_PARAM_NAMES(0)
+00345   D_ALL_PARAM_NAMES_X(0x100,2)
+00346   D_ALL_PARAM_NAMES_X(0x200,3)
+00347 
+00348   /* add a multiple of this constant to the basic parameter numbers to get
+00349    * the parameters for the second, third etc axes.
+00350    */
+00351   dParamGroup=0x100
+00352 };
+00353 
+00354 
+00355 /* angular motor mode numbers */
+00356 
+00357 enum{
+00358   dAMotorUser = 0,
+00359   dAMotorEuler = 1
+00360 };
+00361 
+00362 
+00363 /* joint force feedback information */
+00364 
+00365 typedef struct dJointFeedback {
+00366   dVector3 f1;    /* force applied to body 1 */
+00367   dVector3 t1;    /* torque applied to body 1 */
+00368   dVector3 f2;    /* force applied to body 2 */
+00369   dVector3 t2;    /* torque applied to body 2 */
+00370 } dJointFeedback;
+00371 
+00372 
+00373 /* private functions that must be implemented by the collision library:
+00374  * (1) indicate that a geom has moved, (2) get the next geom in a body list.
+00375  * these functions are called whenever the position of geoms connected to a
+00376  * body have changed, e.g. with dBodySetPosition(), dBodySetRotation(), or
+00377  * when the ODE step function updates the body state.
+00378  */
+00379 
+00380 void dGeomMoved (dGeomID);
+00381 dGeomID dGeomGetBodyNext (dGeomID);
+00382 
+00383 
+00384 #ifdef __cplusplus
+00385 }
+00386 #endif
+00387 
+00388 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: compatibility.h Source File + + + + +
+ +
+

compatibility.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_COMPATIBILITY_H_
+00024 #define _ODE_COMPATIBILITY_H_
+00025 
+00026 /*
+00027  * ODE's backward compatibility system ensures that as ODE's API
+00028  * evolves, user code will not break.
+00029  */
+00030 
+00031 /*
+00032  * These new rotation function names are more consistent with the
+00033  * rest of the API.
+00034  */
+00035 #define dQtoR(q,R) dRfromQ((R),(q))
+00036 #define dRtoQ(R,q) dQfromR((q),(R))
+00037 #define dWtoDQ(w,q,dq) dDQfromW((dq),(w),(q))
+00038 
+00039 
+00040 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: config.h Source File + + + + +
+ +
+

config.h

00001 /* This file was autogenerated by Premake */
+00002 #ifndef _ODE_CONFIG_H_
+00003 #define _ODE_CONFIG_H_
+00004 
+00005 
+00006 /******************************************************************
+00007  * CONFIGURATON SETTINGS - you can change these, and then rebuild
+00008  *   ODE to modify the behavior of the library.
+00009  *
+00010  *   dSINGLE/dDOUBLE   - force ODE to use single-precision (float)
+00011  *                       or double-precision (double) for numbers.
+00012  *                       Only one should be defined.
+00013  *
+00014  *   dTRIMESH_ENABLED  - enable/disable trimesh support
+00015  *   dTRIMESH_OPCODE   - use the OPCODE trimesh engine
+00016  *   dTRIMESH_GIMPACT  - use the GIMPACT trimesh engine
+00017  *                       Only one trimesh engine should be enabled.
+00018  *
+00019  *   dUSE_MALLOC_FOR_ALLOCA (experimental)-
+00020  *                       Use malloc() instead of alloca(). Slower,
+00021  *                       but allows for larger systems and more
+00022  *                       graceful out-of-memory handling.
+00023  *
+00024  *   dTRIMESH_OPCODE_USE_NEW_TRIMESH_TRIMESH_COLLIDER (experimental)-
+00025  *                       Use an alternative trimesh-trimesh collider
+00026  *                       which should yield better results.
+00027  *
+00028  ******************************************************************/
+00029 
+00030 #define dSINGLE
+00031 /* #define dDOUBLE */
+00032 
+00033 #define dTRIMESH_ENABLED 1
+00034 #define dTRIMESH_OPCODE 1
+00035 
+00036 #define dTRIMESH_OPCODE_USE_NEW_TRIMESH_TRIMESH_COLLIDER 0
+00037 
+00038 /* #define dUSE_MALLOC_FOR_ALLOCA */
+00039 
+00040 
+00041 /******************************************************************
+00042  * SYSTEM SETTINGS - you shouldn't need to change these. If you
+00043  *   run into an issue with these settings, please report it to
+00044  *   the ODE bug tracker at:
+00045  *      http://sf.net/tracker/?group_id=24884&atid=382799
+00046  ******************************************************************/
+00047 
+00048 /* Try to identify the platform */
+00049 #if defined(_XENON)
+00050   #define ODE_PLATFORM_XBOX360
+00051 #elif defined(SN_TARGET_PSP_HW)
+00052   #define ODE_PLATFORM_PSP
+00053 #elif defined(SN_TARGET_PS3)
+00054   #define ODE_PLATFORM_PS3
+00055 #elif defined(_MSC_VER) || defined(__CYGWIN32__) || defined(__MINGW32__)
+00056   #define ODE_PLATFORM_WINDOWS
+00057 #elif defined(__linux__)
+00058   #define ODE_PLATFORM_LINUX
+00059 #elif defined(__APPLE__) && defined(__MACH__)
+00060   #define ODE_PLATFORM_OSX
+00061 #else
+00062   #error "Need some help identifying the platform!"
+00063 #endif
+00064 
+00065 /* Additional platform defines used in the code */
+00066 #if defined(ODE_PLATFORM_WINDOWS) && !defined(WIN32)
+00067   #define WIN32
+00068 #endif
+00069 
+00070 #if defined(__CYGWIN32__) || defined(__MINGW32__)
+00071   #define CYGWIN
+00072 #endif
+00073 
+00074 #if defined(ODE_PLATFORM_OSX)
+00075   #define macintosh
+00076 #endif
+00077 
+00078 
+00079 /* Define a DLL export symbol for those platforms that need it */
+00080 #if defined(ODE_PLATFORM_WINDOWS)
+00081   #if defined(ODE_DLL)
+00082     #define ODE_API __declspec(dllexport)
+00083   #elif !defined(ODE_LIB)
+00084     #define ODE_DLL_API __declspec(dllimport)
+00085   #endif
+00086 #endif
+00087 
+00088 #if !defined(ODE_API)
+00089   #define ODE_API
+00090 #endif
+00091 
+00092 
+00093 /* Pull in the standard headers */
+00094 #include <stdio.h>
+00095 #include <stdlib.h>
+00096 #include <stdarg.h>
+00097 #include <math.h>
+00098 #include <string.h>
+00099 #include <float.h>
+00100 
+00101 #if !defined(ODE_PLATFORM_PS3)
+00102   #include <malloc.h>
+00103 #endif
+00104 
+00105 #if !defined(ODE_PLATFORM_WINDOWS)
+00106   #include <alloca.h>
+00107 #endif
+00108 
+00109 
+00110 /* Visual C does not define these functions */
+00111 #if defined(_MSC_VER)
+00112   #define copysignf _copysign
+00113   #define copysign _copysign
+00114 #endif
+00115 
+00116 
+00117 /* Define a value for infinity */
+00118 #if defined(HUGE_VALF)
+00119    #define ODE_INFINITY4 HUGE_VALF
+00120    #define ODE_INFINITY8 HUGE_VAL
+00121 #elif defined(FLT_MAX)
+00122    #define ODE_INFINITY4 FLT_MAX
+00123    #define ODE_INFINITY8 DBL_MAX
+00124 #else
+00125    static union { unsigned char __c[4]; float  __f; }  __ode_huge_valf = {{0,0,0x80,0x7f}};
+00126    static union { unsigned char __c[8]; double __d; }  __ode_huge_val  = {{0,0,0,0,0,0,0xf0,0x7f}};
+00127    #define ODE_INFINITY4 (__ode_huge_valf.__f)
+00128    #define ODE_INFINITY8 (__ode_huge_val.__d)
+00129 #endif
+00130 
+00131 #ifdef dSINGLE
+00132    #define dInfinity ODE_INFINITY4
+00133    #define dEpsilon  FLT_EPSILON
+00134 #else
+00135    #define dInfinity ODE_INFINITY8
+00136    #define dEpsilon  DBL_EPSILON
+00137 #endif
+00138 
+00139 
+00140 /* Well-defined common data types...need to define for 64 bit systems */
+00141 #if defined(_M_IA64) || defined(__ia64__) || defined(_M_AMD64) || defined(__x86_64__)
+00142   #define X86_64_SYSTEM   1
+00143   typedef int             int32;
+00144   typedef unsigned int    uint32;
+00145   typedef short           int16;
+00146   typedef unsigned short  uint16;
+00147   typedef char            int8;
+00148   typedef unsigned char   uint8;
+00149 #else
+00150   typedef int             int32;
+00151   typedef unsigned int    uint32;
+00152   typedef short           int16;
+00153   typedef unsigned short  uint16;
+00154   typedef char            int8;
+00155   typedef unsigned char   uint8;
+00156 #endif
+00157 
+00158 /* An integer type that can be safely cast to a pointer. This definition
+00159  * should be safe even on 64-bit systems */
+00160 typedef size_t intP;
+00161 
+00162 
+00163 /* The efficient alignment. most platforms align data structures to some
+00164  * number of bytes, but this is not always the most efficient alignment.
+00165  * for example, many x86 compilers align to 4 bytes, but on a pentium it is
+00166  * important to align doubles to 8 byte boundaries (for speed), and the 4
+00167  * floats in a SIMD register to 16 byte boundaries. many other platforms have
+00168  * similar behavior. setting a larger alignment can waste a (very) small
+00169  * amount of memory. NOTE: this number must be a power of two. */
+00170 #define EFFICIENT_ALIGNMENT 16
+00171 
+00172 
+00173 /* Define this if your system supports anonymous memory maps (linux does) */
+00174 #define MMAP_ANONYMOUS
+00175 
+00176 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: contact.h Source File + + + + +
+ +
+

contact.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_CONTACT_H_
+00024 #define _ODE_CONTACT_H_
+00025 
+00026 #include <ode/common.h>
+00027 
+00028 #ifdef __cplusplus
+00029 extern "C" {
+00030 #endif
+00031 
+00032 
+00033 enum {
+00034   dContactMu2     = 0x001,
+00035   dContactFDir1      = 0x002,
+00036   dContactBounce  = 0x004,
+00037   dContactSoftERP = 0x008,
+00038   dContactSoftCFM = 0x010,
+00039   dContactMotion1 = 0x020,
+00040   dContactMotion2 = 0x040,
+00041   dContactSlip1      = 0x080,
+00042   dContactSlip2      = 0x100,
+00043 
+00044   dContactApprox0 = 0x0000,
+00045   dContactApprox1_1  = 0x1000,
+00046   dContactApprox1_2  = 0x2000,
+00047   dContactApprox1 = 0x3000
+00048 };
+00049 
+00050 
+00051 typedef struct dSurfaceParameters {
+00052   /* must always be defined */
+00053   int mode;
+00054   dReal mu;
+00055 
+00056   /* only defined if the corresponding flag is set in mode */
+00057   dReal mu2;
+00058   dReal bounce;
+00059   dReal bounce_vel;
+00060   dReal soft_erp;
+00061   dReal soft_cfm;
+00062   dReal motion1,motion2;
+00063   dReal slip1,slip2;
+00064 } dSurfaceParameters;
+00065 
+00066 
+00081 typedef struct dContactGeom {
+00082   dVector3 pos;          
+00083   dVector3 normal;       
+00084   dReal depth;           
+00085   dGeomID g1,g2;         
+00086   int side1,side2;       
+00087 } dContactGeom;
+00088 
+00089 
+00090 /* contact info used by contact joint */
+00091 
+00092 typedef struct dContact {
+00093   dSurfaceParameters surface;
+00094   dContactGeom geom;
+00095   dVector3 fdir1;
+00096 } dContact;
+00097 
+00098 
+00099 #ifdef __cplusplus
+00100 }
+00101 #endif
+00102 
+00103 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; + white-space: nowrap; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.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 Binary files /dev/null and b/libraries/ode-0.9/docs/doxygen.png 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 @@ + + +Open Dynamics Engine: drawstuff.h Source File + + + + +
+ +
+

drawstuff.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00041 #ifndef __DRAWSTUFF_H__
+00042 #define __DRAWSTUFF_H__
+00043 
+00044 /* Define a DLL export symbol for those platforms that need it */
+00045 #if defined(ODE_PLATFORM_WINDOWS)
+00046   #if defined(DS_DLL)
+00047     #define DS_API __declspec(dllexport)
+00048   #elif !defined(DS_LIB)
+00049     #define DS_DLL_API __declspec(dllimport)
+00050   #endif
+00051 #endif
+00052     
+00053 #if !defined(DS_API)
+00054   #define DS_API
+00055 #endif
+00056 
+00057 #ifdef __cplusplus
+00058 extern "C" {
+00059 #endif
+00060 
+00061 
+00062 #include <drawstuff/version.h>
+00063 
+00064 
+00065 /* texture numbers */
+00066 #define DS_NONE   0  /* uses the current color instead of a texture */
+00067 #define DS_WOOD   1
+00068 
+00069 
+00075 typedef struct dsFunctions {
+00076   int version;       /* put DS_VERSION here */
+00077   /* version 1 data */
+00078   void (*start)();      /* called before sim loop starts */
+00079   void (*step) (int pause);   /* called before every frame */
+00080   void (*command) (int cmd);  /* called if a command key is pressed */
+00081   void (*stop)();    /* called after sim loop exits */
+00082   /* version 2 data */
+00083   char *path_to_textures;  /* if nonzero, path to texture files */
+00084 } dsFunctions;
+00085 
+00086 
+00095 DS_API void dsSimulationLoop (int argc, char **argv,
+00096              int window_width, int window_height,
+00097              struct dsFunctions *fn);
+00098 
+00105 DS_API void dsError (char *msg, ...);
+00106 
+00113 DS_API void dsDebug (char *msg, ...);
+00114 
+00120 DS_API void dsPrint (char *msg, ...);
+00121 
+00130 DS_API void dsSetViewpoint (float xyz[3], float hpr[3]);
+00131 
+00132 
+00139 DS_API void dsGetViewpoint (float xyz[3], float hpr[3]);
+00140 
+00149 DS_API void dsStop();
+00150 
+00156 DS_API double dsElapsedTime();
+00157 
+00168 DS_API void dsSetTexture (int texture_number);
+00169 
+00177 DS_API void dsSetColor (float red, float green, float blue);
+00178 
+00185 DS_API void dsSetColorAlpha (float red, float green, float blue, float alpha);
+00186 
+00197 DS_API void dsDrawBox (const float pos[3], const float R[12], const float sides[3]);
+00198 
+00206 DS_API void dsDrawSphere (const float pos[3], const float R[12], float radius);
+00207 
+00218 DS_API void dsDrawTriangle (const float pos[3], const float R[12],
+00219            const float *v0, const float *v1, const float *v2, int solid);
+00220 
+00225 DS_API void dsDrawCylinder (const float pos[3], const float R[12],
+00226            float length, float radius);
+00227 
+00232 DS_API void dsDrawCapsule (const float pos[3], const float R[12],
+00233           float length, float radius);
+00234 
+00239 DS_API void dsDrawLine (const float pos1[3], const float pos2[3]);
+00240 
+00245 DS_API void dsDrawConvex(const float pos[3], const float R[12],
+00246         float *_planes,
+00247         unsigned int _planecount,
+00248         float *_points,
+00249         unsigned int _pointcount,
+00250         unsigned int *_polygons);
+00251 
+00252  /* these drawing functions are identical to the ones above, except they take
+00253  * double arrays for `pos' and `R'.
+00254  */
+00255 DS_API void dsDrawBoxD (const double pos[3], const double R[12],
+00256        const double sides[3]);
+00257 DS_API void dsDrawSphereD (const double pos[3], const double R[12],
+00258           const float radius);
+00259 DS_API void dsDrawTriangleD (const double pos[3], const double R[12],
+00260             const double *v0, const double *v1, const double *v2, int solid);
+00261 DS_API void dsDrawCylinderD (const double pos[3], const double R[12],
+00262             float length, float radius);
+00263 DS_API void dsDrawCapsuleD (const double pos[3], const double R[12],
+00264            float length, float radius);
+00265 DS_API void dsDrawLineD (const double pos1[3], const double pos2[3]);
+00266 DS_API void dsDrawConvexD(const double pos[3], const double R[12],
+00267         double *_planes,
+00268         unsigned int _planecount,
+00269         double *_points,
+00270         unsigned int _pointcount,
+00271         unsigned int *_polygons);
+00272 
+00280 DS_API void dsSetSphereQuality (int n);      /* default = 1 */
+00281 DS_API void dsSetCapsuleQuality (int n);     /* default = 3 */
+00282 
+00283 // Backwards compatible API
+00284 #define dsDrawCappedCylinder dsDrawCapsule
+00285 #define dsDrawCappedCylinderD dsDrawCapsuleD
+00286 #define dsSetCappedCylinderQuality dsSetCapsuleQuality
+00287 
+00288 /* closing bracket for extern "C" */
+00289 #ifdef __cplusplus
+00290 }
+00291 #endif
+00292 
+00293 #endif
+00294 
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: error.h Source File + + + + +
+ +
+

error.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 /* this comes from the `reuse' library. copy any changes back to the source */
+00024 
+00025 #ifndef _ODE_ERROR_H_
+00026 #define _ODE_ERROR_H_
+00027 
+00028 #include <ode/config.h>
+00029 
+00030 #ifdef __cplusplus
+00031 extern "C" {
+00032 #endif
+00033 
+00034 /* all user defined error functions have this type. error and debug functions
+00035  * should not return.
+00036  */
+00037 typedef void dMessageFunction (int errnum, const char *msg, va_list ap);
+00038 
+00039 /* set a new error, debug or warning handler. if fn is 0, the default handlers
+00040  * are used.
+00041  */
+00042 ODE_API void dSetErrorHandler (dMessageFunction *fn);
+00043 ODE_API void dSetDebugHandler (dMessageFunction *fn);
+00044 ODE_API void dSetMessageHandler (dMessageFunction *fn);
+00045 
+00046 /* return the current error, debug or warning handler. if the return value is
+00047  * 0, the default handlers are in place.
+00048  */
+00049 ODE_API dMessageFunction *dGetErrorHandler(void);
+00050 ODE_API dMessageFunction *dGetDebugHandler(void);
+00051 ODE_API dMessageFunction *dGetMessageHandler(void);
+00052 
+00053 /* generate a fatal error, debug trap or a message. */
+00054 ODE_API void dError (int num, const char *msg, ...);
+00055 ODE_API void dDebug (int num, const char *msg, ...);
+00056 ODE_API void dMessage (int num, const char *msg, ...);
+00057 
+00058 
+00059 #ifdef __cplusplus
+00060 }
+00061 #endif
+00062 
+00063 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: export-dif.h Source File + + + + +
+ +
+

export-dif.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_EXPORT_DIF_
+00024 #define _ODE_EXPORT_DIF_
+00025 
+00026 #include <ode/common.h>
+00027 
+00028 
+00029 ODE_API void dWorldExportDIF (dWorldID w, FILE *file, const char *world_name);
+00030 
+00031 
+00032 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: File Index + + + + +
+ +
+

Open Dynamics Engine File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + +
collision.h [code]
collision_space.h [code]
collision_trimesh.h [code]
common.h [code]
compatibility.h [code]
config.h [code]
contact.h [code]
drawstuff.h [code]
error.h [code]
export-dif.h [code]
mass.h [code]
matrix.h [code]
memory.h [code]
misc.h [code]
objects.h [code]
ode.h [code]
odecpp.h [code]
odecpp_collision.h [code]
odemath.h [code]
rotation.h [code]
timer.h [code]
version.h [code]
+
Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Data Fields + + + + +
+ +
+
+ +
+
+ +
+Here is a list of all documented struct and union fields with links to the struct/union documentation for each field: +

+

+
Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Data Fields - Variables + + + + +
+ +
+
+ +
+
+ +
+  +

+

+
Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Rigid Bodies + + + + +
+ +
+

Rigid Bodies

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

ODE_API dReal dBodyGetAutoDisableLinearThreshold (dBodyID)
 Get auto disable linear average threshold.
ODE_API void dBodySetAutoDisableLinearThreshold (dBodyID, dReal linear_average_threshold)
 Set auto disable linear average threshold.
ODE_API dReal dBodyGetAutoDisableAngularThreshold (dBodyID)
 Get auto disable angular average threshold.
ODE_API void dBodySetAutoDisableAngularThreshold (dBodyID, dReal angular_average_threshold)
 Set auto disable angular average threshold.
ODE_API int dBodyGetAutoDisableAverageSamplesCount (dBodyID)
 Get auto disable average size (samples count).
ODE_API void dBodySetAutoDisableAverageSamplesCount (dBodyID, unsigned int average_samples_count)
 Set auto disable average buffer size (average steps).
ODE_API int dBodyGetAutoDisableSteps (dBodyID)
 Get auto steps a body must be thought of as idle to disable.
ODE_API void dBodySetAutoDisableSteps (dBodyID, int steps)
 Set auto disable steps.
ODE_API dReal dBodyGetAutoDisableTime (dBodyID)
 Get auto disable time.
ODE_API void dBodySetAutoDisableTime (dBodyID, dReal time)
 Set auto disable time.
ODE_API int dBodyGetAutoDisableFlag (dBodyID)
 Get auto disable flag.
ODE_API void dBodySetAutoDisableFlag (dBodyID, int do_auto_disable)
 Set auto disable flag.
ODE_API void dBodySetAutoDisableDefaults (dBodyID)
 Set auto disable defaults.
ODE_API dWorldID dBodyGetWorld (dBodyID)
 Retrives the world attached to te given body.
ODE_API dBodyID dBodyCreate (dWorldID)
 Create a body in given world.
ODE_API void dBodyDestroy (dBodyID)
 Destroy a body.
ODE_API void dBodySetData (dBodyID, void *data)
 Set the body's user-data pointer.
ODE_API void * dBodyGetData (dBodyID)
 Get the body's user-data pointer.
ODE_API void dBodySetPosition (dBodyID, dReal x, dReal y, dReal z)
 Set position of a body.
ODE_API void dBodySetRotation (dBodyID, const dMatrix3 R)
 Set the orientation of a body.
ODE_API void dBodySetQuaternion (dBodyID, const dQuaternion q)
 Set the orientation of a body.
+ODE_API void dBodySetLinearVel (dBodyID, dReal x, dReal y, dReal z)
 Set the linear velocity of a body.
+ODE_API void dBodySetAngularVel (dBodyID, dReal x, dReal y, dReal z)
 Set the angular velocity of a body.
ODE_API const dReal * dBodyGetPosition (dBodyID)
 Get the position of a body.
ODE_API void dBodyCopyPosition (dBodyID body, dVector3 pos)
 Copy the position of a body into a vector.
ODE_API const dReal * dBodyGetRotation (dBodyID)
 Get the rotation of a body.
ODE_API void dBodyCopyRotation (dBodyID, dMatrix3 R)
 Copy the rotation of a body.
ODE_API const dReal * dBodyGetQuaternion (dBodyID)
 Get the rotation of a body.
ODE_API void dBodyCopyQuaternion (dBodyID body, dQuaternion quat)
 Copy the orientation of a body into a quaternion.
+ODE_API const dReal * dBodyGetLinearVel (dBodyID)
 Get the linear velocity of a body.
+ODE_API const dReal * dBodyGetAngularVel (dBodyID)
 Get the angular velocity of a body.
+ODE_API void dBodySetMass (dBodyID, const dMass *mass)
 Set the mass of a body.
+ODE_API void dBodyGetMass (dBodyID, dMass *mass)
 Get the mass of a body.
+ODE_API void dBodyAddForce (dBodyID, dReal fx, dReal fy, dReal fz)
 Add force at centre of mass of body in absolute coordinates.
+ODE_API void dBodyAddTorque (dBodyID, dReal fx, dReal fy, dReal fz)
 Add torque at centre of mass of body in absolute coordinates.
+ODE_API void dBodyAddRelForce (dBodyID, dReal fx, dReal fy, dReal fz)
 Add force at centre of mass of body in coordinates relative to body.
+ODE_API void dBodyAddRelTorque (dBodyID, dReal fx, dReal fy, dReal fz)
 Add torque at centre of mass of body in coordinates relative to body.
+ODE_API void dBodyAddForceAtPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)
 Add force at specified point in body in global coordinates.
+ODE_API void dBodyAddForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)
 Add force at specified point in body in local coordinates.
+ODE_API void dBodyAddRelForceAtPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)
 Add force at specified point in body in global coordinates.
+ODE_API void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz, dReal px, dReal py, dReal pz)
 Add force at specified point in body in local coordinates.
ODE_API const dReal * dBodyGetForce (dBodyID)
 Return the current accumulated force vector.
ODE_API const dReal * dBodyGetTorque (dBodyID)
 Return the current accumulated torque vector.
ODE_API void dBodySetForce (dBodyID b, dReal x, dReal y, dReal z)
 Set the body force accumulation vector.
ODE_API void dBodySetTorque (dBodyID b, dReal x, dReal y, dReal z)
 Set the body torque accumulation vector.
ODE_API void dBodyGetRelPointPos (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)
 Get world position of a relative point on body.
ODE_API void dBodyGetRelPointVel (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)
 Get velocity vector in global coords of a relative point on body.
ODE_API void dBodyGetPointVel (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)
 Get velocity vector in global coords of a globally specified point on a body.
ODE_API void dBodyGetPosRelPoint (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)
 takes a point in global coordinates and returns the point's position in body-relative coordinates.
ODE_API void dBodyVectorToWorld (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)
 Convert from local to world coordinates.
ODE_API void dBodyVectorFromWorld (dBodyID, dReal px, dReal py, dReal pz, dVector3 result)
 Convert from world to local coordinates.
ODE_API void dBodySetFiniteRotationMode (dBodyID, int mode)
 controls the way a body's orientation is updated at each timestep.
ODE_API void dBodySetFiniteRotationAxis (dBodyID, dReal x, dReal y, dReal z)
 sets the finite rotation axis for a body.
ODE_API int dBodyGetFiniteRotationMode (dBodyID)
 Get the way a body's orientation is updated each timestep.
ODE_API void dBodyGetFiniteRotationAxis (dBodyID, dVector3 result)
 Get the finite rotation axis.
ODE_API int dBodyGetNumJoints (dBodyID b)
 Get the number of joints that are attached to this body.
ODE_API dJointID dBodyGetJoint (dBodyID, int index)
 Return a joint attached to this body, given by index.
ODE_API void dBodyEnable (dBodyID)
 Manually enable a body.
ODE_API void dBodyDisable (dBodyID)
 Manually disable a body.
ODE_API int dBodyIsEnabled (dBodyID)
 Check wether a body is enabled.
ODE_API void dBodySetGravityMode (dBodyID b, int mode)
 Set whether the body is influenced by the world's gravity or not.
ODE_API int dBodyGetGravityMode (dBodyID b)
 Get whether the body is influenced by the world's gravity or not.
+

Detailed Description

+A rigid body has various properties from the point of view of the simulation. Some properties change over time:

+

+Other body properties are usually constant over time:

+

+The 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.

+Note 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.


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodyCopyPosition (dBodyID  body,
dVector3  pos 
)
+
+
+ +

+Copy the position of a body into a vector. +

+

Parameters:
+ + + +
body the body to query
pos a copy of the body position
+
+
See also:
dBodyGetPosition
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodyCopyQuaternion (dBodyID  body,
dQuaternion  quat 
)
+
+
+ +

+Copy the orientation of a body into a quaternion. +

+

Parameters:
+ + + +
body the body to query
quat a copy of the orientation quaternion
+
+
See also:
dBodyGetQuaternion
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodyCopyRotation (dBodyID ,
dMatrix3  R 
)
+
+
+ +

+Copy the rotation of a body. +

+

Parameters:
+ + + +
body the body to query
R a copy of the rotation matrix
+
+
See also:
dBodyGetRotation
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dBodyID dBodyCreate (dWorldID   ) 
+
+
+ +

+Create a body in given world. +

+

Remarks:
Default mass parameters are at position (0,0,0).
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dBodyDestroy (dBodyID   ) 
+
+
+ +

+Destroy a body. +

+

Remarks:
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.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dBodyDisable (dBodyID   ) 
+
+
+ +

+Manually disable a body. +

+

Remarks:
A disabled body that is connected through a joint to an enabled body will be automatically re-enabled at the next simulation step.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dBodyEnable (dBodyID   ) 
+
+
+ +

+Manually enable a body. +

+

Parameters:
+ + +
dBodyID identification of body.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dBodyGetAutoDisableAngularThreshold (dBodyID   ) 
+
+
+ +

+Get auto disable angular average threshold. +

+

Returns:
the threshold
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dBodyGetAutoDisableAverageSamplesCount (dBodyID   ) 
+
+
+ +

+Get auto disable average size (samples count). +

+

Returns:
the nr of steps/size.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dBodyGetAutoDisableFlag (dBodyID   ) 
+
+
+ +

+Get auto disable flag. +

+

Returns:
0 or 1
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dBodyGetAutoDisableLinearThreshold (dBodyID   ) 
+
+
+ +

+Get auto disable linear average threshold. +

+

Returns:
the threshold
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dBodyGetAutoDisableSteps (dBodyID   ) 
+
+
+ +

+Get auto steps a body must be thought of as idle to disable. +

+

Returns:
the nr of steps
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dBodyGetAutoDisableTime (dBodyID   ) 
+
+
+ +

+Get auto disable time. +

+

Returns:
nr of seconds
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void* dBodyGetData (dBodyID   ) 
+
+
+ +

+Get the body's user-data pointer. +

+

Returns:
a pointer to the user's data.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodyGetFiniteRotationAxis (dBodyID ,
dVector3  result 
)
+
+
+ +

+Get the finite rotation axis. +

+

Parameters:
+ + +
result will contain the axis.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dBodyGetFiniteRotationMode (dBodyID   ) 
+
+
+ +

+Get the way a body's orientation is updated each timestep. +

+

Returns:
the mode 0 (infitesimal) or 1 (finite).
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API const dReal* dBodyGetForce (dBodyID   ) 
+
+
+ +

+Return the current accumulated force vector. +

+

Returns:
points to an array of 3 reals.
+
Remarks:
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.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dBodyGetGravityMode (dBodyID  b  ) 
+
+
+ +

+Get whether the body is influenced by the world's gravity or not. +

+

Returns:
nonzero means gravity affects this body.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dBodyGetJoint (dBodyID ,
int  index 
)
+
+
+ +

+Return a joint attached to this body, given by index. +

+

Parameters:
+ + +
index valid range is 0 to n-1 where n is the value returned by dBodyGetNumJoints().
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dBodyGetNumJoints (dBodyID  b  ) 
+
+
+ +

+Get the number of joints that are attached to this body. +

+

Returns:
nr of joints
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodyGetPointVel (dBodyID ,
dReal  px,
dReal  py,
dReal  pz,
dVector3  result 
)
+
+
+ +

+Get velocity vector in global coords of a globally specified point on a body. +

+

Parameters:
+ + +
result will contain the result.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API const dReal* dBodyGetPosition (dBodyID   ) 
+
+
+ +

+Get the position of a body. +

+

Remarks:
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.
+
See also:
dBodyCopyPosition
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodyGetPosRelPoint (dBodyID ,
dReal  px,
dReal  py,
dReal  pz,
dVector3  result 
)
+
+
+ +

+takes a point in global coordinates and returns the point's position in body-relative coordinates. +

+

Remarks:
This is the inverse of dBodyGetRelPointPos()
+
Parameters:
+ + +
result will contain the result.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API const dReal* dBodyGetQuaternion (dBodyID   ) 
+
+
+ +

+Get the rotation of a body. +

+

Returns:
pointer to 4 scalars that represent the quaternion.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodyGetRelPointPos (dBodyID ,
dReal  px,
dReal  py,
dReal  pz,
dVector3  result 
)
+
+
+ +

+Get world position of a relative point on body. +

+

Parameters:
+ + +
result will contain the result.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodyGetRelPointVel (dBodyID ,
dReal  px,
dReal  py,
dReal  pz,
dVector3  result 
)
+
+
+ +

+Get velocity vector in global coords of a relative point on body. +

+

Parameters:
+ + +
result will contain the result.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API const dReal* dBodyGetRotation (dBodyID   ) 
+
+
+ +

+Get the rotation of a body. +

+

Returns:
pointer to a 4x3 rotation matrix.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API const dReal* dBodyGetTorque (dBodyID   ) 
+
+
+ +

+Return the current accumulated torque vector. +

+

Returns:
points to an array of 3 reals.
+
Remarks:
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.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dWorldID dBodyGetWorld (dBodyID   ) 
+
+
+ +

+Retrives the world attached to te given body. +

+

Remarks:
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dBodyIsEnabled (dBodyID   ) 
+
+
+ +

+Check wether a body is enabled. +

+

Returns:
1 if a body is currently enabled or 0 if it is disabled.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetAutoDisableAngularThreshold (dBodyID ,
dReal  angular_average_threshold 
)
+
+
+ +

+Set auto disable angular average threshold. +

+

Returns:
the threshold
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetAutoDisableAverageSamplesCount (dBodyID ,
unsigned int  average_samples_count 
)
+
+
+ +

+Set auto disable average buffer size (average steps). +

+

Parameters:
+ + +
average_samples_count the nr of samples to review.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dBodySetAutoDisableDefaults (dBodyID   ) 
+
+
+ +

+Set auto disable defaults. +

+

Remarks:
Set the values for the body to those set as default for the world.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetAutoDisableFlag (dBodyID ,
int  do_auto_disable 
)
+
+
+ +

+Set auto disable flag. +

+

Parameters:
+ + +
do_auto_disable 0 or 1
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetAutoDisableLinearThreshold (dBodyID ,
dReal  linear_average_threshold 
)
+
+
+ +

+Set auto disable linear average threshold. +

+

Returns:
the threshold
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetAutoDisableSteps (dBodyID ,
int  steps 
)
+
+
+ +

+Set auto disable steps. +

+

Parameters:
+ + +
steps the nr of steps.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetAutoDisableTime (dBodyID ,
dReal  time 
)
+
+
+ +

+Set auto disable time. +

+

Parameters:
+ + +
time nr of seconds.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetData (dBodyID ,
void *  data 
)
+
+
+ +

+Set the body's user-data pointer. +

+

Parameters:
+ + +
data arbitraty pointer
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetFiniteRotationAxis (dBodyID ,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+sets the finite rotation axis for a body. +

+

Remarks:
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.

+This 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.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetFiniteRotationMode (dBodyID ,
int  mode 
)
+
+
+ +

+controls the way a body's orientation is updated at each timestep. +

+

Parameters:
+ + +
mode can be 0 or 1:
    +
  • 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.
  • +
  • 1: A ``finite'' orientation update is used. This is more costly to compute, but will be more accurate for high speed rotations.
  • +
+
+
+
Remarks:
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.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetForce (dBodyID  b,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Set the body force accumulation vector. +

+

Remarks:
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.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetGravityMode (dBodyID  b,
int  mode 
)
+
+
+ +

+Set whether the body is influenced by the world's gravity or not. +

+

Parameters:
+ + +
mode when nonzero gravity affects this body.
+
+
Remarks:
Newly created bodies are always influenced by the world's gravity.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetPosition (dBodyID ,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Set position of a body. +

+

Remarks:
After setting, the outcome of the simulation is undefined if the new configuration is inconsistent with the joints/constraints that are present.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetQuaternion (dBodyID ,
const dQuaternion  q 
)
+
+
+ +

+Set the orientation of a body. +

+

Remarks:
After setting, the outcome of the simulation is undefined if the new configuration is inconsistent with the joints/constraints that are present.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetRotation (dBodyID ,
const dMatrix3  R 
)
+
+
+ +

+Set the orientation of a body. +

+

Remarks:
After setting, the outcome of the simulation is undefined if the new configuration is inconsistent with the joints/constraints that are present.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodySetTorque (dBodyID  b,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Set the body torque accumulation vector. +

+

Remarks:
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.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodyVectorFromWorld (dBodyID ,
dReal  px,
dReal  py,
dReal  pz,
dVector3  result 
)
+
+
+ +

+Convert from world to local coordinates. +

+

Parameters:
+ + +
result will contain the result.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dBodyVectorToWorld (dBodyID ,
dReal  px,
dReal  py,
dReal  pz,
dVector3  result 
)
+
+
+ +

+Convert from local to world coordinates. +

+

Parameters:
+ + +
result will contain the result.
+
+ +
+

+


Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Collision Detection + + + + +
+ +
+

Collision Detection

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Modules

 Sphere Class
 Box Class

Data Structures

struct  dContactGeom
 Describe the contact point between two geoms. More...

Typedefs

typedef dReal dHeightfieldGetHeight (void *p_user_data, int x, int z)
 Callback prototype.
typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2)
 User callback for geom-geom collision testing.

Functions

ODE_API void dGeomDestroy (dGeomID geom)
 Destroy a geom, removing it from any space.
ODE_API void dGeomSetData (dGeomID geom, void *data)
 Set the user-defined data pointer stored in the geom.
ODE_API void * dGeomGetData (dGeomID geom)
 Get the user-defined data pointer stored in the geom.
ODE_API void dGeomSetBody (dGeomID geom, dBodyID body)
 Set the body associated with a placeable geom.
ODE_API dBodyID dGeomGetBody (dGeomID geom)
 Get the body associated with a placeable geom.
ODE_API void dGeomSetPosition (dGeomID geom, dReal x, dReal y, dReal z)
 Set the position vector of a placeable geom.
ODE_API void dGeomSetRotation (dGeomID geom, const dMatrix3 R)
 Set the rotation matrix of a placeable geom.
ODE_API void dGeomSetQuaternion (dGeomID geom, const dQuaternion Q)
 Set the rotation of a placeable geom.
ODE_API const dReal * dGeomGetPosition (dGeomID geom)
 Get the position vector of a placeable geom.
ODE_API void dGeomCopyPosition (dGeomID geom, dVector3 pos)
 Copy the position of a geom into a vector.
ODE_API const dReal * dGeomGetRotation (dGeomID geom)
 Get the rotation matrix of a placeable geom.
ODE_API void dGeomCopyRotation (dGeomID geom, dMatrix3 R)
 Get the rotation matrix of a placeable geom.
ODE_API void dGeomGetQuaternion (dGeomID geom, dQuaternion result)
 Get the rotation quaternion of a placeable geom.
ODE_API void dGeomGetAABB (dGeomID geom, dReal aabb[6])
 Return the axis-aligned bounding box.
ODE_API int dGeomIsSpace (dGeomID geom)
 Determing if a geom is a space.
ODE_API dSpaceID dGeomGetSpace (dGeomID)
 Query for the space containing a particular geom.
ODE_API int dGeomGetClass (dGeomID geom)
 Given a geom, this returns its class.
ODE_API void dGeomSetCategoryBits (dGeomID geom, unsigned long bits)
 Set the "category" bitfield for the given geom.
ODE_API void dGeomSetCollideBits (dGeomID geom, unsigned long bits)
 Set the "collide" bitfield for the given geom.
ODE_API unsigned long dGeomGetCategoryBits (dGeomID)
 Get the "category" bitfield for the given geom.
ODE_API unsigned long dGeomGetCollideBits (dGeomID)
 Get the "collide" bitfield for the given geom.
ODE_API void dGeomEnable (dGeomID geom)
 Enable a geom.
ODE_API void dGeomDisable (dGeomID geom)
 Disable a geom.
ODE_API int dGeomIsEnabled (dGeomID geom)
 Check to see if a geom is enabled.
ODE_API void dGeomSetOffsetPosition (dGeomID geom, dReal x, dReal y, dReal z)
 Set the local offset position of a geom from its body.
ODE_API void dGeomSetOffsetRotation (dGeomID geom, const dMatrix3 R)
 Set the local offset rotation matrix of a geom from its body.
ODE_API void dGeomSetOffsetQuaternion (dGeomID geom, const dQuaternion Q)
 Set the local offset rotation of a geom from its body.
ODE_API void dGeomSetOffsetWorldPosition (dGeomID geom, dReal x, dReal y, dReal z)
 Set the offset position of a geom from its body.
ODE_API void dGeomSetOffsetWorldRotation (dGeomID geom, const dMatrix3 R)
 Set the offset rotation of a geom from its body.
ODE_API void dGeomSetOffsetWorldQuaternion (dGeomID geom, const dQuaternion)
 Set the offset rotation of a geom from its body.
ODE_API void dGeomClearOffset (dGeomID geom)
 Clear any offset from the geom.
ODE_API int dGeomIsOffset (dGeomID geom)
 Check to see whether the geom has an offset.
ODE_API const dReal * dGeomGetOffsetPosition (dGeomID geom)
 Get the offset position vector of a geom.
ODE_API void dGeomCopyOffsetPosition (dGeomID geom, dVector3 pos)
 Copy the offset position vector of a geom.
ODE_API const dReal * dGeomGetOffsetRotation (dGeomID geom)
 Get the offset rotation matrix of a geom.
ODE_API void dGeomCopyOffsetRotation (dGeomID geom, dMatrix3 R)
 Copy the offset rotation matrix of a geom.
ODE_API void dGeomGetOffsetQuaternion (dGeomID geom, dQuaternion result)
 Get the offset rotation quaternion of a geom.
ODE_API int dCollide (dGeomID o1, dGeomID o2, int flags, dContactGeom *contact, int skip)
 Given two geoms o1 and o2 that potentially intersect, generate contact information for them.
ODE_API void dSpaceCollide (dSpaceID space, void *data, dNearCallback *callback)
 Determines which pairs of geoms in a space may potentially intersect, and calls the callback function for each candidate pair.
ODE_API void dSpaceCollide2 (dGeomID space1, dGeomID space2, void *data, dNearCallback *callback)
 Determines which geoms from one space may potentially intersect with geoms from another space, and calls the callback function for each candidate pair.
ODE_API dGeomID dCreateHeightfield (dSpaceID space, dHeightfieldDataID data, int bPlaceable)
 Creates a heightfield geom.
ODE_API
+dHeightfieldDataID 
dGeomHeightfieldDataCreate ()
 Creates a new empty dHeightfieldDataID.
ODE_API void dGeomHeightfieldDataDestroy (dHeightfieldDataID d)
 Destroys a dHeightfieldDataID.
ODE_API void dGeomHeightfieldDataBuildCallback (dHeightfieldDataID d, void *pUserData, dHeightfieldGetHeight *pCallback, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)
 Configures a dHeightfieldDataID to use a callback to retrieve height data.
ODE_API void dGeomHeightfieldDataBuildByte (dHeightfieldDataID d, const unsigned char *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)
 Configures a dHeightfieldDataID to use height data in byte format.
ODE_API void dGeomHeightfieldDataBuildShort (dHeightfieldDataID d, const short *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)
 Configures a dHeightfieldDataID to use height data in short format.
ODE_API void dGeomHeightfieldDataBuildSingle (dHeightfieldDataID d, const float *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)
 Configures a dHeightfieldDataID to use height data in single precision floating point format.
ODE_API void dGeomHeightfieldDataBuildDouble (dHeightfieldDataID d, const double *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)
 Configures a dHeightfieldDataID to use height data in double precision floating point format.
ODE_API void dGeomHeightfieldDataSetBounds (dHeightfieldDataID d, dReal minHeight, dReal maxHeight)
 Manually set the minimum and maximum height bounds.
ODE_API void dGeomHeightfieldSetHeightfieldData (dGeomID g, dHeightfieldDataID d)
 Assigns a dHeightfieldDataID to a heightfield geom.
ODE_API
+dHeightfieldDataID 
dGeomHeightfieldGetHeightfieldData (dGeomID g)
 Gets the dHeightfieldDataID bound to a heightfield geom.
+

Detailed Description

+ODE 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.

+Using 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.


Typedef Documentation

+ +
+
+ + + + +
typedef dReal dHeightfieldGetHeight(void *p_user_data, int x, int z)
+
+
+ +

+Callback prototype. +

+Used by the callback heightfield data type to sample a height for a given cell position.

+

Parameters:
+ + + + +
p_user_data User data specified when creating the dHeightfieldDataID
x The index of a sample in the local x axis. It is a value in the range zero to ( nWidthSamples - 1 ).
x The index of a sample in the local z axis. It is a value in the range zero to ( nDepthSamples - 1 ).
+
+
Returns:
The sample height which is then scaled and offset using the values specified when the heightfield data was created.
+ +
+

+ +

+
+ + + + +
typedef void dNearCallback(void *data, dGeomID o1, dGeomID o2)
+
+
+ +

+User callback for geom-geom collision testing. +

+

Parameters:
+ + + + +
data The user data object, as passed to dSpaceCollide.
o1 The first geom being tested.
o2 The second geom being test.
+
+
Remarks:
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.
+ +
+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API int dCollide (dGeomID  o1,
dGeomID  o2,
int  flags,
dContactGeom contact,
int  skip 
)
+
+
+ +

+Given two geoms o1 and o2 that potentially intersect, generate contact information for them. +

+Internally, this just calls the correct class-specific collision functions for o1 and o2.

+

Parameters:
+ + + + + +
o1 The first geom to test.
o2 The second geom to test.
flags 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.
contact Points to an array of dContactGeom structures. The array must be able to hold at least the maximum number of contacts. These dContactGeom structures may be embedded within larger structures in the array -- the skip parameter is the byte offset from one dContactGeom 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).
+
+
Returns:
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).
+
Remarks:
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.

+If 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.

+This 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).

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API dGeomID dCreateHeightfield (dSpaceID  space,
dHeightfieldDataID  data,
int  bPlaceable 
)
+
+
+ +

+Creates a heightfield geom. +

+Uses the information in the given dHeightfieldDataID to construct a geom representing a heightfield in a collision space.

+

Parameters:
+ + + + +
space The space to add the geom to.
data The dHeightfieldDataID created by dGeomHeightfieldDataCreate and setup by dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat.
bPlaceable 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.
+
+
Returns:
A geom id to reference this geom in other calls.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dGeomClearOffset (dGeomID  geom  ) 
+
+
+ +

+Clear any offset from the geom. +

+If 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.

+

Parameters:
+ + +
geom the geom to have its offset destroyed.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomCopyOffsetPosition (dGeomID  geom,
dVector3  pos 
)
+
+
+ +

+Copy the offset position vector of a geom. +

+Returns the positional offset of the geom in local coordinates. If the geom has no offset, this function returns the zero vector.

+

Parameters:
+ + + +
geom the geom to query.
pos returns the offset position
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomCopyOffsetRotation (dGeomID  geom,
dMatrix3  R 
)
+
+
+ +

+Copy the offset rotation matrix of a geom. +

+Returns the rotational offset of the geom in local coordinates. If the geom has no offset, this function returns the identity matrix.

+

Parameters:
+ + + +
geom the geom to query.
R returns the rotation matrix.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomCopyPosition (dGeomID  geom,
dVector3  pos 
)
+
+
+ +

+Copy the position of a geom into a vector. +

+

Parameters:
+ + + +
geom the geom to query
pos a copy of the geom position
+
+
See also:
dGeomGetPosition
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomCopyRotation (dGeomID  geom,
dMatrix3  R 
)
+
+
+ +

+Get the rotation matrix of a placeable geom. +

+If the geom is attached to a body, the body's rotation will be returned.

+Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.

+

Parameters:
+ + + +
geom the geom to query.
R a copy of the geom rotation
+
+
See also:
dGeomGetRotation
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dGeomDestroy (dGeomID  geom  ) 
+
+
+ +

+Destroy a geom, removing it from any space. +

+Destroy 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.

+When a space is destroyed, if its cleanup mode is 1 (the default) then all the geoms in that space are automatically destroyed as well.

+

Parameters:
+ + +
geom the geom to be destroyed.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dGeomDisable (dGeomID  geom  ) 
+
+
+ +

+Disable a geom. +

+Disabled 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.

+

Parameters:
+ + +
geom the geom to disable
+
+
See also:
dGeomDisable

+dGeomIsEnabled

+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dGeomEnable (dGeomID  geom  ) 
+
+
+ +

+Enable a geom. +

+Disabled 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.

+

Parameters:
+ + +
geom the geom to enable
+
+
See also:
dGeomDisable

+dGeomIsEnabled

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomGetAABB (dGeomID  geom,
dReal  aabb[6] 
)
+
+
+ +

+Return the axis-aligned bounding box. +

+Return 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.

+This 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.

+

Parameters:
+ + + +
geom the geom to query
aabb the returned bounding box
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dBodyID dGeomGetBody (dGeomID  geom  ) 
+
+
+ +

+Get the body associated with a placeable geom. +

+

Parameters:
+ + +
geom the geom to query.
+
+
See also:
dGeomSetBody
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API unsigned long dGeomGetCategoryBits (dGeomID   ) 
+
+
+ +

+Get the "category" bitfield for the given geom. +

+

Parameters:
+ + + +
geom the geom to set
bits the new bitfield value
+
+
See also:
dGeomSetCategoryBits
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dGeomGetClass (dGeomID  geom  ) 
+
+
+ +

+Given a geom, this returns its class. +

+The ODE classes are:

+User-defined class will return their own number.

+

Parameters:
+ + +
geom the geom to query
+
+
Returns:
The geom class ID.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API unsigned long dGeomGetCollideBits (dGeomID   ) 
+
+
+ +

+Get the "collide" bitfield for the given geom. +

+

Parameters:
+ + + +
geom the geom to set
bits the new bitfield value
+
+
See also:
dGeomSetCollideBits
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void* dGeomGetData (dGeomID  geom  ) 
+
+
+ +

+Get the user-defined data pointer stored in the geom. +

+

Parameters:
+ + +
geom the geom containing the data
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API const dReal* dGeomGetOffsetPosition (dGeomID  geom  ) 
+
+
+ +

+Get the offset position vector of a geom. +

+Returns the positional offset of the geom in local coordinates. If the geom has no offset, this function returns the zero vector.

+

Parameters:
+ + +
geom the geom to query.
+
+
Returns:
A pointer to the geom's offset vector.
+
Remarks:
The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomGetOffsetQuaternion (dGeomID  geom,
dQuaternion  result 
)
+
+
+ +

+Get the offset rotation quaternion of a geom. +

+Returns the rotation offset of the geom as a quaternion. If the geom has no offset, the identity quaternion is returned.

+

Parameters:
+ + + +
geom the geom to query.
result a copy of the rotation quaternion.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API const dReal* dGeomGetOffsetRotation (dGeomID  geom  ) 
+
+
+ +

+Get the offset rotation matrix of a geom. +

+Returns the rotational offset of the geom in local coordinates. If the geom has no offset, this function returns the identity matrix.

+

Parameters:
+ + +
geom the geom to query.
+
+
Returns:
A pointer to the geom's offset rotation matrix.
+
Remarks:
The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API const dReal* dGeomGetPosition (dGeomID  geom  ) 
+
+
+ +

+Get the position vector of a placeable geom. +

+If the geom is attached to a body, the body's position will be returned.

+Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.

+

Parameters:
+ + +
geom the geom to query.
+
+
Returns:
A pointer to the geom's position vector.
+
Remarks:
The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom.
+
See also:
dBodyGetPosition
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomGetQuaternion (dGeomID  geom,
dQuaternion  result 
)
+
+
+ +

+Get the rotation quaternion of a placeable geom. +

+If the geom is attached to a body, the body's quaternion will be returned.

+Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.

+

Parameters:
+ + + +
geom the geom to query.
result a copy of the rotation quaternion.
+
+
See also:
dBodyGetQuaternion
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API const dReal* dGeomGetRotation (dGeomID  geom  ) 
+
+
+ +

+Get the rotation matrix of a placeable geom. +

+If the geom is attached to a body, the body's rotation will be returned.

+Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.

+

Parameters:
+ + +
geom the geom to query.
+
+
Returns:
A pointer to the geom's rotation matrix.
+
Remarks:
The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom.
+
See also:
dBodyGetRotation
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dSpaceID dGeomGetSpace (dGeomID   ) 
+
+
+ +

+Query for the space containing a particular geom. +

+

Parameters:
+ + +
geom the geom to query
+
+
Returns:
The space that contains the geom, or NULL if the geom is not contained by a space.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomHeightfieldDataBuildByte (dHeightfieldDataID  d,
const unsigned char *  pHeightData,
int  bCopyHeightData,
dReal  width,
dReal  depth,
int  widthSamples,
int  depthSamples,
dReal  scale,
dReal  offset,
dReal  thickness,
int  bWrap 
)
+
+
+ +

+Configures a dHeightfieldDataID to use height data in byte format. +

+Before 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.

+

Parameters:
+ + + + + + + + + + + + +
d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
pHeightData A pointer to the height data.
bCopyHeightData 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.
width Specifies the total 'width' of the heightfield along the geom's local x axis.
depth Specifies the total 'depth' of the heightfield along the geom's local z axis.
widthSamples 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.
depthSamples Specifies the number of vertices to sample along the depth of the heightfield.
scale A uniform scale applied to all raw height data.
offset An offset applied to the scaled height data.
thickness 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.
bWrap 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.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomHeightfieldDataBuildCallback (dHeightfieldDataID  d,
void *  pUserData,
dHeightfieldGetHeight pCallback,
dReal  width,
dReal  depth,
int  widthSamples,
int  depthSamples,
dReal  scale,
dReal  offset,
dReal  thickness,
int  bWrap 
)
+
+
+ +

+Configures a dHeightfieldDataID to use a callback to retrieve height data. +

+Before 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.

+

Parameters:
+ + + + + + + + + + +
d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
width Specifies the total 'width' of the heightfield along the geom's local x axis.
depth Specifies the total 'depth' of the heightfield along the geom's local z axis.
widthSamples 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.
depthSamples Specifies the number of vertices to sample along the depth of the heightfield.
scale A uniform scale applied to all raw height data.
offset An offset applied to the scaled height data.
thickness 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.
bWrap 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.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomHeightfieldDataBuildDouble (dHeightfieldDataID  d,
const double *  pHeightData,
int  bCopyHeightData,
dReal  width,
dReal  depth,
int  widthSamples,
int  depthSamples,
dReal  scale,
dReal  offset,
dReal  thickness,
int  bWrap 
)
+
+
+ +

+Configures a dHeightfieldDataID to use height data in double precision floating point format. +

+Before 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.

+

Parameters:
+ + + + + + + + + + + + +
d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
pHeightData A pointer to the height data.
bCopyHeightData 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.
width Specifies the total 'width' of the heightfield along the geom's local x axis.
depth Specifies the total 'depth' of the heightfield along the geom's local z axis.
widthSamples 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.
depthSamples Specifies the number of vertices to sample along the depth of the heightfield.
scale A uniform scale applied to all raw height data.
offset An offset applied to the scaled height data.
thickness 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.
bWrap 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.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomHeightfieldDataBuildShort (dHeightfieldDataID  d,
const short *  pHeightData,
int  bCopyHeightData,
dReal  width,
dReal  depth,
int  widthSamples,
int  depthSamples,
dReal  scale,
dReal  offset,
dReal  thickness,
int  bWrap 
)
+
+
+ +

+Configures a dHeightfieldDataID to use height data in short format. +

+Before 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.

+

Parameters:
+ + + + + + + + + + + + +
d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
pHeightData A pointer to the height data.
bCopyHeightData 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.
width Specifies the total 'width' of the heightfield along the geom's local x axis.
depth Specifies the total 'depth' of the heightfield along the geom's local z axis.
widthSamples 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.
depthSamples Specifies the number of vertices to sample along the depth of the heightfield.
scale A uniform scale applied to all raw height data.
offset An offset applied to the scaled height data.
thickness 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.
bWrap 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.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomHeightfieldDataBuildSingle (dHeightfieldDataID  d,
const float *  pHeightData,
int  bCopyHeightData,
dReal  width,
dReal  depth,
int  widthSamples,
int  depthSamples,
dReal  scale,
dReal  offset,
dReal  thickness,
int  bWrap 
)
+
+
+ +

+Configures a dHeightfieldDataID to use height data in single precision floating point format. +

+Before 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.

+

Parameters:
+ + + + + + + + + + + + +
d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
pHeightData A pointer to the height data.
bCopyHeightData 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.
width Specifies the total 'width' of the heightfield along the geom's local x axis.
depth Specifies the total 'depth' of the heightfield along the geom's local z axis.
widthSamples 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.
depthSamples Specifies the number of vertices to sample along the depth of the heightfield.
scale A uniform scale applied to all raw height data.
offset An offset applied to the scaled height data.
thickness 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.
bWrap 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.
+
+ +
+

+ +

+
+ + + + + + + + +
ODE_API dHeightfieldDataID dGeomHeightfieldDataCreate (  ) 
+
+
+ +

+Creates a new empty dHeightfieldDataID. +

+Allocates 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.

+

Returns:
A dHeightfieldDataID for use with dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dGeomHeightfieldDataDestroy (dHeightfieldDataID  d  ) 
+
+
+ +

+Destroys a dHeightfieldDataID. +

+Deallocates a given dHeightfieldDataID and all managed resources.

+

Parameters:
+ + +
d A dHeightfieldDataID created by dGeomHeightfieldDataCreate
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomHeightfieldDataSetBounds (dHeightfieldDataID  d,
dReal  minHeight,
dReal  maxHeight 
)
+
+
+ +

+Manually set the minimum and maximum height bounds. +

+This 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.

+

Remarks:
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.
+
Parameters:
+ + + + +
d A dHeightfieldDataID created by dGeomHeightfieldDataCreate
min_height The new minimum height value. Scale, offset and thickness is then applied.
max_height The new maximum height value. Scale and offset is then applied.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dHeightfieldDataID dGeomHeightfieldGetHeightfieldData (dGeomID  g  ) 
+
+
+ +

+Gets the dHeightfieldDataID bound to a heightfield geom. +

+Returns the dHeightfieldDataID associated with a heightfield geom.

+

Parameters:
+ + +
g A geom created by dCreateHeightfield
+
+
Returns:
The dHeightfieldDataID which may be NULL if none was assigned.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomHeightfieldSetHeightfieldData (dGeomID  g,
dHeightfieldDataID  d 
)
+
+
+ +

+Assigns a dHeightfieldDataID to a heightfield geom. +

+Associates the given dHeightfieldDataID with a heightfield geom. This is done without affecting the GEOM_PLACEABLE flag.

+

Parameters:
+ + + +
g A geom created by dCreateHeightfield
d A dHeightfieldDataID created by dGeomHeightfieldDataCreate
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dGeomIsEnabled (dGeomID  geom  ) 
+
+
+ +

+Check to see if a geom is enabled. +

+Disabled 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.

+

Parameters:
+ + +
geom the geom to query
+
+
Returns:
Non-zero if the geom is enabled, zero otherwise.
+
See also:
dGeomDisable

+dGeomIsEnabled

+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dGeomIsOffset (dGeomID  geom  ) 
+
+
+ +

+Check to see whether the geom has an offset. +

+This 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.

+

Parameters:
+ + +
geom the geom to query.
+
+
Returns:
Non-zero if the geom has an offset, zero otherwise.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dGeomIsSpace (dGeomID  geom  ) 
+
+
+ +

+Determing if a geom is a space. +

+

Parameters:
+ + +
geom the geom to query
+
+
Returns:
Non-zero if the geom is a space, zero otherwise.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetBody (dGeomID  geom,
dBodyID  body 
)
+
+
+ +

+Set the body associated with a placeable geom. +

+Setting 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.

+Calling these functions on a non-placeable geom results in a runtime error in the debug build of ODE.

+

Parameters:
+ + + +
geom the geom to connect
body the body to attach to the geom
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetCategoryBits (dGeomID  geom,
unsigned long  bits 
)
+
+
+ +

+Set the "category" bitfield for the given geom. +

+The 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.

+

Parameters:
+ + + +
geom the geom to set
bits the new bitfield value
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetCollideBits (dGeomID  geom,
unsigned long  bits 
)
+
+
+ +

+Set the "collide" bitfield for the given geom. +

+The 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.

+

Parameters:
+ + + +
geom the geom to set
bits the new bitfield value
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetData (dGeomID  geom,
void *  data 
)
+
+
+ +

+Set the user-defined data pointer stored in the geom. +

+

Parameters:
+ + + +
geom the geom to hold the data
data the data pointer to be stored
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetOffsetPosition (dGeomID  geom,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Set the local offset position of a geom from its body. +

+Sets 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.

+

Parameters:
+ + + + + +
geom the geom to set.
x the new X coordinate.
y the new Y coordinate.
z the new Z coordinate.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetOffsetQuaternion (dGeomID  geom,
const dQuaternion  Q 
)
+
+
+ +

+Set the local offset rotation of a geom from its body. +

+Sets 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.

+

Parameters:
+ + + +
geom the geom to set.
Q the new rotation.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetOffsetRotation (dGeomID  geom,
const dMatrix3  R 
)
+
+
+ +

+Set the local offset rotation matrix of a geom from its body. +

+Sets 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.

+

Parameters:
+ + + +
geom the geom to set.
R the new rotation matrix.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetOffsetWorldPosition (dGeomID  geom,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Set the offset position of a geom from its body. +

+Sets 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.

+

Parameters:
+ + + + + +
geom the geom to set.
x the new X coordinate.
y the new Y coordinate.
z the new Z coordinate.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetOffsetWorldQuaternion (dGeomID  geom,
const   dQuaternion 
)
+
+
+ +

+Set the offset rotation of a geom from its body. +

+Sets 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.

+

Parameters:
+ + + +
geom the geom to set.
Q the new rotation.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetOffsetWorldRotation (dGeomID  geom,
const dMatrix3  R 
)
+
+
+ +

+Set the offset rotation of a geom from its body. +

+Sets 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.

+

Parameters:
+ + + +
geom the geom to set.
R the new rotation matrix.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetPosition (dGeomID  geom,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Set the position vector of a placeable geom. +

+If 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.

+

Parameters:
+ + + + + +
geom the geom to set.
x the new X coordinate.
y the new Y coordinate.
z the new Z coordinate.
+
+
See also:
dBodySetPosition
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetQuaternion (dGeomID  geom,
const dQuaternion  Q 
)
+
+
+ +

+Set the rotation of a placeable geom. +

+If 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.

+

Parameters:
+ + + +
geom the geom to set.
Q the new rotation.
+
+
See also:
dBodySetQuaternion
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSetRotation (dGeomID  geom,
const dMatrix3  R 
)
+
+
+ +

+Set the rotation matrix of a placeable geom. +

+If 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.

+

Parameters:
+ + + +
geom the geom to set.
R the new rotation matrix.
+
+
See also:
dBodySetRotation
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dSpaceCollide (dSpaceID  space,
void *  data,
dNearCallback callback 
)
+
+
+ +

+Determines which pairs of geoms in a space may potentially intersect, and calls the callback function for each candidate pair. +

+

Parameters:
+ + + + +
space The space to test.
data 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.
callback A callback function is of type dNearCallback.
+
+
Remarks:
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.

+dSpaceCollide() 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.

+
See also:
dSpaceCollide2
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dSpaceCollide2 (dGeomID  space1,
dGeomID  space2,
void *  data,
dNearCallback callback 
)
+
+
+ +

+Determines which geoms from one space may potentially intersect with geoms from another space, and calls the callback function for each candidate pair. +

+

Parameters:
+ + + + + +
space1 The first space to test.
space2 The second space to test.
data 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.
callback A callback function is of type dNearCallback.
+
+
Remarks:
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.

+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.

+dSpaceCollide2() 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.

+
See also:
dSpaceCollide
+ +
+

+


Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Box Class + + + + +
+ +
+

Box Class
+ +[Collision Detection] +

+ + + + + + + + + + + +

Functions

ODE_API dGeomID dCreateBox (dSpaceID space, dReal lx, dReal ly, dReal lz)
 Create a box geom with the provided side lengths.
ODE_API void dGeomBoxSetLengths (dGeomID box, dReal lx, dReal ly, dReal lz)
 Set the side lengths of the given box.
ODE_API void dGeomBoxGetLengths (dGeomID box, dVector3 result)
 Get the side lengths of a box.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API dGeomID dCreateBox (dSpaceID  space,
dReal  lx,
dReal  ly,
dReal  lz 
)
+
+
+ +

+Create a box geom with the provided side lengths. +

+

Parameters:
+ + + + + +
space a space to contain the new geom. May be null.
lx the length of the box along the X axis
ly the length of the box along the Y axis
lz the length of the box along the Z axis
+
+
Returns:
A new box geom.
+
Remarks:
The point of reference for a box is its center.
+
See also:
dGeomDestroy

+dGeomBoxSetLengths

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomBoxGetLengths (dGeomID  box,
dVector3  result 
)
+
+
+ +

+Get the side lengths of a box. +

+

Parameters:
+ + + +
box the box to query
result the returned side lengths
+
+
See also:
dGeomBoxSetLengths
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dGeomBoxSetLengths (dGeomID  box,
dReal  lx,
dReal  ly,
dReal  lz 
)
+
+
+ +

+Set the side lengths of the given box. +

+

Parameters:
+ + + + + +
box the box to set
lx the length of the box along the X axis
ly the length of the box along the Y axis
lz the length of the box along the Z axis
+
+
See also:
dGeomBoxGetLengths
+ +
+

+


Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Sphere Class + + + + +
+ +
+

Sphere Class
+ +[Collision Detection] +

+ + + + + + + + + + + + + + +

Functions

ODE_API dGeomID dCreateSphere (dSpaceID space, dReal radius)
 Create a sphere geom of the given radius, and return its ID.
ODE_API void dGeomSphereSetRadius (dGeomID sphere, dReal radius)
 Set the radius of a sphere geom.
ODE_API dReal dGeomSphereGetRadius (dGeomID sphere)
 Retrieves the radius of a sphere geom.
ODE_API dReal dGeomSpherePointDepth (dGeomID sphere, dReal x, dReal y, dReal z)
 Calculate the depth of the a given point within a sphere.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ODE_API dGeomID dCreateSphere (dSpaceID  space,
dReal  radius 
)
+
+
+ +

+Create a sphere geom of the given radius, and return its ID. +

+

Parameters:
+ + + +
space a space to contain the new geom. May be null.
radius the radius of the sphere.
+
+
Returns:
A new sphere geom.
+
Remarks:
The point of reference for a sphere is its center.
+
See also:
dGeomDestroy

+dGeomSphereSetRadius

+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dGeomSphereGetRadius (dGeomID  sphere  ) 
+
+
+ +

+Retrieves the radius of a sphere geom. +

+

Parameters:
+ + +
sphere the sphere to query.
+
+
See also:
dGeomSphereSetRadius
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API dReal dGeomSpherePointDepth (dGeomID  sphere,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Calculate the depth of the a given point within a sphere. +

+

Parameters:
+ + + + + +
sphere the sphere to query.
x the X coordinate of the point.
y the Y coordinate of the point.
z the Z coordinate of the point.
+
+
Returns:
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.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dGeomSphereSetRadius (dGeomID  sphere,
dReal  radius 
)
+
+
+ +

+Set the radius of a sphere geom. +

+

Parameters:
+ + + +
sphere the sphere to set.
radius the new radius.
+
+
See also:
dGeomSphereGetRadius
+ +
+

+


Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Automatic Enabling and Disabling + + + + +
+ +
+

Automatic Enabling and Disabling

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

+ODE_API void dWorldSetAutoEnableDepthSF1 (dWorldID, int autoEnableDepth)
 Set the AutoEnableDepth parameter used by the StepFast1 algorithm.
+ODE_API int dWorldGetAutoEnableDepthSF1 (dWorldID)
 Get the AutoEnableDepth parameter used by the StepFast1 algorithm.
ODE_API dReal dWorldGetAutoDisableLinearThreshold (dWorldID)
 Get auto disable linear threshold for newly created bodies.
ODE_API void dWorldSetAutoDisableLinearThreshold (dWorldID, dReal linear_threshold)
 Set auto disable linear threshold for newly created bodies.
ODE_API dReal dWorldGetAutoDisableAngularThreshold (dWorldID)
 Get auto disable angular threshold for newly created bodies.
ODE_API void dWorldSetAutoDisableAngularThreshold (dWorldID, dReal angular_threshold)
 Set auto disable angular threshold for newly created bodies.
ODE_API dReal dWorldGetAutoDisableLinearAverageThreshold (dWorldID)
 Get auto disable linear average threshold for newly created bodies.
ODE_API void dWorldSetAutoDisableLinearAverageThreshold (dWorldID, dReal linear_average_threshold)
 Set auto disable linear average threshold for newly created bodies.
ODE_API dReal dWorldGetAutoDisableAngularAverageThreshold (dWorldID)
 Get auto disable angular average threshold for newly created bodies.
ODE_API void dWorldSetAutoDisableAngularAverageThreshold (dWorldID, dReal angular_average_threshold)
 Set auto disable angular average threshold for newly created bodies.
ODE_API int dWorldGetAutoDisableAverageSamplesCount (dWorldID)
 Get auto disable sample count for newly created bodies.
ODE_API void dWorldSetAutoDisableAverageSamplesCount (dWorldID, unsigned int average_samples_count)
 Set auto disable average sample count for newly created bodies.
ODE_API int dWorldGetAutoDisableSteps (dWorldID)
 Get auto disable steps for newly created bodies.
ODE_API void dWorldSetAutoDisableSteps (dWorldID, int steps)
 Set auto disable steps for newly created bodies.
ODE_API dReal dWorldGetAutoDisableTime (dWorldID)
 Get auto disable time for newly created bodies.
ODE_API void dWorldSetAutoDisableTime (dWorldID, dReal time)
 Set auto disable time for newly created bodies.
ODE_API int dWorldGetAutoDisableFlag (dWorldID)
 Get auto disable flag for newly created bodies.
ODE_API void dWorldSetAutoDisableFlag (dWorldID, int do_auto_disable)
 Set auto disable flag for newly created bodies.
+

Detailed Description

+Every 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.

+A disabled body that is connected through a joint to an enabled body will be automatically re-enabled at the next simulation step.

+Disabled 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.

+If a body has its auto-disable flag turned on, it will automatically disable itself when

+A 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

+Thus, 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.

+Newly created bodies get these parameters from world.


Function Documentation

+ +
+
+ + + + + + + + + +
ODE_API dReal dWorldGetAutoDisableAngularAverageThreshold (dWorldID   ) 
+
+
+ +

+Get auto disable angular average threshold for newly created bodies. +

+

Returns:
the threshold
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dWorldGetAutoDisableAngularThreshold (dWorldID   ) 
+
+
+ +

+Get auto disable angular threshold for newly created bodies. +

+

Returns:
the threshold
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dWorldGetAutoDisableAverageSamplesCount (dWorldID   ) 
+
+
+ +

+Get auto disable sample count for newly created bodies. +

+

Returns:
number of samples used
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dWorldGetAutoDisableFlag (dWorldID   ) 
+
+
+ +

+Get auto disable flag for newly created bodies. +

+

Returns:
0 or 1
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dWorldGetAutoDisableLinearAverageThreshold (dWorldID   ) 
+
+
+ +

+Get auto disable linear average threshold for newly created bodies. +

+

Returns:
the threshold
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dWorldGetAutoDisableLinearThreshold (dWorldID   ) 
+
+
+ +

+Get auto disable linear threshold for newly created bodies. +

+

Returns:
the threshold
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dWorldGetAutoDisableSteps (dWorldID   ) 
+
+
+ +

+Get auto disable steps for newly created bodies. +

+

Returns:
nr of steps
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dWorldGetAutoDisableTime (dWorldID   ) 
+
+
+ +

+Get auto disable time for newly created bodies. +

+

Returns:
nr of seconds
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetAutoDisableAngularAverageThreshold (dWorldID ,
dReal  angular_average_threshold 
)
+
+
+ +

+Set auto disable angular average threshold for newly created bodies. +

+

Parameters:
+ + +
linear_average_threshold default is 0.01
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetAutoDisableAngularThreshold (dWorldID ,
dReal  angular_threshold 
)
+
+
+ +

+Set auto disable angular threshold for newly created bodies. +

+

Parameters:
+ + +
linear_threshold default is 0.01
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetAutoDisableAverageSamplesCount (dWorldID ,
unsigned int  average_samples_count 
)
+
+
+ +

+Set auto disable average sample count for newly created bodies. +

+

Parameters:
+ + +
average_samples_count Default is 1, meaning only instantaneous velocity is used. Set to zero to disable sampling and thus prevent any body from auto-disabling.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetAutoDisableFlag (dWorldID ,
int  do_auto_disable 
)
+
+
+ +

+Set auto disable flag for newly created bodies. +

+

Parameters:
+ + +
do_auto_disable default is false.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetAutoDisableLinearAverageThreshold (dWorldID ,
dReal  linear_average_threshold 
)
+
+
+ +

+Set auto disable linear average threshold for newly created bodies. +

+

Parameters:
+ + +
linear_average_threshold default is 0.01
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetAutoDisableLinearThreshold (dWorldID ,
dReal  linear_threshold 
)
+
+
+ +

+Set auto disable linear threshold for newly created bodies. +

+

Parameters:
+ + +
linear_threshold default is 0.01
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetAutoDisableSteps (dWorldID ,
int  steps 
)
+
+
+ +

+Set auto disable steps for newly created bodies. +

+

Parameters:
+ + +
steps default is 10
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetAutoDisableTime (dWorldID ,
dReal  time 
)
+
+
+ +

+Set auto disable time for newly created bodies. +

+

Parameters:
+ + +
time default is 0 seconds
+
+ +
+

+


Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: DrawStuff + + + + +
+ +
+

DrawStuff

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  dsFunctions
 Set of functions to be used as callbacks by the simulation loop. More...

Functions

DS_API void dsSimulationLoop (int argc, char **argv, int window_width, int window_height, struct dsFunctions *fn)
 Does the complete simulation.
DS_API void dsError (char *msg,...)
 exit with error message.
DS_API void dsDebug (char *msg,...)
 exit with error message and core dump.
DS_API void dsPrint (char *msg,...)
 print log message
DS_API void dsSetViewpoint (float xyz[3], float hpr[3])
 Sets the viewpoint.
DS_API void dsGetViewpoint (float xyz[3], float hpr[3])
 Gets the viewpoint.
DS_API void dsStop ()
 Stop the simulation loop.
DS_API double dsElapsedTime ()
 Get the elapsed time (on wall-clock).
DS_API void dsSetTexture (int texture_number)
 Toggle the rendering of textures.
DS_API void dsSetColor (float red, float green, float blue)
 Set the color with which geometry is drawn.
DS_API void dsSetColorAlpha (float red, float green, float blue, float alpha)
 Set the color and transparency with which geometry is drawn.
DS_API void dsDrawBox (const float pos[3], const float R[12], const float sides[3])
 Draw a box.
DS_API void dsDrawSphere (const float pos[3], const float R[12], float radius)
 Draw a sphere.
DS_API void dsDrawTriangle (const float pos[3], const float R[12], const float *v0, const float *v1, const float *v2, int solid)
 Draw a triangle.
+DS_API void dsDrawCylinder (const float pos[3], const float R[12], float length, float radius)
 Draw a z-aligned cylinder.
+DS_API void dsDrawCapsule (const float pos[3], const float R[12], float length, float radius)
 Draw a z-aligned capsule.
+DS_API void dsDrawLine (const float pos1[3], const float pos2[3])
 Draw a line.
+DS_API void dsDrawConvex (const float pos[3], const float R[12], float *_planes, unsigned int _planecount, float *_points, unsigned int _pointcount, unsigned int *_polygons)
 Draw a convex shape.
DS_API void dsSetSphereQuality (int n)
 Set the quality with which curved objects are rendered.
+

Detailed Description

+DrawStuff 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.

+Notes

+In the virtual world, the z axis is "up" and z=0 is the floor.

+The 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.


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
DS_API void dsDebug (char *  msg,
  ... 
)
+
+
+ +

+exit with error message and core dump. +

+this functions tries to dump core or start the debugger.

Parameters:
+ + +
msg format strin, like printf, without the newline character.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DS_API void dsDrawBox (const float  pos[3],
const float  R[12],
const float  sides[3] 
)
+
+
+ +

+Draw a box. +

+

Parameters:
+ + + + +
pos is the x,y,z of the center of the object.
R 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 ]
sides[] is an array of x,y,z side lengths.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DS_API void dsDrawSphere (const float  pos[3],
const float  R[12],
float  radius 
)
+
+
+ +

+Draw a sphere. +

+

Parameters:
+ + + + +
pos Position of center.
R orientation.
radius 
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DS_API void dsDrawTriangle (const float  pos[3],
const float  R[12],
const float *  v0,
const float *  v1,
const float *  v2,
int  solid 
)
+
+
+ +

+Draw a triangle. +

+

Parameters:
+ + + + + + + +
pos Position of center
R orientation
v0 first vertex
v1 second
v2 third vertex
solid set to 0 for wireframe
+
+ +
+

+ +

+
+ + + + + + + + +
DS_API double dsElapsedTime (  ) 
+
+
+ +

+Get the elapsed time (on wall-clock). +

+It returns the nr of seconds since the last call to this function. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
DS_API void dsError (char *  msg,
  ... 
)
+
+
+ +

+exit with error message. +

+This function displays an error message then exit.

Parameters:
+ + +
msg format strin, like printf, without the newline character.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
DS_API void dsGetViewpoint (float  xyz[3],
float  hpr[3] 
)
+
+
+ +

+Gets the viewpoint. +

+

Parameters:
+ + + +
xyz position
hpr heading,pitch,roll.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
DS_API void dsPrint (char *  msg,
  ... 
)
+
+
+ +

+print log message +

+

Parameters:
+ + +
msg format string, like printf, without the
+.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DS_API void dsSetColor (float  red,
float  green,
float  blue 
)
+
+
+ +

+Set the color with which geometry is drawn. +

+

Parameters:
+ + + + +
red Red component from 0 to 1
green Green component from 0 to 1
blue Blue component from 0 to 1
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DS_API void dsSetColorAlpha (float  red,
float  green,
float  blue,
float  alpha 
)
+
+
+ +

+Set the color and transparency with which geometry is drawn. +

+

Parameters:
+ + +
alpha Note that alpha transparency is a misnomer: it is alpha opacity. 1.0 means fully opaque, and 0.0 means fully transparent.
+
+ +
+

+ +

+
+ + + + + + + + + +
DS_API void dsSetSphereQuality (int  n  ) 
+
+
+ +

+Set the quality with which curved objects are rendered. +

+Higher 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. +

+

+ +

+
+ + + + + + + + + +
DS_API void dsSetTexture (int  texture_number  ) 
+
+
+ +

+Toggle the rendering of textures. +

+It changes the way objects are drawn. these changes will apply to all further dsDrawXXX() functions.

Parameters:
+ + +
the 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.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
DS_API void dsSetViewpoint (float  xyz[3],
float  hpr[3] 
)
+
+
+ +

+Sets the viewpoint. +

+

Parameters:
+ + + +
xyz camera position.
hpr 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".
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DS_API void dsSimulationLoop (int  argc,
char **  argv,
int  window_width,
int  window_height,
struct dsFunctions fn 
)
+
+
+ +

+Does the complete simulation. +

+This function starts running the simulation, and only exits when the simulation is done. Function pointers should be provided for the callbacks.

Parameters:
+ + + +
argv supports flags like '-notex' '-noshadow' '-pause'
fn Callback functions.
+
+ +
+

+ +

+
+ + + + + + + + +
DS_API void dsStop (  ) 
+
+
+ +

+Stop the simulation loop. +

+Calling this from within dsSimulationLoop() 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. +

+

+


Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Joints + + + + +
+ +
+

Joints

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

ODE_API dJointID dJointCreateBall (dWorldID, dJointGroupID)
 Create a new joint of the ball type.
ODE_API dJointID dJointCreateHinge (dWorldID, dJointGroupID)
 Create a new joint of the hinge type.
ODE_API dJointID dJointCreateSlider (dWorldID, dJointGroupID)
 Create a new joint of the slider type.
ODE_API dJointID dJointCreateContact (dWorldID, dJointGroupID, const dContact *)
 Create a new joint of the contact type.
ODE_API dJointID dJointCreateHinge2 (dWorldID, dJointGroupID)
 Create a new joint of the hinge2 type.
ODE_API dJointID dJointCreateUniversal (dWorldID, dJointGroupID)
 Create a new joint of the universal type.
ODE_API dJointID dJointCreatePR (dWorldID, dJointGroupID)
 Create a new joint of the PR (Prismatic and Rotoide) type.
ODE_API dJointID dJointCreateFixed (dWorldID, dJointGroupID)
 Create a new joint of the fixed type.
ODE_API dJointID dJointCreateAMotor (dWorldID, dJointGroupID)
 Create a new joint of the A-motor type.
ODE_API dJointID dJointCreateLMotor (dWorldID, dJointGroupID)
 Create a new joint of the L-motor type.
ODE_API dJointID dJointCreatePlane2D (dWorldID, dJointGroupID)
 Create a new joint of the plane-2d type.
ODE_API void dJointDestroy (dJointID)
 Destroy a joint.
ODE_API dJointGroupID dJointGroupCreate (int max_size)
 Create a joint group.
ODE_API void dJointGroupDestroy (dJointGroupID)
 Destroy a joint group.
ODE_API void dJointGroupEmpty (dJointGroupID)
 Empty a joint group.
ODE_API void dJointAttach (dJointID, dBodyID body1, dBodyID body2)
 Attach the joint to some new bodies.
+ODE_API void dJointSetData (dJointID, void *data)
 Set the user-data pointer.
+ODE_API void * dJointGetData (dJointID)
 Get the user-data pointer.
ODE_API int dJointGetType (dJointID)
 Get the type of the joint.
ODE_API dBodyID dJointGetBody (dJointID, int index)
 Return the bodies that this joint connects.
ODE_API void dJointSetFeedback (dJointID, dJointFeedback *)
 Sets the datastructure that is to receive the feedback.
+ODE_API dJointFeedback * dJointGetFeedback (dJointID)
 Gets the datastructure that is to receive the feedback.
ODE_API void dJointSetBallAnchor (dJointID, dReal x, dReal y, dReal z)
 Set the joint anchor point.
+ODE_API void dJointSetBallAnchor2 (dJointID, dReal x, dReal y, dReal z)
 Set the joint anchor point.
+ODE_API void dJointSetBallParam (dJointID, int parameter, dReal value)
 Param setting for Ball joints.
+ODE_API void dJointSetHingeAnchor (dJointID, dReal x, dReal y, dReal z)
 Set hinge anchor parameter.
+ODE_API void dJointSetHingeAxis (dJointID, dReal x, dReal y, dReal z)
 Set hinge axis.
+ODE_API void dJointSetHingeParam (dJointID, int parameter, dReal value)
 set joint parameter
ODE_API void dJointAddHingeTorque (dJointID joint, dReal torque)
 Applies the torque about the hinge axis.
+ODE_API void dJointSetSliderAxis (dJointID, dReal x, dReal y, dReal z)
 set the joint axis
+ODE_API void dJointSetSliderAxisDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az)
+ODE_API void dJointSetSliderParam (dJointID, int parameter, dReal value)
 set joint parameter
ODE_API void dJointAddSliderForce (dJointID joint, dReal force)
 Applies the given force in the slider's direction.
+ODE_API void dJointSetHinge2Anchor (dJointID, dReal x, dReal y, dReal z)
 set anchor
+ODE_API void dJointSetHinge2Axis1 (dJointID, dReal x, dReal y, dReal z)
 set axis
+ODE_API void dJointSetHinge2Axis2 (dJointID, dReal x, dReal y, dReal z)
 set axis
+ODE_API void dJointSetHinge2Param (dJointID, int parameter, dReal value)
 set joint parameter
ODE_API void dJointAddHinge2Torques (dJointID joint, dReal torque1, dReal torque2)
 Applies torque1 about the hinge2's axis 1, torque2 about the hinge2's axis 2.
+ODE_API void dJointSetUniversalAnchor (dJointID, dReal x, dReal y, dReal z)
 set anchor
+ODE_API void dJointSetUniversalAxis1 (dJointID, dReal x, dReal y, dReal z)
 set axis
+ODE_API void dJointSetUniversalAxis2 (dJointID, dReal x, dReal y, dReal z)
 set axis
+ODE_API void dJointSetUniversalParam (dJointID, int parameter, dReal value)
 set joint parameter
ODE_API void dJointAddUniversalTorques (dJointID joint, dReal torque1, dReal torque2)
 Applies torque1 about the universal's axis 1, torque2 about the universal's axis 2.
+ODE_API void dJointSetPRAnchor (dJointID, dReal x, dReal y, dReal z)
 set anchor
+ODE_API void dJointSetPRAxis1 (dJointID, dReal x, dReal y, dReal z)
 set the axis for the prismatic articulation
+ODE_API void dJointSetPRAxis2 (dJointID, dReal x, dReal y, dReal z)
 set the axis for the rotoide articulation
ODE_API void dJointSetPRParam (dJointID, int parameter, dReal value)
 set joint parameter
ODE_API void dJointAddPRTorque (dJointID j, dReal torque)
 Applies the torque about the rotoide axis of the PR joint.
+ODE_API void dJointSetFixed (dJointID)
 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.
ODE_API void dJointSetAMotorNumAxes (dJointID, int num)
 set the nr of axes
+ODE_API void dJointSetAMotorAxis (dJointID, int anum, int rel, dReal x, dReal y, dReal z)
 set axis
ODE_API void dJointSetAMotorAngle (dJointID, int anum, dReal angle)
 Tell the AMotor what the current angle is along axis anum.
+ODE_API void dJointSetAMotorParam (dJointID, int parameter, dReal value)
 set joint parameter
+ODE_API void dJointSetAMotorMode (dJointID, int mode)
 set mode
ODE_API void dJointAddAMotorTorques (dJointID, dReal torque1, dReal torque2, dReal torque3)
 Applies torque0 about the AMotor's axis 0, torque1 about the AMotor's axis 1, and torque2 about the AMotor's axis 2.
ODE_API void dJointSetLMotorNumAxes (dJointID, int num)
 Set the number of axes that will be controlled by the LMotor.
ODE_API void dJointSetLMotorAxis (dJointID, int anum, int rel, dReal x, dReal y, dReal z)
 Set the AMotor axes.
+ODE_API void dJointSetLMotorParam (dJointID, int parameter, dReal value)
 set joint parameter
+ODE_API void dJointSetPlane2DXParam (dJointID, int parameter, dReal value)
+ODE_API void dJointSetPlane2DYParam (dJointID, int parameter, dReal value)
+ODE_API void dJointSetPlane2DAngleParam (dJointID, int parameter, dReal value)
+ODE_API dReal dJointGetBallParam (dJointID, int parameter)
 get joint parameter
ODE_API void dJointGetHingeAnchor (dJointID, dVector3 result)
 Get the hinge anchor point, in world coordinates.
ODE_API void dJointGetHingeAnchor2 (dJointID, dVector3 result)
 Get the joint anchor point, in world coordinates.
+ODE_API void dJointGetHingeAxis (dJointID, dVector3 result)
 get axis
+ODE_API dReal dJointGetHingeParam (dJointID, int parameter)
 get joint parameter
ODE_API dReal dJointGetHingeAngle (dJointID)
 Get the hinge angle.
+ODE_API dReal dJointGetHingeAngleRate (dJointID)
 Get the hinge angle time derivative.
ODE_API dReal dJointGetSliderPosition (dJointID)
 Get the slider linear position (i.e. the slider's extension).
+ODE_API dReal dJointGetSliderPositionRate (dJointID)
 Get the slider linear position's time derivative.
+ODE_API void dJointGetSliderAxis (dJointID, dVector3 result)
 Get the slider axis.
+ODE_API dReal dJointGetSliderParam (dJointID, int parameter)
 get joint parameter
ODE_API void dJointGetHinge2Anchor (dJointID, dVector3 result)
 Get the joint anchor point, in world coordinates.
+ODE_API void dJointGetHinge2Anchor2 (dJointID, dVector3 result)
 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.
+ODE_API void dJointGetHinge2Axis1 (dJointID, dVector3 result)
 Get joint axis.
+ODE_API void dJointGetHinge2Axis2 (dJointID, dVector3 result)
 Get joint axis.
+ODE_API dReal dJointGetHinge2Param (dJointID, int parameter)
 get joint parameter
+ODE_API dReal dJointGetHinge2Angle1 (dJointID)
 Get angle.
+ODE_API dReal dJointGetHinge2Angle1Rate (dJointID)
 Get time derivative of angle.
+ODE_API dReal dJointGetHinge2Angle2Rate (dJointID)
 Get time derivative of angle.
ODE_API void dJointGetUniversalAnchor (dJointID, dVector3 result)
 Get the joint anchor point, in world coordinates.
ODE_API void dJointGetUniversalAnchor2 (dJointID, dVector3 result)
 Get the joint anchor point, in world coordinates.
+ODE_API void dJointGetUniversalAxis1 (dJointID, dVector3 result)
 Get axis.
+ODE_API void dJointGetUniversalAxis2 (dJointID, dVector3 result)
 Get axis.
+ODE_API dReal dJointGetUniversalParam (dJointID, int parameter)
 get joint parameter
ODE_API void dJointGetUniversalAngles (dJointID, dReal *angle1, dReal *angle2)
 Get both angles at the same time.
+ODE_API dReal dJointGetUniversalAngle1 (dJointID)
 Get angle.
+ODE_API dReal dJointGetUniversalAngle2 (dJointID)
 Get angle.
+ODE_API dReal dJointGetUniversalAngle1Rate (dJointID)
 Get time derivative of angle.
+ODE_API dReal dJointGetUniversalAngle2Rate (dJointID)
 Get time derivative of angle.
ODE_API void dJointGetPRAnchor (dJointID, dVector3 result)
 Get the joint anchor point, in world coordinates.
ODE_API dReal dJointGetPRPosition (dJointID)
 Get the PR linear position (i.e. the prismatic's extension).
+ODE_API dReal dJointGetPRPositionRate (dJointID)
 Get the PR linear position's time derivative.
+ODE_API void dJointGetPRAxis1 (dJointID, dVector3 result)
 Get the prismatic axis.
+ODE_API void dJointGetPRAxis2 (dJointID, dVector3 result)
 Get the Rotoide axis.
+ODE_API dReal dJointGetPRParam (dJointID, int parameter)
 get joint parameter
ODE_API int dJointGetAMotorNumAxes (dJointID)
 Get the number of angular axes that will be controlled by the AMotor.
ODE_API void dJointGetAMotorAxis (dJointID, int anum, dVector3 result)
 Get the AMotor axes.
ODE_API int dJointGetAMotorAxisRel (dJointID, int anum)
 Get axis.
ODE_API dReal dJointGetAMotorAngle (dJointID, int anum)
 Get the current angle for axis.
ODE_API dReal dJointGetAMotorAngleRate (dJointID, int anum)
 Get the current angle rate for axis anum.
+ODE_API dReal dJointGetAMotorParam (dJointID, int parameter)
 get joint parameter
ODE_API int dJointGetAMotorMode (dJointID)
 Get the angular motor mode.
+ODE_API int dJointGetLMotorNumAxes (dJointID)
 Get nr of axes.
+ODE_API void dJointGetLMotorAxis (dJointID, int anum, dVector3 result)
 Get axis.
+ODE_API dReal dJointGetLMotorParam (dJointID, int parameter)
 get joint parameter
+ODE_API dReal dJointGetFixedParam (dJointID, int parameter)
 get joint parameter
+ODE_API dJointID dConnectingJoint (dBodyID, dBodyID)
+ODE_API int dConnectingJointList (dBodyID, dBodyID, dJointID *)
ODE_API int dAreConnected (dBodyID, dBodyID)
 Utility function.
ODE_API int dAreConnectedExcluding (dBodyID body1, dBodyID body2, int joint_type)
 Utility function.
+

Detailed Description

+In real life a joint is something like a hinge, that is used to connect two objects. In ODE a joint is very similar: It is a relationship that is enforced between two bodies so that they can only have certain positions and orientations relative to each other. This relationship is called a constraint -- the words joint and constraint are often used interchangeably.

+A joint has a set of parameters that can be set. These include:

+

+If a particular parameter is not implemented by a given joint, setting it will have no effect. These parameter names can be optionally followed by a digit (2 or 3) to indicate the second or third set of parameters, e.g. for the second axis in a hinge-2 joint, or the third axis in an AMotor joint.

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
ODE_API int dAreConnected (dBodyID ,
dBodyID  
)
+
+
+ +

+Utility function. +

+

Returns:
1 if the two bodies are connected together by a joint, otherwise return 0.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API int dAreConnectedExcluding (dBodyID  body1,
dBodyID  body2,
int  joint_type 
)
+
+
+ +

+Utility function. +

+

Returns:
1 if the two bodies are connected together by a joint that does not have type
    +
  • {joint_type}, otherwise return 0.
  • +
+
+
Parameters:
+ + + + +
body1 A body to check.
body2 A body to check.
joint_type 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.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointAddAMotorTorques (dJointID ,
dReal  torque1,
dReal  torque2,
dReal  torque3 
)
+
+
+ +

+Applies torque0 about the AMotor's axis 0, torque1 about the AMotor's axis 1, and torque2 about the AMotor's axis 2. +

+

Remarks:
If the motor has fewer than three axes, the higher torques are ignored. This function is just a wrapper for dBodyAddTorque().
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointAddHinge2Torques (dJointID  joint,
dReal  torque1,
dReal  torque2 
)
+
+
+ +

+Applies torque1 about the hinge2's axis 1, torque2 about the hinge2's axis 2. +

+

Remarks:
This function is just a wrapper for dBodyAddTorque().
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointAddHingeTorque (dJointID  joint,
dReal  torque 
)
+
+
+ +

+Applies the torque about the hinge axis. +

+That is, it applies a torque with specified magnitude in the direction of the hinge axis, to body 1, and with the same magnitude but in opposite direction to body 2. This function is just a wrapper for dBodyAddTorque()} +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointAddPRTorque (dJointID  j,
dReal  torque 
)
+
+
+ +

+Applies the torque about the rotoide axis of the PR joint. +

+That is, it applies a torque with specified magnitude in the direction of the rotoide axis, to body 1, and with the same magnitude but in opposite direction to body 2. This function is just a wrapper for dBodyAddTorque()} +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointAddSliderForce (dJointID  joint,
dReal  force 
)
+
+
+ +

+Applies the given force in the slider's direction. +

+That is, it applies a force with specified magnitude, in the direction of slider's axis, to body1, and with the same magnitude but opposite direction to body2. This function is just a wrapper for dBodyAddForce(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointAddUniversalTorques (dJointID  joint,
dReal  torque1,
dReal  torque2 
)
+
+
+ +

+Applies torque1 about the universal's axis 1, torque2 about the universal's axis 2. +

+

Remarks:
This function is just a wrapper for dBodyAddTorque().
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointAttach (dJointID ,
dBodyID  body1,
dBodyID  body2 
)
+
+
+ +

+Attach the joint to some new bodies. +

+If the joint is already attached, it will be detached from the old bodies first. To attach this joint to only one body, set body1 or body2 to zero - a zero body refers to the static environment. Setting both bodies to zero puts the joint into "limbo", i.e. it will have no effect on the simulation.

Remarks:
Some joints, like hinge-2 need to be attached to two bodies to work.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreateAMotor (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the A-motor type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreateBall (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the ball type. +

+

Remarks:
The joint is initially in "limbo" (i.e. it has no effect on the simulation) because it does not connect to any bodies.
+
Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreateContact (dWorldID ,
dJointGroupID ,
const dContact *  
)
+
+
+ +

+Create a new joint of the contact type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreateFixed (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the fixed type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreateHinge (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the hinge type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreateHinge2 (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the hinge2 type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreateLMotor (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the L-motor type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreatePlane2D (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the plane-2d type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreatePR (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the PR (Prismatic and Rotoide) type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreateSlider (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the slider type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dJointID dJointCreateUniversal (dWorldID ,
dJointGroupID  
)
+
+
+ +

+Create a new joint of the universal type. +

+

Parameters:
+ + +
dJointGroupID set to 0 to allocate the joint normally. If it is nonzero the joint is allocated in the given joint group.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dJointDestroy (dJointID   ) 
+
+
+ +

+Destroy a joint. +

+disconnects it from its attached bodies and removing it from the world. However, if the joint is a member of a group then this function has no effect - to destroy that joint the group must be emptied or destroyed. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dReal dJointGetAMotorAngle (dJointID ,
int  anum 
)
+
+
+ +

+Get the current angle for axis. +

+

Remarks:
In dAMotorUser mode this is simply the value that was set with dJointSetAMotorAngle(). In dAMotorEuler mode this is the corresponding euler angle.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dReal dJointGetAMotorAngleRate (dJointID ,
int  anum 
)
+
+
+ +

+Get the current angle rate for axis anum. +

+

Remarks:
In dAMotorUser mode this is always zero, as not enough information is available. In dAMotorEuler mode this is the corresponding euler angle rate.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointGetAMotorAxis (dJointID ,
int  anum,
dVector3  result 
)
+
+
+ +

+Get the AMotor axes. +

+

Parameters:
+ + + +
anum selects the axis to change (0,1 or 2).
rel Each axis can have one of three ``relative orientation'' modes.
    +
  • 0: The axis is anchored to the global frame.
  • +
  • 1: The axis is anchored to the first body.
  • +
  • 2: The axis is anchored to the second body.
  • +
+
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API int dJointGetAMotorAxisRel (dJointID ,
int  anum 
)
+
+
+ +

+Get axis. +

+

Remarks:
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.
+For dAMotorEuler mode: + +
+

+ +

+
+ + + + + + + + + +
ODE_API int dJointGetAMotorMode (dJointID   ) 
+
+
+ +

+Get the angular motor mode. +

+

Parameters:
+ + +
mode must be one of the following constants:
    +
  • dAMotorUser The AMotor axes and joint angle settings are entirely controlled by the user. This is the default mode.
  • +
  • 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.
  • +
+
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dJointGetAMotorNumAxes (dJointID   ) 
+
+
+ +

+Get the number of angular axes that will be controlled by the AMotor. +

+

Parameters:
+ + +
num can range from 0 (which effectively deactivates the joint) to 3. This is automatically set to 3 in dAMotorEuler mode.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API dBodyID dJointGetBody (dJointID ,
int  index 
)
+
+
+ +

+Return the bodies that this joint connects. +

+

Parameters:
+ + +
index return the first (0) or second (1) body.
+
+
Remarks:
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.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointGetHinge2Anchor (dJointID ,
dVector3  result 
)
+
+
+ +

+Get the joint anchor point, in world coordinates. +

+

Returns:
the point on body 1. If the joint is perfectly satisfied, this will be the same as the point on body 2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointGetHingeAnchor (dJointID ,
dVector3  result 
)
+
+
+ +

+Get the hinge anchor point, in world coordinates. +

+This returns the point on body 1. If the joint is perfectly satisfied, this will be the same as the point on body 2. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointGetHingeAnchor2 (dJointID ,
dVector3  result 
)
+
+
+ +

+Get the joint anchor point, in world coordinates. +

+

Returns:
The point on body 2. If the joint is perfectly satisfied, this will return the same value as dJointGetHingeAnchor(). If not, this value will be slightly different. This can be used, for example, to see how far the joint has come apart.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dJointGetHingeAngle (dJointID   ) 
+
+
+ +

+Get the hinge angle. +

+The angle is measured between the two bodies, or between the body and the static environment. The angle will be between -pi..pi. When the hinge anchor or axis is set, the current position of the attached bodies is examined and that position will be the zero angle. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointGetPRAnchor (dJointID ,
dVector3  result 
)
+
+
+ +

+Get the joint anchor point, in world coordinates. +

+

Returns:
the point on body 1. If the joint is perfectly satisfied, this will be the same as the point on body 2.
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dJointGetPRPosition (dJointID   ) 
+
+
+ +

+Get the PR linear position (i.e. the prismatic's extension). +

+When the axis is set, the current position of the attached bodies is examined and that position will be the zero position.

+The position is the "oriented" length between the position = (Prismatic axis) dot_product [(body1 + offset) - (body2 + anchor2)] +

+

+ +

+
+ + + + + + + + + +
ODE_API dReal dJointGetSliderPosition (dJointID   ) 
+
+
+ +

+Get the slider linear position (i.e. the slider's extension). +

+When the axis is set, the current position of the attached bodies is examined and that position will be the zero position. +

+

+ +

+
+ + + + + + + + + +
ODE_API int dJointGetType (dJointID   ) 
+
+
+ +

+Get the type of the joint. +

+

Returns:
the type, being one of these:
    +
  • JointTypeBall
  • +
  • JointTypeHinge
  • +
  • JointTypeSlider
  • +
  • JointTypeContact
  • +
  • JointTypeUniversal
  • +
  • JointTypeHinge2
  • +
  • JointTypeFixed
  • +
  • JointTypeAMotor
  • +
  • JointTypeLMotor
  • +
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointGetUniversalAnchor (dJointID ,
dVector3  result 
)
+
+
+ +

+Get the joint anchor point, in world coordinates. +

+

Returns:
the point on body 1. If the joint is perfectly satisfied, this will be the same as the point on body 2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointGetUniversalAnchor2 (dJointID ,
dVector3  result 
)
+
+
+ +

+Get the joint anchor point, in world coordinates. +

+

Returns:
This returns the point on body 2.
+
Remarks:
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 dJointGetUniversalAnchor() to within roundoff errors. dJointGetUniversalAnchor2() can be used, along with dJointGetUniversalAnchor(), to see how far the joint has come apart.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointGetUniversalAngles (dJointID ,
dReal *  angle1,
dReal *  angle2 
)
+
+
+ +

+Get both angles at the same time. +

+

Parameters:
+ + + + +
joint The universal joint for which we want to calculate the angles
angle1 The angle between the body1 and the axis 1
angle2 The angle between the body2 and the axis 2
+
+
Note:
This function combine getUniversalAngle1 and getUniversalAngle2 together and try to avoid redundant calculation
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dJointGroupID dJointGroupCreate (int  max_size  ) 
+
+
+ +

+Create a joint group. +

+

Parameters:
+ + +
max_size deprecated. Set to 0.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dJointGroupDestroy (dJointGroupID   ) 
+
+
+ +

+Destroy a joint group. +

+All joints in the joint group will be destroyed. +

+

+ +

+
+ + + + + + + + + +
ODE_API void dJointGroupEmpty (dJointGroupID   ) 
+
+
+ +

+Empty a joint group. +

+All joints in the joint group will be destroyed, but the joint group itself will not be destroyed. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointSetAMotorAngle (dJointID ,
int  anum,
dReal  angle 
)
+
+
+ +

+Tell the AMotor what the current angle is along axis anum. +

+This function should only be called in dAMotorUser mode, because in this mode the AMotor has no other way of knowing the joint angles. The angle information is needed if stops have been set along the axis, but it is not needed for axis motors. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointSetAMotorNumAxes (dJointID ,
int  num 
)
+
+
+ +

+set the nr of axes +

+

Parameters:
+ + +
num 0..3
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointSetBallAnchor (dJointID ,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Set the joint anchor point. +

+The joint will try to keep this point on each body together. The input is specified in world coordinates. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointSetFeedback (dJointID ,
dJointFeedback *  
)
+
+
+ +

+Sets the datastructure that is to receive the feedback. +

+The feedback can be used by the user, so that it is known how much force an individual joint exerts. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointSetLMotorAxis (dJointID ,
int  anum,
int  rel,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Set the AMotor axes. +

+

Parameters:
+ + + +
anum selects the axis to change (0,1 or 2).
rel Each axis can have one of three ``relative orientation'' modes
    +
  • 0: The axis is anchored to the global frame.
  • +
  • 1: The axis is anchored to the first body.
  • +
  • 2: The axis is anchored to the second body.
  • +
+
+
+
Remarks:
The axis vector is always specified in global coordinates regardless of the setting of rel.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dJointSetLMotorNumAxes (dJointID ,
int  num 
)
+
+
+ +

+Set the number of axes that will be controlled by the LMotor. +

+

Parameters:
+ + +
num can range from 0 (which effectively deactivates the joint) to 3.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dJointSetPRParam (dJointID ,
int  parameter,
dReal  value 
)
+
+
+ +

+set joint parameter +

+

Note:
parameterX where X equal 2 refer to parameter for the rotoide articulation
+ +
+

+


Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: World + + + + +
+ +
+

World

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

ODE_API dWorldID dWorldCreate (void)
 Create a new, empty world and return its ID number.
ODE_API void dWorldDestroy (dWorldID world)
 Destroy a world and everything in it.
ODE_API void dWorldSetGravity (dWorldID, dReal x, dReal y, dReal z)
 Set the world's global gravity vector.
+ODE_API void dWorldGetGravity (dWorldID, dVector3 gravity)
 Get the gravity vector for a given world.
ODE_API void dWorldSetERP (dWorldID, dReal erp)
 Set the global ERP value, that controls how much error correction is performed in each time step.
ODE_API dReal dWorldGetERP (dWorldID)
 Get the error reduction parameter.
ODE_API void dWorldSetCFM (dWorldID, dReal cfm)
 Set the global CFM (constraint force mixing) value.
ODE_API dReal dWorldGetCFM (dWorldID)
 Get the constraint force mixing value.
ODE_API void dWorldStep (dWorldID, dReal stepsize)
 Step the world.
ODE_API void dWorldImpulseToForce (dWorldID, dReal stepsize, dReal ix, dReal iy, dReal iz, dVector3 force)
 Converts an impulse to a force.
ODE_API void dWorldQuickStep (dWorldID w, dReal stepsize)
 Step the world.
ODE_API void dWorldSetQuickStepNumIterations (dWorldID, int num)
 Set the number of iterations that the QuickStep method performs per step.
ODE_API int dWorldGetQuickStepNumIterations (dWorldID)
 Get the number of iterations that the QuickStep method performs per step.
ODE_API void dWorldSetQuickStepW (dWorldID, dReal over_relaxation)
 Set the SOR over-relaxation parameter.
ODE_API dReal dWorldGetQuickStepW (dWorldID)
 Get the SOR over-relaxation parameter.
ODE_API void dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel)
 Set the maximum correcting velocity that contacts are allowed to generate.
+ODE_API dReal dWorldGetContactMaxCorrectingVel (dWorldID)
 Get the maximum correcting velocity that contacts are allowed to generated.
ODE_API void dWorldSetContactSurfaceLayer (dWorldID, dReal depth)
 Set the depth of the surface layer around all geometry objects.
ODE_API dReal dWorldGetContactSurfaceLayer (dWorldID)
 Get the depth of the surface layer around all geometry objects.
ODE_API void dWorldStepFast1 (dWorldID, dReal stepsize, int maxiterations)
 Step the world using the StepFast1 algorithm.
+

Detailed Description

+The 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.

+All 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.


Function Documentation

+ +
+
+ + + + + + + + + +
ODE_API dWorldID dWorldCreate (void   ) 
+
+
+ +

+Create a new, empty world and return its ID number. +

+

Returns:
an identifier
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API void dWorldDestroy (dWorldID  world  ) 
+
+
+ +

+Destroy a world and everything in it. +

+This 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, dJointGroupEmpty().

+

Parameters:
+ + +
world the identifier for the world the be destroyed.
+
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dWorldGetCFM (dWorldID   ) 
+
+
+ +

+Get the constraint force mixing value. +

+

Returns:
CFM value
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dWorldGetContactSurfaceLayer (dWorldID   ) 
+
+
+ +

+Get the depth of the surface layer around all geometry objects. +

+

Returns:
the depth
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dWorldGetERP (dWorldID   ) 
+
+
+ +

+Get the error reduction parameter. +

+

Returns:
ERP value
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API int dWorldGetQuickStepNumIterations (dWorldID   ) 
+
+
+ +

+Get the number of iterations that the QuickStep method performs per step. +

+

Returns:
nr of iterations
+ +
+

+ +

+
+ + + + + + + + + +
ODE_API dReal dWorldGetQuickStepW (dWorldID   ) 
+
+
+ +

+Get the SOR over-relaxation parameter. +

+

Returns:
the over-relaxation setting
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dWorldImpulseToForce (dWorldID ,
dReal  stepsize,
dReal  ix,
dReal  iy,
dReal  iz,
dVector3  force 
)
+
+
+ +

+Converts an impulse to a force. +

+

Remarks:
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.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldQuickStep (dWorldID  w,
dReal  stepsize 
)
+
+
+ +

+Step the world. +

+

Remarks:
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 dWorldStep(), but it is less accurate.

+QuickStep 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.

+There are ways to help overcome QuickStep's inaccuracy problems:

    +
  • Increase CFM.
  • +
  • Reduce the number of contacts in your system (e.g. use the minimum number of contacts for the feet of a robot or creature).
  • +
  • Don't use excessive friction in the contacts.
  • +
  • Use contact slip if appropriate
  • +
  • Avoid kinematic loops (however, kinematic loops are inevitable in legged creatures).
  • +
  • Don't use excessive motor strength. force-based motors instead of velocity-based motors.
  • +
+Increasing 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.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetCFM (dWorldID ,
dReal  cfm 
)
+
+
+ +

+Set the global CFM (constraint force mixing) value. +

+

Parameters:
+ + +
cfm 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.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetContactMaxCorrectingVel (dWorldID ,
dReal  vel 
)
+
+
+ +

+Set the maximum correcting velocity that contacts are allowed to generate. +

+

Parameters:
+ + +
vel The default value is infinity (i.e. no limit).
+
+
Remarks:
Reducing this value can help prevent "popping" of deeply embedded objects.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetContactSurfaceLayer (dWorldID ,
dReal  depth 
)
+
+
+ +

+Set the depth of the surface layer around all geometry objects. +

+

Remarks:
Contacts are allowed to sink into the surface layer up to the given depth before coming to rest.
+
Parameters:
+ + +
depth The default value is zero.
+
+
Remarks:
Increasing this to some small value (e.g. 0.001) can help prevent jittering problems due to contacts being repeatedly made and broken.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetERP (dWorldID ,
dReal  erp 
)
+
+
+ +

+Set the global ERP value, that controls how much error correction is performed in each time step. +

+

Parameters:
+ + + +
dWorldID the identifier of the world.
erp Typical values are in the range 0.1--0.8. The default is 0.2.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetGravity (dWorldID ,
dReal  x,
dReal  y,
dReal  z 
)
+
+
+ +

+Set the world's global gravity vector. +

+The 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). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetQuickStepNumIterations (dWorldID ,
int  num 
)
+
+
+ +

+Set the number of iterations that the QuickStep method performs per step. +

+

Remarks:
More iterations will give a more accurate solution, but will take longer to compute.
+
Parameters:
+ + +
num The default is 20 iterations.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldSetQuickStepW (dWorldID ,
dReal  over_relaxation 
)
+
+
+ +

+Set the SOR over-relaxation parameter. +

+

Parameters:
+ + +
over_relaxation value to use by SOR
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ODE_API void dWorldStep (dWorldID ,
dReal  stepsize 
)
+
+
+ +

+Step the world. +

+This 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.

+

Parameters:
+ + +
stepsize The number of seconds that the simulation has to advance.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ODE_API void dWorldStepFast1 (dWorldID ,
dReal  stepsize,
int  maxiterations 
)
+
+
+ +

+Step the world using the StepFast1 algorithm. +

+

Parameters:
+ + + +
stepsize the nr of seconds to advance the simulation.
maxiterations The number of iterations to perform.
+
+ +
+

+


Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Open Dynamics Engine API Reference + + + + +
+ +
+

Open Dynamics Engine API Reference

+

+

This document is © Russell Smith and the ODE Project

+The Open Dynamics Engine (ODE) is a free, industrial quality library for simulating articulated rigid body dynamics. ODE is being developed by Russell Smith with help from several contributors.

+This document describes the library API. For a more general introduction to ODE, please see the Online Handbook.

+

Important: this document is not yet complete!

+

+We are still working on getting the full API documentated. In the meantime, please refer to the Online Handbook


Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: mass.h Source File + + + + +
+ +
+

mass.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_MASS_H_
+00024 #define _ODE_MASS_H_
+00025 
+00026 #include <ode/common.h>
+00027 
+00028 #ifdef __cplusplus
+00029 extern "C" {
+00030 #endif
+00031 
+00032 struct dMass;
+00033 typedef struct dMass dMass;
+00034 
+00043 ODE_API int dMassCheck(const dMass *m);
+00044 
+00045 ODE_API void dMassSetZero (dMass *);
+00046 
+00047 ODE_API void dMassSetParameters (dMass *, dReal themass,
+00048           dReal cgx, dReal cgy, dReal cgz,
+00049           dReal I11, dReal I22, dReal I33,
+00050           dReal I12, dReal I13, dReal I23);
+00051 
+00052 ODE_API void dMassSetSphere (dMass *, dReal density, dReal radius);
+00053 ODE_API void dMassSetSphereTotal (dMass *, dReal total_mass, dReal radius);
+00054 
+00055 ODE_API void dMassSetCapsule (dMass *, dReal density, int direction,
+00056          dReal radius, dReal length);
+00057 ODE_API void dMassSetCapsuleTotal (dMass *, dReal total_mass, int direction,
+00058          dReal radius, dReal length);
+00059 
+00060 ODE_API void dMassSetCylinder (dMass *, dReal density, int direction,
+00061              dReal radius, dReal length);
+00062 ODE_API void dMassSetCylinderTotal (dMass *, dReal total_mass, int direction,
+00063              dReal radius, dReal length);
+00064 
+00065 ODE_API void dMassSetBox (dMass *, dReal density,
+00066         dReal lx, dReal ly, dReal lz);
+00067 ODE_API void dMassSetBoxTotal (dMass *, dReal total_mass,
+00068              dReal lx, dReal ly, dReal lz);
+00069 
+00070 ODE_API void dMassSetTrimesh (dMass *, dReal density, dGeomID g);
+00071 
+00072 ODE_API void dMassSetTrimeshTotal (dMass *m, dReal total_mass, dGeomID g);
+00073 
+00074 ODE_API void dMassAdjust (dMass *, dReal newmass);
+00075 
+00076 ODE_API void dMassTranslate (dMass *, dReal x, dReal y, dReal z);
+00077 
+00078 ODE_API void dMassRotate (dMass *, const dMatrix3 R);
+00079 
+00080 ODE_API void dMassAdd (dMass *a, const dMass *b);
+00081 
+00082 // Backwards compatible API
+00083 #define dMassSetCappedCylinder dMassSetCapsule
+00084 #define dMassSetCappedCylinderTotal dMassSetCapsuleTotal
+00085 
+00086 
+00087 struct dMass {
+00088   dReal mass;
+00089   dVector4 c;
+00090   dMatrix3 I;
+00091 
+00092 #ifdef __cplusplus
+00093   dMass()
+00094     { dMassSetZero (this); }
+00095   void setZero()
+00096     { dMassSetZero (this); }
+00097   void setParameters (dReal themass, dReal cgx, dReal cgy, dReal cgz,
+00098             dReal I11, dReal I22, dReal I33,
+00099             dReal I12, dReal I13, dReal I23)
+00100     { dMassSetParameters (this,themass,cgx,cgy,cgz,I11,I22,I33,I12,I13,I23); }
+00101   void setSphere (dReal density, dReal radius)
+00102     { dMassSetSphere (this,density,radius); }
+00103   void setCapsule (dReal density, int direction, dReal a, dReal b)
+00104     { dMassSetCappedCylinder (this,density,direction,a,b); }
+00105   void setCappedCylinder (dReal density, int direction, dReal a, dReal b)
+00106     { setCapsule(density, direction, a, b); }
+00107   void setBox (dReal density, dReal lx, dReal ly, dReal lz)
+00108     { dMassSetBox (this,density,lx,ly,lz); }
+00109   void adjust (dReal newmass)
+00110     { dMassAdjust (this,newmass); }
+00111   void translate (dReal x, dReal y, dReal z)
+00112     { dMassTranslate (this,x,y,z); }
+00113   void rotate (const dMatrix3 R)
+00114     { dMassRotate (this,R); }
+00115   void add (const dMass *b)
+00116     { dMassAdd (this,b); }
+00117 #endif
+00118 };
+00119 
+00120 
+00121 #ifdef __cplusplus
+00122 }
+00123 #endif
+00124 
+00125 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: matrix.h Source File + + + + +
+ +
+

matrix.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 /* optimized and unoptimized vector and matrix functions */
+00024 
+00025 #ifndef _ODE_MATRIX_H_
+00026 #define _ODE_MATRIX_H_
+00027 
+00028 #include <ode/common.h>
+00029 
+00030 
+00031 #ifdef __cplusplus
+00032 extern "C" {
+00033 #endif
+00034 
+00035 
+00036 /* set a vector/matrix of size n to all zeros, or to a specific value. */
+00037 
+00038 ODE_API void dSetZero (dReal *a, int n);
+00039 ODE_API void dSetValue (dReal *a, int n, dReal value);
+00040 
+00041 
+00042 /* get the dot product of two n*1 vectors. if n <= 0 then
+00043  * zero will be returned (in which case a and b need not be valid).
+00044  */
+00045 
+00046 ODE_API dReal dDot (const dReal *a, const dReal *b, int n);
+00047 
+00048 
+00049 /* get the dot products of (a0,b), (a1,b), etc and return them in outsum.
+00050  * all vectors are n*1. if n <= 0 then zeroes will be returned (in which case
+00051  * the input vectors need not be valid). this function is somewhat faster
+00052  * than calling dDot() for all of the combinations separately.
+00053  */
+00054 
+00055 /* NOT INCLUDED in the library for now.
+00056 void dMultidot2 (const dReal *a0, const dReal *a1,
+00057        const dReal *b, dReal *outsum, int n);
+00058 */
+00059 
+00060 
+00061 /* matrix multiplication. all matrices are stored in standard row format.
+00062  * the digit refers to the argument that is transposed:
+00063  *   0:   A = B  * C   (sizes: A:p*r B:p*q C:q*r)
+00064  *   1:   A = B' * C   (sizes: A:p*r B:q*p C:q*r)
+00065  *   2:   A = B  * C'  (sizes: A:p*r B:p*q C:r*q)
+00066  * case 1,2 are equivalent to saying that the operation is A=B*C but
+00067  * B or C are stored in standard column format.
+00068  */
+00069 
+00070 ODE_API void dMultiply0 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
+00071 ODE_API void dMultiply1 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
+00072 ODE_API void dMultiply2 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
+00073 
+00074 
+00075 /* do an in-place cholesky decomposition on the lower triangle of the n*n
+00076  * symmetric matrix A (which is stored by rows). the resulting lower triangle
+00077  * will be such that L*L'=A. return 1 on success and 0 on failure (on failure
+00078  * the matrix is not positive definite).
+00079  */
+00080 
+00081 ODE_API int dFactorCholesky (dReal *A, int n);
+00082 
+00083 
+00084 /* solve for x: L*L'*x = b, and put the result back into x.
+00085  * L is size n*n, b is size n*1. only the lower triangle of L is considered.
+00086  */
+00087 
+00088 ODE_API void dSolveCholesky (const dReal *L, dReal *b, int n);
+00089 
+00090 
+00091 /* compute the inverse of the n*n positive definite matrix A and put it in
+00092  * Ainv. this is not especially fast. this returns 1 on success (A was
+00093  * positive definite) or 0 on failure (not PD).
+00094  */
+00095 
+00096 ODE_API int dInvertPDMatrix (const dReal *A, dReal *Ainv, int n);
+00097 
+00098 
+00099 /* check whether an n*n matrix A is positive definite, return 1/0 (yes/no).
+00100  * positive definite means that x'*A*x > 0 for any x. this performs a
+00101  * cholesky decomposition of A. if the decomposition fails then the matrix
+00102  * is not positive definite. A is stored by rows. A is not altered.
+00103  */
+00104 
+00105 ODE_API int dIsPositiveDefinite (const dReal *A, int n);
+00106 
+00107 
+00108 /* factorize a matrix A into L*D*L', where L is lower triangular with ones on
+00109  * the diagonal, and D is diagonal.
+00110  * A is an n*n matrix stored by rows, with a leading dimension of n rounded
+00111  * up to 4. L is written into the strict lower triangle of A (the ones are not
+00112  * written) and the reciprocal of the diagonal elements of D are written into
+00113  * d.
+00114  */
+00115 ODE_API void dFactorLDLT (dReal *A, dReal *d, int n, int nskip);
+00116 
+00117 
+00118 /* solve L*x=b, where L is n*n lower triangular with ones on the diagonal,
+00119  * and x,b are n*1. b is overwritten with x.
+00120  * the leading dimension of L is `nskip'.
+00121  */
+00122 ODE_API void dSolveL1 (const dReal *L, dReal *b, int n, int nskip);
+00123 
+00124 
+00125 /* solve L'*x=b, where L is n*n lower triangular with ones on the diagonal,
+00126  * and x,b are n*1. b is overwritten with x.
+00127  * the leading dimension of L is `nskip'.
+00128  */
+00129 ODE_API void dSolveL1T (const dReal *L, dReal *b, int n, int nskip);
+00130 
+00131 
+00132 /* in matlab syntax: a(1:n) = a(1:n) .* d(1:n) */
+00133 
+00134 ODE_API void dVectorScale (dReal *a, const dReal *d, int n);
+00135 
+00136 
+00137 /* given `L', a n*n lower triangular matrix with ones on the diagonal,
+00138  * and `d', a n*1 vector of the reciprocal diagonal elements of an n*n matrix
+00139  * D, solve L*D*L'*x=b where x,b are n*1. x overwrites b.
+00140  * the leading dimension of L is `nskip'.
+00141  */
+00142 
+00143 ODE_API void dSolveLDLT (const dReal *L, const dReal *d, dReal *b, int n, int nskip);
+00144 
+00145 
+00146 /* given an L*D*L' factorization of an n*n matrix A, return the updated
+00147  * factorization L2*D2*L2' of A plus the following "top left" matrix:
+00148  *
+00149  *    [ b a' ]     <-- b is a[0]
+00150  *    [ a 0  ]     <-- a is a[1..n-1]
+00151  *
+00152  *   - L has size n*n, its leading dimension is nskip. L is lower triangular
+00153  *     with ones on the diagonal. only the lower triangle of L is referenced.
+00154  *   - d has size n. d contains the reciprocal diagonal elements of D.
+00155  *   - a has size n.
+00156  * the result is written into L, except that the left column of L and d[0]
+00157  * are not actually modified. see ldltaddTL.m for further comments. 
+00158  */
+00159 ODE_API void dLDLTAddTL (dReal *L, dReal *d, const dReal *a, int n, int nskip);
+00160 
+00161 
+00162 /* given an L*D*L' factorization of a permuted matrix A, produce a new
+00163  * factorization for row and column `r' removed.
+00164  *   - A has size n1*n1, its leading dimension in nskip. A is symmetric and
+00165  *     positive definite. only the lower triangle of A is referenced.
+00166  *     A itself may actually be an array of row pointers.
+00167  *   - L has size n2*n2, its leading dimension in nskip. L is lower triangular
+00168  *     with ones on the diagonal. only the lower triangle of L is referenced.
+00169  *   - d has size n2. d contains the reciprocal diagonal elements of D.
+00170  *   - p is a permutation vector. it contains n2 indexes into A. each index
+00171  *     must be in the range 0..n1-1.
+00172  *   - r is the row/column of L to remove.
+00173  * the new L will be written within the old L, i.e. will have the same leading
+00174  * dimension. the last row and column of L, and the last element of d, are
+00175  * undefined on exit.
+00176  *
+00177  * a fast O(n^2) algorithm is used. see ldltremove.m for further comments.
+00178  */
+00179 ODE_API void dLDLTRemove (dReal **A, const int *p, dReal *L, dReal *d,
+00180         int n1, int n2, int r, int nskip);
+00181 
+00182 
+00183 /* given an n*n matrix A (with leading dimension nskip), remove the r'th row
+00184  * and column by moving elements. the new matrix will have the same leading
+00185  * dimension. the last row and column of A are untouched on exit.
+00186  */
+00187 ODE_API void dRemoveRowCol (dReal *A, int n, int nskip, int r);
+00188 
+00189 
+00190 #ifdef __cplusplus
+00191 }
+00192 #endif
+00193 
+00194 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: memory.h Source File + + + + +
+ +
+

memory.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 /* this comes from the `reuse' library. copy any changes back to the source */
+00024 
+00025 #ifndef _ODE_MEMORY_H_
+00026 #define _ODE_MEMORY_H_
+00027 
+00028 #include "ode/config.h"
+00029 
+00030 #ifdef __cplusplus
+00031 extern "C" {
+00032 #endif
+00033 
+00034 /* function types to allocate and free memory */
+00035 typedef void * dAllocFunction (size_t size);
+00036 typedef void * dReallocFunction (void *ptr, size_t oldsize, size_t newsize);
+00037 typedef void dFreeFunction (void *ptr, size_t size);
+00038 
+00039 /* set new memory management functions. if fn is 0, the default handlers are
+00040  * used. */
+00041 ODE_API void dSetAllocHandler (dAllocFunction *fn);
+00042 ODE_API void dSetReallocHandler (dReallocFunction *fn);
+00043 ODE_API void dSetFreeHandler (dFreeFunction *fn);
+00044 
+00045 /* get current memory management functions */
+00046 ODE_API dAllocFunction *dGetAllocHandler (void);
+00047 ODE_API dReallocFunction *dGetReallocHandler (void);
+00048 ODE_API dFreeFunction *dGetFreeHandler (void);
+00049 
+00050 /* allocate and free memory. */
+00051 ODE_API void * dAlloc (size_t size);
+00052 ODE_API void * dRealloc (void *ptr, size_t oldsize, size_t newsize);
+00053 ODE_API void dFree (void *ptr, size_t size);
+00054 
+00055 #ifdef __cplusplus
+00056 }
+00057 #endif
+00058 
+00059 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: misc.h Source File + + + + +
+ +
+

misc.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 /* miscellaneous math functions. these are mostly useful for testing */
+00024 
+00025 #ifndef _ODE_MISC_H_
+00026 #define _ODE_MISC_H_
+00027 
+00028 #include <ode/common.h>
+00029 
+00030 
+00031 #ifdef __cplusplus
+00032 extern "C" {
+00033 #endif
+00034 
+00035 
+00036 /* return 1 if the random number generator is working. */
+00037 ODE_API int dTestRand(void);
+00038 
+00039 /* return next 32 bit random number. this uses a not-very-random linear
+00040  * congruential method.
+00041  */
+00042 ODE_API unsigned long dRand(void);
+00043 
+00044 /* get and set the current random number seed. */
+00045 ODE_API unsigned long  dRandGetSeed(void);
+00046 ODE_API void dRandSetSeed (unsigned long s);
+00047 
+00048 /* return a random integer between 0..n-1. the distribution will get worse
+00049  * as n approaches 2^32.
+00050  */
+00051 ODE_API int dRandInt (int n);
+00052 
+00053 /* return a random real number between 0..1 */
+00054 ODE_API dReal dRandReal(void);
+00055 
+00056 /* print out a matrix */
+00057 #ifdef __cplusplus
+00058 ODE_API void dPrintMatrix (const dReal *A, int n, int m, char *fmt = "%10.4f ",
+00059          FILE *f=stdout);
+00060 #else
+00061 ODE_API void dPrintMatrix (const dReal *A, int n, int m, char *fmt, FILE *f);
+00062 #endif
+00063 
+00064 /* make a random vector with entries between +/- range. A has n elements. */
+00065 ODE_API void dMakeRandomVector (dReal *A, int n, dReal range);
+00066 
+00067 /* make a random matrix with entries between +/- range. A has size n*m. */
+00068 ODE_API void dMakeRandomMatrix (dReal *A, int n, int m, dReal range);
+00069 
+00070 /* clear the upper triangle of a square matrix */
+00071 ODE_API void dClearUpperTriangle (dReal *A, int n);
+00072 
+00073 /* return the maximum element difference between the two n*m matrices */
+00074 ODE_API dReal dMaxDifference (const dReal *A, const dReal *B, int n, int m);
+00075 
+00076 /* return the maximum element difference between the lower triangle of two
+00077  * n*n matrices */
+00078 ODE_API dReal dMaxDifferenceLowerTriangle (const dReal *A, const dReal *B, int n);
+00079 
+00080 
+00081 #ifdef __cplusplus
+00082 }
+00083 #endif
+00084 
+00085 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: Module Index + + + + +
+ +
+

Open Dynamics Engine Modules

Here is a list of all modules: +
Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: objects.h Source File + + + + +
+ +
+

objects.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_OBJECTS_H_
+00024 #define _ODE_OBJECTS_H_
+00025 
+00026 #include <ode/common.h>
+00027 #include <ode/mass.h>
+00028 #include <ode/contact.h>
+00029 
+00030 #ifdef __cplusplus
+00031 extern "C" {
+00032 #endif
+00033 
+00052 ODE_API dWorldID dWorldCreate(void);
+00053 
+00054 
+00064 ODE_API void dWorldDestroy (dWorldID world);
+00065 
+00066 
+00075 ODE_API void dWorldSetGravity (dWorldID, dReal x, dReal y, dReal z);
+00076 
+00077 
+00082 ODE_API void dWorldGetGravity (dWorldID, dVector3 gravity);
+00083 
+00084 
+00092 ODE_API void dWorldSetERP (dWorldID, dReal erp);
+00093 
+00099 ODE_API dReal dWorldGetERP (dWorldID);
+00100 
+00101 
+00109 ODE_API void dWorldSetCFM (dWorldID, dReal cfm);
+00110 
+00116 ODE_API dReal dWorldGetCFM (dWorldID);
+00117 
+00118 
+00129 ODE_API void dWorldStep (dWorldID, dReal stepsize);
+00130 
+00131 
+00146 ODE_API void dWorldImpulseToForce
+00147 (
+00148   dWorldID, dReal stepsize,
+00149   dReal ix, dReal iy, dReal iz, dVector3 force
+00150 );
+00151 
+00152 
+00184 ODE_API void dWorldQuickStep (dWorldID w, dReal stepsize);
+00185 
+00186 
+00196 ODE_API void dWorldSetQuickStepNumIterations (dWorldID, int num);
+00197 
+00198 
+00205 ODE_API int dWorldGetQuickStepNumIterations (dWorldID);
+00206 
+00212 ODE_API void dWorldSetQuickStepW (dWorldID, dReal over_relaxation);
+00213 
+00219 ODE_API dReal dWorldGetQuickStepW (dWorldID);
+00220 
+00221 /* World contact parameter functions */
+00222 
+00231 ODE_API void dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel);
+00232 
+00238 ODE_API dReal dWorldGetContactMaxCorrectingVel (dWorldID);
+00239 
+00251 ODE_API void dWorldSetContactSurfaceLayer (dWorldID, dReal depth);
+00252 
+00258 ODE_API dReal dWorldGetContactSurfaceLayer (dWorldID);
+00259 
+00260 /* StepFast1 functions */
+00261 
+00268 ODE_API void dWorldStepFast1(dWorldID, dReal stepsize, int maxiterations);
+00269 
+00270 
+00306 ODE_API void dWorldSetAutoEnableDepthSF1(dWorldID, int autoEnableDepth);
+00307 
+00312 ODE_API int dWorldGetAutoEnableDepthSF1(dWorldID);
+00313 
+00319 ODE_API dReal dWorldGetAutoDisableLinearThreshold (dWorldID);
+00320 
+00326 ODE_API void  dWorldSetAutoDisableLinearThreshold (dWorldID, dReal linear_threshold);
+00327 
+00333 ODE_API dReal dWorldGetAutoDisableAngularThreshold (dWorldID);
+00334 
+00340 ODE_API void dWorldSetAutoDisableAngularThreshold (dWorldID, dReal angular_threshold);
+00341 
+00347 ODE_API dReal dWorldGetAutoDisableLinearAverageThreshold (dWorldID);
+00348 
+00354 ODE_API void  dWorldSetAutoDisableLinearAverageThreshold (dWorldID, dReal linear_average_threshold);
+00355 
+00361 ODE_API dReal dWorldGetAutoDisableAngularAverageThreshold (dWorldID);
+00362 
+00368 ODE_API void dWorldSetAutoDisableAngularAverageThreshold (dWorldID, dReal angular_average_threshold);
+00369 
+00375 ODE_API int dWorldGetAutoDisableAverageSamplesCount (dWorldID);
+00376 
+00383 ODE_API void dWorldSetAutoDisableAverageSamplesCount (dWorldID, unsigned int average_samples_count );
+00384 
+00390 ODE_API int dWorldGetAutoDisableSteps (dWorldID);
+00391 
+00397 ODE_API void dWorldSetAutoDisableSteps (dWorldID, int steps);
+00398 
+00404 ODE_API dReal dWorldGetAutoDisableTime (dWorldID);
+00405 
+00411 ODE_API void dWorldSetAutoDisableTime (dWorldID, dReal time);
+00412 
+00418 ODE_API int dWorldGetAutoDisableFlag (dWorldID);
+00419 
+00425 ODE_API void dWorldSetAutoDisableFlag (dWorldID, int do_auto_disable);
+00426 
+00427 
+00428 
+00468 ODE_API dReal dBodyGetAutoDisableLinearThreshold (dBodyID);
+00469 
+00475 ODE_API void  dBodySetAutoDisableLinearThreshold (dBodyID, dReal linear_average_threshold);
+00476 
+00482 ODE_API dReal dBodyGetAutoDisableAngularThreshold (dBodyID);
+00483 
+00489 ODE_API void  dBodySetAutoDisableAngularThreshold (dBodyID, dReal angular_average_threshold);
+00490 
+00496 ODE_API int dBodyGetAutoDisableAverageSamplesCount (dBodyID);
+00497 
+00503 ODE_API void dBodySetAutoDisableAverageSamplesCount (dBodyID, unsigned int average_samples_count);
+00504 
+00505 
+00511 ODE_API int dBodyGetAutoDisableSteps (dBodyID);
+00512 
+00518 ODE_API void dBodySetAutoDisableSteps (dBodyID, int steps);
+00519 
+00525 ODE_API dReal dBodyGetAutoDisableTime (dBodyID);
+00526 
+00532 ODE_API void  dBodySetAutoDisableTime (dBodyID, dReal time);
+00533 
+00539 ODE_API int dBodyGetAutoDisableFlag (dBodyID);
+00540 
+00546 ODE_API void dBodySetAutoDisableFlag (dBodyID, int do_auto_disable);
+00547 
+00554 ODE_API void  dBodySetAutoDisableDefaults (dBodyID);
+00555 
+00556 
+00563 ODE_API dWorldID dBodyGetWorld (dBodyID);
+00564 
+00571 ODE_API dBodyID dBodyCreate (dWorldID);
+00572 
+00581 ODE_API void dBodyDestroy (dBodyID);
+00582 
+00588 ODE_API void  dBodySetData (dBodyID, void *data);
+00589 
+00595 ODE_API void *dBodyGetData (dBodyID);
+00596 
+00605 ODE_API void dBodySetPosition   (dBodyID, dReal x, dReal y, dReal z);
+00606 
+00615 ODE_API void dBodySetRotation   (dBodyID, const dMatrix3 R);
+00616 
+00625 ODE_API void dBodySetQuaternion (dBodyID, const dQuaternion q);
+00626 
+00631 ODE_API void dBodySetLinearVel  (dBodyID, dReal x, dReal y, dReal z);
+00632 
+00637 ODE_API void dBodySetAngularVel (dBodyID, dReal x, dReal y, dReal z);
+00638 
+00648 ODE_API const dReal * dBodyGetPosition   (dBodyID);
+00649 
+00650 
+00658 ODE_API void dBodyCopyPosition (dBodyID body, dVector3 pos);
+00659 
+00660 
+00666 ODE_API const dReal * dBodyGetRotation   (dBodyID);
+00667 
+00668 
+00676 ODE_API void dBodyCopyRotation (dBodyID, dMatrix3 R);
+00677 
+00678 
+00684 ODE_API const dReal * dBodyGetQuaternion (dBodyID);
+00685 
+00686 
+00694 ODE_API void dBodyCopyQuaternion(dBodyID body, dQuaternion quat);
+00695 
+00696 
+00701 ODE_API const dReal * dBodyGetLinearVel  (dBodyID);
+00702 
+00707 ODE_API const dReal * dBodyGetAngularVel (dBodyID);
+00708 
+00713 ODE_API void dBodySetMass (dBodyID, const dMass *mass);
+00714 
+00719 ODE_API void dBodyGetMass (dBodyID, dMass *mass);
+00720 
+00725 ODE_API void dBodyAddForce            (dBodyID, dReal fx, dReal fy, dReal fz);
+00726 
+00731 ODE_API void dBodyAddTorque           (dBodyID, dReal fx, dReal fy, dReal fz);
+00732 
+00737 ODE_API void dBodyAddRelForce         (dBodyID, dReal fx, dReal fy, dReal fz);
+00738 
+00743 ODE_API void dBodyAddRelTorque        (dBodyID, dReal fx, dReal fy, dReal fz);
+00744 
+00749 ODE_API void dBodyAddForceAtPos       (dBodyID, dReal fx, dReal fy, dReal fz,
+00750                          dReal px, dReal py, dReal pz);
+00755 ODE_API void dBodyAddForceAtRelPos    (dBodyID, dReal fx, dReal fy, dReal fz,
+00756                          dReal px, dReal py, dReal pz);
+00761 ODE_API void dBodyAddRelForceAtPos    (dBodyID, dReal fx, dReal fy, dReal fz,
+00762                          dReal px, dReal py, dReal pz);
+00767 ODE_API void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz,
+00768                          dReal px, dReal py, dReal pz);
+00769 
+00779 ODE_API const dReal * dBodyGetForce   (dBodyID);
+00780 
+00790 ODE_API const dReal * dBodyGetTorque  (dBodyID);
+00791 
+00800 ODE_API void dBodySetForce  (dBodyID b, dReal x, dReal y, dReal z);
+00801 
+00810 ODE_API void dBodySetTorque (dBodyID b, dReal x, dReal y, dReal z);
+00811 
+00817 ODE_API void dBodyGetRelPointPos
+00818 (
+00819   dBodyID, dReal px, dReal py, dReal pz,
+00820   dVector3 result
+00821 );
+00822 
+00828 ODE_API void dBodyGetRelPointVel
+00829 (
+00830   dBodyID, dReal px, dReal py, dReal pz,
+00831   dVector3 result
+00832 );
+00833 
+00840 ODE_API void dBodyGetPointVel
+00841 (
+00842   dBodyID, dReal px, dReal py, dReal pz,
+00843   dVector3 result
+00844 );
+00845 
+00854 ODE_API void dBodyGetPosRelPoint
+00855 (
+00856   dBodyID, dReal px, dReal py, dReal pz,
+00857   dVector3 result
+00858 );
+00859 
+00865 ODE_API void dBodyVectorToWorld
+00866 (
+00867   dBodyID, dReal px, dReal py, dReal pz,
+00868   dVector3 result
+00869 );
+00870 
+00876 ODE_API void dBodyVectorFromWorld
+00877 (
+00878   dBodyID, dReal px, dReal py, dReal pz,
+00879   dVector3 result
+00880 );
+00881 
+00899 ODE_API void dBodySetFiniteRotationMode (dBodyID, int mode);
+00900 
+00917 ODE_API void dBodySetFiniteRotationAxis (dBodyID, dReal x, dReal y, dReal z);
+00918 
+00924 ODE_API int dBodyGetFiniteRotationMode (dBodyID);
+00925 
+00931 ODE_API void dBodyGetFiniteRotationAxis (dBodyID, dVector3 result);
+00932 
+00938 ODE_API int dBodyGetNumJoints (dBodyID b);
+00939 
+00946 ODE_API dJointID dBodyGetJoint (dBodyID, int index);
+00947 
+00953 ODE_API void dBodyEnable (dBodyID);
+00954 
+00962 ODE_API void dBodyDisable (dBodyID);
+00963 
+00969 ODE_API int dBodyIsEnabled (dBodyID);
+00970 
+00978 ODE_API void dBodySetGravityMode (dBodyID b, int mode);
+00979 
+00985 ODE_API int dBodyGetGravityMode (dBodyID b);
+00986 
+00987 
+00988 
+01064 ODE_API dJointID dJointCreateBall (dWorldID, dJointGroupID);
+01065 
+01072 ODE_API dJointID dJointCreateHinge (dWorldID, dJointGroupID);
+01073 
+01080 ODE_API dJointID dJointCreateSlider (dWorldID, dJointGroupID);
+01081 
+01088 ODE_API dJointID dJointCreateContact (dWorldID, dJointGroupID, const dContact *);
+01089 
+01096 ODE_API dJointID dJointCreateHinge2 (dWorldID, dJointGroupID);
+01097 
+01104 ODE_API dJointID dJointCreateUniversal (dWorldID, dJointGroupID);
+01105 
+01112 ODE_API dJointID dJointCreatePR (dWorldID, dJointGroupID);
+01113 
+01120 ODE_API dJointID dJointCreateFixed (dWorldID, dJointGroupID);
+01121 
+01122 ODE_API dJointID dJointCreateNull (dWorldID, dJointGroupID);
+01123 
+01130 ODE_API dJointID dJointCreateAMotor (dWorldID, dJointGroupID);
+01131 
+01138 ODE_API dJointID dJointCreateLMotor (dWorldID, dJointGroupID);
+01139 
+01146 ODE_API dJointID dJointCreatePlane2D (dWorldID, dJointGroupID);
+01147 
+01156 ODE_API void dJointDestroy (dJointID);
+01157 
+01158 
+01164 ODE_API dJointGroupID dJointGroupCreate (int max_size);
+01165 
+01172 ODE_API void dJointGroupDestroy (dJointGroupID);
+01173 
+01181 ODE_API void dJointGroupEmpty (dJointGroupID);
+01182 
+01196 ODE_API void dJointAttach (dJointID, dBodyID body1, dBodyID body2);
+01197 
+01202 ODE_API void dJointSetData (dJointID, void *data);
+01203 
+01208 ODE_API void *dJointGetData (dJointID);
+01209 
+01224 ODE_API int dJointGetType (dJointID);
+01225 
+01236 ODE_API dBodyID dJointGetBody (dJointID, int index);
+01237 
+01245 ODE_API void dJointSetFeedback (dJointID, dJointFeedback *);
+01246 
+01251 ODE_API dJointFeedback *dJointGetFeedback (dJointID);
+01252 
+01260 ODE_API void dJointSetBallAnchor (dJointID, dReal x, dReal y, dReal z);
+01261 
+01266 ODE_API void dJointSetBallAnchor2 (dJointID, dReal x, dReal y, dReal z);
+01267 
+01272 ODE_API void dJointSetBallParam (dJointID, int parameter, dReal value);
+01273 
+01278 ODE_API void dJointSetHingeAnchor (dJointID, dReal x, dReal y, dReal z);
+01279 
+01280 ODE_API void dJointSetHingeAnchorDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
+01281 
+01286 ODE_API void dJointSetHingeAxis (dJointID, dReal x, dReal y, dReal z);
+01287 
+01292 ODE_API void dJointSetHingeParam (dJointID, int parameter, dReal value);
+01293 
+01302 ODE_API void dJointAddHingeTorque(dJointID joint, dReal torque);
+01303 
+01308 ODE_API void dJointSetSliderAxis (dJointID, dReal x, dReal y, dReal z);
+01309 
+01313 ODE_API void dJointSetSliderAxisDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
+01314 
+01319 ODE_API void dJointSetSliderParam (dJointID, int parameter, dReal value);
+01320 
+01329 ODE_API void dJointAddSliderForce(dJointID joint, dReal force);
+01330 
+01335 ODE_API void dJointSetHinge2Anchor (dJointID, dReal x, dReal y, dReal z);
+01336 
+01341 ODE_API void dJointSetHinge2Axis1 (dJointID, dReal x, dReal y, dReal z);
+01342 
+01347 ODE_API void dJointSetHinge2Axis2 (dJointID, dReal x, dReal y, dReal z);
+01348 
+01353 ODE_API void dJointSetHinge2Param (dJointID, int parameter, dReal value);
+01354 
+01361 ODE_API void dJointAddHinge2Torques(dJointID joint, dReal torque1, dReal torque2);
+01362 
+01367 ODE_API void dJointSetUniversalAnchor (dJointID, dReal x, dReal y, dReal z);
+01368 
+01373 ODE_API void dJointSetUniversalAxis1 (dJointID, dReal x, dReal y, dReal z);
+01374 
+01379 ODE_API void dJointSetUniversalAxis2 (dJointID, dReal x, dReal y, dReal z);
+01380 
+01385 ODE_API void dJointSetUniversalParam (dJointID, int parameter, dReal value);
+01386 
+01393 ODE_API void dJointAddUniversalTorques(dJointID joint, dReal torque1, dReal torque2);
+01394 
+01395 
+01400 ODE_API void dJointSetPRAnchor (dJointID, dReal x, dReal y, dReal z);
+01401 
+01406 ODE_API void dJointSetPRAxis1 (dJointID, dReal x, dReal y, dReal z);
+01407 
+01412 ODE_API void dJointSetPRAxis2 (dJointID, dReal x, dReal y, dReal z);
+01413 
+01420 ODE_API void dJointSetPRParam (dJointID, int parameter, dReal value);
+01421 
+01430 ODE_API void dJointAddPRTorque (dJointID j, dReal torque);
+01431 
+01432 
+01439 ODE_API void dJointSetFixed (dJointID);
+01440 
+01441 /*
+01442  * @brief Sets joint parameter
+01443  *
+01444  * @ingroup joints
+01445  */
+01446 ODE_API void dJointSetFixedParam (dJointID, int parameter, dReal value);
+01447 
+01453 ODE_API void dJointSetAMotorNumAxes (dJointID, int num);
+01454 
+01459 ODE_API void dJointSetAMotorAxis (dJointID, int anum, int rel,
+01460            dReal x, dReal y, dReal z);
+01461 
+01471 ODE_API void dJointSetAMotorAngle (dJointID, int anum, dReal angle);
+01472 
+01477 ODE_API void dJointSetAMotorParam (dJointID, int parameter, dReal value);
+01478 
+01483 ODE_API void dJointSetAMotorMode (dJointID, int mode);
+01484 
+01493 ODE_API void dJointAddAMotorTorques (dJointID, dReal torque1, dReal torque2, dReal torque3);
+01494 
+01500 ODE_API void dJointSetLMotorNumAxes (dJointID, int num);
+01501 
+01513 ODE_API void dJointSetLMotorAxis (dJointID, int anum, int rel, dReal x, dReal y, dReal z);
+01514 
+01519 ODE_API void dJointSetLMotorParam (dJointID, int parameter, dReal value);
+01520 
+01524 ODE_API void dJointSetPlane2DXParam (dJointID, int parameter, dReal value);
+01525 
+01530 ODE_API void dJointSetPlane2DYParam (dJointID, int parameter, dReal value);
+01531 
+01535 ODE_API void dJointSetPlane2DAngleParam (dJointID, int parameter, dReal value);
+01536 
+01543 ODE_API void dJointGetBallAnchor (dJointID, dVector3 result);
+01544 
+01555 ODE_API void dJointGetBallAnchor2 (dJointID, dVector3 result);
+01556 
+01561 ODE_API dReal dJointGetBallParam (dJointID, int parameter);
+01562 
+01570 ODE_API void dJointGetHingeAnchor (dJointID, dVector3 result);
+01571 
+01580 ODE_API void dJointGetHingeAnchor2 (dJointID, dVector3 result);
+01581 
+01586 ODE_API void dJointGetHingeAxis (dJointID, dVector3 result);
+01587 
+01592 ODE_API dReal dJointGetHingeParam (dJointID, int parameter);
+01593 
+01604 ODE_API dReal dJointGetHingeAngle (dJointID);
+01605 
+01610 ODE_API dReal dJointGetHingeAngleRate (dJointID);
+01611 
+01619 ODE_API dReal dJointGetSliderPosition (dJointID);
+01620 
+01625 ODE_API dReal dJointGetSliderPositionRate (dJointID);
+01626 
+01631 ODE_API void dJointGetSliderAxis (dJointID, dVector3 result);
+01632 
+01637 ODE_API dReal dJointGetSliderParam (dJointID, int parameter);
+01638 
+01645 ODE_API void dJointGetHinge2Anchor (dJointID, dVector3 result);
+01646 
+01655 ODE_API void dJointGetHinge2Anchor2 (dJointID, dVector3 result);
+01656 
+01661 ODE_API void dJointGetHinge2Axis1 (dJointID, dVector3 result);
+01662 
+01667 ODE_API void dJointGetHinge2Axis2 (dJointID, dVector3 result);
+01668 
+01673 ODE_API dReal dJointGetHinge2Param (dJointID, int parameter);
+01674 
+01679 ODE_API dReal dJointGetHinge2Angle1 (dJointID);
+01680 
+01685 ODE_API dReal dJointGetHinge2Angle1Rate (dJointID);
+01686 
+01691 ODE_API dReal dJointGetHinge2Angle2Rate (dJointID);
+01692 
+01699 ODE_API void dJointGetUniversalAnchor (dJointID, dVector3 result);
+01700 
+01714 ODE_API void dJointGetUniversalAnchor2 (dJointID, dVector3 result);
+01715 
+01720 ODE_API void dJointGetUniversalAxis1 (dJointID, dVector3 result);
+01721 
+01726 ODE_API void dJointGetUniversalAxis2 (dJointID, dVector3 result);
+01727 
+01728 
+01733 ODE_API dReal dJointGetUniversalParam (dJointID, int parameter);
+01734 
+01746 ODE_API void dJointGetUniversalAngles (dJointID, dReal *angle1, dReal *angle2);
+01747 
+01752 ODE_API dReal dJointGetUniversalAngle1 (dJointID);
+01753 
+01758 ODE_API dReal dJointGetUniversalAngle2 (dJointID);
+01759 
+01764 ODE_API dReal dJointGetUniversalAngle1Rate (dJointID);
+01765 
+01770 ODE_API dReal dJointGetUniversalAngle2Rate (dJointID);
+01771 
+01772 
+01773 
+01780 ODE_API void dJointGetPRAnchor (dJointID, dVector3 result);
+01781 
+01793 ODE_API dReal dJointGetPRPosition (dJointID);
+01794 
+01800 ODE_API dReal dJointGetPRPositionRate (dJointID);
+01801 
+01802 
+01807 ODE_API void dJointGetPRAxis1 (dJointID, dVector3 result);
+01808 
+01813 ODE_API void dJointGetPRAxis2 (dJointID, dVector3 result);
+01814 
+01819 ODE_API dReal dJointGetPRParam (dJointID, int parameter);
+01820 
+01821 
+01822 
+01831 ODE_API int dJointGetAMotorNumAxes (dJointID);
+01832 
+01842 ODE_API void dJointGetAMotorAxis (dJointID, int anum, dVector3 result);
+01843 
+01860 ODE_API int dJointGetAMotorAxisRel (dJointID, int anum);
+01861 
+01870 ODE_API dReal dJointGetAMotorAngle (dJointID, int anum);
+01871 
+01880 ODE_API dReal dJointGetAMotorAngleRate (dJointID, int anum);
+01881 
+01886 ODE_API dReal dJointGetAMotorParam (dJointID, int parameter);
+01887 
+01901 ODE_API int dJointGetAMotorMode (dJointID);
+01902 
+01907 ODE_API int dJointGetLMotorNumAxes (dJointID);
+01908 
+01913 ODE_API void dJointGetLMotorAxis (dJointID, int anum, dVector3 result);
+01914 
+01919 ODE_API dReal dJointGetLMotorParam (dJointID, int parameter);
+01920 
+01925 ODE_API dReal dJointGetFixedParam (dJointID, int parameter);
+01926 
+01927 
+01931 ODE_API dJointID dConnectingJoint (dBodyID, dBodyID);
+01932 
+01936 ODE_API int dConnectingJointList (dBodyID, dBodyID, dJointID*);
+01937 
+01944 ODE_API int dAreConnected (dBodyID, dBodyID);
+01945 
+01959 ODE_API int dAreConnectedExcluding (dBodyID body1, dBodyID body2, int joint_type);
+01960 
+01961 
+01962 #ifdef __cplusplus
+01963 }
+01964 #endif
+01965 
+01966 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: ode.h Source File + + + + +
+ +
+

ode.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_ODE_H_
+00024 #define _ODE_ODE_H_
+00025 
+00026 /* include *everything* here */
+00027 
+00028 #include <ode/config.h>
+00029 #include <ode/compatibility.h>
+00030 #include <ode/common.h>
+00031 #include <ode/contact.h>
+00032 #include <ode/error.h>
+00033 #include <ode/memory.h>
+00034 #include <ode/odemath.h>
+00035 #include <ode/matrix.h>
+00036 #include <ode/timer.h>
+00037 #include <ode/rotation.h>
+00038 #include <ode/mass.h>
+00039 #include <ode/misc.h>
+00040 #include <ode/objects.h>
+00041 #include <ode/odecpp.h>
+00042 #include <ode/collision_space.h>
+00043 #include <ode/collision.h>
+00044 #include <ode/odecpp_collision.h>
+00045 #include <ode/export-dif.h>
+00046 
+00047 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: odecpp.h Source File + + + + +
+ +
+

odecpp.h

00001 /*************************************************************************
+00002  *                          *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.    *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org    *
+00005  *                          *
+00006  * This library is free software; you can redistribute it and/or   *
+00007  * modify it under the terms of EITHER:             *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *  Software Foundation; either version 2.1 of the License, or (at  *
+00010  *  your option) any later version. The text of the GNU Lesser  *
+00011  *  General Public License is included with this library in the    *
+00012  *  file LICENSE.TXT.                   *
+00013  *   (2) The BSD-style license that is included with this library in  *
+00014  *  the file LICENSE-BSD.TXT.              *
+00015  *                          *
+00016  * This library is distributed in the hope that it will be useful,    *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of  *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.         *
+00020  *                          *
+00021  *************************************************************************/
+00022 
+00023 /* C++ interface for non-collision stuff */
+00024 
+00025 
+00026 #ifndef _ODE_ODECPP_H_
+00027 #define _ODE_ODECPP_H_
+00028 #ifdef __cplusplus
+00029 
+00030 #include <ode/error.h>
+00031 
+00032 
+00033 class dWorld {
+00034   dWorldID _id;
+00035 
+00036   // intentionally undefined, don't use these
+00037   dWorld (const dWorld &);
+00038   void operator= (const dWorld &);
+00039 
+00040 public:
+00041   dWorld()
+00042     { _id = dWorldCreate(); }
+00043   ~dWorld()
+00044     { dWorldDestroy (_id); }
+00045 
+00046   dWorldID id() const
+00047     { return _id; }
+00048   operator dWorldID() const
+00049     { return _id; }
+00050 
+00051   void setGravity (dReal x, dReal y, dReal z)
+00052     { dWorldSetGravity (_id,x,y,z); }
+00053   void getGravity (dVector3 g) const
+00054     { dWorldGetGravity (_id,g); }
+00055 
+00056   void setERP (dReal erp)
+00057     { dWorldSetERP(_id, erp); }
+00058   dReal getERP() const
+00059     { return dWorldGetERP(_id); }
+00060 
+00061   void setCFM (dReal cfm)
+00062     { dWorldSetCFM(_id, cfm); }
+00063   dReal getCFM() const
+00064     { return dWorldGetCFM(_id); }
+00065 
+00066   void step (dReal stepsize)
+00067     { dWorldStep (_id,stepsize); }
+00068 
+00069   void stepFast1 (dReal stepsize, int maxiterations)
+00070     { dWorldStepFast1 (_id,stepsize,maxiterations); }
+00071   void setAutoEnableDepthSF1(dWorldID, int depth)
+00072     { dWorldSetAutoEnableDepthSF1 (_id, depth); }
+00073   int getAutoEnableDepthSF1(dWorldID)
+00074     { return dWorldGetAutoEnableDepthSF1 (_id); }
+00075 
+00076   void  setAutoDisableLinearThreshold (dReal threshold) 
+00077     { dWorldSetAutoDisableLinearThreshold (_id,threshold); }
+00078   dReal getAutoDisableLinearThreshold()
+00079     { return dWorldGetAutoDisableLinearThreshold (_id); }
+00080   void setAutoDisableAngularThreshold (dReal threshold)
+00081     { dWorldSetAutoDisableAngularThreshold (_id,threshold); }
+00082   dReal getAutoDisableAngularThreshold()
+00083     { return dWorldGetAutoDisableAngularThreshold (_id); }
+00084   void setAutoDisableSteps (int steps)
+00085     { dWorldSetAutoDisableSteps (_id,steps); }
+00086   int getAutoDisableSteps()
+00087     { return dWorldGetAutoDisableSteps (_id); }
+00088   void setAutoDisableTime (dReal time)
+00089     { dWorldSetAutoDisableTime (_id,time); }
+00090   dReal getAutoDisableTime()
+00091     { return dWorldGetAutoDisableTime (_id); }
+00092   void setAutoDisableFlag (int do_auto_disable)
+00093     { dWorldSetAutoDisableFlag (_id,do_auto_disable); }
+00094   int getAutoDisableFlag()
+00095     { return dWorldGetAutoDisableFlag (_id); }
+00096 
+00097   void impulseToForce (dReal stepsize, dReal ix, dReal iy, dReal iz,
+00098              dVector3 force)
+00099     { dWorldImpulseToForce (_id,stepsize,ix,iy,iz,force); }
+00100 };
+00101 
+00102 
+00103 class dBody {
+00104   dBodyID _id;
+00105 
+00106   // intentionally undefined, don't use these
+00107   dBody (const dBody &);
+00108   void operator= (const dBody &);
+00109 
+00110 public:
+00111   dBody()
+00112     { _id = 0; }
+00113   dBody (dWorldID world)
+00114     { _id = dBodyCreate (world); }
+00115   ~dBody()
+00116     { if (_id) dBodyDestroy (_id); }
+00117 
+00118   void create (dWorldID world) {
+00119     if (_id) dBodyDestroy (_id);
+00120     _id = dBodyCreate (world);
+00121   }
+00122 
+00123   dBodyID id() const
+00124     { return _id; }
+00125   operator dBodyID() const
+00126     { return _id; }
+00127 
+00128   void setData (void *data)
+00129     { dBodySetData (_id,data); }
+00130   void *getData() const
+00131     { return dBodyGetData (_id); }
+00132 
+00133   void setPosition (dReal x, dReal y, dReal z)
+00134     { dBodySetPosition (_id,x,y,z); }
+00135   void setRotation (const dMatrix3 R)
+00136     { dBodySetRotation (_id,R); }
+00137   void setQuaternion (const dQuaternion q)
+00138     { dBodySetQuaternion (_id,q); }
+00139   void setLinearVel  (dReal x, dReal y, dReal z)
+00140     { dBodySetLinearVel (_id,x,y,z); }
+00141   void setAngularVel (dReal x, dReal y, dReal z)
+00142     { dBodySetAngularVel (_id,x,y,z); }
+00143 
+00144   const dReal * getPosition() const
+00145     { return dBodyGetPosition (_id); }
+00146   const dReal * getRotation() const
+00147     { return dBodyGetRotation (_id); }
+00148   const dReal * getQuaternion() const
+00149     { return dBodyGetQuaternion (_id); }
+00150   const dReal * getLinearVel() const
+00151     { return dBodyGetLinearVel (_id); }
+00152   const dReal * getAngularVel() const
+00153     { return dBodyGetAngularVel (_id); }
+00154 
+00155   void setMass (const dMass *mass)
+00156     { dBodySetMass (_id,mass); }
+00157   void getMass (dMass *mass) const
+00158     { dBodyGetMass (_id,mass); }
+00159 
+00160   void addForce (dReal fx, dReal fy, dReal fz)
+00161     { dBodyAddForce (_id, fx, fy, fz); }
+00162   void addTorque (dReal fx, dReal fy, dReal fz)
+00163     { dBodyAddTorque (_id, fx, fy, fz); }
+00164   void addRelForce (dReal fx, dReal fy, dReal fz)
+00165     { dBodyAddRelForce (_id, fx, fy, fz); }
+00166   void addRelTorque (dReal fx, dReal fy, dReal fz)
+00167     { dBodyAddRelTorque (_id, fx, fy, fz); }
+00168   void addForceAtPos (dReal fx, dReal fy, dReal fz,
+00169             dReal px, dReal py, dReal pz)
+00170     { dBodyAddForceAtPos (_id, fx, fy, fz, px, py, pz); }
+00171   void addForceAtRelPos (dReal fx, dReal fy, dReal fz,
+00172             dReal px, dReal py, dReal pz)
+00173     { dBodyAddForceAtRelPos (_id, fx, fy, fz, px, py, pz); }
+00174   void addRelForceAtPos (dReal fx, dReal fy, dReal fz,
+00175           dReal px, dReal py, dReal pz)
+00176     { dBodyAddRelForceAtPos (_id, fx, fy, fz, px, py, pz); }
+00177   void addRelForceAtRelPos (dReal fx, dReal fy, dReal fz,
+00178              dReal px, dReal py, dReal pz)
+00179     { dBodyAddRelForceAtRelPos (_id, fx, fy, fz, px, py, pz); }
+00180 
+00181   const dReal * getForce() const
+00182     { return dBodyGetForce(_id); }
+00183   const dReal * getTorque() const
+00184     { return dBodyGetTorque(_id); }
+00185   void setForce (dReal x, dReal y, dReal z)
+00186     { dBodySetForce (_id,x,y,z); }
+00187   void setTorque (dReal x, dReal y, dReal z)
+00188     { dBodySetTorque (_id,x,y,z); }
+00189 
+00190   void enable()
+00191     { dBodyEnable (_id); }
+00192   void disable()
+00193     { dBodyDisable (_id); }
+00194   int isEnabled() const
+00195     { return dBodyIsEnabled (_id); }
+00196 
+00197   void getRelPointPos (dReal px, dReal py, dReal pz, dVector3 result) const
+00198     { dBodyGetRelPointPos (_id, px, py, pz, result); }
+00199   void getRelPointVel (dReal px, dReal py, dReal pz, dVector3 result) const
+00200     { dBodyGetRelPointVel (_id, px, py, pz, result); }
+00201   void getPointVel (dReal px, dReal py, dReal pz, dVector3 result) const
+00202     { dBodyGetPointVel (_id,px,py,pz,result); }
+00203   void getPosRelPoint (dReal px, dReal py, dReal pz, dVector3 result) const
+00204     { dBodyGetPosRelPoint (_id,px,py,pz,result); }
+00205   void vectorToWorld (dReal px, dReal py, dReal pz, dVector3 result) const
+00206     { dBodyVectorToWorld (_id,px,py,pz,result); }
+00207   void vectorFromWorld (dReal px, dReal py, dReal pz, dVector3 result) const
+00208     { dBodyVectorFromWorld (_id,px,py,pz,result); }
+00209 
+00210   void setFiniteRotationMode (int mode)
+00211     { dBodySetFiniteRotationMode (_id, mode); }
+00212   void setFiniteRotationAxis (dReal x, dReal y, dReal z)
+00213     { dBodySetFiniteRotationAxis (_id, x, y, z); }
+00214 
+00215   int getFiniteRotationMode() const
+00216     { return dBodyGetFiniteRotationMode (_id); }
+00217   void getFiniteRotationAxis (dVector3 result) const
+00218     { dBodyGetFiniteRotationAxis (_id, result); }
+00219 
+00220   int getNumJoints() const
+00221     { return dBodyGetNumJoints (_id); }
+00222   dJointID getJoint (int index) const
+00223     { return dBodyGetJoint (_id, index); }
+00224 
+00225   void setGravityMode (int mode)
+00226     { dBodySetGravityMode (_id,mode); }
+00227   int getGravityMode() const
+00228     { return dBodyGetGravityMode (_id); }
+00229 
+00230   int isConnectedTo (dBodyID body) const
+00231     { return dAreConnected (_id, body); }
+00232 
+00233   void  setAutoDisableLinearThreshold (dReal threshold) 
+00234     { dBodySetAutoDisableLinearThreshold (_id,threshold); }
+00235   dReal getAutoDisableLinearThreshold()
+00236     { return dBodyGetAutoDisableLinearThreshold (_id); }
+00237   void setAutoDisableAngularThreshold (dReal threshold)
+00238     { dBodySetAutoDisableAngularThreshold (_id,threshold); }
+00239   dReal getAutoDisableAngularThreshold()
+00240     { return dBodyGetAutoDisableAngularThreshold (_id); }
+00241   void setAutoDisableSteps (int steps)
+00242     { dBodySetAutoDisableSteps (_id,steps); }
+00243   int getAutoDisableSteps()
+00244     { return dBodyGetAutoDisableSteps (_id); }
+00245   void setAutoDisableTime (dReal time)
+00246     { dBodySetAutoDisableTime (_id,time); }
+00247   dReal getAutoDisableTime()
+00248     { return dBodyGetAutoDisableTime (_id); }
+00249   void setAutoDisableFlag (int do_auto_disable)
+00250     { dBodySetAutoDisableFlag (_id,do_auto_disable); }
+00251   int getAutoDisableFlag()
+00252     { return dBodyGetAutoDisableFlag (_id); }
+00253 };
+00254 
+00255 
+00256 class dJointGroup {
+00257   dJointGroupID _id;
+00258 
+00259   // intentionally undefined, don't use these
+00260   dJointGroup (const dJointGroup &);
+00261   void operator= (const dJointGroup &);
+00262 
+00263 public:
+00264   dJointGroup (int dummy_arg=0)
+00265     { _id = dJointGroupCreate (0); }
+00266   ~dJointGroup()
+00267     { dJointGroupDestroy (_id); }
+00268   void create (int dummy_arg=0) {
+00269     if (_id) dJointGroupDestroy (_id);
+00270     _id = dJointGroupCreate (0);
+00271   }
+00272 
+00273   dJointGroupID id() const
+00274     { return _id; }
+00275   operator dJointGroupID() const
+00276     { return _id; }
+00277 
+00278   void empty()
+00279     { dJointGroupEmpty (_id); }
+00280 };
+00281 
+00282 
+00283 class dJoint {
+00284 private:
+00285   // intentionally undefined, don't use these
+00286   dJoint (const dJoint &) ;
+00287   void operator= (const dJoint &);
+00288 
+00289 protected:
+00290   dJointID _id;
+00291 
+00292 public:
+00293   dJoint()
+00294     { _id = 0; }
+00295   ~dJoint()
+00296     { if (_id) dJointDestroy (_id); }
+00297 
+00298   dJointID id() const
+00299     { return _id; }
+00300   operator dJointID() const
+00301     { return _id; }
+00302 
+00303   void attach (dBodyID body1, dBodyID body2)
+00304     { dJointAttach (_id, body1, body2); }
+00305 
+00306   void setData (void *data)
+00307     { dJointSetData (_id, data); }
+00308   void *getData() const
+00309     { return dJointGetData (_id); }
+00310 
+00311   int getType() const
+00312     { return dJointGetType (_id); }
+00313 
+00314   dBodyID getBody (int index) const
+00315     { return dJointGetBody (_id, index); }
+00316 
+00317   void setFeedback(dJointFeedback *fb)
+00318     { dJointSetFeedback(_id, fb); }
+00319   dJointFeedback *getFeedback() const
+00320     { return dJointGetFeedback(_id); }
+00321 };
+00322 
+00323 
+00324 class dBallJoint : public dJoint {
+00325 private:
+00326   // intentionally undefined, don't use these
+00327   dBallJoint (const dBallJoint &);
+00328   void operator= (const dBallJoint &);
+00329 
+00330 public:
+00331   dBallJoint() { }
+00332   dBallJoint (dWorldID world, dJointGroupID group=0)
+00333     { _id = dJointCreateBall (world, group); }
+00334 
+00335   void create (dWorldID world, dJointGroupID group=0) {
+00336     if (_id) dJointDestroy (_id);
+00337     _id = dJointCreateBall (world, group);
+00338   }
+00339 
+00340   void setAnchor (dReal x, dReal y, dReal z)
+00341     { dJointSetBallAnchor (_id, x, y, z); }
+00342   void getAnchor (dVector3 result) const
+00343     { dJointGetBallAnchor (_id, result); }
+00344   void getAnchor2 (dVector3 result) const
+00345     { dJointGetBallAnchor2 (_id, result); }
+00346   void setParam (int parameter, dReal value)
+00347     { dJointSetBallParam (_id, parameter, value); }
+00348   dReal getParam (int parameter) const
+00349     { return dJointGetBallParam (_id, parameter); }
+00350 } ;
+00351 
+00352 
+00353 class dHingeJoint : public dJoint {
+00354   // intentionally undefined, don't use these
+00355   dHingeJoint (const dHingeJoint &);
+00356   void operator = (const dHingeJoint &);
+00357 
+00358 public:
+00359   dHingeJoint() { }
+00360   dHingeJoint (dWorldID world, dJointGroupID group=0)
+00361     { _id = dJointCreateHinge (world, group); }
+00362 
+00363   void create (dWorldID world, dJointGroupID group=0) {
+00364     if (_id) dJointDestroy (_id);
+00365     _id = dJointCreateHinge (world, group);
+00366   }
+00367 
+00368   void setAnchor (dReal x, dReal y, dReal z)
+00369     { dJointSetHingeAnchor (_id, x, y, z); }
+00370   void getAnchor (dVector3 result) const
+00371     { dJointGetHingeAnchor (_id, result); }
+00372   void getAnchor2 (dVector3 result) const
+00373     { dJointGetHingeAnchor2 (_id, result); }
+00374 
+00375   void setAxis (dReal x, dReal y, dReal z)
+00376     { dJointSetHingeAxis (_id, x, y, z); }
+00377   void getAxis (dVector3 result) const
+00378     { dJointGetHingeAxis (_id, result); }
+00379 
+00380   dReal getAngle() const
+00381     { return dJointGetHingeAngle (_id); }
+00382   dReal getAngleRate() const
+00383     { return dJointGetHingeAngleRate (_id); }
+00384 
+00385   void setParam (int parameter, dReal value)
+00386     { dJointSetHingeParam (_id, parameter, value); }
+00387   dReal getParam (int parameter) const
+00388     { return dJointGetHingeParam (_id, parameter); }
+00389 
+00390   void addTorque (dReal torque)
+00391    { dJointAddHingeTorque(_id, torque); }
+00392 };
+00393 
+00394 
+00395 class dSliderJoint : public dJoint {
+00396   // intentionally undefined, don't use these
+00397   dSliderJoint (const dSliderJoint &);
+00398   void operator = (const dSliderJoint &);
+00399 
+00400 public:
+00401   dSliderJoint() { }
+00402   dSliderJoint (dWorldID world, dJointGroupID group=0)
+00403     { _id = dJointCreateSlider (world, group); }
+00404 
+00405   void create (dWorldID world, dJointGroupID group=0) {
+00406     if (_id) dJointDestroy (_id);
+00407     _id = dJointCreateSlider (world, group);
+00408   }
+00409 
+00410   void setAxis (dReal x, dReal y, dReal z)
+00411     { dJointSetSliderAxis (_id, x, y, z); }
+00412   void getAxis (dVector3 result) const
+00413     { dJointGetSliderAxis (_id, result); }
+00414 
+00415   dReal getPosition() const
+00416     { return dJointGetSliderPosition (_id); }
+00417   dReal getPositionRate() const
+00418     { return dJointGetSliderPositionRate (_id); }
+00419 
+00420   void setParam (int parameter, dReal value)
+00421     { dJointSetSliderParam (_id, parameter, value); }
+00422   dReal getParam (int parameter) const
+00423     { return dJointGetSliderParam (_id, parameter); }
+00424 
+00425   void addForce (dReal force)
+00426    { dJointAddSliderForce(_id, force); }
+00427 };
+00428 
+00429 
+00430 class dUniversalJoint : public dJoint {
+00431   // intentionally undefined, don't use these
+00432   dUniversalJoint (const dUniversalJoint &);
+00433   void operator = (const dUniversalJoint &);
+00434 
+00435 public:
+00436   dUniversalJoint() { }
+00437   dUniversalJoint (dWorldID world, dJointGroupID group=0)
+00438     { _id = dJointCreateUniversal (world, group); }
+00439 
+00440   void create (dWorldID world, dJointGroupID group=0) {
+00441     if (_id) dJointDestroy (_id);
+00442     _id = dJointCreateUniversal (world, group);
+00443   }
+00444 
+00445   void setAnchor (dReal x, dReal y, dReal z)
+00446     { dJointSetUniversalAnchor (_id, x, y, z); }
+00447   void setAxis1 (dReal x, dReal y, dReal z)
+00448     { dJointSetUniversalAxis1 (_id, x, y, z); }
+00449   void setAxis2 (dReal x, dReal y, dReal z)
+00450     { dJointSetUniversalAxis2 (_id, x, y, z); }
+00451   void setParam (int parameter, dReal value)
+00452     { dJointSetUniversalParam (_id, parameter, value); }
+00453 
+00454   void getAnchor (dVector3 result) const
+00455     { dJointGetUniversalAnchor (_id, result); }
+00456   void getAnchor2 (dVector3 result) const
+00457     { dJointGetUniversalAnchor2 (_id, result); }
+00458   void getAxis1 (dVector3 result) const
+00459     { dJointGetUniversalAxis1 (_id, result); }
+00460   void getAxis2 (dVector3 result) const
+00461     { dJointGetUniversalAxis2 (_id, result); }
+00462   dReal getParam (int parameter) const
+00463     { return dJointGetUniversalParam (_id, parameter); }
+00464  void getAngles(dReal *angle1, dReal *angle2) const
+00465     { dJointGetUniversalAngles (_id, angle1, angle2); }
+00466 
+00467   dReal getAngle1() const
+00468     { return dJointGetUniversalAngle1 (_id); }
+00469   dReal getAngle1Rate() const
+00470     { return dJointGetUniversalAngle1Rate (_id); }
+00471   dReal getAngle2() const
+00472     { return dJointGetUniversalAngle2 (_id); }
+00473   dReal getAngle2Rate() const
+00474     { return dJointGetUniversalAngle2Rate (_id); }
+00475 
+00476   void addTorques (dReal torque1, dReal torque2)
+00477    { dJointAddUniversalTorques(_id, torque1, torque2); }
+00478 };
+00479 
+00480 
+00481 class dHinge2Joint : public dJoint {
+00482   // intentionally undefined, don't use these
+00483   dHinge2Joint (const dHinge2Joint &);
+00484   void operator = (const dHinge2Joint &);
+00485 
+00486 public:
+00487   dHinge2Joint() { }
+00488   dHinge2Joint (dWorldID world, dJointGroupID group=0)
+00489     { _id = dJointCreateHinge2 (world, group); }
+00490 
+00491   void create (dWorldID world, dJointGroupID group=0) {
+00492     if (_id) dJointDestroy (_id);
+00493     _id = dJointCreateHinge2 (world, group);
+00494   }
+00495 
+00496   void setAnchor (dReal x, dReal y, dReal z)
+00497     { dJointSetHinge2Anchor (_id, x, y, z); }
+00498   void setAxis1 (dReal x, dReal y, dReal z)
+00499     { dJointSetHinge2Axis1 (_id, x, y, z); }
+00500   void setAxis2 (dReal x, dReal y, dReal z)
+00501     { dJointSetHinge2Axis2 (_id, x, y, z); }
+00502 
+00503   void getAnchor (dVector3 result) const
+00504     { dJointGetHinge2Anchor (_id, result); }
+00505   void getAnchor2 (dVector3 result) const
+00506     { dJointGetHinge2Anchor2 (_id, result); }
+00507   void getAxis1 (dVector3 result) const
+00508     { dJointGetHinge2Axis1 (_id, result); }
+00509   void getAxis2 (dVector3 result) const
+00510     { dJointGetHinge2Axis2 (_id, result); }
+00511 
+00512   dReal getAngle1() const
+00513     { return dJointGetHinge2Angle1 (_id); }
+00514   dReal getAngle1Rate() const
+00515     { return dJointGetHinge2Angle1Rate (_id); }
+00516   dReal getAngle2Rate() const
+00517     { return dJointGetHinge2Angle2Rate (_id); }
+00518 
+00519   void setParam (int parameter, dReal value)
+00520     { dJointSetHinge2Param (_id, parameter, value); }
+00521   dReal getParam (int parameter) const
+00522     { return dJointGetHinge2Param (_id, parameter); }
+00523 
+00524   void addTorques(dReal torque1, dReal torque2)
+00525    { dJointAddHinge2Torques(_id, torque1, torque2); }
+00526 };
+00527 
+00528 
+00529 class dPRJoint : public dJoint {
+00530   dPRJoint (const dPRJoint &);
+00531   void operator = (const dPRJoint &);
+00532 
+00533 public:
+00534   dPRJoint() { }
+00535   dPRJoint (dWorldID world, dJointGroupID group=0)
+00536     { _id = dJointCreatePR (world, group); }
+00537 
+00538   void create (dWorldID world, dJointGroupID group=0) {
+00539     if (_id) dJointDestroy (_id);
+00540     _id = dJointCreatePR (world, group);
+00541   }
+00542 
+00543   void setAnchor (dReal x, dReal y, dReal z)
+00544     { dJointSetPRAnchor (_id, x, y, z); }
+00545   void setAxis1 (dReal x, dReal y, dReal z)
+00546     { dJointSetPRAxis1 (_id, x, y, z); }
+00547   void setAxis2 (dReal x, dReal y, dReal z)
+00548     { dJointSetPRAxis2 (_id, x, y, z); }
+00549 
+00550   void getAnchor (dVector3 result) const
+00551     { dJointGetPRAnchor (_id, result); }
+00552   void getAxis1 (dVector3 result) const
+00553     { dJointGetPRAxis1 (_id, result); }
+00554   void getAxis2 (dVector3 result) const
+00555     { dJointGetPRAxis2 (_id, result); }
+00556 
+00557   dReal getPosition() const
+00558     { return dJointGetPRPosition (_id); }
+00559   dReal getPositionRate() const
+00560     { return dJointGetPRPositionRate (_id); }
+00561 
+00562   void setParam (int parameter, dReal value)
+00563     { dJointSetPRParam (_id, parameter, value); }
+00564   dReal getParam (int parameter) const
+00565     { return dJointGetPRParam (_id, parameter); }
+00566 };
+00567 
+00568 
+00569 class dFixedJoint : public dJoint {
+00570   // intentionally undefined, don't use these
+00571   dFixedJoint (const dFixedJoint &);
+00572   void operator = (const dFixedJoint &);
+00573 
+00574 public:
+00575   dFixedJoint() { }
+00576   dFixedJoint (dWorldID world, dJointGroupID group=0)
+00577     { _id = dJointCreateFixed (world, group); }
+00578 
+00579   void create (dWorldID world, dJointGroupID group=0) {
+00580     if (_id) dJointDestroy (_id);
+00581     _id = dJointCreateFixed (world, group);
+00582   }
+00583 
+00584   void set()
+00585     { dJointSetFixed (_id); }
+00586 
+00587   void setParam (int parameter, dReal value)
+00588     { dJointSetFixedParam (_id, parameter, value); }
+00589 
+00590   dReal getParam (int parameter) const
+00591     { return dJointGetFixedParam (_id, parameter); }
+00592 };
+00593 
+00594 
+00595 class dContactJoint : public dJoint {
+00596   // intentionally undefined, don't use these
+00597   dContactJoint (const dContactJoint &);
+00598   void operator = (const dContactJoint &);
+00599 
+00600 public:
+00601   dContactJoint() { }
+00602   dContactJoint (dWorldID world, dJointGroupID group, dContact *contact)
+00603     { _id = dJointCreateContact (world, group, contact); }
+00604 
+00605   void create (dWorldID world, dJointGroupID group, dContact *contact) {
+00606     if (_id) dJointDestroy (_id);
+00607     _id = dJointCreateContact (world, group, contact);
+00608   }
+00609 };
+00610 
+00611 
+00612 class dNullJoint : public dJoint {
+00613   // intentionally undefined, don't use these
+00614   dNullJoint (const dNullJoint &);
+00615   void operator = (const dNullJoint &);
+00616 
+00617 public:
+00618   dNullJoint() { }
+00619   dNullJoint (dWorldID world, dJointGroupID group=0)
+00620     { _id = dJointCreateNull (world, group); }
+00621 
+00622   void create (dWorldID world, dJointGroupID group=0) {
+00623     if (_id) dJointDestroy (_id);
+00624     _id = dJointCreateNull (world, group);
+00625   }
+00626 };
+00627 
+00628 
+00629 class dAMotorJoint : public dJoint {
+00630   // intentionally undefined, don't use these
+00631   dAMotorJoint (const dAMotorJoint &);
+00632   void operator = (const dAMotorJoint &);
+00633 
+00634 public:
+00635   dAMotorJoint() { }
+00636   dAMotorJoint (dWorldID world, dJointGroupID group=0)
+00637     { _id = dJointCreateAMotor (world, group); }
+00638 
+00639   void create (dWorldID world, dJointGroupID group=0) {
+00640     if (_id) dJointDestroy (_id);
+00641     _id = dJointCreateAMotor (world, group);
+00642   }
+00643 
+00644   void setMode (int mode)
+00645     { dJointSetAMotorMode (_id, mode); }
+00646   int getMode() const
+00647     { return dJointGetAMotorMode (_id); }
+00648 
+00649   void setNumAxes (int num)
+00650     { dJointSetAMotorNumAxes (_id, num); }
+00651   int getNumAxes() const
+00652     { return dJointGetAMotorNumAxes (_id); }
+00653 
+00654   void setAxis (int anum, int rel, dReal x, dReal y, dReal z)
+00655     { dJointSetAMotorAxis (_id, anum, rel, x, y, z); }
+00656   void getAxis (int anum, dVector3 result) const
+00657     { dJointGetAMotorAxis (_id, anum, result); }
+00658   int getAxisRel (int anum) const
+00659     { return dJointGetAMotorAxisRel (_id, anum); }
+00660 
+00661   void setAngle (int anum, dReal angle)
+00662     { dJointSetAMotorAngle (_id, anum, angle); }
+00663   dReal getAngle (int anum) const
+00664     { return dJointGetAMotorAngle (_id, anum); }
+00665   dReal getAngleRate (int anum)
+00666     { return dJointGetAMotorAngleRate (_id,anum); }
+00667 
+00668   void setParam (int parameter, dReal value)
+00669     { dJointSetAMotorParam (_id, parameter, value); }
+00670   dReal getParam (int parameter) const
+00671     { return dJointGetAMotorParam (_id, parameter); }
+00672 
+00673   void addTorques(dReal torque1, dReal torque2, dReal torque3)
+00674    { dJointAddAMotorTorques(_id, torque1, torque2, torque3); }
+00675 };
+00676 
+00677 
+00678 class dLMotorJoint : public dJoint {
+00679   // intentionally undefined, don't use these
+00680   dLMotorJoint (const dLMotorJoint &);
+00681   void operator = (const dLMotorJoint &);
+00682 
+00683 public:
+00684   dLMotorJoint() { }
+00685   dLMotorJoint (dWorldID world, dJointGroupID group=0)
+00686     { _id = dJointCreateLMotor (world, group); }
+00687 
+00688   void create (dWorldID world, dJointGroupID group=0) {
+00689     if (_id) dJointDestroy (_id);
+00690     _id = dJointCreateLMotor (world, group);
+00691   }
+00692 
+00693   void setNumAxes (int num)
+00694     { dJointSetLMotorNumAxes (_id, num); }
+00695   int getNumAxes() const
+00696     { return dJointGetLMotorNumAxes (_id); }
+00697 
+00698   void setAxis (int anum, int rel, dReal x, dReal y, dReal z)
+00699     { dJointSetLMotorAxis (_id, anum, rel, x, y, z); }
+00700   void getAxis (int anum, dVector3 result) const
+00701     { dJointGetLMotorAxis (_id, anum, result); }
+00702 
+00703   void setParam (int parameter, dReal value)
+00704     { dJointSetLMotorParam (_id, parameter, value); }
+00705   dReal getParam (int parameter) const
+00706     { return dJointGetLMotorParam (_id, parameter); }
+00707 };
+00708 
+00709 
+00710 
+00711 #endif
+00712 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: odecpp_collision.h Source File + + + + +
+ +
+

odecpp_collision.h

00001 /*************************************************************************
+00002  *                          *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.    *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org    *
+00005  *                          *
+00006  * This library is free software; you can redistribute it and/or   *
+00007  * modify it under the terms of EITHER:             *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *  Software Foundation; either version 2.1 of the License, or (at  *
+00010  *  your option) any later version. The text of the GNU Lesser  *
+00011  *  General Public License is included with this library in the    *
+00012  *  file LICENSE.TXT.                   *
+00013  *   (2) The BSD-style license that is included with this library in  *
+00014  *  the file LICENSE-BSD.TXT.              *
+00015  *                          *
+00016  * This library is distributed in the hope that it will be useful,    *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of  *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.         *
+00020  *                          *
+00021  *************************************************************************/
+00022 
+00023 /* C++ interface for new collision API */
+00024 
+00025 
+00026 #ifndef _ODE_ODECPP_COLLISION_H_
+00027 #define _ODE_ODECPP_COLLISION_H_
+00028 #ifdef __cplusplus
+00029 
+00030 #include <ode/error.h>
+00031 
+00032 
+00033 class dGeom {
+00034   // intentionally undefined, don't use these
+00035   dGeom (dGeom &);
+00036   void operator= (dGeom &);
+00037 
+00038 protected:
+00039   dGeomID _id;
+00040 
+00041 public:
+00042   dGeom()
+00043     { _id = 0; }
+00044   ~dGeom()
+00045     { if (_id) dGeomDestroy (_id); }
+00046 
+00047   dGeomID id() const
+00048     { return _id; }
+00049   operator dGeomID() const
+00050     { return _id; }
+00051 
+00052   void destroy() {
+00053     if (_id) dGeomDestroy (_id);
+00054     _id = 0;
+00055   }
+00056 
+00057   int getClass() const
+00058     { return dGeomGetClass (_id); }
+00059 
+00060   dSpaceID getSpace() const
+00061     { return dGeomGetSpace (_id); }
+00062 
+00063   void setData (void *data)
+00064     { dGeomSetData (_id,data); }
+00065   void *getData() const
+00066     { return dGeomGetData (_id); }
+00067 
+00068   void setBody (dBodyID b)
+00069     { dGeomSetBody (_id,b); }
+00070   dBodyID getBody() const
+00071     { return dGeomGetBody (_id); }
+00072 
+00073   void setPosition (dReal x, dReal y, dReal z)
+00074     { dGeomSetPosition (_id,x,y,z); }
+00075   const dReal * getPosition() const
+00076     { return dGeomGetPosition (_id); }
+00077 
+00078   void setRotation (const dMatrix3 R)
+00079     { dGeomSetRotation (_id,R); }
+00080   const dReal * getRotation() const
+00081     { return dGeomGetRotation (_id); }
+00082     
+00083   void setQuaternion (const dQuaternion quat)
+00084     { dGeomSetQuaternion (_id,quat); }
+00085   void getQuaternion (dQuaternion quat) const
+00086     { dGeomGetQuaternion (_id,quat); }
+00087 
+00088   void getAABB (dReal aabb[6]) const
+00089     { dGeomGetAABB (_id, aabb); }
+00090 
+00091   int isSpace()
+00092     { return dGeomIsSpace (_id); }
+00093 
+00094   void setCategoryBits (unsigned long bits)
+00095     { dGeomSetCategoryBits (_id, bits); }
+00096   void setCollideBits (unsigned long bits)
+00097     { dGeomSetCollideBits (_id, bits); }
+00098   unsigned long getCategoryBits()
+00099     { return dGeomGetCategoryBits (_id); }
+00100   unsigned long getCollideBits()
+00101     { return dGeomGetCollideBits (_id); }
+00102 
+00103   void enable()
+00104     { dGeomEnable (_id); }
+00105   void disable()
+00106     { dGeomDisable (_id); }
+00107   int isEnabled()
+00108     { return dGeomIsEnabled (_id); }
+00109 
+00110   void collide2 (dGeomID g, void *data, dNearCallback *callback)
+00111     { dSpaceCollide2 (_id,g,data,callback); }
+00112 };
+00113 
+00114 
+00115 class dSpace : public dGeom {
+00116   // intentionally undefined, don't use these
+00117   dSpace (dSpace &);
+00118   void operator= (dSpace &);
+00119 
+00120 protected:
+00121   // the default constructor is protected so that you
+00122   // can't instance this class. you must instance one
+00123   // of its subclasses instead.
+00124   dSpace () { _id = 0; }
+00125 
+00126 public:
+00127   dSpaceID id() const
+00128     { return (dSpaceID) _id; }
+00129   operator dSpaceID() const
+00130     { return (dSpaceID) _id; }
+00131 
+00132   void setCleanup (int mode)
+00133     { dSpaceSetCleanup (id(), mode); }
+00134   int getCleanup()
+00135     { return dSpaceGetCleanup (id()); }
+00136 
+00137   void add (dGeomID x)
+00138     { dSpaceAdd (id(), x); }
+00139   void remove (dGeomID x)
+00140     { dSpaceRemove (id(), x); }
+00141   int query (dGeomID x)
+00142     { return dSpaceQuery (id(),x); }
+00143 
+00144   int getNumGeoms()
+00145     { return dSpaceGetNumGeoms (id()); }
+00146   dGeomID getGeom (int i)
+00147     { return dSpaceGetGeom (id(),i); }
+00148 
+00149   void collide (void *data, dNearCallback *callback)
+00150     { dSpaceCollide (id(),data,callback); }
+00151 };
+00152 
+00153 
+00154 class dSimpleSpace : public dSpace {
+00155   // intentionally undefined, don't use these
+00156   dSimpleSpace (dSimpleSpace &);
+00157   void operator= (dSimpleSpace &);
+00158 
+00159 public:
+00160   dSimpleSpace (dSpaceID space)
+00161     { _id = (dGeomID) dSimpleSpaceCreate (space); }
+00162 };
+00163 
+00164 
+00165 class dHashSpace : public dSpace {
+00166   // intentionally undefined, don't use these
+00167   dHashSpace (dHashSpace &);
+00168   void operator= (dHashSpace &);
+00169 
+00170 public:
+00171   dHashSpace (dSpaceID space)
+00172     { _id = (dGeomID) dHashSpaceCreate (space); }
+00173   void setLevels (int minlevel, int maxlevel)
+00174     { dHashSpaceSetLevels (id(),minlevel,maxlevel); }
+00175 };
+00176 
+00177 
+00178 class dQuadTreeSpace : public dSpace {
+00179   // intentionally undefined, don't use these
+00180   dQuadTreeSpace (dQuadTreeSpace &);
+00181   void operator= (dQuadTreeSpace &);
+00182 
+00183 public:
+00184   dQuadTreeSpace (dSpaceID space, dVector3 center, dVector3 extents, int depth)
+00185     { _id = (dGeomID) dQuadTreeSpaceCreate (space,center,extents,depth); }
+00186 };
+00187 
+00188 
+00189 class dSphere : public dGeom {
+00190   // intentionally undefined, don't use these
+00191   dSphere (dSphere &);
+00192   void operator= (dSphere &);
+00193 
+00194 public:
+00195   dSphere () { }
+00196   dSphere (dSpaceID space, dReal radius)
+00197     { _id = dCreateSphere (space, radius); }
+00198 
+00199   void create (dSpaceID space, dReal radius) {
+00200     if (_id) dGeomDestroy (_id);
+00201     _id = dCreateSphere (space, radius);
+00202   }
+00203 
+00204   void setRadius (dReal radius)
+00205     { dGeomSphereSetRadius (_id, radius); }
+00206   dReal getRadius() const
+00207     { return dGeomSphereGetRadius (_id); }
+00208 };
+00209 
+00210 
+00211 class dBox : public dGeom {
+00212   // intentionally undefined, don't use these
+00213   dBox (dBox &);
+00214   void operator= (dBox &);
+00215 
+00216 public:
+00217   dBox () { }
+00218   dBox (dSpaceID space, dReal lx, dReal ly, dReal lz)
+00219     { _id = dCreateBox (space,lx,ly,lz); }
+00220 
+00221   void create (dSpaceID space, dReal lx, dReal ly, dReal lz) {
+00222     if (_id) dGeomDestroy (_id);
+00223     _id = dCreateBox (space,lx,ly,lz);
+00224   }
+00225 
+00226   void setLengths (dReal lx, dReal ly, dReal lz)
+00227     { dGeomBoxSetLengths (_id, lx, ly, lz); }
+00228   void getLengths (dVector3 result) const
+00229     { dGeomBoxGetLengths (_id,result); }
+00230 };
+00231 
+00232 
+00233 class dPlane : public dGeom {
+00234   // intentionally undefined, don't use these
+00235   dPlane (dPlane &);
+00236   void operator= (dPlane &);
+00237 
+00238 public:
+00239   dPlane() { }
+00240   dPlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d)
+00241     { _id = dCreatePlane (space,a,b,c,d); }
+00242 
+00243   void create (dSpaceID space, dReal a, dReal b, dReal c, dReal d) {
+00244     if (_id) dGeomDestroy (_id);
+00245     _id = dCreatePlane (space,a,b,c,d);
+00246   }
+00247 
+00248   void setParams (dReal a, dReal b, dReal c, dReal d)
+00249     { dGeomPlaneSetParams (_id, a, b, c, d); }
+00250   void getParams (dVector4 result) const
+00251     { dGeomPlaneGetParams (_id,result); }
+00252 };
+00253 
+00254 
+00255 class dCapsule : public dGeom {
+00256   // intentionally undefined, don't use these
+00257   dCapsule (dCapsule &);
+00258   void operator= (dCapsule &);
+00259 
+00260 public:
+00261   dCapsule() { }
+00262   dCapsule (dSpaceID space, dReal radius, dReal length)
+00263     { _id = dCreateCapsule (space,radius,length); }
+00264 
+00265   void create (dSpaceID space, dReal radius, dReal length) {
+00266     if (_id) dGeomDestroy (_id);
+00267     _id = dCreateCapsule (space,radius,length);
+00268   }
+00269 
+00270   void setParams (dReal radius, dReal length)
+00271     { dGeomCapsuleSetParams (_id, radius, length); }
+00272   void getParams (dReal *radius, dReal *length) const
+00273     { dGeomCapsuleGetParams (_id,radius,length); }
+00274 };
+00275 
+00276 
+00277 class dRay : public dGeom {
+00278   // intentionally undefined, don't use these
+00279   dRay (dRay &);
+00280   void operator= (dRay &);
+00281 
+00282 public:
+00283   dRay() { }
+00284   dRay (dSpaceID space, dReal length)
+00285     { _id = dCreateRay (space,length); }
+00286 
+00287   void create (dSpaceID space, dReal length) {
+00288     if (_id) dGeomDestroy (_id);
+00289     _id = dCreateRay (space,length);
+00290   }
+00291 
+00292   void setLength (dReal length)
+00293     { dGeomRaySetLength (_id, length); }
+00294   dReal getLength()
+00295     { return dGeomRayGetLength (_id); }
+00296 
+00297   void set (dReal px, dReal py, dReal pz, dReal dx, dReal dy, dReal dz)
+00298     { dGeomRaySet (_id, px, py, pz, dx, dy, dz); }
+00299   void get (dVector3 start, dVector3 dir)
+00300     { dGeomRayGet (_id, start, dir); }
+00301 
+00302   void setParams (int firstContact, int backfaceCull)
+00303     { dGeomRaySetParams (_id, firstContact, backfaceCull); }
+00304   void getParams (int *firstContact, int *backfaceCull)
+00305     { dGeomRayGetParams (_id, firstContact, backfaceCull); }
+00306   void setClosestHit (int closestHit)
+00307     { dGeomRaySetClosestHit (_id, closestHit); }
+00308   int getClosestHit()
+00309     { return dGeomRayGetClosestHit (_id); }
+00310 };
+00311 
+00312 
+00313 class dGeomTransform : public dGeom {
+00314   // intentionally undefined, don't use these
+00315   dGeomTransform (dGeomTransform &);
+00316   void operator= (dGeomTransform &);
+00317 
+00318 public:
+00319   dGeomTransform() { }
+00320   dGeomTransform (dSpaceID space)
+00321     { _id = dCreateGeomTransform (space); }
+00322 
+00323   void create (dSpaceID space=0) {
+00324     if (_id) dGeomDestroy (_id);
+00325     _id = dCreateGeomTransform (space);
+00326   }
+00327 
+00328   void setGeom (dGeomID geom)
+00329     { dGeomTransformSetGeom (_id, geom); }
+00330   dGeomID getGeom() const
+00331     { return dGeomTransformGetGeom (_id); }
+00332 
+00333   void setCleanup (int mode)
+00334     { dGeomTransformSetCleanup (_id,mode); }
+00335   int getCleanup ()
+00336     { return dGeomTransformGetCleanup (_id); }
+00337 
+00338   void setInfo (int mode)
+00339     { dGeomTransformSetInfo (_id,mode); }
+00340   int getInfo()
+00341     { return dGeomTransformGetInfo (_id); }
+00342 };
+00343 
+00344 
+00345 #endif
+00346 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: odemath.h Source File + + + + +
+ +
+

odemath.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_ODEMATH_H_
+00024 #define _ODE_ODEMATH_H_
+00025 
+00026 #include <ode/common.h>
+00027 
+00028 #ifdef __GNUC__
+00029 #define PURE_INLINE extern inline
+00030 #else
+00031 #define PURE_INLINE inline
+00032 #endif
+00033 
+00034 /*
+00035  * macro to access elements i,j in an NxM matrix A, independent of the
+00036  * matrix storage convention.
+00037  */
+00038 #define dACCESS33(A,i,j) ((A)[(i)*4+(j)])
+00039 
+00040 /*
+00041  * Macro to test for valid floating point values
+00042  */
+00043 #define dVALIDVEC3(v) (!(dIsNan(v[0]) || dIsNan(v[1]) || dIsNan(v[2])))
+00044 #define dVALIDVEC4(v) (!(dIsNan(v[0]) || dIsNan(v[1]) || dIsNan(v[2]) || dIsNan(v[3])))
+00045 #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])))
+00046 #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]) ))
+00047 
+00048 
+00049 
+00050 /*
+00051  * General purpose vector operations with other vectors or constants.
+00052  */
+00053 
+00054 #define dOP(a,op,b,c) \
+00055     (a)[0] = ((b)[0]) op ((c)[0]); \
+00056     (a)[1] = ((b)[1]) op ((c)[1]); \
+00057     (a)[2] = ((b)[2]) op ((c)[2]);
+00058 #define dOPC(a,op,b,c) \
+00059     (a)[0] = ((b)[0]) op (c); \
+00060     (a)[1] = ((b)[1]) op (c); \
+00061     (a)[2] = ((b)[2]) op (c);
+00062 #define dOPE(a,op,b) \
+00063     (a)[0] op ((b)[0]); \
+00064     (a)[1] op ((b)[1]); \
+00065     (a)[2] op ((b)[2]);
+00066 #define dOPEC(a,op,c) \
+00067     (a)[0] op (c); \
+00068     (a)[1] op (c); \
+00069     (a)[2] op (c);
+00070 
+00071 
+00072 /*
+00073  * Length, and squared length helpers. dLENGTH returns the length of a dVector3.
+00074  * dLENGTHSQUARED return the squared length of a dVector3.
+00075  */
+00076 
+00077 #define dLENGTHSQUARED(a) (((a)[0])*((a)[0]) + ((a)[1])*((a)[1]) + ((a)[2])*((a)[2]))
+00078 
+00079 #ifdef __cplusplus
+00080 
+00081 PURE_INLINE dReal dLENGTH (const dReal *a) { return dSqrt(dLENGTHSQUARED(a)); }
+00082 
+00083 #else
+00084 
+00085 #define dLENGTH(a) ( dSqrt( ((a)[0])*((a)[0]) + ((a)[1])*((a)[1]) + ((a)[2])*((a)[2]) ) )
+00086 
+00087 #endif /* __cplusplus */
+00088 
+00089 
+00090 
+00091 
+00092 
+00093 /*
+00094  * 3-way dot product. dDOTpq means that elements of `a' and `b' are spaced
+00095  * p and q indexes apart respectively. dDOT() means dDOT11.
+00096  * in C++ we could use function templates to get all the versions of these
+00097  * functions - but on some compilers this will result in sub-optimal code.
+00098  */
+00099 
+00100 #define dDOTpq(a,b,p,q) ((a)[0]*(b)[0] + (a)[p]*(b)[q] + (a)[2*(p)]*(b)[2*(q)])
+00101 
+00102 #ifdef __cplusplus
+00103 
+00104 PURE_INLINE dReal dDOT   (const dReal *a, const dReal *b) { return dDOTpq(a,b,1,1); }
+00105 PURE_INLINE dReal dDOT13 (const dReal *a, const dReal *b) { return dDOTpq(a,b,1,3); }
+00106 PURE_INLINE dReal dDOT31 (const dReal *a, const dReal *b) { return dDOTpq(a,b,3,1); }
+00107 PURE_INLINE dReal dDOT33 (const dReal *a, const dReal *b) { return dDOTpq(a,b,3,3); }
+00108 PURE_INLINE dReal dDOT14 (const dReal *a, const dReal *b) { return dDOTpq(a,b,1,4); }
+00109 PURE_INLINE dReal dDOT41 (const dReal *a, const dReal *b) { return dDOTpq(a,b,4,1); }
+00110 PURE_INLINE dReal dDOT44 (const dReal *a, const dReal *b) { return dDOTpq(a,b,4,4); }
+00111 
+00112 #else
+00113 
+00114 #define dDOT(a,b)   dDOTpq(a,b,1,1)
+00115 #define dDOT13(a,b) dDOTpq(a,b,1,3)
+00116 #define dDOT31(a,b) dDOTpq(a,b,3,1)
+00117 #define dDOT33(a,b) dDOTpq(a,b,3,3)
+00118 #define dDOT14(a,b) dDOTpq(a,b,1,4)
+00119 #define dDOT41(a,b) dDOTpq(a,b,4,1)
+00120 #define dDOT44(a,b) dDOTpq(a,b,4,4)
+00121 
+00122 #endif /* __cplusplus */
+00123 
+00124 
+00125 /*
+00126  * cross product, set a = b x c. dCROSSpqr means that elements of `a', `b'
+00127  * and `c' are spaced p, q and r indexes apart respectively.
+00128  * dCROSS() means dCROSS111. `op' is normally `=', but you can set it to
+00129  * +=, -= etc to get other effects.
+00130  */
+00131 
+00132 #define dCROSS(a,op,b,c) \
+00133 do { \
+00134   (a)[0] op ((b)[1]*(c)[2] - (b)[2]*(c)[1]); \
+00135   (a)[1] op ((b)[2]*(c)[0] - (b)[0]*(c)[2]); \
+00136   (a)[2] op ((b)[0]*(c)[1] - (b)[1]*(c)[0]); \
+00137 } while(0)
+00138 #define dCROSSpqr(a,op,b,c,p,q,r) \
+00139 do { \
+00140   (a)[  0] op ((b)[  q]*(c)[2*r] - (b)[2*q]*(c)[  r]); \
+00141   (a)[  p] op ((b)[2*q]*(c)[  0] - (b)[  0]*(c)[2*r]); \
+00142   (a)[2*p] op ((b)[  0]*(c)[  r] - (b)[  q]*(c)[  0]); \
+00143 } while(0)
+00144 #define dCROSS114(a,op,b,c) dCROSSpqr(a,op,b,c,1,1,4)
+00145 #define dCROSS141(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,1)
+00146 #define dCROSS144(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,4)
+00147 #define dCROSS411(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,1)
+00148 #define dCROSS414(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,4)
+00149 #define dCROSS441(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,1)
+00150 #define dCROSS444(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,4)
+00151 
+00152 
+00153 /*
+00154  * set a 3x3 submatrix of A to a matrix such that submatrix(A)*b = a x b.
+00155  * A is stored by rows, and has `skip' elements per row. the matrix is
+00156  * assumed to be already zero, so this does not write zero elements!
+00157  * if (plus,minus) is (+,-) then a positive version will be written.
+00158  * if (plus,minus) is (-,+) then a negative version will be written.
+00159  */
+00160 
+00161 #define dCROSSMAT(A,a,skip,plus,minus) \
+00162 do { \
+00163   (A)[1] = minus (a)[2]; \
+00164   (A)[2] = plus (a)[1]; \
+00165   (A)[(skip)+0] = plus (a)[2]; \
+00166   (A)[(skip)+2] = minus (a)[0]; \
+00167   (A)[2*(skip)+0] = minus (a)[1]; \
+00168   (A)[2*(skip)+1] = plus (a)[0]; \
+00169 } while(0)
+00170 
+00171 
+00172 /*
+00173  * compute the distance between two 3D-vectors
+00174  */
+00175 
+00176 #ifdef __cplusplus
+00177 PURE_INLINE dReal dDISTANCE (const dVector3 a, const dVector3 b)
+00178    { return 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]) ); }
+00179 #else
+00180 #define dDISTANCE(a,b) \
+00181    (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]) ))
+00182 #endif
+00183 
+00184 
+00185 /*
+00186  * special case matrix multipication, with operator selection
+00187  */
+00188 
+00189 #define dMULTIPLYOP0_331(A,op,B,C) \
+00190 do { \
+00191   (A)[0] op dDOT((B),(C)); \
+00192   (A)[1] op dDOT((B+4),(C)); \
+00193   (A)[2] op dDOT((B+8),(C)); \
+00194 } while(0)
+00195 #define dMULTIPLYOP1_331(A,op,B,C) \
+00196 do { \
+00197   (A)[0] op dDOT41((B),(C)); \
+00198   (A)[1] op dDOT41((B+1),(C)); \
+00199   (A)[2] op dDOT41((B+2),(C)); \
+00200 } while(0)
+00201 #define dMULTIPLYOP0_133(A,op,B,C) \
+00202 do { \
+00203   (A)[0] op dDOT14((B),(C)); \
+00204   (A)[1] op dDOT14((B),(C+1)); \
+00205   (A)[2] op dDOT14((B),(C+2)); \
+00206 } while(0)
+00207 #define dMULTIPLYOP0_333(A,op,B,C) \
+00208 do { \
+00209   (A)[0] op dDOT14((B),(C)); \
+00210   (A)[1] op dDOT14((B),(C+1)); \
+00211   (A)[2] op dDOT14((B),(C+2)); \
+00212   (A)[4] op dDOT14((B+4),(C)); \
+00213   (A)[5] op dDOT14((B+4),(C+1)); \
+00214   (A)[6] op dDOT14((B+4),(C+2)); \
+00215   (A)[8] op dDOT14((B+8),(C)); \
+00216   (A)[9] op dDOT14((B+8),(C+1)); \
+00217   (A)[10] op dDOT14((B+8),(C+2)); \
+00218 } while(0)
+00219 #define dMULTIPLYOP1_333(A,op,B,C) \
+00220 do { \
+00221   (A)[0] op dDOT44((B),(C)); \
+00222   (A)[1] op dDOT44((B),(C+1)); \
+00223   (A)[2] op dDOT44((B),(C+2)); \
+00224   (A)[4] op dDOT44((B+1),(C)); \
+00225   (A)[5] op dDOT44((B+1),(C+1)); \
+00226   (A)[6] op dDOT44((B+1),(C+2)); \
+00227   (A)[8] op dDOT44((B+2),(C)); \
+00228   (A)[9] op dDOT44((B+2),(C+1)); \
+00229   (A)[10] op dDOT44((B+2),(C+2)); \
+00230 } while(0)
+00231 #define dMULTIPLYOP2_333(A,op,B,C) \
+00232 do { \
+00233   (A)[0] op dDOT((B),(C)); \
+00234   (A)[1] op dDOT((B),(C+4)); \
+00235   (A)[2] op dDOT((B),(C+8)); \
+00236   (A)[4] op dDOT((B+4),(C)); \
+00237   (A)[5] op dDOT((B+4),(C+4)); \
+00238   (A)[6] op dDOT((B+4),(C+8)); \
+00239   (A)[8] op dDOT((B+8),(C)); \
+00240   (A)[9] op dDOT((B+8),(C+4)); \
+00241   (A)[10] op dDOT((B+8),(C+8)); \
+00242 } while(0)
+00243 
+00244 #ifdef __cplusplus
+00245 
+00246 #define DECL template <class TA, class TB, class TC> PURE_INLINE void
+00247 
+00248 DECL dMULTIPLY0_331(TA *A, const TB *B, const TC *C) { dMULTIPLYOP0_331(A,=,B,C); }
+00249 DECL dMULTIPLY1_331(TA *A, const TB *B, const TC *C) { dMULTIPLYOP1_331(A,=,B,C); }
+00250 DECL dMULTIPLY0_133(TA *A, const TB *B, const TC *C) { dMULTIPLYOP0_133(A,=,B,C); }
+00251 DECL dMULTIPLY0_333(TA *A, const TB *B, const TC *C) { dMULTIPLYOP0_333(A,=,B,C); }
+00252 DECL dMULTIPLY1_333(TA *A, const TB *B, const TC *C) { dMULTIPLYOP1_333(A,=,B,C); }
+00253 DECL dMULTIPLY2_333(TA *A, const TB *B, const TC *C) { dMULTIPLYOP2_333(A,=,B,C); }
+00254 
+00255 DECL dMULTIPLYADD0_331(TA *A, const TB *B, const TC *C) { dMULTIPLYOP0_331(A,+=,B,C); }
+00256 DECL dMULTIPLYADD1_331(TA *A, const TB *B, const TC *C) { dMULTIPLYOP1_331(A,+=,B,C); }
+00257 DECL dMULTIPLYADD0_133(TA *A, const TB *B, const TC *C) { dMULTIPLYOP0_133(A,+=,B,C); }
+00258 DECL dMULTIPLYADD0_333(TA *A, const TB *B, const TC *C) { dMULTIPLYOP0_333(A,+=,B,C); }
+00259 DECL dMULTIPLYADD1_333(TA *A, const TB *B, const TC *C) { dMULTIPLYOP1_333(A,+=,B,C); }
+00260 DECL dMULTIPLYADD2_333(TA *A, const TB *B, const TC *C) { dMULTIPLYOP2_333(A,+=,B,C); }
+00261 
+00262 #undef DECL
+00263 
+00264 #else
+00265 
+00266 #define dMULTIPLY0_331(A,B,C) dMULTIPLYOP0_331(A,=,B,C)
+00267 #define dMULTIPLY1_331(A,B,C) dMULTIPLYOP1_331(A,=,B,C)
+00268 #define dMULTIPLY0_133(A,B,C) dMULTIPLYOP0_133(A,=,B,C)
+00269 #define dMULTIPLY0_333(A,B,C) dMULTIPLYOP0_333(A,=,B,C)
+00270 #define dMULTIPLY1_333(A,B,C) dMULTIPLYOP1_333(A,=,B,C)
+00271 #define dMULTIPLY2_333(A,B,C) dMULTIPLYOP2_333(A,=,B,C)
+00272 
+00273 #define dMULTIPLYADD0_331(A,B,C) dMULTIPLYOP0_331(A,+=,B,C)
+00274 #define dMULTIPLYADD1_331(A,B,C) dMULTIPLYOP1_331(A,+=,B,C)
+00275 #define dMULTIPLYADD0_133(A,B,C) dMULTIPLYOP0_133(A,+=,B,C)
+00276 #define dMULTIPLYADD0_333(A,B,C) dMULTIPLYOP0_333(A,+=,B,C)
+00277 #define dMULTIPLYADD1_333(A,B,C) dMULTIPLYOP1_333(A,+=,B,C)
+00278 #define dMULTIPLYADD2_333(A,B,C) dMULTIPLYOP2_333(A,+=,B,C)
+00279 
+00280 #endif
+00281 
+00282 
+00283 #ifdef __cplusplus
+00284 extern "C" {
+00285 #endif
+00286 
+00287 /*
+00288  * normalize 3x1 and 4x1 vectors (i.e. scale them to unit length)
+00289  */
+00290 ODE_API int  dSafeNormalize3 (dVector3 a);
+00291 ODE_API int  dSafeNormalize4 (dVector4 a);
+00292 
+00293 // For some reason demo_chain1.c does not understand "inline" keyword.
+00294 static __inline void _dNormalize3(dVector3 a)
+00295 {
+00296    int bNormalizationResult = dSafeNormalize3(a);
+00297    dIASSERT(bNormalizationResult);
+00298    dVARIABLEUSED(bNormalizationResult);
+00299 }
+00300 
+00301 static __inline void _dNormalize4(dVector4 a)
+00302 {
+00303    int bNormalizationResult = dSafeNormalize4(a);
+00304    dIASSERT(bNormalizationResult);
+00305    dVARIABLEUSED(bNormalizationResult);
+00306 }
+00307 
+00308 // For DLL export
+00309 ODE_API void dNormalize3 (dVector3 a); // Potentially asserts on zero vec
+00310 ODE_API void dNormalize4 (dVector4 a); // Potentially asserts on zero vec
+00311 
+00312 // For internal use
+00313 #define dNormalize3(a) _dNormalize3(a)
+00314 #define dNormalize4(a) _dNormalize4(a)
+00315 
+00316 /*
+00317  * given a unit length "normal" vector n, generate vectors p and q vectors
+00318  * that are an orthonormal basis for the plane space perpendicular to n.
+00319  * i.e. this makes p,q such that n,p,q are all perpendicular to each other.
+00320  * q will equal n x p. if n is not unit length then p will be unit length but
+00321  * q wont be.
+00322  */
+00323 
+00324 ODE_API void dPlaneSpace (const dVector3 n, dVector3 p, dVector3 q);
+00325 
+00326 #ifdef __cplusplus
+00327 }
+00328 #endif
+00329 
+00330 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: rotation.h Source File + + + + +
+ +
+

rotation.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_ROTATION_H_
+00024 #define _ODE_ROTATION_H_
+00025 
+00026 #include <ode/common.h>
+00027 #include <ode/compatibility.h>
+00028 
+00029 #ifdef __cplusplus
+00030 extern "C" {
+00031 #endif
+00032 
+00033 
+00034 ODE_API void dRSetIdentity (dMatrix3 R);
+00035 
+00036 ODE_API void dRFromAxisAndAngle (dMatrix3 R, dReal ax, dReal ay, dReal az,
+00037           dReal angle);
+00038 
+00039 ODE_API void dRFromEulerAngles (dMatrix3 R, dReal phi, dReal theta, dReal psi);
+00040 
+00041 ODE_API void dRFrom2Axes (dMatrix3 R, dReal ax, dReal ay, dReal az,
+00042         dReal bx, dReal by, dReal bz);
+00043 
+00044 ODE_API void dRFromZAxis (dMatrix3 R, dReal ax, dReal ay, dReal az);
+00045 
+00046 ODE_API void dQSetIdentity (dQuaternion q);
+00047 
+00048 ODE_API void dQFromAxisAndAngle (dQuaternion q, dReal ax, dReal ay, dReal az,
+00049           dReal angle);
+00050 
+00051 /* Quaternion multiplication, analogous to the matrix multiplication routines. */
+00052 /* qa = rotate by qc, then qb */
+00053 ODE_API void dQMultiply0 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
+00054 /* qa = rotate by qc, then by inverse of qb */
+00055 ODE_API void dQMultiply1 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
+00056 /* qa = rotate by inverse of qc, then by qb */
+00057 ODE_API void dQMultiply2 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
+00058 /* qa = rotate by inverse of qc, then by inverse of qb */
+00059 ODE_API void dQMultiply3 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
+00060 
+00061 ODE_API void dRfromQ (dMatrix3 R, const dQuaternion q);
+00062 ODE_API void dQfromR (dQuaternion q, const dMatrix3 R);
+00063 ODE_API void dDQfromW (dReal dq[4], const dVector3 w, const dQuaternion q);
+00064 
+00065 
+00066 #ifdef __cplusplus
+00067 }
+00068 #endif
+00069 
+00070 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: dContactGeom Struct Reference + + + + +
+ +
+
+ +
+

dContactGeom Struct Reference
+ +[Collision Detection] +

Describe the contact point between two geoms. +More... +

+#include <contact.h> +

+ + + + + + + + + + + + + + + + + + + + + + +

Data Fields

+dVector3 pos
 contact position
+dVector3 normal
 normal vector
+dReal depth
 penetration depth
+dGeomID g1
+dGeomID g2
 the colliding geoms
+int side1
+int side2
 (to be documented)
+


Detailed Description

+Describe the contact point between two geoms. +

+If 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 dContactGeom.

+The 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.


The documentation for this struct was generated from the following file: +
Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: dsFunctions Struct Reference + + + + +
+ +
+
+ +
+

dsFunctions Struct Reference
+ +[DrawStuff] +

Set of functions to be used as callbacks by the simulation loop. +More... +

+#include <drawstuff.h> +

+ + + + + + + + + + + + + + + +

Data Fields

+int version
+void(* start )()
+void(* step )(int pause)
+void(* command )(int cmd)
+void(* stop )()
+char * path_to_textures
+


Detailed Description

+Set of functions to be used as callbacks by the simulation loop.
The documentation for this struct was generated from the following file: +
Generated on Fri Oct 12 08:36:52 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 Binary files /dev/null and b/libraries/ode-0.9/docs/tab_b.gif 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 Binary files /dev/null and b/libraries/ode-0.9/docs/tab_l.gif 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 Binary files /dev/null and b/libraries/ode-0.9/docs/tab_r.gif 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 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI.current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI.current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} 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 @@ + + +Open Dynamics Engine: timer.h Source File + + + + +
+ +
+

timer.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef _ODE_TIMER_H_
+00024 #define _ODE_TIMER_H_
+00025 
+00026 #include <ode/config.h>
+00027 
+00028 #ifdef __cplusplus
+00029 extern "C" {
+00030 #endif
+00031 
+00032 
+00033 /* stop watch objects */
+00034 
+00035 typedef struct dStopwatch {
+00036   double time;       /* total clock count */
+00037   unsigned long cc[2];     /* clock count since last `start' */
+00038 } dStopwatch;
+00039 
+00040 ODE_API void dStopwatchReset (dStopwatch *);
+00041 ODE_API void dStopwatchStart (dStopwatch *);
+00042 ODE_API void dStopwatchStop  (dStopwatch *);
+00043 ODE_API double dStopwatchTime (dStopwatch *);   /* returns total time in secs */
+00044 
+00045 
+00046 /* code timers */
+00047 
+00048 ODE_API void dTimerStart (const char *description);   /* pass a static string here */
+00049 ODE_API void dTimerNow (const char *description);  /* pass a static string here */
+00050 ODE_API void dTimerEnd(void);
+00051 
+00052 /* print out a timer report. if `average' is nonzero, print out the average
+00053  * time for each slot (this is only meaningful if the same start-now-end
+00054  * calls are being made repeatedly.
+00055  */
+00056 ODE_API void dTimerReport (FILE *fout, int average);
+00057 
+00058 
+00059 /* resolution */
+00060 
+00061 /* returns the timer ticks per second implied by the timing hardware or API.
+00062  * the actual timer resolution may not be this great.
+00063  */
+00064 ODE_API double dTimerTicksPerSecond(void);
+00065 
+00066 /* returns an estimate of the actual timer resolution, in seconds. this may
+00067  * be greater than 1/ticks_per_second.
+00068  */
+00069 ODE_API double dTimerResolution(void);
+00070 
+00071 
+00072 #ifdef __cplusplus
+00073 }
+00074 #endif
+00075 
+00076 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + 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 @@ + + +Open Dynamics Engine: version.h Source File + + + + +
+ +
+

version.h

00001 /*************************************************************************
+00002  *                                                                       *
+00003  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
+00004  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
+00005  *                                                                       *
+00006  * This library is free software; you can redistribute it and/or         *
+00007  * modify it under the terms of EITHER:                                  *
+00008  *   (1) The GNU Lesser General Public License as published by the Free  *
+00009  *       Software Foundation; either version 2.1 of the License, or (at  *
+00010  *       your option) any later version. The text of the GNU Lesser      *
+00011  *       General Public License is included with this library in the     *
+00012  *       file LICENSE.TXT.                                               *
+00013  *   (2) The BSD-style license that is included with this library in     *
+00014  *       the file LICENSE-BSD.TXT.                                       *
+00015  *                                                                       *
+00016  * This library is distributed in the hope that it will be useful,       *
+00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
+00019  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
+00020  *                                                                       *
+00021  *************************************************************************/
+00022 
+00023 #ifndef __VERSION_H
+00024 #define __VERSION_H
+00025 
+00026 /* high byte is major version, low byte is minor version */
+00027 #define DS_VERSION 0x0002
+00028 
+00029 #endif
+

Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by  + +doxygen 1.5.3
+ + -- cgit v1.1