- float margin = 0.01*layout.get_catalogue().get_scale();
- int adjust_dir = 0;
- while(1)
- {
- Vector front_point = front.get_point().pos;
- Vector back_point = back.get_point().pos;
-
- float dx = front_point.x-back_point.x;
- float dy = front_point.y-back_point.y;
- float dz = front_point.z-back_point.z;
- float dist = sqrt(dx*dx+dy*dy+dz*dz);
-
- float diff = tdist-dist;
- if(diff<-margin && adjust_dir<=0)
- {
- diff -= margin;
- adjust_dir = -1;
- }
- else if(diff>margin && adjust_dir>=0)
- {
- diff += margin;
- adjust_dir = 1;
- }
- else
- return;
-
- front.advance(diff*(1-ratio));
- back.advance(-diff*ratio);
- }