diff options
Diffstat (limited to 'libraries/ode-0.9/include/ode/contact.h')
-rw-r--r-- | libraries/ode-0.9/include/ode/contact.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/libraries/ode-0.9/include/ode/contact.h b/libraries/ode-0.9/include/ode/contact.h new file mode 100644 index 0000000..fc634e7 --- /dev/null +++ b/libraries/ode-0.9/include/ode/contact.h | |||
@@ -0,0 +1,103 @@ | |||
1 | /************************************************************************* | ||
2 | * * | ||
3 | * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. * | ||
4 | * All rights reserved. Email: russ@q12.org Web: www.q12.org * | ||
5 | * * | ||
6 | * This library is free software; you can redistribute it and/or * | ||
7 | * modify it under the terms of EITHER: * | ||
8 | * (1) The GNU Lesser General Public License as published by the Free * | ||
9 | * Software Foundation; either version 2.1 of the License, or (at * | ||
10 | * your option) any later version. The text of the GNU Lesser * | ||
11 | * General Public License is included with this library in the * | ||
12 | * file LICENSE.TXT. * | ||
13 | * (2) The BSD-style license that is included with this library in * | ||
14 | * the file LICENSE-BSD.TXT. * | ||
15 | * * | ||
16 | * This library is distributed in the hope that it will be useful, * | ||
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * | ||
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * | ||
19 | * LICENSE.TXT and LICENSE-BSD.TXT for more details. * | ||
20 | * * | ||
21 | *************************************************************************/ | ||
22 | |||
23 | #ifndef _ODE_CONTACT_H_ | ||
24 | #define _ODE_CONTACT_H_ | ||
25 | |||
26 | #include <ode/common.h> | ||
27 | |||
28 | #ifdef __cplusplus | ||
29 | extern "C" { | ||
30 | #endif | ||
31 | |||
32 | |||
33 | enum { | ||
34 | dContactMu2 = 0x001, | ||
35 | dContactFDir1 = 0x002, | ||
36 | dContactBounce = 0x004, | ||
37 | dContactSoftERP = 0x008, | ||
38 | dContactSoftCFM = 0x010, | ||
39 | dContactMotion1 = 0x020, | ||
40 | dContactMotion2 = 0x040, | ||
41 | dContactSlip1 = 0x080, | ||
42 | dContactSlip2 = 0x100, | ||
43 | |||
44 | dContactApprox0 = 0x0000, | ||
45 | dContactApprox1_1 = 0x1000, | ||
46 | dContactApprox1_2 = 0x2000, | ||
47 | dContactApprox1 = 0x3000 | ||
48 | }; | ||
49 | |||
50 | |||
51 | typedef struct dSurfaceParameters { | ||
52 | /* must always be defined */ | ||
53 | int mode; | ||
54 | dReal mu; | ||
55 | |||
56 | /* only defined if the corresponding flag is set in mode */ | ||
57 | dReal mu2; | ||
58 | dReal bounce; | ||
59 | dReal bounce_vel; | ||
60 | dReal soft_erp; | ||
61 | dReal soft_cfm; | ||
62 | dReal motion1,motion2; | ||
63 | dReal slip1,slip2; | ||
64 | } dSurfaceParameters; | ||
65 | |||
66 | |||
67 | /** | ||
68 | * @brief Describe the contact point between two geoms. | ||
69 | * | ||
70 | * If two bodies touch, or if a body touches a static feature in its | ||
71 | * environment, the contact is represented by one or more "contact | ||
72 | * points", described by dContactGeom. | ||
73 | * | ||
74 | * The convention is that if body 1 is moved along the normal vector by | ||
75 | * a distance depth (or equivalently if body 2 is moved the same distance | ||
76 | * in the opposite direction) then the contact depth will be reduced to | ||
77 | * zero. This means that the normal vector points "in" to body 1. | ||
78 | * | ||
79 | * @ingroup collide | ||
80 | */ | ||
81 | typedef struct dContactGeom { | ||
82 | dVector3 pos; ///< contact position | ||
83 | dVector3 normal; ///< normal vector | ||
84 | dReal depth; ///< penetration depth | ||
85 | dGeomID g1,g2; ///< the colliding geoms | ||
86 | int side1,side2; ///< (to be documented) | ||
87 | } dContactGeom; | ||
88 | |||
89 | |||
90 | /* contact info used by contact joint */ | ||
91 | |||
92 | typedef struct dContact { | ||
93 | dSurfaceParameters surface; | ||
94 | dContactGeom geom; | ||
95 | dVector3 fdir1; | ||
96 | } dContact; | ||
97 | |||
98 | |||
99 | #ifdef __cplusplus | ||
100 | } | ||
101 | #endif | ||
102 | |||
103 | #endif | ||