00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _ODE_CONTACT_H_
00024 #define _ODE_CONTACT_H_
00025
00026 #include <ode/common.h>
00027
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031
00032
00033 enum {
00034 dContactMu2 = 0x001,
00035 dContactFDir1 = 0x002,
00036 dContactBounce = 0x004,
00037 dContactSoftERP = 0x008,
00038 dContactSoftCFM = 0x010,
00039 dContactMotion1 = 0x020,
00040 dContactMotion2 = 0x040,
00041 dContactSlip1 = 0x080,
00042 dContactSlip2 = 0x100,
00043
00044 dContactApprox0 = 0x0000,
00045 dContactApprox1_1 = 0x1000,
00046 dContactApprox1_2 = 0x2000,
00047 dContactApprox1 = 0x3000
00048 };
00049
00050
00051 typedef struct dSurfaceParameters {
00052
00053 int mode;
00054 dReal mu;
00055
00056
00057 dReal mu2;
00058 dReal bounce;
00059 dReal bounce_vel;
00060 dReal soft_erp;
00061 dReal soft_cfm;
00062 dReal motion1,motion2;
00063 dReal slip1,slip2;
00064 } dSurfaceParameters;
00065
00066
00081 typedef struct dContactGeom {
00082 dVector3 pos;
00083 dVector3 normal;
00084 dReal depth;
00085 dGeomID g1,g2;
00086 int side1,side2;
00087 } dContactGeom;
00088
00089
00090
00091
00092 typedef struct dContact {
00093 dSurfaceParameters surface;
00094 dContactGeom geom;
00095 dVector3 fdir1;
00096 } dContact;
00097
00098
00099 #ifdef __cplusplus
00100 }
00101 #endif
00102
00103 #endif