On Fri, Apr 29, 2011 at 9:59 AM, m...@apollinemike.com <m...@apollinemike.com> wrote: > On Apr 28, 2011, at 10:26 PM, Han-Wen Nienhuys wrote: > >> On Thu, Apr 28, 2011 at 12:37 PM, <mts...@gmail.com> wrote: >>> Reviewers: , >>> >>> Message: >>> If I understand it correctly, Han-Wen's original collision code in >>> beam.cc was treating intervals as if is_empty checked if they were >>> uninitialized or invalid in some way, whereas in fact, is_empty gets rid >>> of anything where left is greater than right. However, the LEFT and >>> RIGHT values of intervals in collision_free contain y values for the >>> beam position, and thus, the left one will invariably be higher than the >>> right one if the beam has a negative slope. Thus, is_empty was (I >>> think) ruling out any solution with a negative slope. >>> >>> I'm not sure if this is too drastic to address issue 1613 (there may >>> need to be some error checking fit in), but I think that it more or less >>> fixes the problem. >> >> Please read the code carefully to see what it does, rather than guessing: >> >>> - Interval v = >>> - (!collision_free[DOWN].is_empty()) ? >>> - collision_free[DOWN] : >>> - collision_free[UP]; >>> - >>> - beam_left_y = point_in_interval (v, 2.0); >> >> these are not beam slopes. > > From my reading of the code, collision_free[DOWN] and collision_free[UP] give > tenable left and right y positions for a potential beam. is_empty returns > true if the right entry of an interval is greater than the left entry. It > thus rejects any collision_free[DOWN] or [UP] where the left entry is greater > than the right entry (or, in other words, it rejects anything where the left > side is higher than the right side (negative slope)). >
the UP and DOWN are vertical. This decides whether to go above or below collisions. the result goes into beam_left_y, so it only refers to left side of the beam. -- Han-Wen Nienhuys - han...@xs4all.nl - http://www.xs4all.nl/~hanwen _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel