← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH] Use polygonal hit testing for module selection

 

Jon,

This fixed the issue so I merged your patch.  Thanks.

Wayne

On 2/21/2018 8:46 PM, Jon Evans wrote:
> Here's a patch that fixes the issues observed.
> I have changed the algorithm to a simpler one that should be more
> bulletproof.
> I think the optimal approach for complicated footprints is still not
> this way, but that would require more time to tweak and optimize (i.e.
> generating some kind of bounding hull that is non-convex, and caching it
> until the shape changes)
> 
> You can see the new patch on Andrzej's test files here:
> https://imgur.com/a/L16ky
> Purple shows the bounding boxes, yellow shows the selectable area under
> the new algorithm. 
> ​
> -Jon
> 
> On Wed, Feb 21, 2018 at 1:41 PM, Wayne Stambaugh <stambaughw@xxxxxxxxx
> <mailto:stambaughw@xxxxxxxxx>> wrote:
> 
>     If you could get it done by Friday before I roll out rc1, that's fine.
> 
>     Wayne
> 
>     On 2/21/2018 1:37 PM, Jon Evans wrote:
>     > I'll be able to look at it this evening.  Can report then whether or not
>     > I will have a patch tonight.  Up to you whether or not that is too long
>     > of a delay.
>     >
>     > -Jon
>     >
>     > On Wed, Feb 21, 2018 at 1:32 PM, Wayne Stambaugh <stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>
>     > <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>> wrote:
>     >
>     >     Jon,
>     >
>     >     Would you please take a look at this as soon as possible?  If
>     you cannot
>     >     get to it in a reasonable amount of time, please let me know
>     so I can
>     >     back out your polygon hit test patch.  We need to be able to
>     select
>     >     footprints.
>     >
>     >     Thanks,
>     >
>     >     Wayne
>     >
>     >     On 2/21/2018 11:41 AM, Andrzej Wolski wrote:
>     >     > After this patch, I can no longer select some footprints by
>     clicking
>     >     > inside their area.
>     >     > Please see the board in an attachment.
>     >     >
>     >     > Andrzej
>     >     >
>     >     > W dniu 2018-02-20 o 16:44, Wayne Stambaugh pisze:
>     >     >> Jon,
>     >     >>
>     >     >> I merged your patch.
>     >     >>
>     >     >> Thanks,
>     >     >>
>     >     >> Wayne
>     >     >>
>     >     >> On 2/18/2018 7:01 PM, Jon Evans wrote:
>     >     >>> Hi Wayne,
>     >     >>>
>     >     >>> In my testing there is no performance impact, but more
>     testing is
>     >     >>> welcome.  It shouldn't be doing the calculation on too many
>     >     objects in
>     >     >>> general, since this is a "second pass" hit test that
>     applies to
>     >     modules
>     >     >>> that have a bounding box overlapping the mouse cursor.
>     >     >>> However, I did some more testing and discovered some weird
>     >     behavior, so
>     >     >>> I have tweaked the algorithm in the attached new version
>     of the
>     >     patch.
>     >     >>>
>     >     >>> -Jon
>     >     >>>
>     >     >>> On Sun, Feb 18, 2018 at 5:25 PM, Wayne Stambaugh
>     >     <stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>
>     <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>
>     >     >>> <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>
>     <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>>> wrote:
>     >     >>>
>     >     >>>      Hey Jon,
>     >     >>>
>     >     >>>      Did you notice an performance hit with your patch? 
>     >     Obviously there
>     >     >>>      is going to be more overhead calculating a polygon
>     versus a
>     >     >>>      rectangle.  I just want to be sure we are not causing any
>     >     usability
>     >     >>>      issues due to the polygon calculations.
>     >     >>>
>     >     >>>      Thanks,
>     >     >>>
>     >     >>>      Wayne
>     >     >>>
>     >     >>>
>     >     >>>      On 02/18/2018 12:10 PM, Jon Evans wrote:
>     >     >>>
>     >     >>>          Hi all,
>     >     >>>
>     >     >>>          The attached patch adds some plumbing to
>     calculate and
>     >     make use
>     >     >>>          of a polygonal bounding area for modules.  It
>     fixes the
>     >     below
>     >     >>>          issue and in general improves the accuracy of
>     selection
>     >     in my
>     >     >>>          testing.
>     >     >>>
>     >     >>>          This mechanism could be extended to other objects
>     besides
>     >     >>>          modules if it's useful.  I figured I'd start by
>     sending out
>     >     >>> this
>     >     >>>          patch to get feedback, and if it gets merged,
>     look for
>     >     other
>     >     >>>          areas where we could improve things by using polygons
>     >     >>> instead of
>     >     >>>          bounding boxes.
>     >     >>>
>     >     >>>          https://bugs.launchpad.net/kicad/+bug/1749077
>     <https://bugs.launchpad.net/kicad/+bug/1749077>
>     >     <https://bugs.launchpad.net/kicad/+bug/1749077
>     <https://bugs.launchpad.net/kicad/+bug/1749077>>
>     >     >>>          <https://bugs.launchpad.net/kicad/+bug/1749077
>     <https://bugs.launchpad.net/kicad/+bug/1749077>
>     >     <https://bugs.launchpad.net/kicad/+bug/1749077
>     <https://bugs.launchpad.net/kicad/+bug/1749077>>>
>     >     >>>
>     >     >>>          -Jon
>     >     >>>
>     >     >>>
>     >     >>>          _______________________________________________
>     >     >>>          Mailing list:
>     https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     >>>          <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>>
>     >     >>>          Post to     :
>     kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>     >     >>>          <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>>
>     >     >>>          Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     >>>          <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>>
>     >     >>>          More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
>     >     <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>>
>     >     >>>          <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
>     >     <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>>>
>     >     >>>
>     >     >>>
>     >     >>>      _______________________________________________
>     >     >>>      Mailing list: https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     >>>      <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>>
>     >     >>>      Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>     >     >>>      <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>>
>     >     >>>      Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     >>>      <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>>
>     >     >>>      More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
>     >     <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>>
>     >     >>>      <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
>     >     <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>>>
>     >     >>>
>     >     >>>
>     >     >> _______________________________________________
>     >     >> Mailing list: https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     >> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>     >     >> Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     >> More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
>     >     <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>>
>     >     >
>     >     >
>     >     >
>     >     >
>     >     > _______________________________________________
>     >     > Mailing list: https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     > Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>     >     > Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     > More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
>     >     <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>>
>     >     >
>     >
>     >     _______________________________________________
>     >     Mailing list: https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>     >     Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >     More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
>     >     <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>>
>     >
>     >
> 
> 


References