[prev in list] [next in list] [prev in thread] [next in thread]
List: squeak-dev
Subject: Re: [ENH] BetterTouches
From: Bob Arning <arning () charm ! net>
Date: 2001-02-27 17:08:39
[Download RAW message or body]
On Tue, 27 Feb 2001 11:22:39 -0500 Joshua Channing Gargus <schwa@cc.gatech.edu> \
wrote:
> Fixes a problem with Player>>touchesA:, and also uses a better contact
> algorithm than bounding box intersection. The new algorithm uses
> BitBlt to determine whether any pixels overlap within the intersection
> of two morph's bounding boxes. It also works with rotated morphs.
>
> Each call to Morph>>touchesMorph: takes approx. 10ms on my 300Mhz G3
> to find whether two ellipses (extent: 300@40) touch (assuming that
> their bounding boxes intersect; otherwise it will be much faster)
Joshua,
I apologize for not giving a better indication of the purpose of #touchesA:. Calling \
the argument to the method "aPrototypicalPlayer" was meant to indicate that I wanted \
to know if I touched something that "looked like" the prototype. By removing the test \
(trueGoal appearsToBeSameCostumeAs: trueNeighbor), you seem to have defeated that \
intent. I ran a comparison of your code and mine in Osmosis2 (available on BSS). I \
counted each entry to #touchesA:, each time it answered true and the number of \
milliseconds to reach 10000 invocations:
raa #(10001 807 17354)
jcg #(10001 55 16978)
As you can see, both versions took about the same time to do 10000 tests, but yours \
produced significantly fewer touches. While some of this can be attributed to a \
narrower criteria for "touch" in your code, I believe the greater part is due to \
ignoring valid hits. I would be interested in seeing how your code performs when \
returning all valid collisions. One of my goals was to make something fast at the \
expense of a little accuracy, if need be. Since the morphs in question were small and \
round, I felt it a reasonable sacrifice.
Cheers,
Bob
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic