Ejemplo n.º 1
0
 force_type operator()(NODE n, double t) {
   (void) t;
   force_type force = force_type(0,0,0);
   Node node2;
   double distance; 
   double initial_spring_length;
   double sprint_const_this_edge;
   
   // iterate through each neighboring node and add spring forces
   for(auto it = n.edge_begin(); it != n.edge_end(); ++it)
   {
       node2 = (*it).node2();
       
       sprint_const_this_edge = (*it).value().spring_constant; 
       initial_spring_length = (*it).value().initial_length;
       
       distance = norm(n.position()-node2.position()); // Euclidean distance
       force += (-1)*sprint_const_this_edge*(n.position()-node2.position())*(distance-initial_spring_length)/distance;
   }
   return force;
 }