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 dContactMotionN = 0x080,
00042 dContactSlip1 = 0x100,
00043 dContactSlip2 = 0x200,
00044
00045 dContactApprox0 = 0x0000,
00046 dContactApprox1_1 = 0x1000,
00047 dContactApprox1_2 = 0x2000,
00048 dContactApprox1 = 0x3000
00049 };
00050
00051
00052 typedef struct dSurfaceParameters {
00053
00054 int mode;
00055 dReal mu;
00056
00057
00058 dReal mu2;
00059 dReal bounce;
00060 dReal bounce_vel;
00061 dReal soft_erp;
00062 dReal soft_cfm;
00063 dReal motion1,motion2,motionN;
00064 dReal slip1,slip2;
00065 } dSurfaceParameters;
00066
00067
00082 typedef struct dContactGeom {
00083 dVector3 pos;
00084 dVector3 normal;
00085 dReal depth;
00086 dGeomID g1,g2;
00087 int side1,side2;
00088 } dContactGeom;
00089
00090
00091
00092
00093 typedef struct dContact {
00094 dSurfaceParameters surface;
00095 dContactGeom geom;
00096 dVector3 fdir1;
00097 } dContact;
00098
00099
00100 #ifdef __cplusplus
00101 }
00102 #endif
00103
00104 #endif