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
bool isConvex() const
Definition: Geodesic.h:242
int getNumPoints() const
Definition: Geodesic.h:56
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
void addArcLength(Real s)
Definition: Geodesic.h:72
void addFrenetFrame(const Transform &Kf)
Definition: Geodesic.h:68
size_type size() const
Return the current number of elements stored in this array.
Definition: Array.h:2075
GeodesicDecorator(const Geodesic &geod, const Vec3 &color)
Definition: Geodesic.h:276
const Array_< Real > & getCurvatures() const
Definition: Geodesic.h:75
Real getJacobiTransQDot() const
Definition: Geodesic.h:219
const Array_< Vec2 > & getPositionalSensitivityQtoP() const
Definition: Geodesic.h:104
This defines geometry to represent a coordinate frame.
Definition: DecorativeGeometry.h:486
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
const Array_< Vec2 > & getDirectionalSensitivityQtoP() const
Definition: Geodesic.h:88
void addPositionalSensitivityPtoQ(const Vec2 &jtP)
Definition: Geodesic.h:98
This class stores a geodesic curve after it has been determined.
Definition: Geodesic.h:51
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
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:606
Real getJacobiTransPDot() const
Definition: Geodesic.h:218
Real getJacobiQDot() const
Return the derivative of jQ with respect to s, the arc length of the geodesic.
Definition: Geodesic.h:213
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:280
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
Array_< Transform > & updFrenetFrames()
Definition: Geodesic.h:67
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
void addDirectionalSensitivityPtoQ(const Vec2 &jP)
Definition: Geodesic.h:82
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
Real getJacobiTransQ() const
Definition: Geodesic.h:217
void setBinormalCurvatureAtP(Real muP)
Definition: Geodesic.h:112
const Array_< Transform > & getFrenetFrames() const
Frenet frame of geodesic at arc length s:
Definition: Geodesic.h:66
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 setIsShortest(bool isShortest)
Definition: Geodesic.h:238
Includes internal headers providing declarations for the basic SimTK Core classes, including Simmatrix.
bool isShortest() const
Definition: Geodesic.h:243
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
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
This class stores options for calculating geodesics.
Definition: Geodesic.h:311
Real getJacobiTransP() const
Definition: Geodesic.h:216
The Array_<T> container class is a plug-compatible replacement for the C++ standard template library ...
Definition: Array.h:53
Real getAchievedAccuracy() const
Definition: Geodesic.h:245
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 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
void addPositionalSensitivityQtoP(const Vec2 &jtQ)
Definition: Geodesic.h:106
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 setTorsionAtP(Real tauP)
Definition: Geodesic.h:110
Real getInitialStepSizeHint() const
Definition: Geodesic.h:244
const Array_< Vec2 > & getPositionalSensitivityPtoQ() const
Definition: Geodesic.h:96
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 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
const Array_< Real > & getArcLengths() const
Definition: Geodesic.h:71
Real getLength() const
Return the total arc length of this geodesic curve.
Definition: Geodesic.h:117
void setAchievedAccuracy(Real acc)
Definition: Geodesic.h:240
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
This is the header file that every Simmath compilation unit should include first. ...
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
const Array_< Vec2 > & getDirectionalSensitivityPtoQ() const
Definition: Geodesic.h:80
void setBinormalCurvatureAtQ(Real muQ)
Definition: Geodesic.h:113
Array_< Real > & updCurvatures()
Definition: Geodesic.h:74
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
void setIsConvex(bool isConvex)
Definition: Geodesic.h:237
Array_< Real > & updArcLengths()
Definition: Geodesic.h:70
Array_< Vec2 > & updDirectionalSensitivityPtoQ()
Definition: Geodesic.h:78
void addCurvature(Real kappa)
Definition: Geodesic.h:76
const UnitVec3 & getBinormalQ() const
Return the unit binormal vector to the curve at Q, defined as bQ = tQ X nQ.
Definition: Geodesic.h:155
This class generates decoration (line segments) for a geodesic curve.
Definition: Geodesic.h:274
A line between two points.
Definition: DecorativeGeometry.h:306
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
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:2399
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 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
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
virtual void generateDecorations(const State &state, Array_< DecorativeGeometry > &geometry) override
This will be called every time a new State is about to be visualized.
Definition: Geodesic.h:279