**Arc
Length Routines ARCLNG and ARCXYZ**

**My
routines for estimating the arc length of a curve follow the concept of
covering the curve with a collection of circular arcs. Examples of this concept
can be found in Technical Drafting Text Books.**

**Following
my focus of examining the local behavior of the curve by working with a sliding
set of three points **

**Using a
sliding set of three points to capture the local behavior of the curve presents
then the image of a circumscribing circle for each set of three points.**

**Heron’s
formula provides a direct way to compute the area a triangle with sides: a, b
and c.**

**Letting s
be the semi-perimeter of the triangle: s=(a+b+c)/2**

**Then the
Area = SQRT(s(s-a)(s-b)(s-c))**

**This
formula can be replaced with a simpler computation when the triangle is 2-D.**

**Area =
0.5 * ((xb – xa) * (yc – yb) + (xb – xc) * (yb – ya)) where the triangle
vertices are:**

**(xa,ya)
,(xb,yb) and (xc,yc)**

**There are
two important features to be noted about this process:**

**The three points determine a plane as well as a circle. Applying Heron’s formula for the Area allows this process to approximate the arc length of three-dimensional tabular functions.****As the points slide along the curve, all interior intervals are covered by a left and right arc. My calculation averages the lengths of the two arcs.**

**ARCLNG –
a subroutine to calculate the arc length of a two-dimensional curve.**

**The
ARCLNG routine estimates the two-dimensional arc length distance starting from
the first point to each point along the curve.**

**Usage: CALL ARCLNG(X,Y,S)**

**Description
of Parameters:**

**X input
vector of X-coordinate values (DIMENSION N)**

**Y input
vector of Y-coordinate values (DIMENSION N)**

**S output
vector of arc lengths (DIMENSION N) **

**ARCXYZ – a subroutine to calculate
the arc length of a three-dimensional space curve.**

**The ARCXYZ routine estimates the
three-dimensional arc length distance from the first point to each point along
the curve.**

**Usage: CALL ARCXYZ(X,Y,Z,S)**

**Description
of Parameters:**

**X input vector of X-coordinate values
(DIMENSION N)**

**Y input vector of Y-coordinate values
(DIMENSION N)**

**Z input vector of Z-coordinate values
(DIMENSION N)**

**S output vector of arc lengths
(DIMENSION N) **

**Note: The application of these routines is NOT
limited to evenly spaced values of the argument. However, abrupt changes in the spacing of the
argument can have an adverse effect on the performance of this subroutine and
should be avoided. On the other hand,
as with most numerical procedures, better results can be expected from
uniformly spaced argument values.**

**It’s
important to point out that these routines have incorporated two supporting
routines that enable the efficient exchange of data between Excel worksheets
and VBA arrays.**

**The way
these are used:**

Corrected Versions of the Workbooks for ARCLNG and ARCXYZ are available from DropBox

https://www.dropbox.com/l/scl/AABKirG-DWJMXDrLTOlbglZcD-ygq41TpBM

https://www.dropbox.com/l/scl/AACoSxLDbGgHtI1yIGVFD-q4sTl3aA0qin0