Re: Spacing of group of Line[]-s -- any simple way?
- To: mathgroup at smc.vnet.net
- Subject: [mg117026] Re: Spacing of group of Line[]-s -- any simple way?
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Tue, 8 Mar 2011 05:34:00 -0500 (EST)
Peter Sisak wrote:
> Assume two Graphics[]s, consisting of Line[]s only.
> 1. Them being in the same coordinate system, what would be the most straightforward way to calculate the minimum separation of the two Graphics[]s?
> 2. How do you quickly get them to a given "s" separation, utilizing the function Translate[[],{x,0}] on one of the Graphics[]?
> 3. How do you graph the separation as a function of "x"?
>
> Thanks in advance
> Peter Sisak
Not clear to me what this means. Do you want to know the closest
vertical distance between them? Or the closest they get to one another
in any direction?
The first can be handled by splitting segments so that that all x
endpoints are listed. Then just iterate over segment pairs in one graph
vs the other, checking only the distances at the endpoints (where said
distances are closest or furthest). For m segments in one and n in the
other, this becomes m+n or so comparisons.
The second can be handled by linear programming. In general this could
involve m*n minimizations, for m segments in one graph and n in the
other. If they form convex bodies it is much easier: only one LP call
needed.
Another related possibility is to find, in effect, a middle curve, that
is, the locus of points midway between the two. This is related to
"shape offsetting" and can be done by a method called "fast marching".
Would take some work, though.
Daniel Lichtblau
Wolfram Research