CD_Pair.h
Go to the documentation of this file.
1 #ifndef _CD_PAIR
2 #define _CD_PAIR
3 
4 #pragma once
5 
9 #include <sch/sch_api.h>
10 
11 namespace sch
12 {
13 
14 class CD_Pair
15 {
16 public:
23  SCH_API CD_Pair(S_Object * Obj1, S_Object * Obj2);
24 
25  SCH_API virtual ~CD_Pair(void);
26 
38 
45 
51 
57 
63  SCH_API bool isInCollision();
64 
68  SCH_API void setVector(const Vector3 &);
69 
74  SCH_API const Vector3 & getVector() const;
75 
80  SCH_API void setRelativePrecision(Scalar precision);
81 
86 
91  SCH_API S_Object * operator[](unsigned char i)
92  {
93  return (i == 0) ? sObj1_ : sObj2_;
94  }
95 
96 protected:
100 
101  Scalar GJK();
103 
106 
108 
110 
113 
115 
117 
119 
121 
123 
124  void witPoints(Point3 & p1, Point3 & p2);
125 
127 };
128 } // namespace sch
129 
142 #endif
CD_Depth.h
sch::CD_Pair::lastFeature2_
int lastFeature2_
Definition: CD_Pair.h:99
sch::CD_Pair::s2_
CD_Simplex s2_
Definition: CD_Pair.h:120
sch::CD_SimplexEnhanced
Definition: CD_SimplexEnhanced.h:10
sch
Definition: CD_Pair.h:11
sch::CD_Pair::s_
CD_Simplex s_
Definition: CD_Pair.h:120
sch::CD_Pair::penetrationDepth
Scalar penetrationDepth()
sch::CD_Pair::sObj2_
S_Object * sObj2_
Definition: CD_Pair.h:97
sch::CD_Pair::sObj1_
S_Object * sObj1_
Definition: CD_Pair.h:97
sch::CD_Pair::projectionComputed_
bool projectionComputed_
Definition: CD_Pair.h:114
sch::CD_Pair::witPointsAreComputed_
bool witPointsAreComputed_
Definition: CD_Pair.h:118
sch::CD_Pair::det_
Scalar det_
Definition: CD_Pair.h:112
SCH_API
#define SCH_API
Definition: sch_api.h:13
sch::CD_Pair::operator[]
SCH_API S_Object * operator[](unsigned char i)
returns a pointer to the ith object in the pair
Definition: CD_Pair.h:91
sch::CD_Pair::getDistanceWithoutPenetrationDepth
SCH_API Scalar getDistanceWithoutPenetrationDepth()
function that returns the distance SQUARED between two convex objects, no interpenetration depth comp...
sch::CD_Pair::p1_
Point3 p1_
Definition: CD_Pair.h:104
sch::CD_Pair::getClosestPoints
SCH_API Scalar getClosestPoints(Point3 &p1, Point3 &p2)
function that returns the distance SQUARED between two convex objects, and computes the witness point...
CD_SimplexEnhanced.h
sch::CD_Depth
Definition: CD_Depth.h:12
sch::CD_Pair::isInCollision
SCH_API bool isInCollision()
returns if there is collision or not. If the distance is not already computed, it does not recompute,...
sch::CD_Pair::lastFeature1_
int lastFeature1_
Definition: CD_Pair.h:99
sch::CD_Pair::CD_Pair
SCH_API CD_Pair(S_Object *Obj1, S_Object *Obj2)
constructor \IMPORTANT: to create a CD::Pair, two CD::S_Objects must have been created before,...
sch::CD_Pair::sp_
CD_SimplexEnhanced sp_
Definition: CD_Pair.h:122
sch::CD_Pair::lambda1_
Scalar lambda1_
Definition: CD_Pair.h:111
sch::CD_Pair::setRelativePrecision
SCH_API void setRelativePrecision(Scalar precision)
sets the relative precision of the proximity queries to a given value. The effective precision is pre...
sch::CD_Pair::getVector
const SCH_API Vector3 & getVector() const
Gets the last direction vector (can be used to get a normal vector, especially when the distance is z...
sch::CD_Pair::stamp2_
S_ObjectTimeStamp stamp2_
Definition: CD_Pair.h:107
sch::CD_Pair::~CD_Pair
virtual SCH_API ~CD_Pair(void)
sch::CD_Pair::distance_
Scalar distance_
Definition: CD_Pair.h:105
sch::CD_Pair::p2_
Point3 p2_
Definition: CD_Pair.h:104
sch::CD_Pair::setVector
SCH_API void setVector(const Vector3 &)
Intializes the direction vector (the vector between expected closest points) with a given value.
sch::CD_Pair::setEpsilon
SCH_API void setEpsilon(Scalar)
Sets the machine epsilon. Default is 1e-24.
sch::CD_Pair::collision_
bool collision_
Definition: CD_Pair.h:116
sch_api.h
sch::_TimeStamp
Definition: S_Object.h:17
sch::CD_Pair::precision_
Scalar precision_
Definition: CD_Pair.h:109
sch::CD_Pair::reComputeClosestPoints
SCH_API Scalar reComputeClosestPoints(Point3 &p1, Point3 &p2)
function that returns the distance SQUARED between two convex objects, restarting the computations fr...
sch::CD_Pair::depthPair
CD_Depth depthPair
Definition: CD_Pair.h:126
sch::CD_Pair
Definition: CD_Pair.h:14
sch::CD_Pair::GJK
Scalar GJK()
sch::CD_Pair::lastDirection_
Vector3 lastDirection_
Definition: CD_Pair.h:98
sch::CD_Pair::epsilon_
Scalar epsilon_
Definition: CD_Pair.h:109
sch::CD_Pair::lambda2_
Scalar lambda2_
Definition: CD_Pair.h:111
CD_Matrix::Vector3T< Scalar, false >
sch::CD_Pair::witPoints
void witPoints(Point3 &p1, Point3 &p2)
sch::S_Object
Definition: S_Object.h:71
sch::Scalar
double Scalar
Definition: SCH_Types.h:23
sch::CD_Simplex
Definition: CD_Simplex.h:54
sch::CD_Pair::stamp1_
S_ObjectTimeStamp stamp1_
Definition: CD_Pair.h:107
sch::CD_Pair::lambda0_
Scalar lambda0_
Definition: CD_Pair.h:111
S_Object.h
sch::CD_Pair::s1_
CD_Simplex s1_
Definition: CD_Pair.h:120
sch::CD_Pair::getDistance
SCH_API Scalar getDistance()
function that returns the distance SQUARED between two convex objects, the distance is set to negativ...