Date: Nov 23, 2012 10:23 PM
Author: Brad Cooper
Subject: Re: Recusively calculating curve length question
Thanks Rouben

--

We know that there is intelligent life in the universe because they have

never attempted to contact us.

Lily Tomlin

"none (Rouben Rostamian)" <rouben@shady.> wrote in message

news:k8pbkr$83f$1@news.albasani.net...

> In article <GASrs.1180$1k5.38@viwinnwfe01.internal.bigpond.com>,

> Brad Cooper <Brad.Cooper_17@bigpond.com> wrote:

>>I have spent quite a few hours trying to write a recursive routine

>>to calculate the length of a curve by adding up small secants.

>>

>>secantLen := proc(a, b, tolerance)

>>begin

>> L := sqrt( (X(b)-X(a))^2 + (Y(b)-Y(a))^2 ):

>> c := (a+b)/2:

>>

>> if L > tolerance then

>> L := secantLen(a, c, tolerance) + secantLen(c, b, tolerance):

>> end_if:

>>

>>return(L):

>>end_proc:

>>

>

> That termination condition is muddy. Try:

>

> secantLen := proc(a, b, tolerance)

> local L, c;

> L := evalf(sqrt( (X(b)-X(a))^2 + (Y(b)-Y(a))^2 )):

> if L < tolerance then

> return L;

> else

> c := (a+b)/2:

> return secantLen(a, c, tolerance) + secantLen(c, b, tolerance):

> end_if:

> end_proc:

>

> --

> Rouben Rostamian

The secret sauce is to declare L and c as local. I haven't programmed for 12

years, am very rusty. Your help has been fantastic!!

Thanks Rouben.

Regards,

Brad

Thank