Re: Polygon with holes
- To: mathgroup at smc.vnet.net
- Subject: [mg97405] Re: Polygon with holes
- From: Harrie Kraai <hakraai at xs4all.nl>
- Date: Thu, 12 Mar 2009 05:42:38 -0500 (EST)
- References: <gp5fn9$9mc$1@smc.vnet.net> <gp7vsh$1cv$1@smc.vnet.net>
ragfield wrote: > On Mar 10, 5:34 am, Harrie Kraai <hakr... at xs4all.nl> wrote: >> Does anyone know of a facility for Polygons (graphics) with holes inside? >> I guess there is no such thing as an oriented polygon in Mathematica? >> Or a polygon consisting of disjoint lines (inner and outer contours, >> clockwise and counterclockwise)? >> >> I can see that it is possible to connect outer and inner contours using >> a dummy line, but that is not so easy to program in a generic way. > > This is currently the only way to achieve the desired affect. > > MultiContourPolygon[polys_List] := Module[ > {contours = Append[#, First[#]] & /@ polys}, > { > Polygon@Join[Join @@ contours, Reverse[First /@ contours]], > Line[contours] > } > ] > > Graphics@MultiContourPolygon[{{{0, 0}, {0, 1}, {1, 1}, {1, > 0}}, {{.25, .25}, {.75, .25}, {.75, .75}, {.25, .75}}, {{.4, \ > .4}, {.6, .4}, {.6, .6}, {.4, .6}}}] > Hi Rob, Thanks for this suggestion. However, (as you are porbably aware) it does not work so easily for arbitrary polygons. The connection between inner and outer contours is made by a straight line. A general algorithm would have to select the points to be connected and make sure that the connection itself does not intersect the contours. There should also be a check on the orientations. Making two or more holes would complicate things further. As I expected there seems to be no simple facility available. This could be a feature request for wolfram. How do I submit one? HK >> Solutions such as creating an artificial hole by another Polygon in the >> background colour are not really acceptable. >> >> Polygon's with holes would be very useful for maps etc. > > Agreed. T > > -Rob >