MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: Point inside a plygon?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg25322] RE: [mg25239] Point inside a plygon?
  • From: "David Park" <djmp at earthlink.net>
  • Date: Sat, 23 Sep 2000 03:35:46 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Adriano,

Here is a different solution for the point inside a polygon question.

PointInPolygon::usage =
    "PointInPolygon[point, polygonvertices] will determine if a point is \
within a polygon defined by its vertices. Its method is to calculate the \
cross product of each leg of the polygon with the vector from the base of
the \
leg to the point. If there is a change in sign of the z component going \
around the polygon, the point is outside the polygon.";

PointInPolygon[pt : {_, _}, polypoints : {{_, _} ..}] :=
  Module[{pt3D, polypoint3D, case},
    pt3D = PadRight[pt, 3];
    polypoints3D = PadRight[#, 3] & /@ polypoints;
    polypoints3D =
      PadRight[polypoints3D, Length[polypoints3D] + 1, polypoints3D];
    polypoints3D = Partition[polypoints3D, 2, 1];
    polypoints3D =
      Sign[Dot[Cross[#\[LeftDoubleBracket]2\[RightDoubleBracket] - #\
\[LeftDoubleBracket]1\[RightDoubleBracket],
                pt3D - #\[LeftDoubleBracket]1\[RightDoubleBracket]], {0, 0,
                1}]] & /@ polypoints3D;
    case = Which[
        MemberQ[polypoints3D, 0], "on",
        Length[Split[polypoints3D]] == 1, "inside",
        True, "outside"];
    SequenceForm["Point ", case, " polygon."]
    ]

Needs["Geometry`Polytopes`"]
polypoints = Vertices[Square]
{{0, 1}, {-1, 0}, {0, -1}, {1, 0}}

PointInPolygon[{0, 0}, polypoints]
"Point inside polygon."

PointInPolygon[{1, 1}, polypoints]
"Point outside polygon."

PointInPolygon[{1/2, 1/2}, polypoints]
"Point on polygon."

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/


> -----Original Message-----
> From: Adriano Moreira [mailto:adriano at dsi.uminho.pt]
To: mathgroup at smc.vnet.net
> Hi,
>
> I need a routine to check if a point is inside or outside a polygon
> (simple polygon non self-intersecting).
> Any help appreciated.
>
> Adriano Moreira
>



  • Prev by Date: Re: 2D array to tab delimited file
  • Next by Date: Re: Simultaneous equations
  • Previous by thread: Re: Point inside a plygon?
  • Next by thread: RE: Point inside a plygon?