Simbody 3.7
Loading...
Searching...
No Matches
Constraint_SphereOnSphereContact.h
Go to the documentation of this file.
1#ifndef SimTK_SIMBODY_CONSTRAINT_SPHERE_ON_SPHERE_CONTACT_H_
2#define SimTK_SIMBODY_CONSTRAINT_SPHERE_ON_SPHERE_CONTACT_H_
3
4/* -------------------------------------------------------------------------- *
5 * Simbody(tm) *
6 * -------------------------------------------------------------------------- *
7 * This is part of the SimTK biosimulation toolkit originating from *
8 * Simbios, the NIH National Center for Physics-Based Simulation of *
9 * Biological Structures at Stanford, funded under the NIH Roadmap for *
10 * Medical Research, grant U54 GM072970. See https://simtk.org/home/simbody. *
11 * *
12 * Portions copyright (c) 2014 Stanford University and the Authors. *
13 * Authors: Michael Sherman *
14 * Contributors: *
15 * *
16 * Licensed under the Apache License, Version 2.0 (the "License"); you may *
17 * not use this file except in compliance with the License. You may obtain a *
18 * copy of the License at http://www.apache.org/licenses/LICENSE-2.0. *
19 * *
20 * Unless required by applicable law or agreed to in writing, software *
21 * distributed under the License is distributed on an "AS IS" BASIS, *
22 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
23 * See the License for the specific language governing permissions and *
24 * limitations under the License. *
25 * -------------------------------------------------------------------------- */
26
31
32namespace SimTK {
33
34//==============================================================================
35// SPHERE ON SPHERE CONTACT
36//==============================================================================
103: public Constraint {
104public:
105 // no default constructor
106
107//------------------------------------------------------------------------------
123
157 const Vec3& defaultCenterOnF,
158 Real defaultRadiusOnF,
159 MobilizedBody& mobod_B,
160 const Vec3& defaultCenterOnB,
161 Real defaultRadiusOnB,
162 bool enforceRolling);
163
167
172
177
182
188setDefaultCenterOnF(const Vec3& defaultCenter);
200setDefaultCenterOnB(const Vec3& defaultCenter);
207
230//------------------------------------------------------------------------------
238 // nothing yet
242//------------------------------------------------------------------------------
260
267setCenterOnF(State& state, const Vec3& sphereCenter) const;
268
273setRadiusOnF(State& state, Real sphereRadius) const;
274
281setCenterOnB(State& state, const Vec3& sphereCenter) const;
282
287setRadiusOnB(State& state, Real sphereRadius) const;
288
293const Vec3& getCenterOnF(const State& state) const;
296Real getRadiusOnF(const State& state) const;
297
302const Vec3& getCenterOnB(const State& state) const;
305Real getRadiusOnB(const State& state) const;
308//------------------------------------------------------------------------------
318Real getPositionError(const State& state) const;
319
329Vec3 getVelocityErrors(const State& state) const;
330
336Vec3 getAccelerationErrors(const State& state) const;
337
348Vec3 getMultipliers(const State& state) const;
349
359Vec3 findForceOnSphereBInG(const State& state) const;
360
374
381Real findSeparation(const State& state) const;
// hide from Doxygen
386 (SphereOnSphereContact, SphereOnSphereContactImpl, Constraint);
388};
389
390} // namespace SimTK
391
392#endif // SimTK_SIMBODY_CONSTRAINT_SPHERE_ON_SPHERE_CONTACT_H_
393
394
395
This defines the base Constraint class and related classes, which are used to specify limitations on ...
#define SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS(DERIVED, DERIVED_IMPL, PARENT)
Definition PrivateImplementation.h:343
#define SimTK_SIMBODY_EXPORT
Definition Simbody/include/simbody/internal/common.h:68
This constraint represents a bilateral connection between a sphere on one body and a sphere on anothe...
Definition Constraint_SphereOnSphereContact.h:103
Real getDefaultRadiusOnF() const
Return the default radius for the sphere attached to the first body, mobod_F, as set during construct...
const Vec3 & getDefaultCenterOnF() const
Return the default center point for the sphere attached to the first body, mobod_F,...
Transform findContactFrameInG(const State &state) const
Return the instantaneous contact frame C in the Ground frame.
Real findSeparation(const State &state) const
Calculate the separation distance or penetration depth of the two spheres.
Vec3 getVelocityErrors(const State &state) const
The returned velocity error vector has the time derivative of the quantity returned by getPositionErr...
SphereOnSphereContact(MobilizedBody &mobod_F, const Vec3 &defaultCenterOnF, Real defaultRadiusOnF, MobilizedBody &mobod_B, const Vec3 &defaultCenterOnB, Real defaultRadiusOnB, bool enforceRolling)
Construct a sphere-on-sphere constraint as described in the Constraint::SphereOnSphereContact class d...
Real getPositionError(const State &state) const
The returned position error can be viewed as the signed distance between the spheres.
const SphereOnSphereContact & setRadiusOnF(State &state, Real sphereRadius) const
Modify the radius of the sphere on the first body, mobod_F, in this state.
const Vec3 & getCenterOnB(const State &state) const
Return the position of the center point of the sphere attached to the second body,...
SphereOnSphereContact & setDefaultRadiusOnF(Real defaultRadius)
Replace the default radius for the sphere attached to the first body, mobod_F, that was supplied on c...
const SphereOnSphereContact & setCenterOnF(State &state, const Vec3 &sphereCenter) const
Modify the location of the sphere on the first body, mobod_F, in this state by providing a new vector...
bool isEnforcingRolling() const
Report whether this Constraint was constructed to generate rolling constraints (otherwise it is frict...
SphereOnSphereContact()
Default constructor creates an empty handle that can be used to reference any SphereOnSphereContact C...
Definition Constraint_SphereOnSphereContact.h:166
SphereOnSphereContact & setDefaultCenterOnF(const Vec3 &defaultCenter)
Replace the default center point for the sphere attached to the first body, mobod_F,...
const Vec3 & getDefaultCenterOnB() const
Return the default center point for the sphere attached to the second body, mobod_B,...
const Vec3 & getCenterOnF(const State &state) const
Return the position of the center point of the sphere attached to the first body, mobod_F,...
SphereOnSphereContact & setDefaultRadiusOnB(Real defaultRadius)
Replace the default radius for the sphere attached to the second body, mobod_B, that was supplied on ...
Real getRadiusOnB(const State &state) const
Return the radius of the sphere attached to the first body, mobod_F, as currently set in the given st...
Real getRadiusOnF(const State &state) const
Return the radius of the sphere attached to the first body, mobod_F, as currently set in the given st...
const SphereOnSphereContact & setRadiusOnB(State &state, Real sphereRadius) const
Modify the radius of the sphere on the second body, mobod_B, in this state.
Vec3 getMultipliers(const State &state) const
These are the Lagrange multipliers required to enforce the constraint equations generated here.
Vec3 findForceOnSphereBInG(const State &state) const
Return the force vector currently being applied by this constraint to the contact point Co on the sph...
SphereOnSphereContact & setDefaultCenterOnB(const Vec3 &defaultCenter)
Replace the default center point for the sphere attached to the second body, mobod_B,...
const SphereOnSphereContact & setCenterOnB(State &state, const Vec3 &sphereCenter) const
Modify the location of the sphere on the second body, mobod_B, in this state by providing a new vecto...
Real getDefaultRadiusOnB() const
Return the default radius for the sphere attached to the second body, mobod_B, as set during construc...
Vec3 getAccelerationErrors(const State &state) const
This vector is the time derivative of the value returned by getVelocityError().
const MobilizedBody & getMobilizedBodyB() const
Return a reference to the second MobilizedBody to which a sphere is attached.
const MobilizedBody & getMobilizedBodyF() const
Return a reference to the first MobilizedBody to which a sphere is attached.
This is the base class for all Constraint classes, which is just a handle for the underlying hidden i...
Definition Constraint.h:67
A MobilizedBody is Simbody's fundamental body-and-joint object used to parameterize a system's motion...
Definition MobilizedBody.h:169
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition State.h:280
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition Assembler.h:37
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