Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ode/ode-0.9/docs/group__collide.html @ 216

Last change on this file since 216 was 216, checked in by mathiask, 17 years ago

[Physik] add ode-0.9

File size: 129.9 KB
RevLine 
[216]1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>Open Dynamics Engine: Collision Detection</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.3 -->
8<div class="tabs">
9  <ul>
10    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11    <li><a href="modules.html"><span>Modules</span></a></li>
12    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
13    <li><a href="files.html"><span>Files</span></a></li>
14  </ul>
15</div>
16<h1>Collision Detection</h1><table border="0" cellpadding="0" cellspacing="0">
17<tr><td></td></tr>
18<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
19<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__sphere.html">Sphere Class</a></td></tr>
20
21<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide__box.html">Box Class</a></td></tr>
22
23<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
24<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structd_contact_geom.html">dContactGeom</a></td></tr>
25
26<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Describe the contact point between two geoms.  <a href="structd_contact_geom.html#_details">More...</a><br></td></tr>
27<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
28<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef dReal&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9">dHeightfieldGetHeight</a> (void *p_user_data, int x, int z)</td></tr>
29
30<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback prototype.  <a href="#g32d2c58e3b2b589bd7672f3453102eb9"></a><br></td></tr>
31<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> (void *data, dGeomID o1, dGeomID o2)</td></tr>
32
33<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User callback for geom-geom collision testing.  <a href="#g9f458413ace07fa9e3e7e52d6652ace0"></a><br></td></tr>
34<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
35<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g96b9e7d3a7ca769b0c8f37eecfaf98c6">dGeomDestroy</a> (dGeomID geom)</td></tr>
36
37<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a geom, removing it from any space.  <a href="#g96b9e7d3a7ca769b0c8f37eecfaf98c6"></a><br></td></tr>
38<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gf68eb443d5c66ab1aaa8a7d38d1dbc4f">dGeomSetData</a> (dGeomID geom, void *data)</td></tr>
39
40<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the user-defined data pointer stored in the geom.  <a href="#gf68eb443d5c66ab1aaa8a7d38d1dbc4f"></a><br></td></tr>
41<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gc1a185e22b136814fd3afc8469d98996">dGeomGetData</a> (dGeomID geom)</td></tr>
42
43<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the user-defined data pointer stored in the geom.  <a href="#gc1a185e22b136814fd3afc8469d98996"></a><br></td></tr>
44<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g97cad1194789477eac19fe364d986505">dGeomSetBody</a> (dGeomID geom, dBodyID body)</td></tr>
45
46<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the body associated with a placeable geom.  <a href="#g97cad1194789477eac19fe364d986505"></a><br></td></tr>
47<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dBodyID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gd6cedf77fde0dddf751c5d42fcc8eebf">dGeomGetBody</a> (dGeomID geom)</td></tr>
48
49<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the body associated with a placeable geom.  <a href="#gd6cedf77fde0dddf751c5d42fcc8eebf"></a><br></td></tr>
50<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g71043b70a735e8f5451c3e13cef345fe">dGeomSetPosition</a> (dGeomID geom, dReal x, dReal y, dReal z)</td></tr>
51
52<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the position vector of a placeable geom.  <a href="#g71043b70a735e8f5451c3e13cef345fe"></a><br></td></tr>
53<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g76c510f4b7d5a036d8a36f2d60d670e5">dGeomSetRotation</a> (dGeomID geom, const dMatrix3 R)</td></tr>
54
55<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the rotation matrix of a placeable geom.  <a href="#g76c510f4b7d5a036d8a36f2d60d670e5"></a><br></td></tr>
56<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g989149d93162264d699444a57b045150">dGeomSetQuaternion</a> (dGeomID geom, const dQuaternion Q)</td></tr>
57
58<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the rotation of a placeable geom.  <a href="#g989149d93162264d699444a57b045150"></a><br></td></tr>
59<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g95b93f803880cac2619fe2635aa93ad8">dGeomGetPosition</a> (dGeomID geom)</td></tr>
60
61<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the position vector of a placeable geom.  <a href="#g95b93f803880cac2619fe2635aa93ad8"></a><br></td></tr>
62<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gd2cccf2b4c62bec58720d4f5fab8108d">dGeomCopyPosition</a> (dGeomID geom, dVector3 pos)</td></tr>
63
64<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy the position of a geom into a vector.  <a href="#gd2cccf2b4c62bec58720d4f5fab8108d"></a><br></td></tr>
65<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g293b2264cefb12f9a6659cacc6a722f7">dGeomGetRotation</a> (dGeomID geom)</td></tr>
66
67<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the rotation matrix of a placeable geom.  <a href="#g293b2264cefb12f9a6659cacc6a722f7"></a><br></td></tr>
68<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g800b702e148a8c279596f591b910cfbd">dGeomCopyRotation</a> (dGeomID geom, dMatrix3 R)</td></tr>
69
70<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the rotation matrix of a placeable geom.  <a href="#g800b702e148a8c279596f591b910cfbd"></a><br></td></tr>
71<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g11ad7f0098639b06f4bcd2d681122842">dGeomGetQuaternion</a> (dGeomID geom, dQuaternion result)</td></tr>
72
73<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the rotation quaternion of a placeable geom.  <a href="#g11ad7f0098639b06f4bcd2d681122842"></a><br></td></tr>
74<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g904e360ac6e9e85a05e67929990e5b72">dGeomGetAABB</a> (dGeomID geom, dReal aabb[6])</td></tr>
75
76<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the axis-aligned bounding box.  <a href="#g904e360ac6e9e85a05e67929990e5b72"></a><br></td></tr>
77<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#ge5a58bdc78fb4f163a0e9c3ecabf64c9">dGeomIsSpace</a> (dGeomID geom)</td></tr>
78
79<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determing if a geom is a space.  <a href="#ge5a58bdc78fb4f163a0e9c3ecabf64c9"></a><br></td></tr>
80<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dSpaceID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gfdc35eade2cbd0b6886ce957325d7c03">dGeomGetSpace</a> (dGeomID)</td></tr>
81
82<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query for the space containing a particular geom.  <a href="#gfdc35eade2cbd0b6886ce957325d7c03"></a><br></td></tr>
83<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g07b5ed5b915f756f419a4a7ce69dc67e">dGeomGetClass</a> (dGeomID geom)</td></tr>
84
85<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a geom, this returns its class.  <a href="#g07b5ed5b915f756f419a4a7ce69dc67e"></a><br></td></tr>
86<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g80fd5741701eb48472521780d5e2f9b9">dGeomSetCategoryBits</a> (dGeomID geom, unsigned long bits)</td></tr>
87
88<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the "category" bitfield for the given geom.  <a href="#g80fd5741701eb48472521780d5e2f9b9"></a><br></td></tr>
89<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#ga55b4de01a61be41668685857b78455d">dGeomSetCollideBits</a> (dGeomID geom, unsigned long bits)</td></tr>
90
91<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the "collide" bitfield for the given geom.  <a href="#ga55b4de01a61be41668685857b78455d"></a><br></td></tr>
92<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gfb62d3493b6789382f65776ab931e78d">dGeomGetCategoryBits</a> (dGeomID)</td></tr>
93
94<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the "category" bitfield for the given geom.  <a href="#gfb62d3493b6789382f65776ab931e78d"></a><br></td></tr>
95<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g5591e5c496a5a6f8b66dc57e03d0cd8d">dGeomGetCollideBits</a> (dGeomID)</td></tr>
96
97<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the "collide" bitfield for the given geom.  <a href="#g5591e5c496a5a6f8b66dc57e03d0cd8d"></a><br></td></tr>
98<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#ga7c64b8fcae37ee9541208a0351f3d05">dGeomEnable</a> (dGeomID geom)</td></tr>
99
100<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable a geom.  <a href="#ga7c64b8fcae37ee9541208a0351f3d05"></a><br></td></tr>
101<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g6cb32b4161435fe491859680b463fc12">dGeomDisable</a> (dGeomID geom)</td></tr>
102
103<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disable a geom.  <a href="#g6cb32b4161435fe491859680b463fc12"></a><br></td></tr>
104<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e">dGeomIsEnabled</a> (dGeomID geom)</td></tr>
105
106<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check to see if a geom is enabled.  <a href="#g6533d33f870cf0fb6684ec05e5c0562e"></a><br></td></tr>
107<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gdc292bc01d5bed32f145ee42760d73b4">dGeomSetOffsetPosition</a> (dGeomID geom, dReal x, dReal y, dReal z)</td></tr>
108
109<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the local offset position of a geom from its body.  <a href="#gdc292bc01d5bed32f145ee42760d73b4"></a><br></td></tr>
110<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g805d896b4bc79ceb40e70aadb9629cab">dGeomSetOffsetRotation</a> (dGeomID geom, const dMatrix3 R)</td></tr>
111
112<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the local offset rotation matrix of a geom from its body.  <a href="#g805d896b4bc79ceb40e70aadb9629cab"></a><br></td></tr>
113<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g9eba87b7598eb6b3a9b6bde1abbeaa1a">dGeomSetOffsetQuaternion</a> (dGeomID geom, const dQuaternion Q)</td></tr>
114
115<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the local offset rotation of a geom from its body.  <a href="#g9eba87b7598eb6b3a9b6bde1abbeaa1a"></a><br></td></tr>
116<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g934fe31c543d588991d28cd8571e52ed">dGeomSetOffsetWorldPosition</a> (dGeomID geom, dReal x, dReal y, dReal z)</td></tr>
117
118<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the offset position of a geom from its body.  <a href="#g934fe31c543d588991d28cd8571e52ed"></a><br></td></tr>
119<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g2c1ef27e7e8ced6eb8488221a1a7c200">dGeomSetOffsetWorldRotation</a> (dGeomID geom, const dMatrix3 R)</td></tr>
120
121<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the offset rotation of a geom from its body.  <a href="#g2c1ef27e7e8ced6eb8488221a1a7c200"></a><br></td></tr>
122<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#ga04f2117ab18a1d3e27270defdad83a8">dGeomSetOffsetWorldQuaternion</a> (dGeomID geom, const dQuaternion)</td></tr>
123
124<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the offset rotation of a geom from its body.  <a href="#ga04f2117ab18a1d3e27270defdad83a8"></a><br></td></tr>
125<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gc81929d988b21c4e5338017f2e92a6f2">dGeomClearOffset</a> (dGeomID geom)</td></tr>
126
127<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear any offset from the geom.  <a href="#gc81929d988b21c4e5338017f2e92a6f2"></a><br></td></tr>
128<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g46260e0668373aa600b1cf8f83276e10">dGeomIsOffset</a> (dGeomID geom)</td></tr>
129
130<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check to see whether the geom has an offset.  <a href="#g46260e0668373aa600b1cf8f83276e10"></a><br></td></tr>
131<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gb200f73800d253ab3a87f9856d4e18d2">dGeomGetOffsetPosition</a> (dGeomID geom)</td></tr>
132
133<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the offset position vector of a geom.  <a href="#gb200f73800d253ab3a87f9856d4e18d2"></a><br></td></tr>
134<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gd4a1e59ecc3c570e3c37c5b8fad71220">dGeomCopyOffsetPosition</a> (dGeomID geom, dVector3 pos)</td></tr>
135
136<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy the offset position vector of a geom.  <a href="#gd4a1e59ecc3c570e3c37c5b8fad71220"></a><br></td></tr>
137<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API const dReal *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gba28cf4ca8f552c782fc30ce3073dc73">dGeomGetOffsetRotation</a> (dGeomID geom)</td></tr>
138
139<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the offset rotation matrix of a geom.  <a href="#gba28cf4ca8f552c782fc30ce3073dc73"></a><br></td></tr>
140<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gcf96cd4f9913dc258e6f29da9979388c">dGeomCopyOffsetRotation</a> (dGeomID geom, dMatrix3 R)</td></tr>
141
142<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy the offset rotation matrix of a geom.  <a href="#gcf96cd4f9913dc258e6f29da9979388c"></a><br></td></tr>
143<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g8fc20f761daf36976e50d057cf2650ca">dGeomGetOffsetQuaternion</a> (dGeomID geom, dQuaternion result)</td></tr>
144
145<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the offset rotation quaternion of a geom.  <a href="#g8fc20f761daf36976e50d057cf2650ca"></a><br></td></tr>
146<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g08508345384abb95e25d674b39157bf8">dCollide</a> (dGeomID o1, dGeomID o2, int flags, <a class="el" href="structd_contact_geom.html">dContactGeom</a> *contact, int skip)</td></tr>
147
148<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given two geoms o1 and o2 that potentially intersect, generate contact information for them.  <a href="#g08508345384abb95e25d674b39157bf8"></a><br></td></tr>
149<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gfd185829b6940e2b3238517e1acd2fbb">dSpaceCollide</a> (dSpaceID space, void *data, <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> *callback)</td></tr>
150
151<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines which pairs of geoms in a space may potentially intersect, and calls the callback function for each candidate pair.  <a href="#gfd185829b6940e2b3238517e1acd2fbb"></a><br></td></tr>
152<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g72a6bb0b550d3e181f8b7a9be7179db5">dSpaceCollide2</a> (dGeomID space1, dGeomID space2, void *data, <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> *callback)</td></tr>
153
154<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines which geoms from one space may potentially intersect with geoms from another space, and calls the callback function for each candidate pair.  <a href="#g72a6bb0b550d3e181f8b7a9be7179db5"></a><br></td></tr>
155<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API dGeomID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gd50d5cd5fea5bfc12584e60d4a936cfb">dCreateHeightfield</a> (dSpaceID space, dHeightfieldDataID data, int bPlaceable)</td></tr>
156
157<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a heightfield geom.  <a href="#gd50d5cd5fea5bfc12584e60d4a936cfb"></a><br></td></tr>
158<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API <br>
159dHeightfieldDataID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g7de82d5cf9aa10bb3144d51f4360eea1">dGeomHeightfieldDataCreate</a> ()</td></tr>
160
161<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new empty dHeightfieldDataID.  <a href="#g7de82d5cf9aa10bb3144d51f4360eea1"></a><br></td></tr>
162<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gf98fc1f3d1784df5a5dff114b483d408">dGeomHeightfieldDataDestroy</a> (dHeightfieldDataID d)</td></tr>
163
164<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroys a dHeightfieldDataID.  <a href="#gf98fc1f3d1784df5a5dff114b483d408"></a><br></td></tr>
165<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g34566000a5a2673cc013294f0ed85926">dGeomHeightfieldDataBuildCallback</a> (dHeightfieldDataID d, void *pUserData, <a class="el" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9">dHeightfieldGetHeight</a> *pCallback, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
166
167<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use a callback to retrieve height data.  <a href="#g34566000a5a2673cc013294f0ed85926"></a><br></td></tr>
168<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g2c15b7c1a36c7526b66911beab1b7934">dGeomHeightfieldDataBuildByte</a> (dHeightfieldDataID d, const unsigned char *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
169
170<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use height data in byte format.  <a href="#g2c15b7c1a36c7526b66911beab1b7934"></a><br></td></tr>
171<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g2f7582d64cc8219141bc10efeca86d17">dGeomHeightfieldDataBuildShort</a> (dHeightfieldDataID d, const short *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
172
173<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use height data in short format.  <a href="#g2f7582d64cc8219141bc10efeca86d17"></a><br></td></tr>
174<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g8da529419317e7bd4e01dabbe94daa09">dGeomHeightfieldDataBuildSingle</a> (dHeightfieldDataID d, const float *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
175
176<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use height data in single precision floating point format.  <a href="#g8da529419317e7bd4e01dabbe94daa09"></a><br></td></tr>
177<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g98ec0c952b3b4e0fb3cd8cf66e267c86">dGeomHeightfieldDataBuildDouble</a> (dHeightfieldDataID d, const double *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)</td></tr>
178
179<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures a dHeightfieldDataID to use height data in double precision floating point format.  <a href="#g98ec0c952b3b4e0fb3cd8cf66e267c86"></a><br></td></tr>
180<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#gcdef420e65e3751388b315f5de2804b2">dGeomHeightfieldDataSetBounds</a> (dHeightfieldDataID d, dReal minHeight, dReal maxHeight)</td></tr>
181
182<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Manually set the minimum and maximum height bounds.  <a href="#gcdef420e65e3751388b315f5de2804b2"></a><br></td></tr>
183<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g6c1ae1f3ca652d6410e7804cdf8f8491">dGeomHeightfieldSetHeightfieldData</a> (dGeomID g, dHeightfieldDataID d)</td></tr>
184
185<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assigns a dHeightfieldDataID to a heightfield geom.  <a href="#g6c1ae1f3ca652d6410e7804cdf8f8491"></a><br></td></tr>
186<tr><td class="memItemLeft" nowrap align="right" valign="top">ODE_API <br>
187dHeightfieldDataID&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__collide.html#g747176d26ce4f9b10ebfa6c865ef1cca">dGeomHeightfieldGetHeightfieldData</a> (dGeomID g)</td></tr>
188
189<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the dHeightfieldDataID bound to a heightfield geom.  <a href="#g747176d26ce4f9b10ebfa6c865ef1cca"></a><br></td></tr>
190</table>
191<hr><a name="_details"></a><h2>Detailed Description</h2>
192ODE has two main components: a dynamics simulation engine and a collision detection engine. The collision engine is given information about the shape of each body. At each time step it figures out which bodies touch each other and passes the resulting contact point information to the user. The user in turn creates contact joints between bodies.<p>
193Using ODE's collision detection is optional - an alternative collision detection system can be used as long as it can supply the right kinds of contact information. <hr><h2>Typedef Documentation</h2>
194<a class="anchor" name="g32d2c58e3b2b589bd7672f3453102eb9"></a><!-- doxytag: member="collision.h::dHeightfieldGetHeight" ref="g32d2c58e3b2b589bd7672f3453102eb9" args="(void *p_user_data, int x, int z)" -->
195<div class="memitem">
196<div class="memproto">
197      <table class="memname">
198        <tr>
199          <td class="memname">typedef dReal <a class="el" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9">dHeightfieldGetHeight</a>(void *p_user_data, int x, int z)          </td>
200        </tr>
201      </table>
202</div>
203<div class="memdoc">
204
205<p>
206Callback prototype.
207<p>
208Used by the callback heightfield data type to sample a height for a given cell position.<p>
209<dl compact><dt><b>Parameters:</b></dt><dd>
210  <table border="0" cellspacing="2" cellpadding="0">
211    <tr><td valign="top"></td><td valign="top"><em>p_user_data</em>&nbsp;</td><td>User data specified when creating the dHeightfieldDataID </td></tr>
212    <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>The index of a sample in the local x axis. It is a value in the range zero to ( nWidthSamples - 1 ). </td></tr>
213    <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>The index of a sample in the local z axis. It is a value in the range zero to ( nDepthSamples - 1 ).</td></tr>
214  </table>
215</dl>
216<dl class="return" compact><dt><b>Returns:</b></dt><dd>The sample height which is then scaled and offset using the values specified when the heightfield data was created. </dd></dl>
217
218</div>
219</div><p>
220<a class="anchor" name="g9f458413ace07fa9e3e7e52d6652ace0"></a><!-- doxytag: member="collision_space.h::dNearCallback" ref="g9f458413ace07fa9e3e7e52d6652ace0" args="(void *data, dGeomID o1, dGeomID o2)" -->
221<div class="memitem">
222<div class="memproto">
223      <table class="memname">
224        <tr>
225          <td class="memname">typedef void <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a>(void *data, dGeomID o1, dGeomID o2)          </td>
226        </tr>
227      </table>
228</div>
229<div class="memdoc">
230
231<p>
232User callback for geom-geom collision testing.
233<p>
234<dl compact><dt><b>Parameters:</b></dt><dd>
235  <table border="0" cellspacing="2" cellpadding="0">
236    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The user data object, as passed to dSpaceCollide. </td></tr>
237    <tr><td valign="top"></td><td valign="top"><em>o1</em>&nbsp;</td><td>The first geom being tested. </td></tr>
238    <tr><td valign="top"></td><td valign="top"><em>o2</em>&nbsp;</td><td>The second geom being test.</td></tr>
239  </table>
240</dl>
241<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The callback function can call dCollide on o1 and o2 to generate contact points between each pair. Then these contact points may be added to the simulation as contact joints. The user's callback function can of course chose not to call dCollide for any pair, e.g. if the user decides that those pairs should not interact. </dd></dl>
242
243</div>
244</div><p>
245<hr><h2>Function Documentation</h2>
246<a class="anchor" name="g08508345384abb95e25d674b39157bf8"></a><!-- doxytag: member="collision.h::dCollide" ref="g08508345384abb95e25d674b39157bf8" args="(dGeomID o1, dGeomID o2, int flags, dContactGeom *contact, int skip)" -->
247<div class="memitem">
248<div class="memproto">
249      <table class="memname">
250        <tr>
251          <td class="memname">ODE_API int dCollide           </td>
252          <td>(</td>
253          <td class="paramtype">dGeomID&nbsp;</td>
254          <td class="paramname"> <em>o1</em>, </td>
255        </tr>
256        <tr>
257          <td class="paramkey"></td>
258          <td></td>
259          <td class="paramtype">dGeomID&nbsp;</td>
260          <td class="paramname"> <em>o2</em>, </td>
261        </tr>
262        <tr>
263          <td class="paramkey"></td>
264          <td></td>
265          <td class="paramtype">int&nbsp;</td>
266          <td class="paramname"> <em>flags</em>, </td>
267        </tr>
268        <tr>
269          <td class="paramkey"></td>
270          <td></td>
271          <td class="paramtype"><a class="el" href="structd_contact_geom.html">dContactGeom</a> *&nbsp;</td>
272          <td class="paramname"> <em>contact</em>, </td>
273        </tr>
274        <tr>
275          <td class="paramkey"></td>
276          <td></td>
277          <td class="paramtype">int&nbsp;</td>
278          <td class="paramname"> <em>skip</em></td><td>&nbsp;</td>
279        </tr>
280        <tr>
281          <td></td>
282          <td>)</td>
283          <td></td><td></td><td width="100%"></td>
284        </tr>
285      </table>
286</div>
287<div class="memdoc">
288
289<p>
290Given two geoms o1 and o2 that potentially intersect, generate contact information for them.
291<p>
292Internally, this just calls the correct class-specific collision functions for o1 and o2.<p>
293<dl compact><dt><b>Parameters:</b></dt><dd>
294  <table border="0" cellspacing="2" cellpadding="0">
295    <tr><td valign="top"></td><td valign="top"><em>o1</em>&nbsp;</td><td>The first geom to test. </td></tr>
296    <tr><td valign="top"></td><td valign="top"><em>o2</em>&nbsp;</td><td>The second geom to test.</td></tr>
297    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>The flags specify how contacts should be generated if the geoms touch. The lower 16 bits of flags is an integer that specifies the maximum number of contact points to generate. You must ask for at least one contact. Additionally, following bits may be set: CONTACTS_UNIMPORTANT -- just generate any contacts (skip contact refining). All other bits in flags must be set to zero. In the future the other bits may be used to select from different contact generation strategies.</td></tr>
298    <tr><td valign="top"></td><td valign="top"><em>contact</em>&nbsp;</td><td>Points to an array of <a class="el" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> structures. The array must be able to hold at least the maximum number of contacts. These <a class="el" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> structures may be embedded within larger structures in the array -- the skip parameter is the byte offset from one <a class="el" href="structd_contact_geom.html" title="Describe the contact point between two geoms.">dContactGeom</a> to the next in the array. If skip is sizeof(dContactGeom) then contact points to a normal (C-style) array. It is an error for skip to be smaller than sizeof(dContactGeom).</td></tr>
299  </table>
300</dl>
301<dl class="return" compact><dt><b>Returns:</b></dt><dd>If the geoms intersect, this function returns the number of contact points generated (and updates the contact array), otherwise it returns 0 (and the contact array is not touched).</dd></dl>
302<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>If a space is passed as o1 or o2 then this function will collide all objects contained in o1 with all objects contained in o2, and return the resulting contact points. This method for colliding spaces with geoms (or spaces with spaces) provides no user control over the individual collisions. To get that control, use dSpaceCollide or dSpaceCollide2 instead.<p>
303If o1 and o2 are the same geom then this function will do nothing and return 0. Technically speaking an object intersects with itself, but it is not useful to find contact points in this case.<p>
304This function does not care if o1 and o2 are in the same space or not (or indeed if they are in any space at all). </dd></dl>
305
306</div>
307</div><p>
308<a class="anchor" name="gd50d5cd5fea5bfc12584e60d4a936cfb"></a><!-- doxytag: member="collision.h::dCreateHeightfield" ref="gd50d5cd5fea5bfc12584e60d4a936cfb" args="(dSpaceID space, dHeightfieldDataID data, int bPlaceable)" -->
309<div class="memitem">
310<div class="memproto">
311      <table class="memname">
312        <tr>
313          <td class="memname">ODE_API dGeomID dCreateHeightfield           </td>
314          <td>(</td>
315          <td class="paramtype">dSpaceID&nbsp;</td>
316          <td class="paramname"> <em>space</em>, </td>
317        </tr>
318        <tr>
319          <td class="paramkey"></td>
320          <td></td>
321          <td class="paramtype">dHeightfieldDataID&nbsp;</td>
322          <td class="paramname"> <em>data</em>, </td>
323        </tr>
324        <tr>
325          <td class="paramkey"></td>
326          <td></td>
327          <td class="paramtype">int&nbsp;</td>
328          <td class="paramname"> <em>bPlaceable</em></td><td>&nbsp;</td>
329        </tr>
330        <tr>
331          <td></td>
332          <td>)</td>
333          <td></td><td></td><td width="100%"></td>
334        </tr>
335      </table>
336</div>
337<div class="memdoc">
338
339<p>
340Creates a heightfield geom.
341<p>
342Uses the information in the given dHeightfieldDataID to construct a geom representing a heightfield in a collision space.<p>
343<dl compact><dt><b>Parameters:</b></dt><dd>
344  <table border="0" cellspacing="2" cellpadding="0">
345    <tr><td valign="top"></td><td valign="top"><em>space</em>&nbsp;</td><td>The space to add the geom to. </td></tr>
346    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The dHeightfieldDataID created by dGeomHeightfieldDataCreate and setup by dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat. </td></tr>
347    <tr><td valign="top"></td><td valign="top"><em>bPlaceable</em>&nbsp;</td><td>If non-zero this geom can be transformed in the world using the usual functions such as dGeomSetPosition and dGeomSetRotation. If the geom is not set as placeable, then it uses a fixed orientation where the global y axis represents the dynamic 'height' of the heightfield.</td></tr>
348  </table>
349</dl>
350<dl class="return" compact><dt><b>Returns:</b></dt><dd>A geom id to reference this geom in other calls. </dd></dl>
351
352</div>
353</div><p>
354<a class="anchor" name="gc81929d988b21c4e5338017f2e92a6f2"></a><!-- doxytag: member="collision.h::dGeomClearOffset" ref="gc81929d988b21c4e5338017f2e92a6f2" args="(dGeomID geom)" -->
355<div class="memitem">
356<div class="memproto">
357      <table class="memname">
358        <tr>
359          <td class="memname">ODE_API void dGeomClearOffset           </td>
360          <td>(</td>
361          <td class="paramtype">dGeomID&nbsp;</td>
362          <td class="paramname"> <em>geom</em>          </td>
363          <td>&nbsp;)&nbsp;</td>
364          <td width="100%"></td>
365        </tr>
366      </table>
367</div>
368<div class="memdoc">
369
370<p>
371Clear any offset from the geom.
372<p>
373If the geom has an offset, it is eliminated and the geom is repositioned at the body's position. If the geom has no offset, this function does nothing. This is more efficient than calling dGeomSetOffsetPosition(zero) and dGeomSetOffsetRotation(identiy), because this function actually eliminates the offset, rather than leaving it as the identity transform.<p>
374<dl compact><dt><b>Parameters:</b></dt><dd>
375  <table border="0" cellspacing="2" cellpadding="0">
376    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to have its offset destroyed. </td></tr>
377  </table>
378</dl>
379
380</div>
381</div><p>
382<a class="anchor" name="gd4a1e59ecc3c570e3c37c5b8fad71220"></a><!-- doxytag: member="collision.h::dGeomCopyOffsetPosition" ref="gd4a1e59ecc3c570e3c37c5b8fad71220" args="(dGeomID geom, dVector3 pos)" -->
383<div class="memitem">
384<div class="memproto">
385      <table class="memname">
386        <tr>
387          <td class="memname">ODE_API void dGeomCopyOffsetPosition           </td>
388          <td>(</td>
389          <td class="paramtype">dGeomID&nbsp;</td>
390          <td class="paramname"> <em>geom</em>, </td>
391        </tr>
392        <tr>
393          <td class="paramkey"></td>
394          <td></td>
395          <td class="paramtype">dVector3&nbsp;</td>
396          <td class="paramname"> <em>pos</em></td><td>&nbsp;</td>
397        </tr>
398        <tr>
399          <td></td>
400          <td>)</td>
401          <td></td><td></td><td width="100%"></td>
402        </tr>
403      </table>
404</div>
405<div class="memdoc">
406
407<p>
408Copy the offset position vector of a geom.
409<p>
410Returns the positional offset of the geom in local coordinates. If the geom has no offset, this function returns the zero vector.<p>
411<dl compact><dt><b>Parameters:</b></dt><dd>
412  <table border="0" cellspacing="2" cellpadding="0">
413    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
414    <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>returns the offset position </td></tr>
415  </table>
416</dl>
417
418</div>
419</div><p>
420<a class="anchor" name="gcf96cd4f9913dc258e6f29da9979388c"></a><!-- doxytag: member="collision.h::dGeomCopyOffsetRotation" ref="gcf96cd4f9913dc258e6f29da9979388c" args="(dGeomID geom, dMatrix3 R)" -->
421<div class="memitem">
422<div class="memproto">
423      <table class="memname">
424        <tr>
425          <td class="memname">ODE_API void dGeomCopyOffsetRotation           </td>
426          <td>(</td>
427          <td class="paramtype">dGeomID&nbsp;</td>
428          <td class="paramname"> <em>geom</em>, </td>
429        </tr>
430        <tr>
431          <td class="paramkey"></td>
432          <td></td>
433          <td class="paramtype">dMatrix3&nbsp;</td>
434          <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
435        </tr>
436        <tr>
437          <td></td>
438          <td>)</td>
439          <td></td><td></td><td width="100%"></td>
440        </tr>
441      </table>
442</div>
443<div class="memdoc">
444
445<p>
446Copy the offset rotation matrix of a geom.
447<p>
448Returns the rotational offset of the geom in local coordinates. If the geom has no offset, this function returns the identity matrix.<p>
449<dl compact><dt><b>Parameters:</b></dt><dd>
450  <table border="0" cellspacing="2" cellpadding="0">
451    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
452    <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>returns the rotation matrix. </td></tr>
453  </table>
454</dl>
455
456</div>
457</div><p>
458<a class="anchor" name="gd2cccf2b4c62bec58720d4f5fab8108d"></a><!-- doxytag: member="collision.h::dGeomCopyPosition" ref="gd2cccf2b4c62bec58720d4f5fab8108d" args="(dGeomID geom, dVector3 pos)" -->
459<div class="memitem">
460<div class="memproto">
461      <table class="memname">
462        <tr>
463          <td class="memname">ODE_API void dGeomCopyPosition           </td>
464          <td>(</td>
465          <td class="paramtype">dGeomID&nbsp;</td>
466          <td class="paramname"> <em>geom</em>, </td>
467        </tr>
468        <tr>
469          <td class="paramkey"></td>
470          <td></td>
471          <td class="paramtype">dVector3&nbsp;</td>
472          <td class="paramname"> <em>pos</em></td><td>&nbsp;</td>
473        </tr>
474        <tr>
475          <td></td>
476          <td>)</td>
477          <td></td><td></td><td width="100%"></td>
478        </tr>
479      </table>
480</div>
481<div class="memdoc">
482
483<p>
484Copy the position of a geom into a vector.
485<p>
486<dl compact><dt><b>Parameters:</b></dt><dd>
487  <table border="0" cellspacing="2" cellpadding="0">
488    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
489    <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>a copy of the geom position </td></tr>
490  </table>
491</dl>
492<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g95b93f803880cac2619fe2635aa93ad8" title="Get the position vector of a placeable geom.">dGeomGetPosition</a> </dd></dl>
493
494</div>
495</div><p>
496<a class="anchor" name="g800b702e148a8c279596f591b910cfbd"></a><!-- doxytag: member="collision.h::dGeomCopyRotation" ref="g800b702e148a8c279596f591b910cfbd" args="(dGeomID geom, dMatrix3 R)" -->
497<div class="memitem">
498<div class="memproto">
499      <table class="memname">
500        <tr>
501          <td class="memname">ODE_API void dGeomCopyRotation           </td>
502          <td>(</td>
503          <td class="paramtype">dGeomID&nbsp;</td>
504          <td class="paramname"> <em>geom</em>, </td>
505        </tr>
506        <tr>
507          <td class="paramkey"></td>
508          <td></td>
509          <td class="paramtype">dMatrix3&nbsp;</td>
510          <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
511        </tr>
512        <tr>
513          <td></td>
514          <td>)</td>
515          <td></td><td></td><td width="100%"></td>
516        </tr>
517      </table>
518</div>
519<div class="memdoc">
520
521<p>
522Get the rotation matrix of a placeable geom.
523<p>
524If the geom is attached to a body, the body's rotation will be returned.<p>
525Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
526<dl compact><dt><b>Parameters:</b></dt><dd>
527  <table border="0" cellspacing="2" cellpadding="0">
528    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
529    <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>a copy of the geom rotation </td></tr>
530  </table>
531</dl>
532<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g293b2264cefb12f9a6659cacc6a722f7" title="Get the rotation matrix of a placeable geom.">dGeomGetRotation</a> </dd></dl>
533
534</div>
535</div><p>
536<a class="anchor" name="g96b9e7d3a7ca769b0c8f37eecfaf98c6"></a><!-- doxytag: member="collision.h::dGeomDestroy" ref="g96b9e7d3a7ca769b0c8f37eecfaf98c6" args="(dGeomID geom)" -->
537<div class="memitem">
538<div class="memproto">
539      <table class="memname">
540        <tr>
541          <td class="memname">ODE_API void dGeomDestroy           </td>
542          <td>(</td>
543          <td class="paramtype">dGeomID&nbsp;</td>
544          <td class="paramname"> <em>geom</em>          </td>
545          <td>&nbsp;)&nbsp;</td>
546          <td width="100%"></td>
547        </tr>
548      </table>
549</div>
550<div class="memdoc">
551
552<p>
553Destroy a geom, removing it from any space.
554<p>
555Destroy a geom, removing it from any space it is in first. This one function destroys a geom of any type, but to create a geom you must call a creation function for that type.<p>
556When a space is destroyed, if its cleanup mode is 1 (the default) then all the geoms in that space are automatically destroyed as well.<p>
557<dl compact><dt><b>Parameters:</b></dt><dd>
558  <table border="0" cellspacing="2" cellpadding="0">
559    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to be destroyed. </td></tr>
560  </table>
561</dl>
562
563</div>
564</div><p>
565<a class="anchor" name="g6cb32b4161435fe491859680b463fc12"></a><!-- doxytag: member="collision.h::dGeomDisable" ref="g6cb32b4161435fe491859680b463fc12" args="(dGeomID geom)" -->
566<div class="memitem">
567<div class="memproto">
568      <table class="memname">
569        <tr>
570          <td class="memname">ODE_API void dGeomDisable           </td>
571          <td>(</td>
572          <td class="paramtype">dGeomID&nbsp;</td>
573          <td class="paramname"> <em>geom</em>          </td>
574          <td>&nbsp;)&nbsp;</td>
575          <td width="100%"></td>
576        </tr>
577      </table>
578</div>
579<div class="memdoc">
580
581<p>
582Disable a geom.
583<p>
584Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2, although they can still be members of a space. New geoms are created in the enabled state.<p>
585<dl compact><dt><b>Parameters:</b></dt><dd>
586  <table border="0" cellspacing="2" cellpadding="0">
587    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to disable </td></tr>
588  </table>
589</dl>
590<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g6cb32b4161435fe491859680b463fc12" title="Disable a geom.">dGeomDisable</a> <p>
591<a class="el" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e" title="Check to see if a geom is enabled.">dGeomIsEnabled</a> </dd></dl>
592
593</div>
594</div><p>
595<a class="anchor" name="ga7c64b8fcae37ee9541208a0351f3d05"></a><!-- doxytag: member="collision.h::dGeomEnable" ref="ga7c64b8fcae37ee9541208a0351f3d05" args="(dGeomID geom)" -->
596<div class="memitem">
597<div class="memproto">
598      <table class="memname">
599        <tr>
600          <td class="memname">ODE_API void dGeomEnable           </td>
601          <td>(</td>
602          <td class="paramtype">dGeomID&nbsp;</td>
603          <td class="paramname"> <em>geom</em>          </td>
604          <td>&nbsp;)&nbsp;</td>
605          <td width="100%"></td>
606        </tr>
607      </table>
608</div>
609<div class="memdoc">
610
611<p>
612Enable a geom.
613<p>
614Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2, although they can still be members of a space. New geoms are created in the enabled state.<p>
615<dl compact><dt><b>Parameters:</b></dt><dd>
616  <table border="0" cellspacing="2" cellpadding="0">
617    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to enable </td></tr>
618  </table>
619</dl>
620<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g6cb32b4161435fe491859680b463fc12" title="Disable a geom.">dGeomDisable</a> <p>
621<a class="el" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e" title="Check to see if a geom is enabled.">dGeomIsEnabled</a> </dd></dl>
622
623</div>
624</div><p>
625<a class="anchor" name="g904e360ac6e9e85a05e67929990e5b72"></a><!-- doxytag: member="collision.h::dGeomGetAABB" ref="g904e360ac6e9e85a05e67929990e5b72" args="(dGeomID geom, dReal aabb[6])" -->
626<div class="memitem">
627<div class="memproto">
628      <table class="memname">
629        <tr>
630          <td class="memname">ODE_API void dGeomGetAABB           </td>
631          <td>(</td>
632          <td class="paramtype">dGeomID&nbsp;</td>
633          <td class="paramname"> <em>geom</em>, </td>
634        </tr>
635        <tr>
636          <td class="paramkey"></td>
637          <td></td>
638          <td class="paramtype">dReal&nbsp;</td>
639          <td class="paramname"> <em>aabb</em>[6]</td><td>&nbsp;</td>
640        </tr>
641        <tr>
642          <td></td>
643          <td>)</td>
644          <td></td><td></td><td width="100%"></td>
645        </tr>
646      </table>
647</div>
648<div class="memdoc">
649
650<p>
651Return the axis-aligned bounding box.
652<p>
653Return in aabb an axis aligned bounding box that surrounds the given geom. The aabb array has elements (minx, maxx, miny, maxy, minz, maxz). If the geom is a space, a bounding box that surrounds all contained geoms is returned.<p>
654This function may return a pre-computed cached bounding box, if it can determine that the geom has not moved since the last time the bounding box was computed.<p>
655<dl compact><dt><b>Parameters:</b></dt><dd>
656  <table border="0" cellspacing="2" cellpadding="0">
657    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
658    <tr><td valign="top"></td><td valign="top"><em>aabb</em>&nbsp;</td><td>the returned bounding box </td></tr>
659  </table>
660</dl>
661
662</div>
663</div><p>
664<a class="anchor" name="gd6cedf77fde0dddf751c5d42fcc8eebf"></a><!-- doxytag: member="collision.h::dGeomGetBody" ref="gd6cedf77fde0dddf751c5d42fcc8eebf" args="(dGeomID geom)" -->
665<div class="memitem">
666<div class="memproto">
667      <table class="memname">
668        <tr>
669          <td class="memname">ODE_API dBodyID dGeomGetBody           </td>
670          <td>(</td>
671          <td class="paramtype">dGeomID&nbsp;</td>
672          <td class="paramname"> <em>geom</em>          </td>
673          <td>&nbsp;)&nbsp;</td>
674          <td width="100%"></td>
675        </tr>
676      </table>
677</div>
678<div class="memdoc">
679
680<p>
681Get the body associated with a placeable geom.
682<p>
683<dl compact><dt><b>Parameters:</b></dt><dd>
684  <table border="0" cellspacing="2" cellpadding="0">
685    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
686  </table>
687</dl>
688<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g97cad1194789477eac19fe364d986505" title="Set the body associated with a placeable geom.">dGeomSetBody</a> </dd></dl>
689
690</div>
691</div><p>
692<a class="anchor" name="gfb62d3493b6789382f65776ab931e78d"></a><!-- doxytag: member="collision.h::dGeomGetCategoryBits" ref="gfb62d3493b6789382f65776ab931e78d" args="(dGeomID)" -->
693<div class="memitem">
694<div class="memproto">
695      <table class="memname">
696        <tr>
697          <td class="memname">ODE_API unsigned long dGeomGetCategoryBits           </td>
698          <td>(</td>
699          <td class="paramtype">dGeomID&nbsp;</td>
700          <td class="paramname">          </td>
701          <td>&nbsp;)&nbsp;</td>
702          <td width="100%"></td>
703        </tr>
704      </table>
705</div>
706<div class="memdoc">
707
708<p>
709Get the "category" bitfield for the given geom.
710<p>
711<dl compact><dt><b>Parameters:</b></dt><dd>
712  <table border="0" cellspacing="2" cellpadding="0">
713    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set </td></tr>
714    <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>the new bitfield value </td></tr>
715  </table>
716</dl>
717<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g80fd5741701eb48472521780d5e2f9b9" title="Set the &quot;category&quot; bitfield for the given geom.">dGeomSetCategoryBits</a> </dd></dl>
718
719</div>
720</div><p>
721<a class="anchor" name="g07b5ed5b915f756f419a4a7ce69dc67e"></a><!-- doxytag: member="collision.h::dGeomGetClass" ref="g07b5ed5b915f756f419a4a7ce69dc67e" args="(dGeomID geom)" -->
722<div class="memitem">
723<div class="memproto">
724      <table class="memname">
725        <tr>
726          <td class="memname">ODE_API int dGeomGetClass           </td>
727          <td>(</td>
728          <td class="paramtype">dGeomID&nbsp;</td>
729          <td class="paramname"> <em>geom</em>          </td>
730          <td>&nbsp;)&nbsp;</td>
731          <td width="100%"></td>
732        </tr>
733      </table>
734</div>
735<div class="memdoc">
736
737<p>
738Given a geom, this returns its class.
739<p>
740The ODE classes are: <ul>
741<li>dSphereClass </li>
742<li>dBoxClass </li>
743<li>dCylinderClass </li>
744<li>dPlaneClass </li>
745<li>dRayClass </li>
746<li>dConvexClass </li>
747<li>dGeomTransformClass </li>
748<li>dTriMeshClass </li>
749<li>dSimpleSpaceClass </li>
750<li>dHashSpaceClass </li>
751<li>dQuadTreeSpaceClass </li>
752<li>dFirstUserClass </li>
753<li>dLastUserClass</li>
754</ul>
755User-defined class will return their own number.<p>
756<dl compact><dt><b>Parameters:</b></dt><dd>
757  <table border="0" cellspacing="2" cellpadding="0">
758    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
759  </table>
760</dl>
761<dl class="return" compact><dt><b>Returns:</b></dt><dd>The geom class ID. </dd></dl>
762
763</div>
764</div><p>
765<a class="anchor" name="g5591e5c496a5a6f8b66dc57e03d0cd8d"></a><!-- doxytag: member="collision.h::dGeomGetCollideBits" ref="g5591e5c496a5a6f8b66dc57e03d0cd8d" args="(dGeomID)" -->
766<div class="memitem">
767<div class="memproto">
768      <table class="memname">
769        <tr>
770          <td class="memname">ODE_API unsigned long dGeomGetCollideBits           </td>
771          <td>(</td>
772          <td class="paramtype">dGeomID&nbsp;</td>
773          <td class="paramname">          </td>
774          <td>&nbsp;)&nbsp;</td>
775          <td width="100%"></td>
776        </tr>
777      </table>
778</div>
779<div class="memdoc">
780
781<p>
782Get the "collide" bitfield for the given geom.
783<p>
784<dl compact><dt><b>Parameters:</b></dt><dd>
785  <table border="0" cellspacing="2" cellpadding="0">
786    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set </td></tr>
787    <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>the new bitfield value </td></tr>
788  </table>
789</dl>
790<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#ga55b4de01a61be41668685857b78455d" title="Set the &quot;collide&quot; bitfield for the given geom.">dGeomSetCollideBits</a> </dd></dl>
791
792</div>
793</div><p>
794<a class="anchor" name="gc1a185e22b136814fd3afc8469d98996"></a><!-- doxytag: member="collision.h::dGeomGetData" ref="gc1a185e22b136814fd3afc8469d98996" args="(dGeomID geom)" -->
795<div class="memitem">
796<div class="memproto">
797      <table class="memname">
798        <tr>
799          <td class="memname">ODE_API void* dGeomGetData           </td>
800          <td>(</td>
801          <td class="paramtype">dGeomID&nbsp;</td>
802          <td class="paramname"> <em>geom</em>          </td>
803          <td>&nbsp;)&nbsp;</td>
804          <td width="100%"></td>
805        </tr>
806      </table>
807</div>
808<div class="memdoc">
809
810<p>
811Get the user-defined data pointer stored in the geom.
812<p>
813<dl compact><dt><b>Parameters:</b></dt><dd>
814  <table border="0" cellspacing="2" cellpadding="0">
815    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom containing the data </td></tr>
816  </table>
817</dl>
818
819</div>
820</div><p>
821<a class="anchor" name="gb200f73800d253ab3a87f9856d4e18d2"></a><!-- doxytag: member="collision.h::dGeomGetOffsetPosition" ref="gb200f73800d253ab3a87f9856d4e18d2" args="(dGeomID geom)" -->
822<div class="memitem">
823<div class="memproto">
824      <table class="memname">
825        <tr>
826          <td class="memname">ODE_API const dReal* dGeomGetOffsetPosition           </td>
827          <td>(</td>
828          <td class="paramtype">dGeomID&nbsp;</td>
829          <td class="paramname"> <em>geom</em>          </td>
830          <td>&nbsp;)&nbsp;</td>
831          <td width="100%"></td>
832        </tr>
833      </table>
834</div>
835<div class="memdoc">
836
837<p>
838Get the offset position vector of a geom.
839<p>
840Returns the positional offset of the geom in local coordinates. If the geom has no offset, this function returns the zero vector.<p>
841<dl compact><dt><b>Parameters:</b></dt><dd>
842  <table border="0" cellspacing="2" cellpadding="0">
843    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
844  </table>
845</dl>
846<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the geom's offset vector. </dd></dl>
847<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom. </dd></dl>
848
849</div>
850</div><p>
851<a class="anchor" name="g8fc20f761daf36976e50d057cf2650ca"></a><!-- doxytag: member="collision.h::dGeomGetOffsetQuaternion" ref="g8fc20f761daf36976e50d057cf2650ca" args="(dGeomID geom, dQuaternion result)" -->
852<div class="memitem">
853<div class="memproto">
854      <table class="memname">
855        <tr>
856          <td class="memname">ODE_API void dGeomGetOffsetQuaternion           </td>
857          <td>(</td>
858          <td class="paramtype">dGeomID&nbsp;</td>
859          <td class="paramname"> <em>geom</em>, </td>
860        </tr>
861        <tr>
862          <td class="paramkey"></td>
863          <td></td>
864          <td class="paramtype">dQuaternion&nbsp;</td>
865          <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
866        </tr>
867        <tr>
868          <td></td>
869          <td>)</td>
870          <td></td><td></td><td width="100%"></td>
871        </tr>
872      </table>
873</div>
874<div class="memdoc">
875
876<p>
877Get the offset rotation quaternion of a geom.
878<p>
879Returns the rotation offset of the geom as a quaternion. If the geom has no offset, the identity quaternion is returned.<p>
880<dl compact><dt><b>Parameters:</b></dt><dd>
881  <table border="0" cellspacing="2" cellpadding="0">
882    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
883    <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>a copy of the rotation quaternion. </td></tr>
884  </table>
885</dl>
886
887</div>
888</div><p>
889<a class="anchor" name="gba28cf4ca8f552c782fc30ce3073dc73"></a><!-- doxytag: member="collision.h::dGeomGetOffsetRotation" ref="gba28cf4ca8f552c782fc30ce3073dc73" args="(dGeomID geom)" -->
890<div class="memitem">
891<div class="memproto">
892      <table class="memname">
893        <tr>
894          <td class="memname">ODE_API const dReal* dGeomGetOffsetRotation           </td>
895          <td>(</td>
896          <td class="paramtype">dGeomID&nbsp;</td>
897          <td class="paramname"> <em>geom</em>          </td>
898          <td>&nbsp;)&nbsp;</td>
899          <td width="100%"></td>
900        </tr>
901      </table>
902</div>
903<div class="memdoc">
904
905<p>
906Get the offset rotation matrix of a geom.
907<p>
908Returns the rotational offset of the geom in local coordinates. If the geom has no offset, this function returns the identity matrix.<p>
909<dl compact><dt><b>Parameters:</b></dt><dd>
910  <table border="0" cellspacing="2" cellpadding="0">
911    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
912  </table>
913</dl>
914<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the geom's offset rotation matrix. </dd></dl>
915<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom. </dd></dl>
916
917</div>
918</div><p>
919<a class="anchor" name="g95b93f803880cac2619fe2635aa93ad8"></a><!-- doxytag: member="collision.h::dGeomGetPosition" ref="g95b93f803880cac2619fe2635aa93ad8" args="(dGeomID geom)" -->
920<div class="memitem">
921<div class="memproto">
922      <table class="memname">
923        <tr>
924          <td class="memname">ODE_API const dReal* dGeomGetPosition           </td>
925          <td>(</td>
926          <td class="paramtype">dGeomID&nbsp;</td>
927          <td class="paramname"> <em>geom</em>          </td>
928          <td>&nbsp;)&nbsp;</td>
929          <td width="100%"></td>
930        </tr>
931      </table>
932</div>
933<div class="memdoc">
934
935<p>
936Get the position vector of a placeable geom.
937<p>
938If the geom is attached to a body, the body's position will be returned.<p>
939Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
940<dl compact><dt><b>Parameters:</b></dt><dd>
941  <table border="0" cellspacing="2" cellpadding="0">
942    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
943  </table>
944</dl>
945<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the geom's position vector. </dd></dl>
946<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom. </dd></dl>
947<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#g2bddae29591b9f14c5175411b783d570" title="Get the position of a body.">dBodyGetPosition</a> </dd></dl>
948
949</div>
950</div><p>
951<a class="anchor" name="g11ad7f0098639b06f4bcd2d681122842"></a><!-- doxytag: member="collision.h::dGeomGetQuaternion" ref="g11ad7f0098639b06f4bcd2d681122842" args="(dGeomID geom, dQuaternion result)" -->
952<div class="memitem">
953<div class="memproto">
954      <table class="memname">
955        <tr>
956          <td class="memname">ODE_API void dGeomGetQuaternion           </td>
957          <td>(</td>
958          <td class="paramtype">dGeomID&nbsp;</td>
959          <td class="paramname"> <em>geom</em>, </td>
960        </tr>
961        <tr>
962          <td class="paramkey"></td>
963          <td></td>
964          <td class="paramtype">dQuaternion&nbsp;</td>
965          <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
966        </tr>
967        <tr>
968          <td></td>
969          <td>)</td>
970          <td></td><td></td><td width="100%"></td>
971        </tr>
972      </table>
973</div>
974<div class="memdoc">
975
976<p>
977Get the rotation quaternion of a placeable geom.
978<p>
979If the geom is attached to a body, the body's quaternion will be returned.<p>
980Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
981<dl compact><dt><b>Parameters:</b></dt><dd>
982  <table border="0" cellspacing="2" cellpadding="0">
983    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
984    <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>a copy of the rotation quaternion. </td></tr>
985  </table>
986</dl>
987<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#g36b7e19622ed47fe6b9dcfbac20237e7" title="Get the rotation of a body.">dBodyGetQuaternion</a> </dd></dl>
988
989</div>
990</div><p>
991<a class="anchor" name="g293b2264cefb12f9a6659cacc6a722f7"></a><!-- doxytag: member="collision.h::dGeomGetRotation" ref="g293b2264cefb12f9a6659cacc6a722f7" args="(dGeomID geom)" -->
992<div class="memitem">
993<div class="memproto">
994      <table class="memname">
995        <tr>
996          <td class="memname">ODE_API const dReal* dGeomGetRotation           </td>
997          <td>(</td>
998          <td class="paramtype">dGeomID&nbsp;</td>
999          <td class="paramname"> <em>geom</em>          </td>
1000          <td>&nbsp;)&nbsp;</td>
1001          <td width="100%"></td>
1002        </tr>
1003      </table>
1004</div>
1005<div class="memdoc">
1006
1007<p>
1008Get the rotation matrix of a placeable geom.
1009<p>
1010If the geom is attached to a body, the body's rotation will be returned.<p>
1011Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
1012<dl compact><dt><b>Parameters:</b></dt><dd>
1013  <table border="0" cellspacing="2" cellpadding="0">
1014    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
1015  </table>
1016</dl>
1017<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the geom's rotation matrix. </dd></dl>
1018<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The returned value is a pointer to the geom's internal data structure. It is valid until any changes are made to the geom. </dd></dl>
1019<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#g2374da7ff88a2bac607e2fbce529ad27" title="Get the rotation of a body.">dBodyGetRotation</a> </dd></dl>
1020
1021</div>
1022</div><p>
1023<a class="anchor" name="gfdc35eade2cbd0b6886ce957325d7c03"></a><!-- doxytag: member="collision.h::dGeomGetSpace" ref="gfdc35eade2cbd0b6886ce957325d7c03" args="(dGeomID)" -->
1024<div class="memitem">
1025<div class="memproto">
1026      <table class="memname">
1027        <tr>
1028          <td class="memname">ODE_API dSpaceID dGeomGetSpace           </td>
1029          <td>(</td>
1030          <td class="paramtype">dGeomID&nbsp;</td>
1031          <td class="paramname">          </td>
1032          <td>&nbsp;)&nbsp;</td>
1033          <td width="100%"></td>
1034        </tr>
1035      </table>
1036</div>
1037<div class="memdoc">
1038
1039<p>
1040Query for the space containing a particular geom.
1041<p>
1042<dl compact><dt><b>Parameters:</b></dt><dd>
1043  <table border="0" cellspacing="2" cellpadding="0">
1044    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
1045  </table>
1046</dl>
1047<dl class="return" compact><dt><b>Returns:</b></dt><dd>The space that contains the geom, or NULL if the geom is not contained by a space. </dd></dl>
1048
1049</div>
1050</div><p>
1051<a class="anchor" name="g2c15b7c1a36c7526b66911beab1b7934"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildByte" ref="g2c15b7c1a36c7526b66911beab1b7934" args="(dHeightfieldDataID d, const unsigned char *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1052<div class="memitem">
1053<div class="memproto">
1054      <table class="memname">
1055        <tr>
1056          <td class="memname">ODE_API void dGeomHeightfieldDataBuildByte           </td>
1057          <td>(</td>
1058          <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1059          <td class="paramname"> <em>d</em>, </td>
1060        </tr>
1061        <tr>
1062          <td class="paramkey"></td>
1063          <td></td>
1064          <td class="paramtype">const unsigned char *&nbsp;</td>
1065          <td class="paramname"> <em>pHeightData</em>, </td>
1066        </tr>
1067        <tr>
1068          <td class="paramkey"></td>
1069          <td></td>
1070          <td class="paramtype">int&nbsp;</td>
1071          <td class="paramname"> <em>bCopyHeightData</em>, </td>
1072        </tr>
1073        <tr>
1074          <td class="paramkey"></td>
1075          <td></td>
1076          <td class="paramtype">dReal&nbsp;</td>
1077          <td class="paramname"> <em>width</em>, </td>
1078        </tr>
1079        <tr>
1080          <td class="paramkey"></td>
1081          <td></td>
1082          <td class="paramtype">dReal&nbsp;</td>
1083          <td class="paramname"> <em>depth</em>, </td>
1084        </tr>
1085        <tr>
1086          <td class="paramkey"></td>
1087          <td></td>
1088          <td class="paramtype">int&nbsp;</td>
1089          <td class="paramname"> <em>widthSamples</em>, </td>
1090        </tr>
1091        <tr>
1092          <td class="paramkey"></td>
1093          <td></td>
1094          <td class="paramtype">int&nbsp;</td>
1095          <td class="paramname"> <em>depthSamples</em>, </td>
1096        </tr>
1097        <tr>
1098          <td class="paramkey"></td>
1099          <td></td>
1100          <td class="paramtype">dReal&nbsp;</td>
1101          <td class="paramname"> <em>scale</em>, </td>
1102        </tr>
1103        <tr>
1104          <td class="paramkey"></td>
1105          <td></td>
1106          <td class="paramtype">dReal&nbsp;</td>
1107          <td class="paramname"> <em>offset</em>, </td>
1108        </tr>
1109        <tr>
1110          <td class="paramkey"></td>
1111          <td></td>
1112          <td class="paramtype">dReal&nbsp;</td>
1113          <td class="paramname"> <em>thickness</em>, </td>
1114        </tr>
1115        <tr>
1116          <td class="paramkey"></td>
1117          <td></td>
1118          <td class="paramtype">int&nbsp;</td>
1119          <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1120        </tr>
1121        <tr>
1122          <td></td>
1123          <td>)</td>
1124          <td></td><td></td><td width="100%"></td>
1125        </tr>
1126      </table>
1127</div>
1128<div class="memdoc">
1129
1130<p>
1131Configures a dHeightfieldDataID to use height data in byte format.
1132<p>
1133Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is stored as a rectangular array of bytes (8 bit unsigned) representing the height at each sample point.<p>
1134<dl compact><dt><b>Parameters:</b></dt><dd>
1135  <table border="0" cellspacing="2" cellpadding="0">
1136    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1137    <tr><td valign="top"></td><td valign="top"><em>pHeightData</em>&nbsp;</td><td>A pointer to the height data. </td></tr>
1138    <tr><td valign="top"></td><td valign="top"><em>bCopyHeightData</em>&nbsp;</td><td>When non-zero the height data is copied to an internal store. When zero the height data is accessed by reference and so must persist throughout the lifetime of the heightfield.</td></tr>
1139    <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1140    <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1141    <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1142    <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1143    <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1144    <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1145    <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1146    <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1147  </table>
1148</dl>
1149
1150</div>
1151</div><p>
1152<a class="anchor" name="g34566000a5a2673cc013294f0ed85926"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildCallback" ref="g34566000a5a2673cc013294f0ed85926" args="(dHeightfieldDataID d, void *pUserData, dHeightfieldGetHeight *pCallback, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1153<div class="memitem">
1154<div class="memproto">
1155      <table class="memname">
1156        <tr>
1157          <td class="memname">ODE_API void dGeomHeightfieldDataBuildCallback           </td>
1158          <td>(</td>
1159          <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1160          <td class="paramname"> <em>d</em>, </td>
1161        </tr>
1162        <tr>
1163          <td class="paramkey"></td>
1164          <td></td>
1165          <td class="paramtype">void *&nbsp;</td>
1166          <td class="paramname"> <em>pUserData</em>, </td>
1167        </tr>
1168        <tr>
1169          <td class="paramkey"></td>
1170          <td></td>
1171          <td class="paramtype"><a class="el" href="group__collide.html#g32d2c58e3b2b589bd7672f3453102eb9">dHeightfieldGetHeight</a> *&nbsp;</td>
1172          <td class="paramname"> <em>pCallback</em>, </td>
1173        </tr>
1174        <tr>
1175          <td class="paramkey"></td>
1176          <td></td>
1177          <td class="paramtype">dReal&nbsp;</td>
1178          <td class="paramname"> <em>width</em>, </td>
1179        </tr>
1180        <tr>
1181          <td class="paramkey"></td>
1182          <td></td>
1183          <td class="paramtype">dReal&nbsp;</td>
1184          <td class="paramname"> <em>depth</em>, </td>
1185        </tr>
1186        <tr>
1187          <td class="paramkey"></td>
1188          <td></td>
1189          <td class="paramtype">int&nbsp;</td>
1190          <td class="paramname"> <em>widthSamples</em>, </td>
1191        </tr>
1192        <tr>
1193          <td class="paramkey"></td>
1194          <td></td>
1195          <td class="paramtype">int&nbsp;</td>
1196          <td class="paramname"> <em>depthSamples</em>, </td>
1197        </tr>
1198        <tr>
1199          <td class="paramkey"></td>
1200          <td></td>
1201          <td class="paramtype">dReal&nbsp;</td>
1202          <td class="paramname"> <em>scale</em>, </td>
1203        </tr>
1204        <tr>
1205          <td class="paramkey"></td>
1206          <td></td>
1207          <td class="paramtype">dReal&nbsp;</td>
1208          <td class="paramname"> <em>offset</em>, </td>
1209        </tr>
1210        <tr>
1211          <td class="paramkey"></td>
1212          <td></td>
1213          <td class="paramtype">dReal&nbsp;</td>
1214          <td class="paramname"> <em>thickness</em>, </td>
1215        </tr>
1216        <tr>
1217          <td class="paramkey"></td>
1218          <td></td>
1219          <td class="paramtype">int&nbsp;</td>
1220          <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1221        </tr>
1222        <tr>
1223          <td></td>
1224          <td>)</td>
1225          <td></td><td></td><td width="100%"></td>
1226        </tr>
1227      </table>
1228</div>
1229<div class="memdoc">
1230
1231<p>
1232Configures a dHeightfieldDataID to use a callback to retrieve height data.
1233<p>
1234Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is computed by the user and it should use the given callback when determining the height of a given element of it's shape.<p>
1235<dl compact><dt><b>Parameters:</b></dt><dd>
1236  <table border="0" cellspacing="2" cellpadding="0">
1237    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1238    <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1239    <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1240    <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1241    <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1242    <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1243    <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1244    <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1245    <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1246  </table>
1247</dl>
1248
1249</div>
1250</div><p>
1251<a class="anchor" name="g98ec0c952b3b4e0fb3cd8cf66e267c86"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildDouble" ref="g98ec0c952b3b4e0fb3cd8cf66e267c86" args="(dHeightfieldDataID d, const double *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1252<div class="memitem">
1253<div class="memproto">
1254      <table class="memname">
1255        <tr>
1256          <td class="memname">ODE_API void dGeomHeightfieldDataBuildDouble           </td>
1257          <td>(</td>
1258          <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1259          <td class="paramname"> <em>d</em>, </td>
1260        </tr>
1261        <tr>
1262          <td class="paramkey"></td>
1263          <td></td>
1264          <td class="paramtype">const double *&nbsp;</td>
1265          <td class="paramname"> <em>pHeightData</em>, </td>
1266        </tr>
1267        <tr>
1268          <td class="paramkey"></td>
1269          <td></td>
1270          <td class="paramtype">int&nbsp;</td>
1271          <td class="paramname"> <em>bCopyHeightData</em>, </td>
1272        </tr>
1273        <tr>
1274          <td class="paramkey"></td>
1275          <td></td>
1276          <td class="paramtype">dReal&nbsp;</td>
1277          <td class="paramname"> <em>width</em>, </td>
1278        </tr>
1279        <tr>
1280          <td class="paramkey"></td>
1281          <td></td>
1282          <td class="paramtype">dReal&nbsp;</td>
1283          <td class="paramname"> <em>depth</em>, </td>
1284        </tr>
1285        <tr>
1286          <td class="paramkey"></td>
1287          <td></td>
1288          <td class="paramtype">int&nbsp;</td>
1289          <td class="paramname"> <em>widthSamples</em>, </td>
1290        </tr>
1291        <tr>
1292          <td class="paramkey"></td>
1293          <td></td>
1294          <td class="paramtype">int&nbsp;</td>
1295          <td class="paramname"> <em>depthSamples</em>, </td>
1296        </tr>
1297        <tr>
1298          <td class="paramkey"></td>
1299          <td></td>
1300          <td class="paramtype">dReal&nbsp;</td>
1301          <td class="paramname"> <em>scale</em>, </td>
1302        </tr>
1303        <tr>
1304          <td class="paramkey"></td>
1305          <td></td>
1306          <td class="paramtype">dReal&nbsp;</td>
1307          <td class="paramname"> <em>offset</em>, </td>
1308        </tr>
1309        <tr>
1310          <td class="paramkey"></td>
1311          <td></td>
1312          <td class="paramtype">dReal&nbsp;</td>
1313          <td class="paramname"> <em>thickness</em>, </td>
1314        </tr>
1315        <tr>
1316          <td class="paramkey"></td>
1317          <td></td>
1318          <td class="paramtype">int&nbsp;</td>
1319          <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1320        </tr>
1321        <tr>
1322          <td></td>
1323          <td>)</td>
1324          <td></td><td></td><td width="100%"></td>
1325        </tr>
1326      </table>
1327</div>
1328<div class="memdoc">
1329
1330<p>
1331Configures a dHeightfieldDataID to use height data in double precision floating point format.
1332<p>
1333Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is stored as a rectangular array of double precision floats representing the height at each sample point.<p>
1334<dl compact><dt><b>Parameters:</b></dt><dd>
1335  <table border="0" cellspacing="2" cellpadding="0">
1336    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1337    <tr><td valign="top"></td><td valign="top"><em>pHeightData</em>&nbsp;</td><td>A pointer to the height data. </td></tr>
1338    <tr><td valign="top"></td><td valign="top"><em>bCopyHeightData</em>&nbsp;</td><td>When non-zero the height data is copied to an internal store. When zero the height data is accessed by reference and so must persist throughout the lifetime of the heightfield.</td></tr>
1339    <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1340    <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1341    <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1342    <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1343    <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1344    <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1345    <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1346    <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1347  </table>
1348</dl>
1349
1350</div>
1351</div><p>
1352<a class="anchor" name="g2f7582d64cc8219141bc10efeca86d17"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildShort" ref="g2f7582d64cc8219141bc10efeca86d17" args="(dHeightfieldDataID d, const short *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1353<div class="memitem">
1354<div class="memproto">
1355      <table class="memname">
1356        <tr>
1357          <td class="memname">ODE_API void dGeomHeightfieldDataBuildShort           </td>
1358          <td>(</td>
1359          <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1360          <td class="paramname"> <em>d</em>, </td>
1361        </tr>
1362        <tr>
1363          <td class="paramkey"></td>
1364          <td></td>
1365          <td class="paramtype">const short *&nbsp;</td>
1366          <td class="paramname"> <em>pHeightData</em>, </td>
1367        </tr>
1368        <tr>
1369          <td class="paramkey"></td>
1370          <td></td>
1371          <td class="paramtype">int&nbsp;</td>
1372          <td class="paramname"> <em>bCopyHeightData</em>, </td>
1373        </tr>
1374        <tr>
1375          <td class="paramkey"></td>
1376          <td></td>
1377          <td class="paramtype">dReal&nbsp;</td>
1378          <td class="paramname"> <em>width</em>, </td>
1379        </tr>
1380        <tr>
1381          <td class="paramkey"></td>
1382          <td></td>
1383          <td class="paramtype">dReal&nbsp;</td>
1384          <td class="paramname"> <em>depth</em>, </td>
1385        </tr>
1386        <tr>
1387          <td class="paramkey"></td>
1388          <td></td>
1389          <td class="paramtype">int&nbsp;</td>
1390          <td class="paramname"> <em>widthSamples</em>, </td>
1391        </tr>
1392        <tr>
1393          <td class="paramkey"></td>
1394          <td></td>
1395          <td class="paramtype">int&nbsp;</td>
1396          <td class="paramname"> <em>depthSamples</em>, </td>
1397        </tr>
1398        <tr>
1399          <td class="paramkey"></td>
1400          <td></td>
1401          <td class="paramtype">dReal&nbsp;</td>
1402          <td class="paramname"> <em>scale</em>, </td>
1403        </tr>
1404        <tr>
1405          <td class="paramkey"></td>
1406          <td></td>
1407          <td class="paramtype">dReal&nbsp;</td>
1408          <td class="paramname"> <em>offset</em>, </td>
1409        </tr>
1410        <tr>
1411          <td class="paramkey"></td>
1412          <td></td>
1413          <td class="paramtype">dReal&nbsp;</td>
1414          <td class="paramname"> <em>thickness</em>, </td>
1415        </tr>
1416        <tr>
1417          <td class="paramkey"></td>
1418          <td></td>
1419          <td class="paramtype">int&nbsp;</td>
1420          <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1421        </tr>
1422        <tr>
1423          <td></td>
1424          <td>)</td>
1425          <td></td><td></td><td width="100%"></td>
1426        </tr>
1427      </table>
1428</div>
1429<div class="memdoc">
1430
1431<p>
1432Configures a dHeightfieldDataID to use height data in short format.
1433<p>
1434Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is stored as a rectangular array of shorts (16 bit signed) representing the height at each sample point.<p>
1435<dl compact><dt><b>Parameters:</b></dt><dd>
1436  <table border="0" cellspacing="2" cellpadding="0">
1437    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1438    <tr><td valign="top"></td><td valign="top"><em>pHeightData</em>&nbsp;</td><td>A pointer to the height data. </td></tr>
1439    <tr><td valign="top"></td><td valign="top"><em>bCopyHeightData</em>&nbsp;</td><td>When non-zero the height data is copied to an internal store. When zero the height data is accessed by reference and so must persist throughout the lifetime of the heightfield.</td></tr>
1440    <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1441    <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1442    <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1443    <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1444    <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1445    <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1446    <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1447    <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1448  </table>
1449</dl>
1450
1451</div>
1452</div><p>
1453<a class="anchor" name="g8da529419317e7bd4e01dabbe94daa09"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataBuildSingle" ref="g8da529419317e7bd4e01dabbe94daa09" args="(dHeightfieldDataID d, const float *pHeightData, int bCopyHeightData, dReal width, dReal depth, int widthSamples, int depthSamples, dReal scale, dReal offset, dReal thickness, int bWrap)" -->
1454<div class="memitem">
1455<div class="memproto">
1456      <table class="memname">
1457        <tr>
1458          <td class="memname">ODE_API void dGeomHeightfieldDataBuildSingle           </td>
1459          <td>(</td>
1460          <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1461          <td class="paramname"> <em>d</em>, </td>
1462        </tr>
1463        <tr>
1464          <td class="paramkey"></td>
1465          <td></td>
1466          <td class="paramtype">const float *&nbsp;</td>
1467          <td class="paramname"> <em>pHeightData</em>, </td>
1468        </tr>
1469        <tr>
1470          <td class="paramkey"></td>
1471          <td></td>
1472          <td class="paramtype">int&nbsp;</td>
1473          <td class="paramname"> <em>bCopyHeightData</em>, </td>
1474        </tr>
1475        <tr>
1476          <td class="paramkey"></td>
1477          <td></td>
1478          <td class="paramtype">dReal&nbsp;</td>
1479          <td class="paramname"> <em>width</em>, </td>
1480        </tr>
1481        <tr>
1482          <td class="paramkey"></td>
1483          <td></td>
1484          <td class="paramtype">dReal&nbsp;</td>
1485          <td class="paramname"> <em>depth</em>, </td>
1486        </tr>
1487        <tr>
1488          <td class="paramkey"></td>
1489          <td></td>
1490          <td class="paramtype">int&nbsp;</td>
1491          <td class="paramname"> <em>widthSamples</em>, </td>
1492        </tr>
1493        <tr>
1494          <td class="paramkey"></td>
1495          <td></td>
1496          <td class="paramtype">int&nbsp;</td>
1497          <td class="paramname"> <em>depthSamples</em>, </td>
1498        </tr>
1499        <tr>
1500          <td class="paramkey"></td>
1501          <td></td>
1502          <td class="paramtype">dReal&nbsp;</td>
1503          <td class="paramname"> <em>scale</em>, </td>
1504        </tr>
1505        <tr>
1506          <td class="paramkey"></td>
1507          <td></td>
1508          <td class="paramtype">dReal&nbsp;</td>
1509          <td class="paramname"> <em>offset</em>, </td>
1510        </tr>
1511        <tr>
1512          <td class="paramkey"></td>
1513          <td></td>
1514          <td class="paramtype">dReal&nbsp;</td>
1515          <td class="paramname"> <em>thickness</em>, </td>
1516        </tr>
1517        <tr>
1518          <td class="paramkey"></td>
1519          <td></td>
1520          <td class="paramtype">int&nbsp;</td>
1521          <td class="paramname"> <em>bWrap</em></td><td>&nbsp;</td>
1522        </tr>
1523        <tr>
1524          <td></td>
1525          <td>)</td>
1526          <td></td><td></td><td width="100%"></td>
1527        </tr>
1528      </table>
1529</div>
1530<div class="memdoc">
1531
1532<p>
1533Configures a dHeightfieldDataID to use height data in single precision floating point format.
1534<p>
1535Before a dHeightfieldDataID can be used by a geom it must be configured to specify the format of the height data. This call specifies that the heightfield data is stored as a rectangular array of single precision floats representing the height at each sample point.<p>
1536<dl compact><dt><b>Parameters:</b></dt><dd>
1537  <table border="0" cellspacing="2" cellpadding="0">
1538    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A new dHeightfieldDataID created by dGeomHeightfieldDataCreate</td></tr>
1539    <tr><td valign="top"></td><td valign="top"><em>pHeightData</em>&nbsp;</td><td>A pointer to the height data. </td></tr>
1540    <tr><td valign="top"></td><td valign="top"><em>bCopyHeightData</em>&nbsp;</td><td>When non-zero the height data is copied to an internal store. When zero the height data is accessed by reference and so must persist throughout the lifetime of the heightfield.</td></tr>
1541    <tr><td valign="top"></td><td valign="top"><em>width</em>&nbsp;</td><td>Specifies the total 'width' of the heightfield along the geom's local x axis. </td></tr>
1542    <tr><td valign="top"></td><td valign="top"><em>depth</em>&nbsp;</td><td>Specifies the total 'depth' of the heightfield along the geom's local z axis.</td></tr>
1543    <tr><td valign="top"></td><td valign="top"><em>widthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the width of the heightfield. Each vertex has a corresponding height value which forms the overall shape. Naturally this value must be at least two or more. </td></tr>
1544    <tr><td valign="top"></td><td valign="top"><em>depthSamples</em>&nbsp;</td><td>Specifies the number of vertices to sample along the depth of the heightfield.</td></tr>
1545    <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>A uniform scale applied to all raw height data. </td></tr>
1546    <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>An offset applied to the scaled height data.</td></tr>
1547    <tr><td valign="top"></td><td valign="top"><em>thickness</em>&nbsp;</td><td>A value subtracted from the lowest height value which in effect adds an additional cuboid to the base of the heightfield. This is used to prevent geoms from looping under the desired terrain and not registering as a collision. Note that the thickness is not affected by the scale or offset parameters.</td></tr>
1548    <tr><td valign="top"></td><td valign="top"><em>bWrap</em>&nbsp;</td><td>If non-zero the heightfield will infinitely tile in both directions along the local x and z axes. If zero the heightfield is bounded from zero to width in the local x axis, and zero to depth in the local z axis. </td></tr>
1549  </table>
1550</dl>
1551
1552</div>
1553</div><p>
1554<a class="anchor" name="g7de82d5cf9aa10bb3144d51f4360eea1"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataCreate" ref="g7de82d5cf9aa10bb3144d51f4360eea1" args="()" -->
1555<div class="memitem">
1556<div class="memproto">
1557      <table class="memname">
1558        <tr>
1559          <td class="memname">ODE_API dHeightfieldDataID dGeomHeightfieldDataCreate           </td>
1560          <td>(</td>
1561          <td class="paramname">          </td>
1562          <td>&nbsp;)&nbsp;</td>
1563          <td width="100%"></td>
1564        </tr>
1565      </table>
1566</div>
1567<div class="memdoc">
1568
1569<p>
1570Creates a new empty dHeightfieldDataID.
1571<p>
1572Allocates a new dHeightfieldDataID and returns it. You must call dGeomHeightfieldDataDestroy to destroy it after the geom has been removed. The dHeightfieldDataID value is used when specifying a data format type.<p>
1573<dl class="return" compact><dt><b>Returns:</b></dt><dd>A dHeightfieldDataID for use with dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat. </dd></dl>
1574
1575</div>
1576</div><p>
1577<a class="anchor" name="gf98fc1f3d1784df5a5dff114b483d408"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataDestroy" ref="gf98fc1f3d1784df5a5dff114b483d408" args="(dHeightfieldDataID d)" -->
1578<div class="memitem">
1579<div class="memproto">
1580      <table class="memname">
1581        <tr>
1582          <td class="memname">ODE_API void dGeomHeightfieldDataDestroy           </td>
1583          <td>(</td>
1584          <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1585          <td class="paramname"> <em>d</em>          </td>
1586          <td>&nbsp;)&nbsp;</td>
1587          <td width="100%"></td>
1588        </tr>
1589      </table>
1590</div>
1591<div class="memdoc">
1592
1593<p>
1594Destroys a dHeightfieldDataID.
1595<p>
1596Deallocates a given dHeightfieldDataID and all managed resources.<p>
1597<dl compact><dt><b>Parameters:</b></dt><dd>
1598  <table border="0" cellspacing="2" cellpadding="0">
1599    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A dHeightfieldDataID created by dGeomHeightfieldDataCreate </td></tr>
1600  </table>
1601</dl>
1602
1603</div>
1604</div><p>
1605<a class="anchor" name="gcdef420e65e3751388b315f5de2804b2"></a><!-- doxytag: member="collision.h::dGeomHeightfieldDataSetBounds" ref="gcdef420e65e3751388b315f5de2804b2" args="(dHeightfieldDataID d, dReal minHeight, dReal maxHeight)" -->
1606<div class="memitem">
1607<div class="memproto">
1608      <table class="memname">
1609        <tr>
1610          <td class="memname">ODE_API void dGeomHeightfieldDataSetBounds           </td>
1611          <td>(</td>
1612          <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1613          <td class="paramname"> <em>d</em>, </td>
1614        </tr>
1615        <tr>
1616          <td class="paramkey"></td>
1617          <td></td>
1618          <td class="paramtype">dReal&nbsp;</td>
1619          <td class="paramname"> <em>minHeight</em>, </td>
1620        </tr>
1621        <tr>
1622          <td class="paramkey"></td>
1623          <td></td>
1624          <td class="paramtype">dReal&nbsp;</td>
1625          <td class="paramname"> <em>maxHeight</em></td><td>&nbsp;</td>
1626        </tr>
1627        <tr>
1628          <td></td>
1629          <td>)</td>
1630          <td></td><td></td><td width="100%"></td>
1631        </tr>
1632      </table>
1633</div>
1634<div class="memdoc">
1635
1636<p>
1637Manually set the minimum and maximum height bounds.
1638<p>
1639This call allows you to set explicit min / max values after initial creation typically for callback heightfields which default to +/- infinity, or those whose data has changed. This must be set prior to binding with a geom, as the the AABB is not recomputed after it's first generation.<p>
1640<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The minimum and maximum values are used to compute the AABB for the heightfield which is used for early rejection of collisions. A close fit will yield a more efficient collision check.</dd></dl>
1641<dl compact><dt><b>Parameters:</b></dt><dd>
1642  <table border="0" cellspacing="2" cellpadding="0">
1643    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A dHeightfieldDataID created by dGeomHeightfieldDataCreate </td></tr>
1644    <tr><td valign="top"></td><td valign="top"><em>min_height</em>&nbsp;</td><td>The new minimum height value. Scale, offset and thickness is then applied. </td></tr>
1645    <tr><td valign="top"></td><td valign="top"><em>max_height</em>&nbsp;</td><td>The new maximum height value. Scale and offset is then applied. </td></tr>
1646  </table>
1647</dl>
1648
1649</div>
1650</div><p>
1651<a class="anchor" name="g747176d26ce4f9b10ebfa6c865ef1cca"></a><!-- doxytag: member="collision.h::dGeomHeightfieldGetHeightfieldData" ref="g747176d26ce4f9b10ebfa6c865ef1cca" args="(dGeomID g)" -->
1652<div class="memitem">
1653<div class="memproto">
1654      <table class="memname">
1655        <tr>
1656          <td class="memname">ODE_API dHeightfieldDataID dGeomHeightfieldGetHeightfieldData           </td>
1657          <td>(</td>
1658          <td class="paramtype">dGeomID&nbsp;</td>
1659          <td class="paramname"> <em>g</em>          </td>
1660          <td>&nbsp;)&nbsp;</td>
1661          <td width="100%"></td>
1662        </tr>
1663      </table>
1664</div>
1665<div class="memdoc">
1666
1667<p>
1668Gets the dHeightfieldDataID bound to a heightfield geom.
1669<p>
1670Returns the dHeightfieldDataID associated with a heightfield geom.<p>
1671<dl compact><dt><b>Parameters:</b></dt><dd>
1672  <table border="0" cellspacing="2" cellpadding="0">
1673    <tr><td valign="top"></td><td valign="top"><em>g</em>&nbsp;</td><td>A geom created by dCreateHeightfield </td></tr>
1674  </table>
1675</dl>
1676<dl class="return" compact><dt><b>Returns:</b></dt><dd>The dHeightfieldDataID which may be NULL if none was assigned. </dd></dl>
1677
1678</div>
1679</div><p>
1680<a class="anchor" name="g6c1ae1f3ca652d6410e7804cdf8f8491"></a><!-- doxytag: member="collision.h::dGeomHeightfieldSetHeightfieldData" ref="g6c1ae1f3ca652d6410e7804cdf8f8491" args="(dGeomID g, dHeightfieldDataID d)" -->
1681<div class="memitem">
1682<div class="memproto">
1683      <table class="memname">
1684        <tr>
1685          <td class="memname">ODE_API void dGeomHeightfieldSetHeightfieldData           </td>
1686          <td>(</td>
1687          <td class="paramtype">dGeomID&nbsp;</td>
1688          <td class="paramname"> <em>g</em>, </td>
1689        </tr>
1690        <tr>
1691          <td class="paramkey"></td>
1692          <td></td>
1693          <td class="paramtype">dHeightfieldDataID&nbsp;</td>
1694          <td class="paramname"> <em>d</em></td><td>&nbsp;</td>
1695        </tr>
1696        <tr>
1697          <td></td>
1698          <td>)</td>
1699          <td></td><td></td><td width="100%"></td>
1700        </tr>
1701      </table>
1702</div>
1703<div class="memdoc">
1704
1705<p>
1706Assigns a dHeightfieldDataID to a heightfield geom.
1707<p>
1708Associates the given dHeightfieldDataID with a heightfield geom. This is done without affecting the GEOM_PLACEABLE flag.<p>
1709<dl compact><dt><b>Parameters:</b></dt><dd>
1710  <table border="0" cellspacing="2" cellpadding="0">
1711    <tr><td valign="top"></td><td valign="top"><em>g</em>&nbsp;</td><td>A geom created by dCreateHeightfield </td></tr>
1712    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>A dHeightfieldDataID created by dGeomHeightfieldDataCreate </td></tr>
1713  </table>
1714</dl>
1715
1716</div>
1717</div><p>
1718<a class="anchor" name="g6533d33f870cf0fb6684ec05e5c0562e"></a><!-- doxytag: member="collision.h::dGeomIsEnabled" ref="g6533d33f870cf0fb6684ec05e5c0562e" args="(dGeomID geom)" -->
1719<div class="memitem">
1720<div class="memproto">
1721      <table class="memname">
1722        <tr>
1723          <td class="memname">ODE_API int dGeomIsEnabled           </td>
1724          <td>(</td>
1725          <td class="paramtype">dGeomID&nbsp;</td>
1726          <td class="paramname"> <em>geom</em>          </td>
1727          <td>&nbsp;)&nbsp;</td>
1728          <td width="100%"></td>
1729        </tr>
1730      </table>
1731</div>
1732<div class="memdoc">
1733
1734<p>
1735Check to see if a geom is enabled.
1736<p>
1737Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2, although they can still be members of a space. New geoms are created in the enabled state.<p>
1738<dl compact><dt><b>Parameters:</b></dt><dd>
1739  <table border="0" cellspacing="2" cellpadding="0">
1740    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
1741  </table>
1742</dl>
1743<dl class="return" compact><dt><b>Returns:</b></dt><dd>Non-zero if the geom is enabled, zero otherwise. </dd></dl>
1744<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g6cb32b4161435fe491859680b463fc12" title="Disable a geom.">dGeomDisable</a> <p>
1745<a class="el" href="group__collide.html#g6533d33f870cf0fb6684ec05e5c0562e" title="Check to see if a geom is enabled.">dGeomIsEnabled</a> </dd></dl>
1746
1747</div>
1748</div><p>
1749<a class="anchor" name="g46260e0668373aa600b1cf8f83276e10"></a><!-- doxytag: member="collision.h::dGeomIsOffset" ref="g46260e0668373aa600b1cf8f83276e10" args="(dGeomID geom)" -->
1750<div class="memitem">
1751<div class="memproto">
1752      <table class="memname">
1753        <tr>
1754          <td class="memname">ODE_API int dGeomIsOffset           </td>
1755          <td>(</td>
1756          <td class="paramtype">dGeomID&nbsp;</td>
1757          <td class="paramname"> <em>geom</em>          </td>
1758          <td>&nbsp;)&nbsp;</td>
1759          <td width="100%"></td>
1760        </tr>
1761      </table>
1762</div>
1763<div class="memdoc">
1764
1765<p>
1766Check to see whether the geom has an offset.
1767<p>
1768This function will return non-zero if the offset has been created. Note that there is a difference between a geom with no offset, and a geom with an offset that is the identity transform. In the latter case, although the observed behaviour is identical, there is a unnecessary computation involved because the geom will be applying the transform whenever it needs to recalculate its world position.<p>
1769<dl compact><dt><b>Parameters:</b></dt><dd>
1770  <table border="0" cellspacing="2" cellpadding="0">
1771    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query. </td></tr>
1772  </table>
1773</dl>
1774<dl class="return" compact><dt><b>Returns:</b></dt><dd>Non-zero if the geom has an offset, zero otherwise. </dd></dl>
1775
1776</div>
1777</div><p>
1778<a class="anchor" name="ge5a58bdc78fb4f163a0e9c3ecabf64c9"></a><!-- doxytag: member="collision.h::dGeomIsSpace" ref="ge5a58bdc78fb4f163a0e9c3ecabf64c9" args="(dGeomID geom)" -->
1779<div class="memitem">
1780<div class="memproto">
1781      <table class="memname">
1782        <tr>
1783          <td class="memname">ODE_API int dGeomIsSpace           </td>
1784          <td>(</td>
1785          <td class="paramtype">dGeomID&nbsp;</td>
1786          <td class="paramname"> <em>geom</em>          </td>
1787          <td>&nbsp;)&nbsp;</td>
1788          <td width="100%"></td>
1789        </tr>
1790      </table>
1791</div>
1792<div class="memdoc">
1793
1794<p>
1795Determing if a geom is a space.
1796<p>
1797<dl compact><dt><b>Parameters:</b></dt><dd>
1798  <table border="0" cellspacing="2" cellpadding="0">
1799    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to query </td></tr>
1800  </table>
1801</dl>
1802<dl class="return" compact><dt><b>Returns:</b></dt><dd>Non-zero if the geom is a space, zero otherwise. </dd></dl>
1803
1804</div>
1805</div><p>
1806<a class="anchor" name="g97cad1194789477eac19fe364d986505"></a><!-- doxytag: member="collision.h::dGeomSetBody" ref="g97cad1194789477eac19fe364d986505" args="(dGeomID geom, dBodyID body)" -->
1807<div class="memitem">
1808<div class="memproto">
1809      <table class="memname">
1810        <tr>
1811          <td class="memname">ODE_API void dGeomSetBody           </td>
1812          <td>(</td>
1813          <td class="paramtype">dGeomID&nbsp;</td>
1814          <td class="paramname"> <em>geom</em>, </td>
1815        </tr>
1816        <tr>
1817          <td class="paramkey"></td>
1818          <td></td>
1819          <td class="paramtype">dBodyID&nbsp;</td>
1820          <td class="paramname"> <em>body</em></td><td>&nbsp;</td>
1821        </tr>
1822        <tr>
1823          <td></td>
1824          <td>)</td>
1825          <td></td><td></td><td width="100%"></td>
1826        </tr>
1827      </table>
1828</div>
1829<div class="memdoc">
1830
1831<p>
1832Set the body associated with a placeable geom.
1833<p>
1834Setting a body on a geom automatically combines the position vector and rotation matrix of the body and geom, so that setting the position or orientation of one will set the value for both objects. Setting a body ID of zero gives the geom its own position and rotation, independent from any body. If the geom was previously connected to a body then its new independent position/rotation is set to the current position/rotation of the body.<p>
1835Calling these functions on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
1836<dl compact><dt><b>Parameters:</b></dt><dd>
1837  <table border="0" cellspacing="2" cellpadding="0">
1838    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to connect </td></tr>
1839    <tr><td valign="top"></td><td valign="top"><em>body</em>&nbsp;</td><td>the body to attach to the geom </td></tr>
1840  </table>
1841</dl>
1842
1843</div>
1844</div><p>
1845<a class="anchor" name="g80fd5741701eb48472521780d5e2f9b9"></a><!-- doxytag: member="collision.h::dGeomSetCategoryBits" ref="g80fd5741701eb48472521780d5e2f9b9" args="(dGeomID geom, unsigned long bits)" -->
1846<div class="memitem">
1847<div class="memproto">
1848      <table class="memname">
1849        <tr>
1850          <td class="memname">ODE_API void dGeomSetCategoryBits           </td>
1851          <td>(</td>
1852          <td class="paramtype">dGeomID&nbsp;</td>
1853          <td class="paramname"> <em>geom</em>, </td>
1854        </tr>
1855        <tr>
1856          <td class="paramkey"></td>
1857          <td></td>
1858          <td class="paramtype">unsigned long&nbsp;</td>
1859          <td class="paramname"> <em>bits</em></td><td>&nbsp;</td>
1860        </tr>
1861        <tr>
1862          <td></td>
1863          <td>)</td>
1864          <td></td><td></td><td width="100%"></td>
1865        </tr>
1866      </table>
1867</div>
1868<div class="memdoc">
1869
1870<p>
1871Set the "category" bitfield for the given geom.
1872<p>
1873The category bitfield is used by spaces to govern which geoms will interact with each other. The bitfield is guaranteed to be at least 32 bits wide. The default category values for newly created geoms have all bits set.<p>
1874<dl compact><dt><b>Parameters:</b></dt><dd>
1875  <table border="0" cellspacing="2" cellpadding="0">
1876    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set </td></tr>
1877    <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>the new bitfield value </td></tr>
1878  </table>
1879</dl>
1880
1881</div>
1882</div><p>
1883<a class="anchor" name="ga55b4de01a61be41668685857b78455d"></a><!-- doxytag: member="collision.h::dGeomSetCollideBits" ref="ga55b4de01a61be41668685857b78455d" args="(dGeomID geom, unsigned long bits)" -->
1884<div class="memitem">
1885<div class="memproto">
1886      <table class="memname">
1887        <tr>
1888          <td class="memname">ODE_API void dGeomSetCollideBits           </td>
1889          <td>(</td>
1890          <td class="paramtype">dGeomID&nbsp;</td>
1891          <td class="paramname"> <em>geom</em>, </td>
1892        </tr>
1893        <tr>
1894          <td class="paramkey"></td>
1895          <td></td>
1896          <td class="paramtype">unsigned long&nbsp;</td>
1897          <td class="paramname"> <em>bits</em></td><td>&nbsp;</td>
1898        </tr>
1899        <tr>
1900          <td></td>
1901          <td>)</td>
1902          <td></td><td></td><td width="100%"></td>
1903        </tr>
1904      </table>
1905</div>
1906<div class="memdoc">
1907
1908<p>
1909Set the "collide" bitfield for the given geom.
1910<p>
1911The collide bitfield is used by spaces to govern which geoms will interact with each other. The bitfield is guaranteed to be at least 32 bits wide. The default category values for newly created geoms have all bits set.<p>
1912<dl compact><dt><b>Parameters:</b></dt><dd>
1913  <table border="0" cellspacing="2" cellpadding="0">
1914    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set </td></tr>
1915    <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>the new bitfield value </td></tr>
1916  </table>
1917</dl>
1918
1919</div>
1920</div><p>
1921<a class="anchor" name="gf68eb443d5c66ab1aaa8a7d38d1dbc4f"></a><!-- doxytag: member="collision.h::dGeomSetData" ref="gf68eb443d5c66ab1aaa8a7d38d1dbc4f" args="(dGeomID geom, void *data)" -->
1922<div class="memitem">
1923<div class="memproto">
1924      <table class="memname">
1925        <tr>
1926          <td class="memname">ODE_API void dGeomSetData           </td>
1927          <td>(</td>
1928          <td class="paramtype">dGeomID&nbsp;</td>
1929          <td class="paramname"> <em>geom</em>, </td>
1930        </tr>
1931        <tr>
1932          <td class="paramkey"></td>
1933          <td></td>
1934          <td class="paramtype">void *&nbsp;</td>
1935          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
1936        </tr>
1937        <tr>
1938          <td></td>
1939          <td>)</td>
1940          <td></td><td></td><td width="100%"></td>
1941        </tr>
1942      </table>
1943</div>
1944<div class="memdoc">
1945
1946<p>
1947Set the user-defined data pointer stored in the geom.
1948<p>
1949<dl compact><dt><b>Parameters:</b></dt><dd>
1950  <table border="0" cellspacing="2" cellpadding="0">
1951    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to hold the data </td></tr>
1952    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data pointer to be stored </td></tr>
1953  </table>
1954</dl>
1955
1956</div>
1957</div><p>
1958<a class="anchor" name="gdc292bc01d5bed32f145ee42760d73b4"></a><!-- doxytag: member="collision.h::dGeomSetOffsetPosition" ref="gdc292bc01d5bed32f145ee42760d73b4" args="(dGeomID geom, dReal x, dReal y, dReal z)" -->
1959<div class="memitem">
1960<div class="memproto">
1961      <table class="memname">
1962        <tr>
1963          <td class="memname">ODE_API void dGeomSetOffsetPosition           </td>
1964          <td>(</td>
1965          <td class="paramtype">dGeomID&nbsp;</td>
1966          <td class="paramname"> <em>geom</em>, </td>
1967        </tr>
1968        <tr>
1969          <td class="paramkey"></td>
1970          <td></td>
1971          <td class="paramtype">dReal&nbsp;</td>
1972          <td class="paramname"> <em>x</em>, </td>
1973        </tr>
1974        <tr>
1975          <td class="paramkey"></td>
1976          <td></td>
1977          <td class="paramtype">dReal&nbsp;</td>
1978          <td class="paramname"> <em>y</em>, </td>
1979        </tr>
1980        <tr>
1981          <td class="paramkey"></td>
1982          <td></td>
1983          <td class="paramtype">dReal&nbsp;</td>
1984          <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
1985        </tr>
1986        <tr>
1987          <td></td>
1988          <td>)</td>
1989          <td></td><td></td><td width="100%"></td>
1990        </tr>
1991      </table>
1992</div>
1993<div class="memdoc">
1994
1995<p>
1996Set the local offset position of a geom from its body.
1997<p>
1998Sets the geom's positional offset in local coordinates. After this call, the geom will be at a new position determined from the body's position and the offset. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
1999<dl compact><dt><b>Parameters:</b></dt><dd>
2000  <table border="0" cellspacing="2" cellpadding="0">
2001    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2002    <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>the new X coordinate. </td></tr>
2003    <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>the new Y coordinate. </td></tr>
2004    <tr><td valign="top"></td><td valign="top"><em>z</em>&nbsp;</td><td>the new Z coordinate. </td></tr>
2005  </table>
2006</dl>
2007
2008</div>
2009</div><p>
2010<a class="anchor" name="g9eba87b7598eb6b3a9b6bde1abbeaa1a"></a><!-- doxytag: member="collision.h::dGeomSetOffsetQuaternion" ref="g9eba87b7598eb6b3a9b6bde1abbeaa1a" args="(dGeomID geom, const dQuaternion Q)" -->
2011<div class="memitem">
2012<div class="memproto">
2013      <table class="memname">
2014        <tr>
2015          <td class="memname">ODE_API void dGeomSetOffsetQuaternion           </td>
2016          <td>(</td>
2017          <td class="paramtype">dGeomID&nbsp;</td>
2018          <td class="paramname"> <em>geom</em>, </td>
2019        </tr>
2020        <tr>
2021          <td class="paramkey"></td>
2022          <td></td>
2023          <td class="paramtype">const dQuaternion&nbsp;</td>
2024          <td class="paramname"> <em>Q</em></td><td>&nbsp;</td>
2025        </tr>
2026        <tr>
2027          <td></td>
2028          <td>)</td>
2029          <td></td><td></td><td width="100%"></td>
2030        </tr>
2031      </table>
2032</div>
2033<div class="memdoc">
2034
2035<p>
2036Set the local offset rotation of a geom from its body.
2037<p>
2038Sets the geom's rotational offset in local coordinates. After this call, the geom will be at a new position determined from the body's position and the offset. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2039<dl compact><dt><b>Parameters:</b></dt><dd>
2040  <table border="0" cellspacing="2" cellpadding="0">
2041    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2042    <tr><td valign="top"></td><td valign="top"><em>Q</em>&nbsp;</td><td>the new rotation. </td></tr>
2043  </table>
2044</dl>
2045
2046</div>
2047</div><p>
2048<a class="anchor" name="g805d896b4bc79ceb40e70aadb9629cab"></a><!-- doxytag: member="collision.h::dGeomSetOffsetRotation" ref="g805d896b4bc79ceb40e70aadb9629cab" args="(dGeomID geom, const dMatrix3 R)" -->
2049<div class="memitem">
2050<div class="memproto">
2051      <table class="memname">
2052        <tr>
2053          <td class="memname">ODE_API void dGeomSetOffsetRotation           </td>
2054          <td>(</td>
2055          <td class="paramtype">dGeomID&nbsp;</td>
2056          <td class="paramname"> <em>geom</em>, </td>
2057        </tr>
2058        <tr>
2059          <td class="paramkey"></td>
2060          <td></td>
2061          <td class="paramtype">const dMatrix3&nbsp;</td>
2062          <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
2063        </tr>
2064        <tr>
2065          <td></td>
2066          <td>)</td>
2067          <td></td><td></td><td width="100%"></td>
2068        </tr>
2069      </table>
2070</div>
2071<div class="memdoc">
2072
2073<p>
2074Set the local offset rotation matrix of a geom from its body.
2075<p>
2076Sets the geom's rotational offset in local coordinates. After this call, the geom will be at a new position determined from the body's position and the offset. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2077<dl compact><dt><b>Parameters:</b></dt><dd>
2078  <table border="0" cellspacing="2" cellpadding="0">
2079    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2080    <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>the new rotation matrix. </td></tr>
2081  </table>
2082</dl>
2083
2084</div>
2085</div><p>
2086<a class="anchor" name="g934fe31c543d588991d28cd8571e52ed"></a><!-- doxytag: member="collision.h::dGeomSetOffsetWorldPosition" ref="g934fe31c543d588991d28cd8571e52ed" args="(dGeomID geom, dReal x, dReal y, dReal z)" -->
2087<div class="memitem">
2088<div class="memproto">
2089      <table class="memname">
2090        <tr>
2091          <td class="memname">ODE_API void dGeomSetOffsetWorldPosition           </td>
2092          <td>(</td>
2093          <td class="paramtype">dGeomID&nbsp;</td>
2094          <td class="paramname"> <em>geom</em>, </td>
2095        </tr>
2096        <tr>
2097          <td class="paramkey"></td>
2098          <td></td>
2099          <td class="paramtype">dReal&nbsp;</td>
2100          <td class="paramname"> <em>x</em>, </td>
2101        </tr>
2102        <tr>
2103          <td class="paramkey"></td>
2104          <td></td>
2105          <td class="paramtype">dReal&nbsp;</td>
2106          <td class="paramname"> <em>y</em>, </td>
2107        </tr>
2108        <tr>
2109          <td class="paramkey"></td>
2110          <td></td>
2111          <td class="paramtype">dReal&nbsp;</td>
2112          <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
2113        </tr>
2114        <tr>
2115          <td></td>
2116          <td>)</td>
2117          <td></td><td></td><td width="100%"></td>
2118        </tr>
2119      </table>
2120</div>
2121<div class="memdoc">
2122
2123<p>
2124Set the offset position of a geom from its body.
2125<p>
2126Sets the geom's positional offset to move it to the new world coordinates. After this call, the geom will be at the world position passed in, and the offset will be the difference from the current body position. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2127<dl compact><dt><b>Parameters:</b></dt><dd>
2128  <table border="0" cellspacing="2" cellpadding="0">
2129    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2130    <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>the new X coordinate. </td></tr>
2131    <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>the new Y coordinate. </td></tr>
2132    <tr><td valign="top"></td><td valign="top"><em>z</em>&nbsp;</td><td>the new Z coordinate. </td></tr>
2133  </table>
2134</dl>
2135
2136</div>
2137</div><p>
2138<a class="anchor" name="ga04f2117ab18a1d3e27270defdad83a8"></a><!-- doxytag: member="collision.h::dGeomSetOffsetWorldQuaternion" ref="ga04f2117ab18a1d3e27270defdad83a8" args="(dGeomID geom, const dQuaternion)" -->
2139<div class="memitem">
2140<div class="memproto">
2141      <table class="memname">
2142        <tr>
2143          <td class="memname">ODE_API void dGeomSetOffsetWorldQuaternion           </td>
2144          <td>(</td>
2145          <td class="paramtype">dGeomID&nbsp;</td>
2146          <td class="paramname"> <em>geom</em>, </td>
2147        </tr>
2148        <tr>
2149          <td class="paramkey"></td>
2150          <td></td>
2151          <td class="paramtype">const &nbsp;</td>
2152          <td class="paramname"> <em>dQuaternion</em></td><td>&nbsp;</td>
2153        </tr>
2154        <tr>
2155          <td></td>
2156          <td>)</td>
2157          <td></td><td></td><td width="100%"></td>
2158        </tr>
2159      </table>
2160</div>
2161<div class="memdoc">
2162
2163<p>
2164Set the offset rotation of a geom from its body.
2165<p>
2166Sets the geom's rotational offset to orient it to the new world rotation matrix. After this call, the geom will be at the world orientation passed in, and the offset will be the difference from the current body orientation. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2167<dl compact><dt><b>Parameters:</b></dt><dd>
2168  <table border="0" cellspacing="2" cellpadding="0">
2169    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2170    <tr><td valign="top"></td><td valign="top"><em>Q</em>&nbsp;</td><td>the new rotation. </td></tr>
2171  </table>
2172</dl>
2173
2174</div>
2175</div><p>
2176<a class="anchor" name="g2c1ef27e7e8ced6eb8488221a1a7c200"></a><!-- doxytag: member="collision.h::dGeomSetOffsetWorldRotation" ref="g2c1ef27e7e8ced6eb8488221a1a7c200" args="(dGeomID geom, const dMatrix3 R)" -->
2177<div class="memitem">
2178<div class="memproto">
2179      <table class="memname">
2180        <tr>
2181          <td class="memname">ODE_API void dGeomSetOffsetWorldRotation           </td>
2182          <td>(</td>
2183          <td class="paramtype">dGeomID&nbsp;</td>
2184          <td class="paramname"> <em>geom</em>, </td>
2185        </tr>
2186        <tr>
2187          <td class="paramkey"></td>
2188          <td></td>
2189          <td class="paramtype">const dMatrix3&nbsp;</td>
2190          <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
2191        </tr>
2192        <tr>
2193          <td></td>
2194          <td>)</td>
2195          <td></td><td></td><td width="100%"></td>
2196        </tr>
2197      </table>
2198</div>
2199<div class="memdoc">
2200
2201<p>
2202Set the offset rotation of a geom from its body.
2203<p>
2204Sets the geom's rotational offset to orient it to the new world rotation matrix. After this call, the geom will be at the world orientation passed in, and the offset will be the difference from the current body orientation. The geom must be attached to a body. If the geom did not have an offset, it is automatically created.<p>
2205<dl compact><dt><b>Parameters:</b></dt><dd>
2206  <table border="0" cellspacing="2" cellpadding="0">
2207    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2208    <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>the new rotation matrix. </td></tr>
2209  </table>
2210</dl>
2211
2212</div>
2213</div><p>
2214<a class="anchor" name="g71043b70a735e8f5451c3e13cef345fe"></a><!-- doxytag: member="collision.h::dGeomSetPosition" ref="g71043b70a735e8f5451c3e13cef345fe" args="(dGeomID geom, dReal x, dReal y, dReal z)" -->
2215<div class="memitem">
2216<div class="memproto">
2217      <table class="memname">
2218        <tr>
2219          <td class="memname">ODE_API void dGeomSetPosition           </td>
2220          <td>(</td>
2221          <td class="paramtype">dGeomID&nbsp;</td>
2222          <td class="paramname"> <em>geom</em>, </td>
2223        </tr>
2224        <tr>
2225          <td class="paramkey"></td>
2226          <td></td>
2227          <td class="paramtype">dReal&nbsp;</td>
2228          <td class="paramname"> <em>x</em>, </td>
2229        </tr>
2230        <tr>
2231          <td class="paramkey"></td>
2232          <td></td>
2233          <td class="paramtype">dReal&nbsp;</td>
2234          <td class="paramname"> <em>y</em>, </td>
2235        </tr>
2236        <tr>
2237          <td class="paramkey"></td>
2238          <td></td>
2239          <td class="paramtype">dReal&nbsp;</td>
2240          <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
2241        </tr>
2242        <tr>
2243          <td></td>
2244          <td>)</td>
2245          <td></td><td></td><td width="100%"></td>
2246        </tr>
2247      </table>
2248</div>
2249<div class="memdoc">
2250
2251<p>
2252Set the position vector of a placeable geom.
2253<p>
2254If the geom is attached to a body, the body's position will also be changed. Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
2255<dl compact><dt><b>Parameters:</b></dt><dd>
2256  <table border="0" cellspacing="2" cellpadding="0">
2257    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2258    <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>the new X coordinate. </td></tr>
2259    <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>the new Y coordinate. </td></tr>
2260    <tr><td valign="top"></td><td valign="top"><em>z</em>&nbsp;</td><td>the new Z coordinate. </td></tr>
2261  </table>
2262</dl>
2263<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#gb84612b793366f18ff5b5cbdbed092da" title="Set position of a body.">dBodySetPosition</a> </dd></dl>
2264
2265</div>
2266</div><p>
2267<a class="anchor" name="g989149d93162264d699444a57b045150"></a><!-- doxytag: member="collision.h::dGeomSetQuaternion" ref="g989149d93162264d699444a57b045150" args="(dGeomID geom, const dQuaternion Q)" -->
2268<div class="memitem">
2269<div class="memproto">
2270      <table class="memname">
2271        <tr>
2272          <td class="memname">ODE_API void dGeomSetQuaternion           </td>
2273          <td>(</td>
2274          <td class="paramtype">dGeomID&nbsp;</td>
2275          <td class="paramname"> <em>geom</em>, </td>
2276        </tr>
2277        <tr>
2278          <td class="paramkey"></td>
2279          <td></td>
2280          <td class="paramtype">const dQuaternion&nbsp;</td>
2281          <td class="paramname"> <em>Q</em></td><td>&nbsp;</td>
2282        </tr>
2283        <tr>
2284          <td></td>
2285          <td>)</td>
2286          <td></td><td></td><td width="100%"></td>
2287        </tr>
2288      </table>
2289</div>
2290<div class="memdoc">
2291
2292<p>
2293Set the rotation of a placeable geom.
2294<p>
2295If the geom is attached to a body, the body's rotation will also be changed.<p>
2296Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
2297<dl compact><dt><b>Parameters:</b></dt><dd>
2298  <table border="0" cellspacing="2" cellpadding="0">
2299    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2300    <tr><td valign="top"></td><td valign="top"><em>Q</em>&nbsp;</td><td>the new rotation. </td></tr>
2301  </table>
2302</dl>
2303<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#ga5f51dd3605c402320e9eae4231d7ad4" title="Set the orientation of a body.">dBodySetQuaternion</a> </dd></dl>
2304
2305</div>
2306</div><p>
2307<a class="anchor" name="g76c510f4b7d5a036d8a36f2d60d670e5"></a><!-- doxytag: member="collision.h::dGeomSetRotation" ref="g76c510f4b7d5a036d8a36f2d60d670e5" args="(dGeomID geom, const dMatrix3 R)" -->
2308<div class="memitem">
2309<div class="memproto">
2310      <table class="memname">
2311        <tr>
2312          <td class="memname">ODE_API void dGeomSetRotation           </td>
2313          <td>(</td>
2314          <td class="paramtype">dGeomID&nbsp;</td>
2315          <td class="paramname"> <em>geom</em>, </td>
2316        </tr>
2317        <tr>
2318          <td class="paramkey"></td>
2319          <td></td>
2320          <td class="paramtype">const dMatrix3&nbsp;</td>
2321          <td class="paramname"> <em>R</em></td><td>&nbsp;</td>
2322        </tr>
2323        <tr>
2324          <td></td>
2325          <td>)</td>
2326          <td></td><td></td><td width="100%"></td>
2327        </tr>
2328      </table>
2329</div>
2330<div class="memdoc">
2331
2332<p>
2333Set the rotation matrix of a placeable geom.
2334<p>
2335If the geom is attached to a body, the body's rotation will also be changed. Calling this function on a non-placeable geom results in a runtime error in the debug build of ODE.<p>
2336<dl compact><dt><b>Parameters:</b></dt><dd>
2337  <table border="0" cellspacing="2" cellpadding="0">
2338    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geom to set. </td></tr>
2339    <tr><td valign="top"></td><td valign="top"><em>R</em>&nbsp;</td><td>the new rotation matrix. </td></tr>
2340  </table>
2341</dl>
2342<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__bodies.html#gb5f04968ec37ef46d2aaffad6c344468" title="Set the orientation of a body.">dBodySetRotation</a> </dd></dl>
2343
2344</div>
2345</div><p>
2346<a class="anchor" name="gfd185829b6940e2b3238517e1acd2fbb"></a><!-- doxytag: member="collision.h::dSpaceCollide" ref="gfd185829b6940e2b3238517e1acd2fbb" args="(dSpaceID space, void *data, dNearCallback *callback)" -->
2347<div class="memitem">
2348<div class="memproto">
2349      <table class="memname">
2350        <tr>
2351          <td class="memname">ODE_API void dSpaceCollide           </td>
2352          <td>(</td>
2353          <td class="paramtype">dSpaceID&nbsp;</td>
2354          <td class="paramname"> <em>space</em>, </td>
2355        </tr>
2356        <tr>
2357          <td class="paramkey"></td>
2358          <td></td>
2359          <td class="paramtype">void *&nbsp;</td>
2360          <td class="paramname"> <em>data</em>, </td>
2361        </tr>
2362        <tr>
2363          <td class="paramkey"></td>
2364          <td></td>
2365          <td class="paramtype"><a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> *&nbsp;</td>
2366          <td class="paramname"> <em>callback</em></td><td>&nbsp;</td>
2367        </tr>
2368        <tr>
2369          <td></td>
2370          <td>)</td>
2371          <td></td><td></td><td width="100%"></td>
2372        </tr>
2373      </table>
2374</div>
2375<div class="memdoc">
2376
2377<p>
2378Determines which pairs of geoms in a space may potentially intersect, and calls the callback function for each candidate pair.
2379<p>
2380<dl compact><dt><b>Parameters:</b></dt><dd>
2381  <table border="0" cellspacing="2" cellpadding="0">
2382    <tr><td valign="top"></td><td valign="top"><em>space</em>&nbsp;</td><td>The space to test.</td></tr>
2383    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Passed from dSpaceCollide directly to the callback function. Its meaning is user defined. The o1 and o2 arguments are the geoms that may be near each other.</td></tr>
2384    <tr><td valign="top"></td><td valign="top"><em>callback</em>&nbsp;</td><td>A callback function is of type <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a>.</td></tr>
2385  </table>
2386</dl>
2387<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Other spaces that are contained within the colliding space are not treated specially, i.e. they are not recursed into. The callback function may be passed these contained spaces as one or both geom arguments.<p>
2388<a class="el" href="group__collide.html#gfd185829b6940e2b3238517e1acd2fbb" title="Determines which pairs of geoms in a space may potentially intersect, and calls the...">dSpaceCollide()</a> is guaranteed to pass all intersecting geom pairs to the callback function, but may also pass close but non-intersecting pairs. The number of these calls depends on the internal algorithms used by the space. Thus you should not expect that dCollide will return contacts for every pair passed to the callback.</dd></dl>
2389<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#g72a6bb0b550d3e181f8b7a9be7179db5" title="Determines which geoms from one space may potentially intersect with geoms from another...">dSpaceCollide2</a> </dd></dl>
2390
2391</div>
2392</div><p>
2393<a class="anchor" name="g72a6bb0b550d3e181f8b7a9be7179db5"></a><!-- doxytag: member="collision.h::dSpaceCollide2" ref="g72a6bb0b550d3e181f8b7a9be7179db5" args="(dGeomID space1, dGeomID space2, void *data, dNearCallback *callback)" -->
2394<div class="memitem">
2395<div class="memproto">
2396      <table class="memname">
2397        <tr>
2398          <td class="memname">ODE_API void dSpaceCollide2           </td>
2399          <td>(</td>
2400          <td class="paramtype">dGeomID&nbsp;</td>
2401          <td class="paramname"> <em>space1</em>, </td>
2402        </tr>
2403        <tr>
2404          <td class="paramkey"></td>
2405          <td></td>
2406          <td class="paramtype">dGeomID&nbsp;</td>
2407          <td class="paramname"> <em>space2</em>, </td>
2408        </tr>
2409        <tr>
2410          <td class="paramkey"></td>
2411          <td></td>
2412          <td class="paramtype">void *&nbsp;</td>
2413          <td class="paramname"> <em>data</em>, </td>
2414        </tr>
2415        <tr>
2416          <td class="paramkey"></td>
2417          <td></td>
2418          <td class="paramtype"><a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a> *&nbsp;</td>
2419          <td class="paramname"> <em>callback</em></td><td>&nbsp;</td>
2420        </tr>
2421        <tr>
2422          <td></td>
2423          <td>)</td>
2424          <td></td><td></td><td width="100%"></td>
2425        </tr>
2426      </table>
2427</div>
2428<div class="memdoc">
2429
2430<p>
2431Determines which geoms from one space may potentially intersect with geoms from another space, and calls the callback function for each candidate pair.
2432<p>
2433<dl compact><dt><b>Parameters:</b></dt><dd>
2434  <table border="0" cellspacing="2" cellpadding="0">
2435    <tr><td valign="top"></td><td valign="top"><em>space1</em>&nbsp;</td><td>The first space to test.</td></tr>
2436    <tr><td valign="top"></td><td valign="top"><em>space2</em>&nbsp;</td><td>The second space to test.</td></tr>
2437    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Passed from dSpaceCollide directly to the callback function. Its meaning is user defined. The o1 and o2 arguments are the geoms that may be near each other.</td></tr>
2438    <tr><td valign="top"></td><td valign="top"><em>callback</em>&nbsp;</td><td>A callback function is of type <a class="el" href="group__collide.html#g9f458413ace07fa9e3e7e52d6652ace0">dNearCallback</a>.</td></tr>
2439  </table>
2440</dl>
2441<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This function can also test a single non-space geom against a space. This function is useful when there is a collision hierarchy, i.e. when there are spaces that contain other spaces.<p>
2442Other spaces that are contained within the colliding space are not treated specially, i.e. they are not recursed into. The callback function may be passed these contained spaces as one or both geom arguments.<p>
2443<a class="el" href="group__collide.html#g72a6bb0b550d3e181f8b7a9be7179db5" title="Determines which geoms from one space may potentially intersect with geoms from another...">dSpaceCollide2()</a> is guaranteed to pass all intersecting geom pairs to the callback function, but may also pass close but non-intersecting pairs. The number of these calls depends on the internal algorithms used by the space. Thus you should not expect that dCollide will return contacts for every pair passed to the callback.</dd></dl>
2444<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__collide.html#gfd185829b6940e2b3238517e1acd2fbb" title="Determines which pairs of geoms in a space may potentially intersect, and calls the...">dSpaceCollide</a> </dd></dl>
2445
2446</div>
2447</div><p>
2448<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by&nbsp;
2449<a href="http://www.doxygen.org/index.html">
2450<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
2451</body>
2452</html>
Note: See TracBrowser for help on using the repository browser.