[OpenJDK 2D-Dev] CubicCurve2D.solveCubic and containment/intersection bugs.
Jim Graham
james.graham at oracle.com
Mon Jan 24 18:26:05 UTC 2011
Hi Denis,
On 1/12/2011 8:35 AM, Denis Lila wrote:
>> There is another bug out there where I've indicated the need to beef
>> up our documentation of the intersection methods (see 7003516).
>
> I like the ideas in the evaluation, especially about the links to the
> "Definition of insideness" in the Shape docs. What confused me
> in the documentation, even after I had read the "Definition of
> insideness", was that the wording is not very consistent. For example
> contains(Point) says "...inside the boundary of the Shape." The
> "Definition of insideness" says "lie *inside a Shape* if and only if"
> So we have "inside a Shape" and "inside the boundary of the Shape".
> This creates the impression that they are referring to two different
> things. That's why I was confused about whether "inside the boundary"
> included the boundary or not.
>
> What made it even more confusing was just the usage of the word "boundary"
> itself, especially when combined with the usage of "interior" in the
> intersects() docs. I'm used to "boundary" and "interior" being defined
> like so: http://en.wikipedia.org/wiki/Boundary_%28topology%29,
> http://en.wikipedia.org/wiki/Interior_%28topology%29
> but in Shape we use a different definition which classifies every
> point in the plane as either inside or outside the shape, so in
> some sense, the boundary doesn't even exist in our case. So I propose
> that we remove every use of the word "boundary", and replace every
> use of "interior" with "inside"+ a link to the "Definition of insideness"
> in awt.Shape. That will make it perfectly clear what we mean by "inside"
> and people who have studied a bit of topology won't be confused ;-)
This sounds good.
Along the lines of what you are proposing, it may help to use words like
"infinitely thin" and then come up with some intuitive word (or maybe a
pair of words?) that we can use both in the case of talking about how a
Stroke turns a path into a stroked shape and also how the filling and
containment methods turn it into an arbiter of points inside or outside
the shape. It couldn't hurt to say that every shape divides the plane
into 2 sets of points, one inside and the other outside, or something
like that.
Note that the definition of insideness does allow that there are points
that are on the boundary - in fact most of its words are how to
disambiguate whether those points are inside or outside. Perhaps the
problem is less with the word "boundary" than it is with confusing our
use of the word inside to describe the concept of filling and
containment with the topological concept that a set has an interior in
addition to (and mostly separate from) its boundary? In our case we
accept half(ish) of the boundary into "inside" and half(ish) into
"outside". In topology there are 3 states - interior, boundary, and
exterior...
...jim
More information about the 2d-dev
mailing list