1 #ifndef SimTK_SIMBODY_CABLE_SPAN_H_
2 #define SimTK_SIMBODY_CABLE_SPAN_H_
117 class MultibodySystem;
118 class CableSubsystem;
119 class CableSubsystemTestHelper;
198 const
Vec3& originStation,
200 const
Vec3& terminationStation);
230 const
Vec3& contactPointHint_S);
233 int getNumObstacles() const;
260 void setOriginStation(const
Vec3& originStation);
264 Vec3 getTerminationStation() const;
268 void setTerminationStation(const
Vec3& terminationStation);
286 void setObstacleMobilizedBodyIndex(
303 void setObstacleTransformSurfaceToBody(
316 void setObstacleContactGeometry(
332 void setObstacleContactPointHint(
334 Vec3 contactPointHint_S);
345 Real getCurveSegmentAccuracy() const;
351 void setCurveSegmentAccuracy(
Real accuracy);
355 int getSolverMaxIterations() const;
359 void setSolverMaxIterations(
int maxIterations);
365 int getNumSolverIterations(const
State& state) const;
373 Real getSmoothnessTolerance() const;
378 void setSmoothnessTolerance(
Real tolerance);
411 void applyBodyForces(
428 void calcDecorativePathPoints(
430 const std::function<
void(
Vec3 point_G)>& sink) const;
478 Real calcCurveSegmentArcLength(
501 void calcCurveSegmentResampledPoints(
505 const std::function<
void(
Vec3 point_G)>& sink) const;
513 const Impl& getImpl()
const
523 std::shared_ptr<Impl> m_impl;
525 friend CableSubsystem;
528 friend CableSubsystemTestHelper;
564 const Impl& getImpl()
const;
567 friend CableSubsystemTestHelper;
606 CableSubsystemTestHelper();
607 ~CableSubsystemTestHelper() noexcept;
608 CableSubsystemTestHelper(const CableSubsystemTestHelper&);
609 CableSubsystemTestHelper& operator=(const CableSubsystemTestHelper&);
610 CableSubsystemTestHelper(CableSubsystemTestHelper&&) noexcept = default;
611 CableSubsystemTestHelper& operator=(CableSubsystemTestHelper&&) noexcept =
621 void testCurrentPath(
624 std::ostream& testReport) const;
629 std::unique_ptr<Impl> m_impl;
This defines the MobilizedBody class, which associates a new body (the "child", "outboard",...
#define SimTK_PIMPL_DOWNCAST(Derived, Parent)
Similar to the above but for private implementation abstract classes, that is, abstract class hierarc...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:594
Every Simbody header and source file should include this header before any other Simbody header.
#define SimTK_SIMBODY_EXPORT
Definition: Simbody/include/simbody/internal/common.h:68
This is a unique integer type for quickly identifying specific cables for fast lookup purposes.
This is a unique integer type for identifying obstacles comprising a particular CableSpan.
This class represents the path of a frictionless cable from an origin point fixed to a body,...
Definition: CableSpan.h:167
CableSpan()
Construct a new cable that can be configured later.
~CableSpan() noexcept=default
Delete the cable if this handle was the last reference to it.
This subsystem manages cables spanning between two points in a system.
Definition: CableSpan.h:541
int getNumCables() const
Get the number of cables being managed by this subsystem.
const CableSpan & getCable(CableSpanIndex ix) const
Get const access to a particular cable.
CableSpan & updCable(CableSpanIndex ix)
Get writeable access to a particular cable.
const MultibodySystem & getMultibodySystem() const
CableSubsystem(MultibodySystem &)
This is for arrays indexed by mobilized body number within a subsystem (typically the SimbodyMatterSu...
The job of the MultibodySystem class is to coordinate the activities of various subsystems which can ...
Definition: MultibodySystem.h:48
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:280
A Subsystem is expected to be part of a larger System and to have interdependencies with other subsys...
Definition: Subsystem.h:55
This is the vector class intended to appear in user code for large, variable size column vectors.
Definition: Vector_.h:50
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
CableSpanAlgorithm
Definition: CableSpan.h:44
@ Scholz2015
This is the original algorithm as described in:
@ MinimumLength
The Minimal length algorithm finds the optimal path by minimizing the total cable length directly,...
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:607
SimTK_DEFINE_UNIQUE_INDEX_TYPE(AssemblyConditionIndex)