• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

step/stepcore

  • sources
  • kde-4.12
  • kdeedu
  • step
  • stepcore
rigidbody.h
Go to the documentation of this file.
1 /* This file is part of StepCore library.
2  Copyright (C) 2007 Vladimir Kuznetsov <ks.vladimir@gmail.com>
3 
4  StepCore library is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  StepCore library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with StepCore; if not, write to the Free Software
16  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18 
23 #ifndef STEPCORE_RIGIDBODY_H
24 #define STEPCORE_RIGIDBODY_H
25 
26 #include "world.h"
27 #include "vector.h"
28 #include "object.h"
29 
30 namespace StepCore {
31 
32 class RigidBody;
33 
37 class RigidBodyErrors: public ObjectErrors
38 {
39  STEPCORE_OBJECT(RigidBodyErrors)
40 
41 public:
43  RigidBodyErrors(Item* owner = 0)
44  : ObjectErrors(owner), _positionVariance(0,0), _angleVariance(0), _velocityVariance(0,0),
45  _angularVelocityVariance(0), _forceVariance(0,0), _torqueVariance(0),
46  _massVariance(0), _inertiaVariance(0) {}
47 
49  RigidBody* rigidBody() const;
50 
52  const Vector2d& positionVariance() const { return _positionVariance; }
54  void setPositionVariance(const Vector2d& positionVariance) {
55  _positionVariance = positionVariance; }
56 
58  double angleVariance() const { return _angleVariance; }
60  void setAngleVariance(double angleVariance) { _angleVariance = angleVariance; }
61 
63  const Vector2d& velocityVariance() const { return _velocityVariance; }
65  void setVelocityVariance(const Vector2d& velocityVariance) {
66  _velocityVariance = velocityVariance; }
67 
69  double angularVelocityVariance() const { return _angularVelocityVariance; }
71  void setAngularVelocityVariance(double angularVelocityVariance) {
72  _angularVelocityVariance = angularVelocityVariance; }
73 
75  Vector2d accelerationVariance() const;
76 
78  double angularAccelerationVariance() const;
79 
81  const Vector2d& forceVariance() const { return _forceVariance; }
83  void setForceVariance(const Vector2d& forceVariance) {
84  _forceVariance = forceVariance; }
85 
87  double torqueVariance() const { return _torqueVariance; }
88 
90  void applyForceVariance(const Vector2d& force,
91  const Vector2d& position,
92  const Vector2d& forceVariance,
93  const Vector2d& positionVariance);
94 
96  void applyTorqueVariance(double torqueVariance) { _torqueVariance += torqueVariance; }
97 
99  double massVariance() const { return _massVariance; }
101  void setMassVariance(double massVariance) {
102  _massVariance = massVariance; }
103 
105  double inertiaVariance() const { return _inertiaVariance; }
107  void setInertiaVariance(double inertiaVariance) {
108  _inertiaVariance = inertiaVariance; }
109 
111  Vector2d momentumVariance() const;
113  void setMomentumVariance(const Vector2d& momentumVariance);
114 
116  double angularMomentumVariance() const;
118  void setAngularMomentumVariance(double angularMomentumVariance);
119 
121  double kineticEnergyVariance() const;
123  void setKineticEnergyVariance(double kineticEnergyVariance);
124 
125 protected:
126  Vector2d _positionVariance;
127  double _angleVariance;
128 
129  Vector2d _velocityVariance;
130  double _angularVelocityVariance;
131 
132  Vector2d _forceVariance;
133  double _torqueVariance;
134 
135  double _massVariance;
136  double _inertiaVariance;
137 
138  friend class RigidBody;
139 };
140 
144 class RigidBody: public Item, public Body
145 {
146  STEPCORE_OBJECT(RigidBody)
147 
148 public:
149  enum {
150  PositionOffset = 0,
151  AngleOffset = 2
152  };
153 
155  explicit RigidBody(Vector2d position = Vector2d::Zero(), double angle = 0,
156  Vector2d velocity = Vector2d::Zero(), double angularVelocity = 0,
157  double mass = 1, double inertia = 1);
158 
160  const Vector2d& position() const { return _position; }
162  void setPosition(const Vector2d& position) { _position = position; }
163 
165  double angle() const { return _angle; }
167  void setAngle(double angle) { _angle = angle; }
168 
170  const Vector2d& velocity() const { return _velocity; }
172  void setVelocity(const Vector2d& velocity) { _velocity = velocity; }
174  Vector2d velocityWorld(const Vector2d& worldPoint) const;
176  Vector2d velocityLocal(const Vector2d& localPoint) const;
177 
179  double angularVelocity() const { return _angularVelocity; }
181  void setAngularVelocity(double angularVelocity) { _angularVelocity = angularVelocity; }
182 
184  Vector2d acceleration() const { return _force/_mass; }
185 
187  double angularAcceleration() const { return _torque/_inertia; }
188 
190  const Vector2d& force() const { return _force; }
192  void setForce(const Vector2d& force) { _force = force; }
193 
195  double torque() const { return _torque; }
197  void setTorque(double torque) { _torque = torque; }
198 
199  //void applyForceLocal(const Vector2d& localPosition = Vector2d(0,0));
200 
202  void applyForce(const Vector2d& force, const Vector2d& position);
203 
205  void applyTorque(double torque) { _torque += torque; }
206 
208  double mass() const { return _mass; }
210  void setMass(double mass) { _mass = mass; }
211 
213  double inertia() const { return _inertia; }
215  void setInertia(double inertia) { _inertia = inertia; }
216 
218  Vector2d momentum() const { return _velocity * _mass; }
220  void setMomentum(const Vector2d& momentum) { _velocity = momentum / _mass; }
221 
223  double angularMomentum() const { return _angularVelocity * _inertia; }
225  void setAngularMomentum(double angularMomentum) {
226  _angularVelocity = angularMomentum / _inertia; }
227 
229  double kineticEnergy() const {
230  return _mass * _velocity.squaredNorm()/2 + _inertia * square(_angularVelocity)/2; }
232  void setKineticEnergy(double kineticEnergy);
233 
235  Vector2d vectorLocalToWorld(const Vector2d& v) const;
237  Vector2d vectorWorldToLocal(const Vector2d& v) const;
238 
240  Vector2d pointLocalToWorld(const Vector2d& p) const;
242  Vector2d pointWorldToLocal(const Vector2d& p) const;
243 
244  //---------- Integration over body
245 
246  //---------- Shape
247  // XXX
248  //const Vector2dList& vertexes() const;
249 
250  int variablesCount() { return 3; }
251  void getVariables(double* position, double* velocity,
252  double* positionVariance, double* velocityVariance);
253  void setVariables(const double* position, const double* velocity,
254  const double* positionVariance, const double* velocityVariance);
255  void addForce(const double* force, const double* forceVariance);
256  void resetForce(bool resetVariance);
257  void getAccelerations(double* acceleration, double* accelerationVariance);
258  void getInverseMass(VectorXd* inverseMass,
259  DynSparseRowMatrix* variance, int offset);
261  RigidBodyErrors* rigidBodyErrors() {
262  return static_cast<RigidBodyErrors*>(objectErrors()); }
263 
264 protected:
265  ObjectErrors* createObjectErrors() { return new RigidBodyErrors(this); }
266 
267  Vector2d _position;
268  double _angle;
269 
270  Vector2d _velocity;
271  double _angularVelocity;
272 
273  Vector2d _force;
274  double _torque;
275 
276  double _mass;
277  double _inertia;
278 
279  friend class RigidBodyErrors;
280 };
281 
285 class Disk: public RigidBody
286 {
287  STEPCORE_OBJECT(Disk)
288 public:
290  explicit Disk(Vector2d position = Vector2d::Zero(), double angle = 0,
291  Vector2d velocity = Vector2d::Zero(), double angularVelocity = 0,
292  double mass = 1, double inertia = 1, double radius = 0.5)
293  : RigidBody(position, angle, velocity, angularVelocity, mass, inertia),
294  _radius(radius) {}
295 
297  double radius() const { return _radius; }
299  void setRadius(double radius) { _radius = radius; }
300 
301 protected:
302  double _radius;
303 };
304 
308 class BasePolygon: public RigidBody
309 {
310  STEPCORE_OBJECT(BasePolygon)
311 public:
313  explicit BasePolygon(Vector2d position = Vector2d::Zero(), double angle = 0,
314  Vector2d velocity = Vector2d::Zero(), double angularVelocity = 0,
315  double mass = 1, double inertia = 1)
316  : RigidBody(position, angle, velocity, angularVelocity, mass, inertia) {}
317 
319  const Vector2dList& vertexes() const { return _vertexes; }
320 
321 protected:
322  Vector2dList _vertexes;
323 };
324 
325 class Box: public BasePolygon
326 {
327  STEPCORE_OBJECT(Box)
328 public:
330  explicit Box(Vector2d position = Vector2d::Zero(), double angle = 0,
331  Vector2d velocity = Vector2d::Zero(), double angularVelocity = 0,
332  double mass = 1, double inertia = 1, Vector2d size = Vector2d(1,1));
333 
335  Vector2d size() const { return Vector2d(_vertexes[1][0] - _vertexes[0][0],
336  _vertexes[3][1] - _vertexes[0][1]); }
338  void setSize(const Vector2d& size);
339 };
340 
344 class Polygon: public BasePolygon
345 {
346  STEPCORE_OBJECT(Polygon)
347 
348 public:
350  const Vector2dList& vertexes() const { return _vertexes; }
352  Vector2dList& vertexes() { return _vertexes; }
354  void setVertexes(const Vector2dList& vertexes) { _vertexes = vertexes; }
355 };
356 
357 #if 0
358 
361 class Plane: public Item, public Body
362 {
363  STEPCORE_OBJECT(Plane)
364 
365 public:
367  explicit Plane(Vector2d point1 = Vector2d::Zero(), Vector2d point2 = Vector2d(1,0))
368  : _point1(point1), _point2(point2) {}
369 
371  const Vector2d& point1() const { return _point1; }
373  void setPoint2(const Vector2d& point1) { _point1 = point1; }
374 
376  const Vector2d& point2() const { return _point2; }
378  void setPoint2(const Vector2d& point2) { _point2 = point2; }
379 
380 protected:
381  Vector2d _point1;
382  Vector2d _point2;
383 };
384 #endif
385 
386 } // namespace StepCore
387 
388 #endif
389 
StepCore::RigidBody::applyForce
void applyForce(const Vector2d &force, const Vector2d &position)
Apply force (and torque) to the body at given position (in World coordinates)
Definition: rigidbody.cc:170
StepCore::RigidBody::setVariables
void setVariables(const double *position, const double *velocity, const double *positionVariance, const double *velocityVariance)
Set positions, velocities and (possibly) its variances using values in arrays and also reset accelera...
Definition: rigidbody.cc:250
StepCore::RigidBody::createObjectErrors
ObjectErrors * createObjectErrors()
Definition: rigidbody.h:265
StepCore::RigidBodyErrors::massVariance
double massVariance() const
Get mass variance.
Definition: rigidbody.h:99
StepCore::Body
Interface for bodies.
Definition: world.h:138
StepCore::RigidBodyErrors::torqueVariance
double torqueVariance() const
Get torque variance.
Definition: rigidbody.h:87
StepCore::BasePolygon::vertexes
const Vector2dList & vertexes() const
Get vertex list (constant)
Definition: rigidbody.h:319
StepCore::RigidBody::velocityWorld
Vector2d velocityWorld(const Vector2d &worldPoint) const
Get velocity of given (world) point on the body.
Definition: rigidbody.cc:189
StepCore::RigidBody::AngleOffset
Offset of body angle in variables array.
Definition: rigidbody.h:151
StepCore::RigidBody::_position
Vector2d _position
Definition: rigidbody.h:267
StepCore::RigidBody::PositionOffset
Offset of body position in variables array.
Definition: rigidbody.h:150
StepCore::Box
Definition: rigidbody.h:325
StepCore::RigidBodyErrors::kineticEnergyVariance
double kineticEnergyVariance() const
Get kinetic energy variance.
Definition: rigidbody.cc:142
StepCore::RigidBodyErrors::setPositionVariance
void setPositionVariance(const Vector2d &positionVariance)
Set position variance.
Definition: rigidbody.h:54
StepCore::RigidBody::setVelocity
void setVelocity(const Vector2d &velocity)
Set velocity of the particle.
Definition: rigidbody.h:172
StepCore::Vector2d
Eigen::Vector2d Vector2d
Two-dimensional vector with double components.
Definition: vector.h:29
StepCore::Disk
Rigid disk.
Definition: rigidbody.h:285
StepCore::RigidBodyErrors::setMomentumVariance
void setMomentumVariance(const Vector2d &momentumVariance)
Set momentum variance (will modify velocity variance)
Definition: rigidbody.cc:123
StepCore::RigidBody::angularVelocity
double angularVelocity() const
Get angular velocity of the body.
Definition: rigidbody.h:179
StepCore::RigidBody::setForce
void setForce(const Vector2d &force)
Set force that acts upon the body.
Definition: rigidbody.h:192
StepCore::RigidBody::momentum
Vector2d momentum() const
Get momentum of the body.
Definition: rigidbody.h:218
StepCore::Disk::_radius
double _radius
Definition: rigidbody.h:302
StepCore::RigidBodyErrors::momentumVariance
Vector2d momentumVariance() const
Get momentum variance.
Definition: rigidbody.cc:117
StepCore::RigidBody::force
const Vector2d & force() const
Get force that acts upon the body.
Definition: rigidbody.h:190
StepCore::RigidBodyErrors::setAngularMomentumVariance
void setAngularMomentumVariance(double angularMomentumVariance)
Set angular momentum variance (will modify angularVelocity variance)
Definition: rigidbody.cc:135
StepCore::RigidBodyErrors::setInertiaVariance
void setInertiaVariance(double inertiaVariance)
Set inertia variance.
Definition: rigidbody.h:107
StepCore::RigidBody::position
const Vector2d & position() const
Get position of the center of mass of the body.
Definition: rigidbody.h:160
StepCore::Polygon::vertexes
const Vector2dList & vertexes() const
Get vertex list (constant)
Definition: rigidbody.h:350
StepCore::RigidBodyErrors::applyForceVariance
void applyForceVariance(const Vector2d &force, const Vector2d &position, const Vector2d &forceVariance, const Vector2d &positionVariance)
Apply force (and torque) variance to the body at given position (in World coordinates) ...
Definition: rigidbody.cc:177
StepCore::RigidBodyErrors::rigidBody
RigidBody * rigidBody() const
Get owner as RigidBody.
StepCore::RigidBody::pointWorldToLocal
Vector2d pointWorldToLocal(const Vector2d &p) const
Translate world coordinates to local coordinates on body.
Definition: rigidbody.cc:209
StepCore::RigidBody::_inertia
double _inertia
Definition: rigidbody.h:277
StepCore::RigidBodyErrors::_forceVariance
Vector2d _forceVariance
Definition: rigidbody.h:132
StepCore::RigidBody::kineticEnergy
double kineticEnergy() const
Get kinetic energy of the body.
Definition: rigidbody.h:229
StepCore::RigidBody::vectorLocalToWorld
Vector2d vectorLocalToWorld(const Vector2d &v) const
Translate local vector on body to world vector.
Definition: rigidbody.cc:217
StepCore::RigidBodyErrors::setForceVariance
void setForceVariance(const Vector2d &forceVariance)
Set force variance.
Definition: rigidbody.h:83
StepCore::RigidBody
Rigid body.
Definition: rigidbody.h:144
StepCore::RigidBodyErrors::angleVariance
double angleVariance() const
Get angle variance.
Definition: rigidbody.h:58
StepCore::RigidBody::_velocity
Vector2d _velocity
Definition: rigidbody.h:270
StepCore::RigidBody::_force
Vector2d _force
Definition: rigidbody.h:273
StepCore::RigidBodyErrors::RigidBodyErrors
RigidBodyErrors(Item *owner=0)
Constructs RigidBodyErrors.
Definition: rigidbody.h:43
StepCore::RigidBodyErrors::_positionVariance
Vector2d _positionVariance
Definition: rigidbody.h:126
StepCore::Polygon::vertexes
Vector2dList & vertexes()
Get vertex list (editable)
Definition: rigidbody.h:352
StepCore::Polygon
Rigid arbitrary-shaped polygon.
Definition: rigidbody.h:344
world.h
Item, Body, Force and Tool interfaces, World class.
StepCore::RigidBodyErrors::_inertiaVariance
double _inertiaVariance
Definition: rigidbody.h:136
StepCore::RigidBody::mass
double mass() const
Get mass of the body.
Definition: rigidbody.h:208
StepCore::RigidBodyErrors::setMassVariance
void setMassVariance(double massVariance)
Set mass variance.
Definition: rigidbody.h:101
StepCore::RigidBody::setAngularVelocity
void setAngularVelocity(double angularVelocity)
Set angular velocity of the body.
Definition: rigidbody.h:181
StepCore::RigidBodyErrors::angularAccelerationVariance
double angularAccelerationVariance() const
Get angularAcceleration variance.
Definition: rigidbody.cc:111
StepCore::RigidBody::resetForce
void resetForce(bool resetVariance)
Reset force accomulator and (possibly) its variance to zero.
Definition: rigidbody.cc:302
StepCore::RigidBody::setAngularMomentum
void setAngularMomentum(double angularMomentum)
Set angular momentum of the body (will modify only angularVelocity)
Definition: rigidbody.h:225
StepCore::RigidBody::_angle
double _angle
Definition: rigidbody.h:268
StepCore::Disk::Disk
Disk(Vector2d position=Vector2d::Zero(), double angle=0, Vector2d velocity=Vector2d::Zero(), double angularVelocity=0, double mass=1, double inertia=1, double radius=0.5)
Constructs Disk.
Definition: rigidbody.h:290
StepCore::RigidBody::inertia
double inertia() const
Get inertia "tensor" of the body.
Definition: rigidbody.h:213
StepCore::RigidBodyErrors::angularVelocityVariance
double angularVelocityVariance() const
Get angularVelocity variance.
Definition: rigidbody.h:69
StepCore::RigidBodyErrors::_massVariance
double _massVariance
Definition: rigidbody.h:135
StepCore::RigidBodyErrors::velocityVariance
const Vector2d & velocityVariance() const
Get velocity variance.
Definition: rigidbody.h:63
StepCore::Item
The root class for any world items (bodies and forces)
Definition: world.h:69
StepCore::RigidBody::pointLocalToWorld
Vector2d pointLocalToWorld(const Vector2d &p) const
Translate local coordinates on body to world coordinates.
Definition: rigidbody.cc:201
StepCore::Box::setSize
void setSize(const Vector2d &size)
Set box size.
Definition: rigidbody.cc:350
StepCore::RigidBody::getVariables
void getVariables(double *position, double *velocity, double *positionVariance, double *velocityVariance)
Copy positions, velocities and (possibly) its variances to arrays.
Definition: rigidbody.cc:233
StepCore::RigidBody::addForce
void addForce(const double *force, const double *forceVariance)
Add force and (possibly) its variance to force accomulator.
Definition: rigidbody.cc:289
StepCore::RigidBody::setAngle
void setAngle(double angle)
Set angle of the body.
Definition: rigidbody.h:167
StepCore::RigidBodyErrors::inertiaVariance
double inertiaVariance() const
Get inertia variance.
Definition: rigidbody.h:105
StepCore::RigidBodyErrors::accelerationVariance
Vector2d accelerationVariance() const
Get acceleration variance.
StepCore::Polygon::setVertexes
void setVertexes(const Vector2dList &vertexes)
Set vertex list.
Definition: rigidbody.h:354
StepCore::RigidBodyErrors::_angularVelocityVariance
double _angularVelocityVariance
Definition: rigidbody.h:130
StepCore::RigidBody::velocity
const Vector2d & velocity() const
Get velocity of the center of mass of the body.
Definition: rigidbody.h:170
StepCore::ObjectErrors
Base class for all errors objects.
Definition: world.h:49
StepCore::RigidBodyErrors::angularMomentumVariance
double angularMomentumVariance() const
Get angular momentum variance.
Definition: rigidbody.cc:129
StepCore::RigidBody::velocityLocal
Vector2d velocityLocal(const Vector2d &localPoint) const
Get velocity of given (local) point on the body.
Definition: rigidbody.cc:195
StepCore::RigidBody::torque
double torque() const
Get torque that acts upon the body.
Definition: rigidbody.h:195
StepCore::RigidBody::getAccelerations
void getAccelerations(double *acceleration, double *accelerationVariance)
Copy acceleration (forces left-multiplied by inverse mass) and (possibly) its variances to arrays...
Definition: rigidbody.cc:273
StepCore::RigidBody::applyTorque
void applyTorque(double torque)
Apply torque (but no force) to the body.
Definition: rigidbody.h:205
StepCore::RigidBody::_mass
double _mass
Definition: rigidbody.h:276
StepCore::RigidBodyErrors::_angleVariance
double _angleVariance
Definition: rigidbody.h:127
StepCore::RigidBody::setTorque
void setTorque(double torque)
Set torque that acts upon the body.
Definition: rigidbody.h:197
StepCore::RigidBody::acceleration
Vector2d acceleration() const
Get acceleration of the center of mass of the body.
Definition: rigidbody.h:184
StepCore::RigidBody::_torque
double _torque
Definition: rigidbody.h:274
StepCore::RigidBodyErrors
Errors object for RigidBody.
Definition: rigidbody.h:37
StepCore::RigidBodyErrors::_velocityVariance
Vector2d _velocityVariance
Definition: rigidbody.h:129
StepCore::RigidBody::setMomentum
void setMomentum(const Vector2d &momentum)
Set momentum of the body (will modify only velocity)
Definition: rigidbody.h:220
StepCore::RigidBodyErrors::setKineticEnergyVariance
void setKineticEnergyVariance(double kineticEnergyVariance)
Set kinetic energy variance (will modify velocity variance)
Definition: rigidbody.cc:150
object.h
Object, MetaObject and MetaProperty classes.
vector.h
StepCore::RigidBodyErrors::setVelocityVariance
void setVelocityVariance(const Vector2d &velocityVariance)
Set velocity variance.
Definition: rigidbody.h:65
StepCore::RigidBody::_angularVelocity
double _angularVelocity
Definition: rigidbody.h:271
StepCore::RigidBodyErrors::setAngularVelocityVariance
void setAngularVelocityVariance(double angularVelocityVariance)
Set angularVelocity variance.
Definition: rigidbody.h:71
StepCore::Item::objectErrors
ObjectErrors * objectErrors()
Get existing ObjectErrors or try to create it.
Definition: world.cc:67
StepCore::RigidBody::RigidBody
RigidBody(Vector2d position=Vector2d::Zero(), double angle=0, Vector2d velocity=Vector2d::Zero(), double angularVelocity=0, double mass=1, double inertia=1)
Constructs RigidBody.
Definition: rigidbody.cc:163
StepCore::Box::size
Vector2d size() const
Get box size.
Definition: rigidbody.h:335
StepCore::BasePolygon::_vertexes
Vector2dList _vertexes
Definition: rigidbody.h:322
StepCore::BasePolygon
Base class for all polygons.
Definition: rigidbody.h:308
StepCore::RigidBody::angularMomentum
double angularMomentum() const
Get angular momentum of the body.
Definition: rigidbody.h:223
StepCore::RigidBody::setInertia
void setInertia(double inertia)
Set inertia "tensor" of the body.
Definition: rigidbody.h:215
StepCore::RigidBody::angularAcceleration
double angularAcceleration() const
Get angular acceleration of the body.
Definition: rigidbody.h:187
StepCore::BasePolygon::BasePolygon
BasePolygon(Vector2d position=Vector2d::Zero(), double angle=0, Vector2d velocity=Vector2d::Zero(), double angularVelocity=0, double mass=1, double inertia=1)
Constructs BasePolygon.
Definition: rigidbody.h:313
StepCore::RigidBodyErrors::setAngleVariance
void setAngleVariance(double angleVariance)
Set angle variance.
Definition: rigidbody.h:60
StepCore::DynSparseRowMatrix
Eigen::DynamicSparseMatrix< double, Eigen::RowMajor > DynSparseRowMatrix
Definition: types.h:38
StepCore::RigidBody::angle
double angle() const
Get angle of the body.
Definition: rigidbody.h:165
StepCore::Vector2dList
std::vector< Vector2d, Eigen::aligned_allocator< Vector2d > > Vector2dList
Definition: types.h:117
StepCore::ObjectErrors::owner
Item * owner() const
Get the owner of ObjectErrors.
Definition: world.h:58
StepCore::RigidBody::RigidBodyErrors
friend class RigidBodyErrors
Definition: rigidbody.h:279
STEPCORE_OBJECT
#define STEPCORE_OBJECT(_className)
Definition: object.h:49
StepCore::RigidBodyErrors::_torqueVariance
double _torqueVariance
Definition: rigidbody.h:133
StepCore::RigidBody::variablesCount
int variablesCount()
Get count of dynamic variables (not including velocities)
Definition: rigidbody.h:250
StepCore::RigidBody::setKineticEnergy
void setKineticEnergy(double kineticEnergy)
Set kinetic energy of the body (will modify only velocity and (possibly) angularVelocity) ...
Definition: rigidbody.cc:329
StepCore::RigidBodyErrors::applyTorqueVariance
void applyTorqueVariance(double torqueVariance)
Apply torque (but no force) variancee to the body.
Definition: rigidbody.h:96
StepCore::RigidBody::vectorWorldToLocal
Vector2d vectorWorldToLocal(const Vector2d &v) const
Translate world vector to local vector on body.
Definition: rigidbody.cc:225
StepCore::RigidBody::setMass
void setMass(double mass)
Set mass of the body.
Definition: rigidbody.h:210
StepCore::RigidBodyErrors::positionVariance
const Vector2d & positionVariance() const
Get position variance.
Definition: rigidbody.h:52
StepCore::VectorXd
Eigen::VectorXd VectorXd
Definition: vector.h:38
StepCore::RigidBody::setPosition
void setPosition(const Vector2d &position)
Set position of the center of mass of the body.
Definition: rigidbody.h:162
StepCore::Disk::setRadius
void setRadius(double radius)
Set disk radius.
Definition: rigidbody.h:299
StepCore::Disk::radius
double radius() const
Get disk radius.
Definition: rigidbody.h:297
StepCore::RigidBodyErrors::forceVariance
const Vector2d & forceVariance() const
Get force variance.
Definition: rigidbody.h:81
StepCore::square
T square(T v)
Definition: util.h:30
StepCore::Box::Box
Box(Vector2d position=Vector2d::Zero(), double angle=0, Vector2d velocity=Vector2d::Zero(), double angularVelocity=0, double mass=1, double inertia=1, Vector2d size=Vector2d(1, 1))
Constructs Box.
Definition: rigidbody.cc:341
StepCore::RigidBody::getInverseMass
void getInverseMass(VectorXd *inverseMass, DynSparseRowMatrix *variance, int offset)
Get inverse mass and (possibly) its variance matrixes.
Definition: rigidbody.cc:313
StepCore::RigidBody::rigidBodyErrors
RigidBodyErrors * rigidBodyErrors()
Get (and possibly create) RigidBodyErrors object.
Definition: rigidbody.h:261
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:43:06 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

step/stepcore

Skip menu "step/stepcore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal