Re: Concentric contours about the centroid, having the same length, and interior to an initial contour.
- To: mathgroup at smc.vnet.net
- Subject: [mg43995] Re: Concentric contours about the centroid, having the same length, and interior to an initial contour.
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Thu, 16 Oct 2003 04:17:20 -0400 (EDT)
- Organization: The University of Western Australia
- References: <bmj2mv$prl$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
In article <bmj2mv$prl$1 at smc.vnet.net>,
gilmar.rodriguez at nwfwmd.state.fl.us (Gilmar Rodr?guez Pierluissi)
wrote:
> I have a basic contour defined by:
>
> contour = {{10545, 28012}, {10232, 28166}, {10027, 28218},
> {9714, 28115}, {9354, 28166}, {9042, 28115}, {8785, 28064},
> ....
> ....
> ....
> {11632, 26253}, {11319, 26253}, {11011, 26253}, {10750, 26458},
> {10596, 26822}, {10596, 27182}, {10596, 27494}, {10545, 28012}};
>
> A plot of this contour is given by:
>
> plt1 = ListPlot[contour, PlotStyle -> {Hue[0], PointSize[.01]}]
>
> The centroid of the contour is given by:
>
> centroid = N[Plus @@ contour/Length[contour]]
>
> {9426.41, 12877.6}
Actually, this is not quite the centroid because your first point is
repeated. The correct value is
{9423.42, 12837.1}
> My question is:
>
> How can I generate (say) five contours, so that:
>
> (1.) Each contour (set) have the same length as the original contour
> (in this case, each contour should contain 375 {x,y} points).
>
> (2.) Each contour is equidistant, and concentric (with respect to
> the centroid) to the previous contour.
>
> (3.) The five contours are inside the original contour defined above?
As far as I can see, it is not possible to satisfy (2) and (3) for a
non-trivial curve. You can generate a set of contours that are
equidistant from one another (in the sense that each point on one
contour is a constant perpendicular distance from the corresponding
point on the other contour) but, for a non-convex curve the centroid
will change. As a trivial example of this, consider the following simple
polygon:
pts = {{2, 1}, {-2, 1}, {-2, -1}, {-1, -1}, {-1, 0},
{1, 0}, {1, -1}, {2, -1}, {2, 1}};
Show[Graphics[Line[pts]], AspectRatio -> Automatic];
The centroid is given by (noting the duplicated first point):
N[Plus @@ Rest[pts]/Length[Rest[pts]]]
{0., -0.25}
Here is a contour inside, and equidistant to, the first contour:
pts2 = {{9/5, 4/5}, {-9/5, 4/5}, {-9/5, -4/5}, {-6/5, -4/5},
{-6/5, 1/5}, {6/5, 1/5}, {6/5, -4/5}, {9/5, -4/5}, {9/5, 4/5}};
Show[Graphics[{Line[pts],Line[pts2]}], AspectRatio -> Automatic];
However, the centroid has moved upwards:
N[Plus @@ Rest[pts2]/Length[Rest[pts2]]]
{0.,-0.15}
On the other hand, generating a set of (parametric) contours concentric
with the centroid is easy:
c[x_] = ((1 - x) centroid + x # & ) /@ contour;
Show[Graphics[{Line[contour], Table[{Hue[x/6], Line[c[x/6]]},
{x, 5}]}], AspectRatio -> Automatic];
Generating a set of contours interior to one another is more difficult.
Cheers,
Paul
--
Paul Abbott Phone: +61 8 9380 2734
School of Physics, M013 Fax: +61 8 9380 1014
The University of Western Australia (CRICOS Provider No 00126G)
35 Stirling Highway
Crawley WA 6009 mailto:paul at physics.uwa.edu.au
AUSTRALIA http://physics.uwa.edu.au/~paul