
Re: Recusively calculating curve length question
Posted:
Nov 23, 2012 9:32 PM


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

