Go to the documentation of this file.
16 #ifndef SURGSIM_COLLISION_SEGMENTSEGMENTCCDINTERVALCHECK_H
17 #define SURGSIM_COLLISION_SEGMENTSEGMENTCCDINTERVALCHECK_H
64 const std::array<Math::Vector3d, 2>& pT1,
65 const std::array<Math::Vector3d, 2>& qT0,
66 const std::array<Math::Vector3d, 2>& qT1,
229 #endif // SURGSIM_COLLISION_SEGMENTSEGMENTCCDINTERVALCHECK_H
IntervalCheckResults possibleCollisionTestWithThickness(const Math::Interval< double > &range) const
Check if a collision is possible within a specified time interval assuming segments with fixed radius...
Definition: SegmentSegmentCcdIntervalCheck.cpp:247
void setDistanceEpsilon(double epsilon)
Definition: SegmentSegmentCcdIntervalCheck.cpp:166
Math::Vector3d p1T1() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:77
const Math::PolynomialValues< double, 3 > & P1Q1_P1P2_Q1Q2() const
Triple product value.
Definition: SegmentSegmentCcdIntervalCheck.cpp:112
double m_thicknessP
Definition: SegmentSegmentCcdIntervalCheck.h:213
Math::Vector3d q1T1() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:97
IntervalCheckResults possibleCollisionTestNoThickness(const Math::Interval< double > &range) const
Check if a collision is possible within a specified time interval assuming ideal (0 thickness) segmen...
Definition: SegmentSegmentCcdIntervalCheck.cpp:201
double timePrecisionEpsilon() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:181
Math::LinearMotionND< double, 3 > m_relativeP1P2
Definition: SegmentSegmentCcdIntervalCheck.h:181
@ IntervalCheckPossibleCollision
Definition: SegmentSegmentCcdIntervalCheck.h:49
Math::Vector3d q2T0() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:102
const Math::LinearMotionND< double, 3 > & motionQ1() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:62
Math::Vector3d p2T0() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:82
double tripleProductEpsilon() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:191
SegmentSegmentCcdIntervalCheck(const std::array< Math::Vector3d, 2 > &pT0, const std::array< Math::Vector3d, 2 > &pT1, const std::array< Math::Vector3d, 2 > &qT0, const std::array< Math::Vector3d, 2 > &qT1, double thicknessP, double thicknessQ, double timePrecisionEpsilon, double distanceEpsilon)
Constructor.
Definition: SegmentSegmentCcdIntervalCheck.cpp:25
const Math::LinearMotionND< double, 3 > & motionQ2() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:67
Math::LinearMotionND< double, 3 > m_motionQ2
Definition: SegmentSegmentCcdIntervalCheck.h:173
void setTimePrecisionEpsilon(double epsilon)
Definition: SegmentSegmentCcdIntervalCheck.cpp:161
double m_muNuEpsilon
Definition: SegmentSegmentCcdIntervalCheck.h:222
double m_timePrecisionEpsilon
Definition: SegmentSegmentCcdIntervalCheck.h:219
Eigen::Matrix< double, 3, 1 > Vector3d
A 3D vector of doubles.
Definition: Vector.h:57
IntervalCheckResults
Enum Possible interval check return values.
Definition: SegmentSegmentCcdIntervalCheck.h:48
const Math::PolynomialValues< double, 2 > & P1P2_P1Q1() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:117
Definition: CompoundShapeToGraphics.cpp:30
const Math::PolynomialValues< double, 2 > & P1P2_Q1Q2() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:127
Math::Vector3d q1T0() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:92
Math::LinearMotionND< double, 3 > m_relativeP1Q1
Definition: SegmentSegmentCcdIntervalCheck.h:179
Math::Vector3d q2T1() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:107
@ IntervalCheckNoCollisionEndpoints
Definition: SegmentSegmentCcdIntervalCheck.h:51
Interval defines the concept of a mathematical interval and provides operations on it including arith...
Definition: IntervalArithmetic.h:35
double thicknessQ() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:156
Math::PolynomialValues< double, 2 > m_P1P2_sq
Definition: SegmentSegmentCcdIntervalCheck.h:200
void setTripleProductEpsilon(double epsilon)
Definition: SegmentSegmentCcdIntervalCheck.cpp:171
const Math::LinearMotionND< double, 3 > & motionP2() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:57
Math::PolynomialValues< double, 2 > m_P1P2xQ1Q2_y
Definition: SegmentSegmentCcdIntervalCheck.h:207
const Math::PolynomialValues< double, 2 > & Q1Q2_sq() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:137
@ IntervalCheckNoCollisionVolume
Definition: SegmentSegmentCcdIntervalCheck.h:50
void setMuNuEpsilon(double epsilon)
Definition: SegmentSegmentCcdIntervalCheck.cpp:176
Math::LinearMotionND< double, 3 > m_motionP2
Definition: SegmentSegmentCcdIntervalCheck.h:171
SegmentSegmentCcdIntervalCheck(const SegmentSegmentCcdIntervalCheck &)
Math::LinearMotionND< double, 3 > m_motionQ1
Definition: SegmentSegmentCcdIntervalCheck.h:172
double m_distanceEpsilon
Definition: SegmentSegmentCcdIntervalCheck.h:220
Math::PolynomialValues< double, 2 > m_P1P2xQ1Q2_x
Definition: SegmentSegmentCcdIntervalCheck.h:206
double thicknessP() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:152
Math::PolynomialValues< double, 2 > m_P1P2_Q1Q2
Definition: SegmentSegmentCcdIntervalCheck.h:194
Math::PolynomialValues< double, 3 > m_P1Q1_P1P2_Q1Q2
The triple product of (Q1(t) - P1(t)) X (P2(t) - P1(t)) X (Q2(t) - Q1(t)) as a 3rd degree polynomial ...
Definition: SegmentSegmentCcdIntervalCheck.h:187
const Math::LinearMotionND< double, 3 > & motionP1() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:52
Math::Vector3d p1T0() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:72
Math::PolynomialValues< double, 2 > m_Q1Q2_sq
Definition: SegmentSegmentCcdIntervalCheck.h:201
Math::LinearMotionND< double, 3 > m_motionP1
Definition: SegmentSegmentCcdIntervalCheck.h:170
double muNuEpsilon() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:196
double m_volumeEpsilonTimes6
Definition: SegmentSegmentCcdIntervalCheck.h:221
Math::PolynomialValues< double, 2 > m_Q1Q2_P1Q1
Definition: SegmentSegmentCcdIntervalCheck.h:193
double m_thicknessQ
Definition: SegmentSegmentCcdIntervalCheck.h:214
Math::PolynomialValues< double, 2 > m_P1P2_P1Q1
Definition: SegmentSegmentCcdIntervalCheck.h:192
Math::PolynomialValues< double, 2 > m_P1P2xQ1Q2_z
Definition: SegmentSegmentCcdIntervalCheck.h:208
const Math::PolynomialValues< double, 2 > & Q1Q2_P1Q1() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:122
Math::Vector3d p2T1() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:87
double distanceEpsilon() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:186
SegmentSegmentCcdIntervalCheck & operator=(const SegmentSegmentCcdIntervalCheck &)
Math::LinearMotionND< double, 3 > m_relativeQ1Q2
Definition: SegmentSegmentCcdIntervalCheck.h:180
const Math::PolynomialValues< double, 2 > & P1P2_sq() const
Definition: SegmentSegmentCcdIntervalCheck.cpp:132
SegmentSegmentCcdIntervalCheck uses the Interval classes including the LinearMotion and Polynomial fa...
Definition: SegmentSegmentCcdIntervalCheck.h:38
Math::Interval< double > crossValueOnInterval(const Math::Interval< double > &range) const
Definition: SegmentSegmentCcdIntervalCheck.cpp:142