GUIDOLib  1.7.7
Guido Engine Internal Documentation
GRSpringForceIndex.h
1 #ifndef GRSpaceForceFunction2_H
2 #define GRSpaceForceFunction2_H
3 
4 /*
5  GUIDO Library
6  Copyright (C) 2002 Holger Hoos, Juergen Kilian, Kai Renz
7  Copyright (C) 2002-2017 Grame
8 
9  This Source Code Form is subject to the terms of the Mozilla Public
10  License, v. 2.0. If a copy of the MPL was not distributed with this
11  file, You can obtain one at http://mozilla.org/MPL/2.0/.
12 
13  Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
14  research@grame.fr
15 
16 */
17 
58 #include "kf_ilist.h"
59 #include "kf_vect.h"
60 #include "GRSpring.h"
61 
62 const float optimumforce = 800;
63 
65 
69 {
70  friend class GRSpaceForceFunction2;
71 
72  public:
73  GRSpringForceIndex(GRSpring * p_spr,float p_force,int p_index)
74  {
75  spr = p_spr;
76  force = p_force;
77  index = p_index;
78  }
80 
81  protected:
82 
84  float force;
85  int index;
86 };
87 
88 
89 
90 // typedef KF_IPointerList<GRSpring> SpringList;
92 //typedef KF_Vector<float> FloatArray;
93 
100 {
101  public:
102 
103  GRSpaceForceFunction2(float force);
104  virtual ~GRSpaceForceFunction2();
105  // Copy ctor, do I copy the springs? not really? do i?
107 
108  void setOptForce(float newoptforce);
109 
110  void writeAllExtents(std::ostream& os) const;
111 
112  float EvaluateBreak(float extent);
113  void UnfreezeSpring(GRSpring *spr);
114  void FreezeSpring(GRSpring *spr);
115  void ResetSprings();
116  void addSFF(const GRSpaceForceFunction2 &sff);
117 
118  float getOptForce();
119 
120 
121  void addSpring(GRSpring *spr);
122  void deleteSpring(GRSpring *spr);
123  float getExtent(float force) const;
124  float getForce(float extent);
125 
126  float getOptConstant() const { return copt; }
127  float getXminOpt() const { return xminopt; }
128 
129  protected:
130  static float CalcSpringConstant( float c1, float c2 ) { return (c1 * c2) / (c1 + c2); }
131 
133 
134  float xmin; // the sum of all lengths of all prestretched springs
135  float cmax; // the maximum spring-constant
136  // if all springs need to be stretched.
137  float xminopt; // This is the xmin-value for the optimum force
138  float copt; // this is the spring-constant for the optimum force
139 
140  float optforce;
141 };
142 
143 
144 #endif
GRSpaceForceFunction2::xmin
float xmin
Definition: GRSpringForceIndex.h:134
GRSpaceForceFunction2::xminopt
float xminopt
Definition: GRSpringForceIndex.h:137
GRSpaceForceFunction2::CalcSpringConstant
static float CalcSpringConstant(float c1, float c2)
Definition: GRSpringForceIndex.h:130
GRSpaceForceFunction2::getOptForce
float getOptForce()
GRSpring
Used with rods and space fore functions.
Definition: GRSpring.h:38
GRSpringForceIndex::force
float force
Definition: GRSpringForceIndex.h:84
GRSpaceForceFunction2::getOptConstant
float getOptConstant() const
Definition: GRSpringForceIndex.h:126
GRSpringForceIndex::spr
GRSpring * spr
Definition: GRSpringForceIndex.h:83
GRSpaceForceFunction2::addSpring
void addSpring(GRSpring *spr)
GRSpaceForceFunction2::copt
float copt
Definition: GRSpringForceIndex.h:138
GRSpaceForceFunction2::addSFF
void addSFF(const GRSpaceForceFunction2 &sff)
GRSpaceForceFunction2::sortedlist
SortedForceList sortedlist
Definition: GRSpringForceIndex.h:132
GRSpaceForceFunction2::~GRSpaceForceFunction2
virtual ~GRSpaceForceFunction2()
GRSpaceForceFunction2::getForce
float getForce(float extent)
GRSpaceForceFunction2::setOptForce
void setOptForce(float newoptforce)
KF_IPointerList< GRSpringForceIndex >
GRSpaceForceFunction2::cmax
float cmax
Definition: GRSpringForceIndex.h:135
GRSpaceForceFunction2
This class realizes the second implementation of the space-force-function.
Definition: GRSpringForceIndex.h:99
GRSpaceForceFunction2::UnfreezeSpring
void UnfreezeSpring(GRSpring *spr)
GRSpaceForceFunction2::getXminOpt
float getXminOpt() const
Definition: GRSpringForceIndex.h:127
GRSpringForceIndex
not yet documented
Definition: GRSpringForceIndex.h:68
GRSpaceForceFunction2::deleteSpring
void deleteSpring(GRSpring *spr)
GRSpaceForceFunction2::GRSpaceForceFunction2
GRSpaceForceFunction2(float force)
GRSpaceForceFunction2::getExtent
float getExtent(float force) const
GRSpaceForceFunction2::writeAllExtents
void writeAllExtents(std::ostream &os) const
GRSpaceForceFunction2::optforce
float optforce
Definition: GRSpringForceIndex.h:140
GRSpaceForceFunction2::FreezeSpring
void FreezeSpring(GRSpring *spr)
GRSpaceForceFunction2::EvaluateBreak
float EvaluateBreak(float extent)
GRSpringForceIndex::GRSpringForceIndex
GRSpringForceIndex(GRSpring *p_spr, float p_force, int p_index)
Definition: GRSpringForceIndex.h:73
GRSpaceForceFunction2::ResetSprings
void ResetSprings()
GRSpringForceIndex::index
int index
Definition: GRSpringForceIndex.h:85
GRSpringForceIndex::~GRSpringForceIndex
~GRSpringForceIndex()
Definition: GRSpringForceIndex.h:79

Guido Project Copyright © 2019 Grame-CNCM