[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gets rid of unnecessary logic in beam.cc. (issue4449065)
From: |
Han-Wen Nienhuys |
Subject: |
Re: Gets rid of unnecessary logic in beam.cc. (issue4449065) |
Date: |
Fri, 29 Apr 2011 10:07:21 -0300 |
On Fri, Apr 29, 2011 at 9:59 AM, address@hidden
<address@hidden> wrote:
> 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)).
>
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 - address@hidden - http://www.xs4all.nl/~hanwen