1 #ifndef SimTK_SIMMATH_GEODESIC_H_     2 #define SimTK_SIMMATH_GEODESIC_H_    79     {   
return directionalSensitivityPtoQ; }
    81     {   
return directionalSensitivityPtoQ; }
    83         directionalSensitivityPtoQ.push_back(jP);
    87     {   
return directionalSensitivityQtoP; }
    89     {   
return directionalSensitivityQtoP; }
    91         directionalSensitivityQtoP.push_back(jQ);
    95     {   
return positionalSensitivityPtoQ; }
    97     {   
return positionalSensitivityPtoQ; }
    99         positionalSensitivityPtoQ.push_back(jtP);
   103     {   
return positionalSensitivityQtoP; }
   105     {   
return positionalSensitivityQtoP; }
   107         positionalSensitivityQtoP.push_back(jtQ);
   125     {   
return ~xdotQ*getTangentQ() - ~xdotP*getTangentP(); }
   225         frenetFrames.clear(); 
   226         directionalSensitivityPtoQ.clear(); 
   227         directionalSensitivityQtoP.clear(); 
   228         positionalSensitivityPtoQ.clear(); 
   229         positionalSensitivityQtoP.clear(); 
   231         torsionAtP = torsionAtQ = 
NaN;
   232         binormalCurvatureAtP = binormalCurvatureAtQ = 
NaN;
   233         convexFlag = shortestFlag = 
false;
   234         initialStepSizeHint = achievedAccuracy = 
NaN;
   247     void dump(std::ostream& o) 
const;
   259     Real              torsionAtP, torsionAtQ; 
   260     Real              binormalCurvatureAtP, binormalCurvatureAtQ;
   266     Real initialStepSizeHint; 
   267     Real achievedAccuracy; 
   277             m_geod(geod), m_color(color) { }
   286         for (
int i = 0; i < (int) Kfs.
size(); ++i) {
   287             Vec3 cur = Kfs[i].p();
   292                         .setLineThickness(3));
   318 #endif // SimTK_SIMMATH_GEODESIC_H_ void setInitialStepSizeHint(Real sz)
Definition: Geodesic.h:239
 
const UnitVec3 & getNormalP() const 
Return the surface outward unit normal at P, which is aligned with the curve normal there but will ha...
Definition: Geodesic.h:137
 
void addArcLength(Real s)
Definition: Geodesic.h:72
 
Real getLength() const 
Return the total arc length of this geodesic curve. 
Definition: Geodesic.h:117
 
void addFrenetFrame(const Transform &Kf)
Definition: Geodesic.h:68
 
GeodesicDecorator(const Geodesic &geod, const Vec3 &color)
Definition: Geodesic.h:276
 
const Array_< Vec2 > & getDirectionalSensitivityQtoP() const 
Definition: Geodesic.h:88
 
This defines geometry to represent a coordinate frame. 
Definition: DecorativeGeometry.h:484
 
const Vec3 & getPointP() const 
Return the location on the surface of the geodesic's starting point P, measured and expressed in the ...
Definition: Geodesic.h:129
 
const Array_< Vec2 > & getDirectionalSensitivityPtoQ() const 
Definition: Geodesic.h:80
 
Array_< Vec2 > & updPositionalSensitivityQtoP()
Definition: Geodesic.h:102
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
Real getCurvatureQ() const 
Return the geodesic normal curvature at Q, defined to be positive when the surface is convex in the c...
Definition: Geodesic.h:170
 
void addPositionalSensitivityPtoQ(const Vec2 &jtP)
Definition: Geodesic.h:98
 
This class stores a geodesic curve after it has been determined. 
Definition: Geodesic.h:51
 
const Array_< Vec2 > & getPositionalSensitivityQtoP() const 
Definition: Geodesic.h:104
 
size_type size() const 
Return the current number of elements stored in this array. 
Definition: Array.h:2037
 
const UnitVec3 & getTangentP() const 
Return the unit tangent to the geodesic at P, pointing in the direction of increasing arc length para...
Definition: Geodesic.h:145
 
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:593
 
virtual void generateDecorations(const State &state, Array_< DecorativeGeometry > &geometry)
This will be called every time a new State is about to be visualized. 
Definition: Geodesic.h:279
 
Array_< Vec2 > & updDirectionalSensitivityQtoP()
Definition: Geodesic.h:86
 
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:276
 
void setTorsionAtQ(Real tauQ)
Definition: Geodesic.h:111
 
const Real NaN
This is the IEEE "not a number" constant for this implementation of the default-precision Real type; ...
 
void addDirectionalSensitivityQtoP(const Vec2 &jQ)
Definition: Geodesic.h:90
 
const Array_< Real > & getCurvatures() const 
Definition: Geodesic.h:75
 
bool isShortest() const 
Definition: Geodesic.h:243
 
Array_< Transform > & updFrenetFrames()
Definition: Geodesic.h:67
 
void addDirectionalSensitivityPtoQ(const Vec2 &jP)
Definition: Geodesic.h:82
 
Real getCurvatureP() const 
Return the geodesic normal curvature at P, defined to be positive when the surface is convex in the c...
Definition: Geodesic.h:162
 
const Array_< Transform > & getFrenetFrames() const 
Frenet frame of geodesic at arc length s: 
Definition: Geodesic.h:66
 
const Vec3 & getPointQ() const 
Return the location on the surface of the geodesic's ending point Q, measured and expressed in the su...
Definition: Geodesic.h:132
 
Real getJacobiTransP() const 
Definition: Geodesic.h:216
 
void setBinormalCurvatureAtP(Real muP)
Definition: Geodesic.h:112
 
void setIsShortest(bool isShortest)
Definition: Geodesic.h:238
 
Includes internal headers providing declarations for the basic SimTK Core classes, including Simmatrix. 
 
const Array_< Real > & getArcLengths() const 
Definition: Geodesic.h:71
 
Array_< Vec2 > & updPositionalSensitivityPtoQ()
Definition: Geodesic.h:94
 
A DecorationGenerator is used to define geometry that may change over the course of a simulation...
Definition: DecorationGenerator.h:45
 
This class stores options for calculating geodesics. 
Definition: Geodesic.h:311
 
The SimTK::Array_<T> container class is a plug-compatible replacement for the C++ standard template l...
Definition: Array.h:50
 
const UnitVec3 & getNormalQ() const 
Return the surface outward unit normal at Q, which is aligned with the curve normal there but will ha...
Definition: Geodesic.h:141
 
Real getJacobiQDot() const 
Return the derivative of jQ with respect to s, the arc length of the geodesic. 
Definition: Geodesic.h:213
 
const UnitVec3 & getBinormalQ() const 
Return the unit binormal vector to the curve at Q, defined as bQ = tQ X nQ. 
Definition: Geodesic.h:155
 
bool isConvex() const 
Definition: Geodesic.h:242
 
Real getJacobiQ() const 
Return jQ, the Jacobi field term giving the sensitivity of the Q end of the geodesic to changes in ta...
Definition: Geodesic.h:203
 
const UnitVec3 & getBinormalP() const 
Return the unit binormal vector to the curve at P, defined as bP = tP X nP. 
Definition: Geodesic.h:152
 
void addPositionalSensitivityQtoP(const Vec2 &jtQ)
Definition: Geodesic.h:106
 
void setTorsionAtP(Real tauP)
Definition: Geodesic.h:110
 
Real calcLengthDot(const Vec3 &xdotP, const Vec3 &xdotQ) const 
Given the time derivatives of the surface coordinates of P and Q, calculate the rate of change of len...
Definition: Geodesic.h:124
 
Real getInitialStepSizeHint() const 
Definition: Geodesic.h:244
 
Real getBinormalCurvatureQ() const 
Return the surface curvature in the binormal direction at Q; don't confuse this with the geodesic tor...
Definition: Geodesic.h:190
 
Real getJacobiTransPDot() const 
Definition: Geodesic.h:218
 
Real getJacobiTransQDot() const 
Definition: Geodesic.h:219
 
void setAchievedAccuracy(Real acc)
Definition: Geodesic.h:240
 
This is the header file that every Simmath compilation unit should include first. ...
 
void setBinormalCurvatureAtQ(Real muQ)
Definition: Geodesic.h:113
 
Real getBinormalCurvatureP() const 
Return the surface curvature in the binormal direction at P; don't confuse this with the geodesic tor...
Definition: Geodesic.h:186
 
Array_< Real > & updCurvatures()
Definition: Geodesic.h:74
 
void setIsConvex(bool isConvex)
Definition: Geodesic.h:237
 
Array_< Real > & updArcLengths()
Definition: Geodesic.h:70
 
Array_< Vec2 > & updDirectionalSensitivityPtoQ()
Definition: Geodesic.h:78
 
int getNumPoints() const 
Definition: Geodesic.h:56
 
void addCurvature(Real kappa)
Definition: Geodesic.h:76
 
This class generates decoration (line segments) for a geodesic curve. 
Definition: Geodesic.h:274
 
A line between two points. 
Definition: DecorativeGeometry.h:304
 
void push_back(const T &value)
This method increases the size of the Array by one element at the end and initializes that element by...
Definition: Array.h:2359
 
Real getJacobiTransQ() const 
Definition: Geodesic.h:217
 
const UnitVec3 & getTangentQ() const 
Return the unit tangent to the geodesic at Q, pointing in the direction of increasing arc length para...
Definition: Geodesic.h:148
 
void clear()
Clear the data in this geodesic, returning it to its default-constructed state, although memory remai...
Definition: Geodesic.h:223
 
Geodesic()
Construct an empty geodesic. 
Definition: Geodesic.h:54
 
Real getTorsionP() const 
Return the geodesic torsion at P, that is, the twisting of the Frenet frame as you move along the tan...
Definition: Geodesic.h:176
 
Real getTorsionQ() const 
Return the geodesic torsion at Q, that is, the twisting of the Frenet frame as you move along the tan...
Definition: Geodesic.h:181
 
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
 
const Array_< Vec2 > & getPositionalSensitivityPtoQ() const 
Definition: Geodesic.h:96
 
Real getJacobiPDot() const 
Return the derivative of jP with respect to s, the arc length of the geodesic (which always runs from...
Definition: Geodesic.h:210
 
Real getJacobiP() const 
Return jP, the Jacobi field term giving the sensitivity of the P end of the geodesic to changes in ta...
Definition: Geodesic.h:197
 
Real getAchievedAccuracy() const 
Definition: Geodesic.h:245