## Parametric curve

The `parametric-curve` library provides an implementation of parametric curves. Parametric curves are n-dimensional curves described by parametric equations, one per each dimension. For example:

x = a cos (t) y = a sin (t) z = bt

In this example, `t` is the parameter, and `a` and `b` are constants.

## TOC »

## Usage

(require-extension parametric-curve)

## Documentation

### Procedures

`parametric-curve? :: OBJECT -> BOOL`procedureReturns

`#t`if the given object is a parametric curve,`#f`otherwise.

`simple-curve :: N * K * FS * TMIN * TMAX -> PCURVE`procedureBasic parametric curve constructor.

`N`- number of interpolation points (N >= 3)
`K`- continuity class of the interpolating spline for this curve (1 or 2, for first or second derivative)
`FS`- a list of one-argument procedures that are evaluated to obtain points on the curve. The length of
`FS`determines the dimensionality of the curve `TMIN`- minimum value for the curve parameter
`TMIN`- maximum value for the curve parameter

`sample-curve :: PCURVE -> (T -> POINT)`procedureConstructs a procedure to sample the curve at the given parameter value.

`sample-curve* :: PCURVE -> (T LIST -> POINT LIST)`procedureConstructs a procedure to sample the curve at the given parameter values.

`linear-curve :: N * COEFFS * TMIN * TMAX -> PCURVE`procedureConstructor for a linear curve of the form

`c1 * x + c2`.`N`- number of interpolation points (N >= 3)
`COEFFS`- supplies c1 and c2 for the different dimensions
`TMIN`- minimum value for the curve parameter
`TMAX`- maximum value for the curve parameter

`line-segment:: N * COEFFS -> PCURVE`procedureCreates a line segment whose starting point is zero, and its end points is defined by

`COEFFS`.`N`is the number of interpolating points.

`map-curve :: FS * PCURVE -> PCURVE`procedureMaps the given functions to the parametric curve.

`iterate-curve :: PCURVE * N -> POINT LIST`procedureSamples a parametric curve at

`N`regular intervals in the range`xmin..xmax`inclusive.

`range-curve :: PCURVE * N * (X1,XN) LIST -> POINT LIST`procedureSamples a parametric curve at regular intervals in the given ranges.

`arc-length :: PCURVE * DX -> NUMBER`procedureComputers the arc length of the curve given step DX.

## Examples

## About this egg

### Author

### Version history

- 1.13
- Added matchable as a test dependency [reported by mario]
- 1.7
- Added arc-length
- 1.4
- Added line-segment
- 1.0
- Initial release

### License

Copyright 2012-2015 Ivan Raikov This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. A full copy of the GPL license can be found at <http://www.gnu.org/licenses/>.