- Offset ijk_p (control_[3][X_AXIS] / 2, control_[1][Y_AXIS]);
- BEZIER_BOW_DEBUG_OUT << "ijk: " << ijk_p[X_AXIS] << ", " << ijk_p[Y_AXIS] << endl;
-
- Real default_rc = ijk_p[Y_AXIS] / ijk_p[X_AXIS];
-
- int begin_disturb = encompass_.largest_disturbing ();
- Offset begin_p = begin_disturb ? Offset (encompass_[begin_disturb][X_AXIS],
- encompass_[begin_disturb][Y_AXIS]) : ijk_p;
- Real begin_rc = begin_p[Y_AXIS] / begin_p[X_AXIS];
- if (default_rc > begin_rc)
- {
- begin_p = ijk_p;
- begin_rc = default_rc;
- }
-
- Curve reversed;
- reversed.set_size (encompass_.size ());
- Real b = control_[3][X_AXIS];
- for (int i = 0; i < encompass_.size (); i++ )
- {
- // b 1 0
- // r = - * c
- // 0 0 -1
- reversed[i][X_AXIS] = b - encompass_[encompass_.size () - i - 1][X_AXIS];
- reversed[i][Y_AXIS] = encompass_[encompass_.size () - i - 1][Y_AXIS];
- }
-
- int end_disturb = reversed.largest_disturbing ();
- end_disturb = end_disturb ? encompass_.size () - end_disturb - 1 : 0;
- Offset end_p = end_disturb ? Offset (encompass_[end_disturb][X_AXIS],
- encompass_[end_disturb][Y_AXIS]) : ijk_p;
- Real end_rc = end_p[Y_AXIS] / (control_[3][X_AXIS] - end_p[X_AXIS]);
- if (default_rc > end_rc)
- {
- end_p = ijk_p;
- end_rc = default_rc;
- }
- BEZIER_BOW_DEBUG_OUT << "begin " << begin_p[X_AXIS] << ", " << begin_p[Y_AXIS] << endl;
- BEZIER_BOW_DEBUG_OUT << "end " << end_p[X_AXIS] << ", " << end_p[Y_AXIS] << endl;
-
- Real height =control_[1][Y_AXIS];
- for (int i = 0; i < encompass_.size (); i++ )
- height = height >? encompass_[i][Y_AXIS];
-
- // emperic computer science:
- // * tangents somewhat steeper than minimal line
-#ifndef STANDALONE
- Real internote = paper_l_->get_realvar (interline_scm_sym)/2.0;
- Real rc_correct = paper_l_->get_var ("slur_rc_factor");
-#else
- Real internote = STAFFHEIGHT / 8;
- Real rc_correct = 2.4;
-#endif
-
- begin_rc *= rc_correct;
- end_rc *= rc_correct;
- Real rc1 = begin_rc;
- Real rc2 = -end_rc;