bugGnash - The GNU Flash player - Bugs: bug #23098, bogus collision detection for...

 
 

bug #23098: bogus collision detection for scaled strokes

Submitted by:  Sandro Santilli <strk>
Submitted on:  Tue 29 Apr 2008 10:59:59 AM UTC  
 
Category: coreSeverity: 3 - Normal
Release: NoneStatus: Confirmed
Privacy: PublicAssigned to: None
Open/Closed: Open

Add a New Comment (Rich MarkupRich Markup):
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Thu 11 Sep 2008 01:56:51 PM UTC, comment #5:

Sorry, I mean if the boundary box check is engaged, a single
straight line segment would not even be checked for distance
so the problem is still there.

Sandro Santilli <strk>
Project Member
Thu 11 Sep 2008 01:55:43 PM UTC, comment #4:

Lately I did put the boundary-box check back in.
Dropping it broke a corner case in DrawingApiTest, kind
of a fill leakage for a self-intersecting filled shape.

After all this bug only exposes when movies use
a single straight line with non-scaled thickness.
Ok, could happen for things like potlatch, but the
use of float likely fixes it...

Sandro Santilli <strk>
Project Member
Tue 12 Aug 2008 06:31:53 PM UTC, comment #3:

ehm, not really related to int/float.
The last one was instead related to use of the bounding box
for a shortcut. We can't use the bounding box when there
are nonscaled strokes to consider.
For now I dropped the shortcut. Will be slower generally but
more correct. For an improvement, we should maintain a flag
telling us whether nonscaled strokes are there at all.

Note that nonscaled strokes also influence boundaries
for invalidated bounds. If you modify latest testcase so
that it reduces in size, you'll find invalidated bounds
bugs.

Sandro Santilli <strk>
Project Member
Tue 12 Aug 2008 05:11:44 PM UTC, comment #2:

attached another testcase showing a similar problem with both xscale and yscale having same value.
This time, I belive it's a regression introduced by the int-based point2d class ...

(file #16288)

Sandro Santilli <strk>
Project Member
Tue 29 Apr 2008 02:14:59 PM UTC, comment #1:

I have to add that the bug is only exposed if horizontal
scaling is different from vertical scaling.
The proprietary player also behave in a weird way when this
happens, in that it doesn't seem to consider the caps,
but still gets the horizontal bound correctly.

Sandro Santilli <strk>
Project Member
Tue 29 Apr 2008 10:59:59 AM UTC, original submission:

The attached swf contains a simple red line with a stroke
of 10, horizontally scaled by x20 (_xscale=2000).
The gnash collision detection routine has an idea of it
which doesn't include round caps and goes beyond the actually
rendered shape both on the right and on the left.

Sandro Santilli <strk>
Project Member

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #16288:  nonscaledstrokes2.swf added by strk (229B - application/x-shockwave-flash)
file #15548:  scaledstrokecollision.swf added by strk (242B - application/x-shockwave-flash)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by strk
  • -unavailable- added by strk (Submitted the item)
  • -unavailable- added by strk
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 5 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Thu 11 Sep 2008 01:55:43 PM UTCstrkStatusNone=>Confirmed
    Tue 12 Aug 2008 05:11:44 PM UTCstrkAttached File-=>Added nonscaledstrokes2.swf, #16288
      Carbon-Copy-=>Added zoulunkai
    Tue 29 Apr 2008 10:59:59 AM UTCstrkAttached File-=>Added scaledstrokecollision.swf, #15548
      Carbon-Copy-=>Added udog

    Back to the top


    Powered by Savane 3.1-cleanup