• 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
spring.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_SPRING_H
24 #define STEPCORE_SPRING_H
25 
26 #include "world.h"
27 #include "object.h"
28 #include "particle.h"
29 #include "rigidbody.h"
30 #include "vector.h"
31 
32 #include <QString>
33 #include <cmath>
34 
35 namespace StepCore
36 {
37 
38 class Spring;
39 
43 class SpringErrors: public ObjectErrors
44 {
45  STEPCORE_OBJECT(SpringErrors)
46 
47 public:
49  SpringErrors(Item* owner = NULL)
50  : ObjectErrors(owner), _restLengthVariance(0), _stiffnessVariance(0),
51  _dampingVariance(0), _localPosition1Variance(0,0), _localPosition2Variance(0,0) {}
52 
54  Spring* spring() const;
55 
57  double restLengthVariance() const { return _restLengthVariance; }
59  void setRestLengthVariance(double restLengthVariance) {
60  _restLengthVariance = restLengthVariance; }
61 
63  double lengthVariance() const;
64 
66  double stiffnessVariance() const { return _stiffnessVariance; }
68  void setStiffnessVariance(double stiffnessVariance) {
69  _stiffnessVariance = stiffnessVariance; }
70 
72  double dampingVariance() const { return _dampingVariance; }
74  void setDampingVariance(double dampingVariance) {
75  _dampingVariance = dampingVariance; }
76 
78  Vector2d localPosition1Variance() const { return _localPosition1Variance; }
80  void setLocalPosition1Variance(const Vector2d& localPosition1Variance) {
81  _localPosition1Variance = localPosition1Variance; }
82 
84  Vector2d localPosition2Variance() const { return _localPosition2Variance; }
86  void setLocalPosition2Variance(const Vector2d& localPosition2Variance) {
87  _localPosition2Variance = localPosition2Variance; }
88 
90  Vector2d position1Variance() const;
92  Vector2d position2Variance() const;
93 
95  Vector2d velocity1Variance() const;
97  Vector2d velocity2Variance() const;
98 
100  double forceVariance() const;
101 
102 protected:
103  double _restLengthVariance;
104  double _stiffnessVariance;
105  double _dampingVariance;
106 
107  StepCore::Vector2d _localPosition1Variance;
108  StepCore::Vector2d _localPosition2Variance;
109 
110  friend class Spring;
111 };
112 
113 
129 class Spring: public Item, public Force
130 {
131  STEPCORE_OBJECT(Spring)
132 
133 public:
135  explicit Spring(double restLength = 0, double stiffness = 1, double damping = 0,
136  Item* body1 = 0, Item* body2 = 0);
137 
138  void calcForce(bool calcVariances);
139 
141  double restLength() const { return _restLength; }
143  void setRestLength(double restLength) { _restLength = restLength; }
144 
146  double length() const { return (position2()-position1()).norm(); }
147 
149  double stiffness() const { return _stiffness; }
151  void setStiffness(double stiffness) { _stiffness = stiffness; }
152 
154  double damping() const { return _damping; }
156  void setDamping(double damping) { _damping = damping; }
157 
159  Object* body1() const { return _body1; }
161  void setBody1(Object* body1);
162 
164  Object* body2() const { return _body2; }
166  void setBody2(Object* body2);
167 
170  Vector2d localPosition1() const { return _localPosition1; }
173  void setLocalPosition1(const Vector2d& localPosition1) { _localPosition1 = localPosition1; }
174 
177  Vector2d localPosition2() const { return _localPosition2; }
180  void setLocalPosition2(const Vector2d& localPosition2) { _localPosition2 = localPosition2; }
181 
183  Vector2d position1() const;
185  //void setPosition1(const Vector2d& position1) { if(!_body1) _position1 = position1; }
186 
188  Vector2d position2() const;
190  //void setPosition2(const Vector2d& position2) { if(!_body2) _position2 = position2; }
191 
193  Vector2d velocity1() const;
194 
196  Vector2d velocity2() const;
197 
199  double force() const;
200 
202  Particle* particle1() const { return _p1; }
204  Particle* particle2() const { return _p2; }
206  RigidBody* rigidBody1() const { return _r1; }
208  RigidBody* rigidBody2() const { return _r2; }
209 
210  //void worldItemRemoved(Item* item);
211  //void setWorld(World* world);
212 
214  SpringErrors* springErrors() { return static_cast<SpringErrors*>(objectErrors()); }
215 
216 protected:
217  ObjectErrors* createObjectErrors() { return new SpringErrors(this); }
218 
219  Object* _body1;
220  Object* _body2;
221  double _restLength;
222  double _stiffness;
223  double _damping;
224  Vector2d _localPosition1;
225  Vector2d _localPosition2;
226 
227  Particle* _p1;
228  Particle* _p2;
229  RigidBody* _r1;
230  RigidBody* _r2;
231 
232  friend class SpringErrors;
233 };
234 
235 } // namespace StepCore
236 
237 #endif
238 
StepCore::Spring::stiffness
double stiffness() const
Get stiffness of the spring.
Definition: spring.h:149
StepCore::SpringErrors::setDampingVariance
void setDampingVariance(double dampingVariance)
Set damping variance.
Definition: spring.h:74
rigidbody.h
RigidBody class.
StepCore::Spring::velocity2
Vector2d velocity2() const
Velocity of the second end of the spring.
Definition: spring.cc:239
StepCore::SpringErrors::setStiffnessVariance
void setStiffnessVariance(double stiffnessVariance)
Set stiffness variance.
Definition: spring.h:68
StepCore::Spring::length
double length() const
Get current length of the spring.
Definition: spring.h:146
StepCore::Spring::_body1
Object * _body1
Definition: spring.h:219
StepCore::Spring::_restLength
double _restLength
Definition: spring.h:221
StepCore::Spring::_body2
Object * _body2
Definition: spring.h:220
StepCore::Vector2d
Eigen::Vector2d Vector2d
Two-dimensional vector with double components.
Definition: vector.h:29
StepCore::Spring::_stiffness
double _stiffness
Definition: spring.h:222
StepCore::Object
Root of the StepCore classes hierarchy.
Definition: object.h:57
StepCore::Spring::springErrors
SpringErrors * springErrors()
Get (and possibly create) SpringErrors object.
Definition: spring.h:214
StepCore::SpringErrors::_dampingVariance
double _dampingVariance
Definition: spring.h:105
StepCore::Spring::setLocalPosition1
void setLocalPosition1(const Vector2d &localPosition1)
Set local position of the first end of the spring on the body or in the world (if the end is not conn...
Definition: spring.h:173
StepCore::Spring::_r1
RigidBody * _r1
Definition: spring.h:229
StepCore::Spring::_p1
Particle * _p1
Definition: spring.h:227
StepCore::Spring::Spring
Spring(double restLength=0, double stiffness=1, double damping=0, Item *body1=0, Item *body2=0)
Constructs Spring.
StepCore::Spring::setRestLength
void setRestLength(double restLength)
Set rest length of the spring.
Definition: spring.h:143
StepCore::Spring::SpringErrors
friend class SpringErrors
Definition: spring.h:232
StepCore::RigidBody
Rigid body.
Definition: rigidbody.h:144
StepCore::Spring::rigidBody2
RigidBody * rigidBody2() const
Get second connected RigidBody.
Definition: spring.h:208
StepCore::SpringErrors::localPosition1Variance
Vector2d localPosition1Variance() const
Get localPosition1 variance.
Definition: spring.h:78
StepCore::Spring::setLocalPosition2
void setLocalPosition2(const Vector2d &localPosition2)
Set local position of the second end of the spring on the body or in the world (if the end is not con...
Definition: spring.h:180
StepCore::SpringErrors::_restLengthVariance
double _restLengthVariance
Definition: spring.h:103
StepCore::Spring::calcForce
void calcForce(bool calcVariances)
Calculate force.
Definition: spring.cc:82
StepCore::SpringErrors::velocity2Variance
Vector2d velocity2Variance() const
Get velocity2 variance.
Definition: spring.cc:246
world.h
Item, Body, Force and Tool interfaces, World class.
StepCore::Spring::setBody2
void setBody2(Object *body2)
Set pointer to the second connected body.
Definition: spring.cc:157
StepCore::Spring::setStiffness
void setStiffness(double stiffness)
Set stiffness of the spring.
Definition: spring.h:151
StepCore::Spring::velocity1
Vector2d velocity1() const
Set position of the second end of the spring (will be ignored the end is connected) ...
Definition: spring.cc:222
StepCore::SpringErrors::spring
Spring * spring() const
Get owner as String.
StepCore::Spring::body2
Object * body2() const
Get pointer to the second body.
Definition: spring.h:164
StepCore::Spring::body1
Object * body1() const
Get pointer to the first body.
Definition: spring.h:159
StepCore::SpringErrors::localPosition2Variance
Vector2d localPosition2Variance() const
Get localPosition2 variance.
Definition: spring.h:84
StepCore::SpringErrors::restLengthVariance
double restLengthVariance() const
Get restLength variance.
Definition: spring.h:57
StepCore::Spring::_localPosition1
Vector2d _localPosition1
Definition: spring.h:224
StepCore::Item
The root class for any world items (bodies and forces)
Definition: world.h:69
StepCore::Spring::_localPosition2
Vector2d _localPosition2
Definition: spring.h:225
StepCore::SpringErrors::stiffnessVariance
double stiffnessVariance() const
Get stiffness variance.
Definition: spring.h:66
StepCore::SpringErrors::velocity1Variance
Vector2d velocity1Variance() const
Get velocity1 variance.
Definition: spring.cc:229
StepCore::ObjectErrors
Base class for all errors objects.
Definition: world.h:49
StepCore::Spring::position1
Vector2d position1() const
Position of the first end of the spring.
Definition: spring.cc:177
StepCore::SpringErrors
Errors object for Spring.
Definition: spring.h:43
StepCore::Spring::particle2
Particle * particle2() const
Get second connected Particle.
Definition: spring.h:204
StepCore::SpringErrors::position1Variance
Vector2d position1Variance() const
Get position1 variance.
Definition: spring.cc:184
StepCore::Force
Interface for forces.
Definition: world.h:199
StepCore::Spring::createObjectErrors
ObjectErrors * createObjectErrors()
Definition: spring.h:217
StepCore::Particle
Particle with mass.
Definition: particle.h:103
StepCore::Spring
Massless spring.
Definition: spring.h:129
StepCore::Spring::particle1
Particle * particle1() const
Get first connected Particle.
Definition: spring.h:202
StepCore::SpringErrors::_localPosition1Variance
StepCore::Vector2d _localPosition1Variance
Definition: spring.h:107
object.h
Object, MetaObject and MetaProperty classes.
vector.h
StepCore::SpringErrors::setRestLengthVariance
void setRestLengthVariance(double restLengthVariance)
Set restLength variance.
Definition: spring.h:59
StepCore::SpringErrors::_localPosition2Variance
StepCore::Vector2d _localPosition2Variance
Definition: spring.h:108
StepCore::SpringErrors::dampingVariance
double dampingVariance() const
Get damping variance.
Definition: spring.h:72
StepCore::Spring::rigidBody1
RigidBody * rigidBody1() const
Get first connected RigidBody.
Definition: spring.h:206
StepCore::Item::objectErrors
ObjectErrors * objectErrors()
Get existing ObjectErrors or try to create it.
Definition: world.cc:67
StepCore::SpringErrors::position2Variance
Vector2d position2Variance() const
Get position2 variance.
Definition: spring.cc:205
StepCore::Spring::force
double force() const
Tension force.
Definition: spring.cc:256
StepCore::SpringErrors::setLocalPosition1Variance
void setLocalPosition1Variance(const Vector2d &localPosition1Variance)
Set localPosition1 variance.
Definition: spring.h:80
StepCore::Spring::_p2
Particle * _p2
Definition: spring.h:228
StepCore::Spring::_r2
RigidBody * _r2
Definition: spring.h:230
StepCore::SpringErrors::forceVariance
double forceVariance() const
Get force variance.
Definition: spring.cc:265
StepCore::Spring::_damping
double _damping
Definition: spring.h:223
particle.h
Particle and ChargedParticle classes.
StepCore::SpringErrors::_stiffnessVariance
double _stiffnessVariance
Definition: spring.h:104
StepCore::SpringErrors::SpringErrors
SpringErrors(Item *owner=NULL)
Constructs SpringErrors.
Definition: spring.h:49
StepCore::ObjectErrors::owner
Item * owner() const
Get the owner of ObjectErrors.
Definition: world.h:58
STEPCORE_OBJECT
#define STEPCORE_OBJECT(_className)
Definition: object.h:49
StepCore::Spring::setBody1
void setBody1(Object *body1)
Set pointer to the first connected body.
Definition: spring.cc:137
StepCore::Spring::damping
double damping() const
Get damping of the spring.
Definition: spring.h:154
StepCore::SpringErrors::setLocalPosition2Variance
void setLocalPosition2Variance(const Vector2d &localPosition2Variance)
Set localPosition2 variance.
Definition: spring.h:86
StepCore::Spring::localPosition1
Vector2d localPosition1() const
Local position of the first end of the spring on the body or in the world (if the end is not connecte...
Definition: spring.h:170
StepCore::Spring::localPosition2
Vector2d localPosition2() const
Local position of the second end of the spring on the body or in the world (if the end is not connect...
Definition: spring.h:177
StepCore::Spring::position2
Vector2d position2() const
Set position of the first end of the spring (will be ignored the end is connected) ...
Definition: spring.cc:198
StepCore::Spring::restLength
double restLength() const
Get rest length of the spring.
Definition: spring.h:141
StepCore::SpringErrors::lengthVariance
double lengthVariance() const
Get current length of the spring.
Definition: spring.cc:215
StepCore::Spring::setDamping
void setDamping(double damping)
Set damping of the spring.
Definition: spring.h:156
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