MinProximityIntersection.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef SOFA_COMPONENT_COLLISION_MINPROXIMITYINTERSECTION_H
00026 #define SOFA_COMPONENT_COLLISION_MINPROXIMITYINTERSECTION_H
00027
00028 #include <sofa/component/collision/DiscreteIntersection.h>
00029 #include <sofa/helper/FnDispatcher.h>
00030 #include <sofa/component/collision/SphereModel.h>
00031 #include <sofa/component/collision/TriangleModel.h>
00032 #include <sofa/component/collision/LineModel.h>
00033 #include <sofa/component/collision/PointModel.h>
00034 #include <sofa/component/collision/CubeModel.h>
00035 #include <sofa/component/collision/RayModel.h>
00036
00037 namespace sofa
00038 {
00039
00040 namespace component
00041 {
00042
00043 namespace collision
00044 {
00045
00046 class MinProximityIntersection : public DiscreteIntersection
00047 {
00048 public:
00049 Data<bool> useSphereTriangle;
00050 Data<bool> usePointPoint;
00051 Data<double> alarmDistance;
00052 Data<double> contactDistance;
00053
00054 MinProximityIntersection();
00055
00056 virtual void init();
00057
00059 virtual bool useProximity() const { return true; }
00060
00062 double getAlarmDistance() const { return alarmDistance.getValue(); }
00063
00065 double getContactDistance() const { return contactDistance.getValue(); }
00066
00067 void setAlarmDistance(double v) { alarmDistance.setValue(v); }
00068
00069 void setContactDistance(double v) { contactDistance.setValue(v); }
00070
00071 bool testIntersection(Cube& ,Cube&);
00072
00073 bool testIntersection(Point&, Point&);
00074 bool testIntersection(Sphere&, Point&);
00075 bool testIntersection(Sphere&, Sphere&);
00076 bool testIntersection(Line&, Point&);
00077 bool testIntersection(Line&, Sphere&);
00078 bool testIntersection(Line&, Line&);
00079 bool testIntersection(Triangle&, Point&);
00080 bool testIntersection(Triangle&, Sphere&);
00081
00082
00083 int computeIntersection(Cube&, Cube&, OutputVector*);
00084 int computeIntersection(Point&, Point&, OutputVector*);
00085 int computeIntersection(Sphere&, Point&, OutputVector*);
00086 int computeIntersection(Sphere&, Sphere&, OutputVector*);
00087 int computeIntersection(Line&, Point&, OutputVector*);
00088 int computeIntersection(Line&, Sphere&, OutputVector*);
00089 int computeIntersection(Line&, Line&, OutputVector*);
00090 int computeIntersection(Triangle&, Point&, OutputVector*);
00091 int computeIntersection(Triangle&, Sphere&, OutputVector*);
00092
00093
00094 void draw();
00095
00096 private:
00097 double mainAlarmDistance;
00098 double mainContactDistance;
00099 };
00100
00101 }
00102
00103 }
00104
00105 }
00106
00107 #endif