       ArcLengthPartition/plane curve segments

• To: mathgroup at christensen.cybernetics.net
• Subject: [mg335] ArcLengthPartition/plane curve segments
• From: Xah Y Lee <xyl10060 at fhda.edu>
• Date: Fri, 16 Dec 1994 08:58:12 -0800 (PST)

```Dear MathGroupers,

What is the best way to write a program that will return a list of t(s)
of a parametric curve such that these points will cut the curve into
equal-length segments? Here's my best shot

ArcLengthPartition::usage = "
ArcLengthPartition[{xf,yf},{tmin,tmax}, n] returns a list
of t parameters {tmin, t1, t2,..., tmax}, such that the points
{xf[ti],yf[ti]} cut the parametric curve into n seqments of equal
length.
For example, to cut the Sine curve from 0 to 2 Pi into 6 segments,
do ArcLengthPartition[ { #&, Sin}, {0, 2 Pi}, 6].
Note: ArcLengthPartition may take a long time if n is large.";

ArcLengthPartition[{f_, g_}, {tmin_, tmax_}, n_ ] :=
Module[{ x, integrand, s},
integrand = Compile[{t}, Evaluate[ Sqrt[ f'[t]^2 + g'[t]^2 ] ] ];
s = Compile[ {t}, NIntegrate[ integrand[x], {x, tmin, t}] ];
x = x /. (FindRoot[ s[x] == #, {x, #}]&/@
Range[ 0, s[tmax] , s[tmax]/n]);
x
]

To test ArcLengthPartition, we can do the following

ptsGP =
Point[{#^2 Cos[#], #^2 Sin[#]}]& /@
ArcLengthPartition[ {#^2 Cos[#]&, #^2 Sin[#]&} , {0, 8 Pi}, 6]

ParametricPlot[ {t^2 Cos[t], t^2 Sin[t]},
{ t, 0, 4 2 Pi},
PlotStyle->{Hue,Hue[.7],Hue[.8]},
AspectRatio->Automatic,
Epilog->{Hue[.7], PointSize[.02],ptsGP}
]

It works all-right, but it's very clumsy and slow. Is there a better way?

I know there is a theorem that says every parametric curve can be
re-parametrized to form a unit-parametrization such that the parameter t
represents the length of the curve directly. But the problem is how to go
about finding the re-parametrization for arbitrary curve?

Thank all for helping.

Xah Lee		         Quote of the day:
xyl10060 at tiptoe.fhda.edu      | Top spies all, inside override.
74631.731 at compuserve.com      | NothingGP none, empty braces fine.
Mathematician of WasaMata U.  | If conflic arise, latter take place.
Mountain View, CA., US & A.   |  --mnemonic of mma graphics syntax.

```

• Prev by Date: Re: alternating sums
• Next by Date: Better printing on non-postscript printers using a Mac
• Previous by thread: Re: Combining pure functions
• Next by thread: Better printing on non-postscript printers using a Mac