Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
Drexel University or The Math Forum.
|
|
|
|
Re: Recusively calculating curve length question
Posted:
Nov 23, 2012 10:23 PM
|
|
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
|
|
|
|