Outdated egg!
This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.
If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.
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.
Usage
(require-extension parametric-curve)
Documentation
Procedures
[procedure] parametric-curve? :: OBJECT -> BOOLReturns #t if the given object is a parametric curve, #f otherwise.
[procedure] simple-curve :: N * K * FS * TMIN * TMAX -> PCURVEBasic 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
Constructs a procedure to sample the curve at the given parameter value.
[procedure] sample-curve* :: PCURVE -> (T LIST -> POINT LIST)Constructs a procedure to sample the curve at the given parameter values.
[procedure] linear-curve :: N * COEFFS * TMIN * TMAX -> PCURVEConstructor 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
Creates a line segment whose starting point is zero, and its end points is defined by COEFFS. N is the number of interpolating points.
[procedure] map-curve :: FS * PCURVE -> PCURVEMaps the given functions to the parametric curve.
[procedure] iterate-curve :: PCURVE * N -> POINT LISTSamples a parametric curve at N regular intervals in the range xmin..xmax inclusive.
[procedure] range-curve :: PCURVE * N * (X1,XN) LIST -> POINT LISTSamples a parametric curve at regular intervals in the given ranges.
[procedure] arc-length :: PCURVE * DX -> NUMBERComputers 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/>.