]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/idealspacing.cc
release: 1.1.4
[lilypond.git] / lily / idealspacing.cc
index f1ff3691d567ad25b89509d2284b2e9683f265fc..3966c6ad44119c8837c30f59156c7ed1ef0aea6b 100644 (file)
@@ -1,3 +1,11 @@
+/*
+  idealspacing.cc -- implement Idealspacing
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
 #include "idealspacing.hh"
 #include "p-col.hh"
 #include "p-score.hh"
@@ -7,24 +15,33 @@ void
 Idealspacing::print() const
 {
 #ifndef NPRINT
-    mtor << "idealspacing {" ;
-    mtor << "distance "<<space<< " strength " << hooke ;
-    mtor << "left " << left->rank_i() << " right " << right->rank_i() << "}\n";
+  DOUT << "idealspacing {" ;
+  DOUT << "distance " << space_f_ << " strength " << hooke_f_;
+  DOUT << "left " << cols_drul_[LEFT] << " right " << cols_drul_[RIGHT] << "}\n";
 #endif
 }
 
-Idealspacing::Idealspacing(PCol const * l,PCol const * r)
+Idealspacing::Idealspacing()
 {
-    space = 0.0;
-    hooke = 0.0;
-    left = l;
-    right = r;
+  space_f_ = 0.0;
+  hooke_f_ = 0.0;
+  cols_drul_[LEFT] = cols_drul_[RIGHT] = -1;
 }
 
 void
 Idealspacing::OK() const
 {
-#ifndef NDEBUG
-    assert(hooke >= 0 && left  && right);
-#endif    
+  assert (hooke_f_ >= 0);
+}
+
+Real
+Idealspacing::energy_f(Real x) const
+{
+  Real dx = (space_f_ - x);
+  
+  Real e =  sqr(dx);
+  if ( dx < 0)
+    e *= 4;                    // ugh.
+  
+  return hooke_f_ * e;
 }