MathGroup Archive 2001

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

Search the Archive

Re: How to find the equidistance curves of a curve defined by Interpolation function?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg27917] Re: [mg27863] How to find the equidistance curves of a curve defined by Interpolation function?
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Fri, 23 Mar 2001 04:31:51 -0500 (EST)
  • References: <200103220930.EAA08453@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

liwen liwen wrote:
> 
> Dear friends,
> 
> How are you!  I want to know how to find the
> equidistance curves of a curve defined by
> Interpolation function, for example,
> when the equidistance is 2, the equidistance curve of
> a circle with a radium of 5 is a circle with a radium
> of 3, now I want to
> find the equidistance curves of an Interpolation curve
> defined by the following data:
> 
> data1={{0,0},{1,1},{2,3},{5,8},{7,12}};
> cur=Interpolation[data1];
> 
> The equidistance curves of the curve defined above has
> two curves. How can I find them?
> 
> Thank you very much!
> 
> Liwen  3/21/2001
> 
> e-mail:  gzgear at yahoo.com

This can be done by creating offset points. You do so by moving 2 units
in a direction perpendicular to a given point on the curve. You get
perps by rotating tangents. As you are dealing with an interpolation
function, this might be a bit fuzzy, but you can get something
approximate as follows.

data1 = {{0,0},{1,1},{2,3},{5,8},{7,12}};
cur = Interpolation[data1]

tangents = Table[{1,cur'[x]}, {x,0,7,.1}];
tangents = Map[(#/Sqrt[1+#[[2]]^2])&, tangents];
perps = Map[{#[[2]],-#[[1]]}&, tangents];

offsetbelow = Table[{x,cur[x]}, {x,0,7,.1}] + 2*perps;
offsetabove = Table[{x,cur[x]}, {x,0,7,.1}] - 2*perps;

To get an idea of how it all looks, try something like

graph = Plot[cur[x], {x,0,7}, AspectRatio->1,
DisplayFunction->Identity];
graphbelow = ListPlot[offsetbelow, PlotJoined->True, AspectRatio->1,
  DisplayFunction->Identity, PlotStyle->Hue[.3]];
graphabove = ListPlot[offsetabove, PlotJoined->True, AspectRatio->1,
  DisplayFunction->Identity, PlotStyle->Hue[.6]];
Show[graphabove, graph, graphbelow, DisplayFunction->$DisplayFunction]

You can of course also make an Interpolation from the offset curves.


Daniel Lichtblau
Wolfram Research


  • Prev by Date: RE: Cylidrical Coordinates Plot
  • Next by Date: Re: Integral problem
  • Previous by thread: How to find the equidistance curves of a curve defined by Interpolation function?
  • Next by thread: Re: How to find the equidistance curves of a curve defined by Interpolation function?