Re: NSBezierPath containsPoint?
Re: NSBezierPath containsPoint?
- Subject: Re: NSBezierPath containsPoint?
- From: Robert Clair <email@hidden>
- Date: Thu, 20 Oct 2005 22:23:33 -0400
There HAS to be a better way!
I'm curious. What evidence, exactly, do you have for this statement ?
Some things are intrinsically non-trivial - the best you can to do is
hope to pass the problem on to someone else by finding code that they
have already written.
As an example, consider the problem of determining whether a point is
inside or outside of a closed polygon. You could could teach a small
child to decide this correctly every time by looking at a picture.
However, teaching a computer to do it is rather involved by
comparison: you have to take a ray from the point to infinity, count
the number of times it is crossed by segments of the polygon and then
see if that number is odd or even. (A real algorithm is even harder -
it has to take into account things like ill-conditioned
intersections, polygon vertices lying on the ray you have chosen,
etc.) By using
[myPath containsPoint: myPoint]
you have merely passed this work on to someone else who has coded the
above algorithm, or its moral equivalent.
For the price of listening to the lecture I'll give you an easier (in
the above sense) way:
As noted, a mathematical line doesn't have any thickness so any
practical answer to your question presumes some tolerance - a
distance below which you will look the other way and pretend that the
point is "on" the line. Take your line and this tolerance and with a
little geometry construct a path that outlines the shape you would
get by stroking your path with a width of twice the tolerance. Then
use containsPoint on that rectangular path.
Bob Clair
------------------------------------------------------------------------
--------
OK, put the gamba down slowly and nobody gets hurt.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden