polygon geometry
Mick Collins
mickclns at mac.com
Fri May 16 16:10:38 EDT 2008
One thing that might help is that if you have a point P that you know
is in the polygon, then
For any other point Q in the polygon, the segment PQ will cross the
polygon(boundary) an even number of times and for any point Q outside
the polygon the segment PQ will cross the boundary an odd number of
times. A special case of that is that if it is a convex polygon (P
could be the loc) then PQ will not cross the boundary at all if Q is
inside and PQ will cross exactly once if Q is outside. Hope this helps,
- Mick
PS you might have to consider PQ running along one of the boundary
segments if P is not chosen so as to avoid that
On May 16, 2008, at 1:00 PM, use-revolution-request at lists.runrev.com
wrote:
>
> Message: 14
> Date: Fri, 16 May 2008 11:35:39 +0100
> From: "David Bovill" <david at openpartnership.net>
> Subject: Polygon geometry - any suggestions?
> To: "How to use Revolution" <use-revolution at lists.runrev.com>
> Message-ID:
> <c1c5836b0805160335t7f57edeat832e51fa57918240 at mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> I am working with maps and geo-tagging media files - as part of
> this I need
> to work out if a point is within an area - simplest case a polygon,
> but this
> could be a simple volume - that is a polygon extruded to the ground.
>
> The coordinates are latitude and longitude in degrees - with
> heights in
> metres - so a 3D point looks like:
>
> -0.1055509873752101,51.56310290997875,23
>
>
> and a simple volume based on a polygon (23 metres high) extruded to
> the
> ground looks like this:
>
> -0.1055509873752101,51.56310290997875,23
> -0.1057556880140851,51.56295803562467,23
> -0.1056108205764588,51.56284448695596,23
> -0.1055509873752101,51.56310290997875,23
>
> The question is how to determine if a point is within this
> polygon / volume.
> What approach to take? has anyone done this before in Rev?
>
> Ideally there would be a simple algorithm - but so far I can't find
> one - so
> a basic hack would be to translate the geometry to screen based
> pixels and
> construct Rev polygons and then use the built in within(object, point)
> function? Not the fastest and definitely hacky - any suggestions
> regarding a
> better way?
More information about the use-livecode
mailing list