+// from Playback3D::do_mask_sync
+ float cx3 = - x0 + 3*x1 - 3*x2 + x3;
+ float cx2 = 3*x0 - 6*x1 + 3*x2;
+ float cx1 = -3*x0 + 3*x1;
+ float cx0 = x0;
+
+ float cy3 = - y0 + 3*y1 - 3*y2 + y3;
+ float cy2 = 3*y0 - 6*y1 + 3*y2;
+ float cy1 = -3*y0 + 3*y1;
+ float cy0 = y0;
+
+ if( segments == 0 ) {
+ float maxaccel1 = fabs(2*cy2) + fabs(6*cy3);
+ float maxaccel2 = fabs(2*cx2) + fabs(6*cx3);
+ float maxaccel = maxaccel1 > maxaccel2 ? maxaccel1 : maxaccel2;
+ float h = 1.0;
+ if( maxaccel > 8.0 ) h = sqrt((8.0) / maxaccel);
+ segments = int(1/h);
+ }
+