AGX Dynamics 2.40.1.2
Loading...
Searching...
No Matches
RotationalDimension.h
Go to the documentation of this file.
1/*
2Copyright 2007-2025. Algoryx Simulation AB.
3
4All AGX source code, intellectual property, documentation, sample code,
5tutorials, scene files and technical white papers, are copyrighted, proprietary
6and confidential material of Algoryx Simulation AB. You may not download, read,
7store, distribute, publish, copy or otherwise disseminate, use or expose this
8material unless having a written signed agreement with Algoryx Simulation AB, or having been
9advised so by Algoryx Simulation AB for a time limited evaluation, or having purchased a
10valid commercial license from Algoryx Simulation AB.
11
12Algoryx Simulation AB disclaims all responsibilities for loss or damage caused
13from using this software, unless otherwise stated in written agreements with
14Algoryx Simulation AB.
15*/
16
17#pragma once
18
19#include <agxModel/export.h>
23
25
26#include <agxUtil/agxUtil.h>
27
28#include <agx/RigidBody.h>
30#include <agx/Attachment.h>
31
32namespace agxPowerLine
33{
34 #define DEFAULT_ROTATIONAL_DIRECTION agx::Vec3(0,1,0)
35
36 class RotationalUnit;
45 {
46 public:
51
57 agx::RigidBody* body,
58 agx::UInt8 slot);
59
65 agx::RigidBody* body,
66 const agx::Vec3& direction,
67 agxPowerLine::DirectionReference directionReference,
68 bool externalBody = false);
69
70
74 virtual void renderDebug() override;
75
78
82 virtual agx::Real getOutputLoad() const override;
85
86
90 virtual agx::Real getPowerIn() const override;
91 virtual agx::Real getPowerOut() const override;
92
96 virtual agx::Real getMassProperty() const override;
98
103 virtual bool setInertia( agx::Real value );
104
108 virtual void setAngularVelocityDamping( agx::Real damping );
109
113 virtual bool store(agxStream::StorageStream& out) const override;
114
118 virtual bool restore(agxStream::StorageStream& in) override;
119
121
125 virtual std::string getTypeName() const override;
126
132 static std::string getStaticTypeName();
133
135
136
137
138 protected:
139 friend class RotationalUnit;
140 void postUpdate(agx::Real timeStep);
141
142 protected:
145 };
146
148
149
150
155 {
156 public:
161
166
171
175 virtual bool store(agxStream::StorageStream& str) const override;
176
180 virtual bool restore(agxStream::StorageStream& str) override;
181
183
184 protected:
186
187 };
188
190
191
192
193
198 {
199 public:
205
209 virtual agx::Real variableLookupFunction( ) const override;
210
214 virtual agx::Real resultScalerFunction( ) const override;
215
219 virtual bool store(agxStream::StorageStream& str) const override;
220
224 virtual bool restore(agxStream::StorageStream& str) override;
225
227
228 protected:
231 virtual void applyPower() override;
233
234 };
235
236}
#define AGXSTREAM_DECLARE_SERIALIZABLE(T)
Use this in a Serializable class to add the required methods Important: Use full namespace in the dec...
Definition: Serializable.h:208
#define AGXMODEL_EXPORT
Links two connections together.
Definition: Connector.h:53
Constraint implementation for constraining a number of physical dimensions of the same type.
Will generate power by adding a load to a physical dimension.
Defines a stiff gear constraint between two rotational dimensions.
RotationalConnector()
Create a connector between two rotational dimensions.
virtual agx::RegularizationParameters::VariableType calculateComplianceAndDamping(const agx::Real timeStep, agx::Real &compliance, agx::Real &damping) override
Calculate a compliance that will result in the wanted efficiency.
virtual bool store(agxStream::StorageStream &str) const override
Stores internal data into stream.
virtual bool restore(agxStream::StorageStream &str) override
Restores internal data from stream.
virtual PhysicalDimensionMultiBodyConstraintImplementation * createConstraint() override
Create a gear constraint.
The rotational has one rotational degree of freedom.
virtual void renderDebug() override
Render the axis of the dimension.
virtual bool store(agxStream::StorageStream &out) const override
Stores internal data into stream.
RotationalDimension(agxPowerLine::Unit *unit, agx::RigidBody *body, agx::UInt8 slot)
Virtual function so that an instance can find its own name and not the name of the base class.
static std::string getStaticTypeName()
Each class inheriting from agxPowerLine::PhysicalDimension has to have a static function returning a ...
virtual std::string getTypeName() const override
Virtual function so that an instance can find its own name and not the name of the base class.
virtual agx::Real getOutputLoad() const override
void postUpdate(agx::Real timeStep)
virtual agx::Real getMassProperty() const override
virtual bool restore(agxStream::StorageStream &in) override
Restores internal data from stream.
RotationalDimension(agxPowerLine::Unit *unit, agx::RigidBody *body, const agx::Vec3 &direction, agxPowerLine::DirectionReference directionReference, bool externalBody=false)
Create a RotationalDimension whose direction can be relative to either the world or the body coordina...
virtual void setAngularVelocityDamping(agx::Real damping)
set the angular velocity damping.
virtual agx::Real getPowerOut() const override
static agxPowerLine::PhysicalDimension::Type getStaticType()
agx::Real getAngularVelocity() const
virtual bool setInertia(agx::Real value)
set the inertia of the rotational dimension.
virtual agx::Real getPowerIn() const override
RotationalDimension(Unit *unit)
Create a RotationalDimension with a direction relative to the world coordinate frame.
A rotational unit has one degree of freedom.
A torque generator adds torque to the body of a rotational dimension.
virtual bool restore(agxStream::StorageStream &str) override
Restores internal data from stream.
virtual void applyPower() override
Implement this to apply power each timestep.
agx::observer_ptr< RotationalDimension > m_rotationalDimension
TorqueGenerator(agxPowerLine::RotationalDimension *dimension)
Create a torque generator.
virtual bool store(agxStream::StorageStream &str) const override
Stores internal data into stream.
virtual agx::Real variableLookupFunction() const override
Finds the current RPM (and not angular velocity)
virtual agx::Real resultScalerFunction() const override
Implement this to scale lookups accordingly.
Pure virtual class.
Definition: Unit.h:72
Abstract base class for storing/restoring a line/drums with version control.
Definition: StorageStream.h:49
The rigid body class, combining a geometric model and a frame of reference.
Definition: RigidBody.h:52
Smart pointer for observed objects, that automatically set pointers to them to null when they deleted...
Definition: observer_ptr.h:61
Smart pointer for handling referenced counted objects.
Definition: ref_ptr.h:30
agxPowerLine contains a collection of connected components that transport power across a system.
Definition: MotorUnit.h:24
DirectionReference
The DirectionReference specifies what the direction attribute of a DimensionState is relative to.
agx::ref_ptr< RotationalConnector > RotationalConnectorRef
agx::ref_ptr< RotationalDimension > RotationalDimensionRef
Definition: MotorUnit.h:26
double Real
Definition: Real.h:42
uint8_t UInt8
Definition: Integer.h:30