lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Gets rid of unnecessary logic in beam.cc. (issue4449065)


From: address@hidden
Subject: Re: Gets rid of unnecessary logic in beam.cc. (issue4449065)
Date: Fri, 29 Apr 2011 05:59:19 -0700

On Apr 28, 2011, at 10:26 PM, Han-Wen Nienhuys wrote:

> On Thu, Apr 28, 2011 at 12:37 PM,  <address@hidden> 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)).

I'm sorry that I'm not getting what it is, but this is the best I could do by 
mulling over it and using lots of printf's.  If it's not doing this, could you 
please describe what it is doing?

Cheers,
MS


reply via email to

[Prev in Thread] Current Thread [Next in Thread]