Create a ChebyMap
A ChebyMap is a form of Mapping which performs a Chebyshev polynomial transformation. Each output coordinate is a linear combination of Chebyshev polynomials of the first kind, of order zero up to a specified maximum order, evaluated at the input coordinates. The coefficients to be used in the linear combination are specified separately for each output coordinate.
For a 1-dimensional ChebyMap, the forward transformation is defined as follows:
f(x) = c0.T0(x’
) +
c1.T1(x’
) +
c2.T2(x’
) +
...
where:
Tn(x’
) is the nth Chebyshev polynomial of the first kind:
T0(x’
) = 1
T1(x’
) = x’
Tn+1(x’
) =
2.x’
.Tn(x’
) +
Tn-1(x’
)
x’
is the inpux axis value, x, offset and scaled to the range [-1, 1] as x ranges over a specified bounding
box, given when the ChebyMap is created. The input positions, x, supplied to the forward
transformation must fall within the bounding box - bad axis values (AST__BAD) are generated for
points outside the bounding box.
For an N-dimensional ChebyMap, the forward transformation is a generalisation of the above form.
Each output axis value is the sum of NCOEFF terms, where each term is the product of a single
coefficient value and N factors of the form Tn(x’
_i), where "
x’
_i"
is the normalised value of the i’
th
input axis value.
The forward and inverse transformations are defined independantly by separate sets of coefficients, supplied when the ChebyMap is created. If no coefficients are supplied to define the inverse transformation, the AST_POLYTRAN method of the parent PolyMap class can instead be used to create an inverse transformation. The inverse transformation so generated will be a Chebyshev polynomial with coefficients chosen to minimise the residuals left by a round trip (forward transformation followed by inverse transformation).
"
NCOEFF_F∗( 2
+ NIN )"
elements.
Each group of "
2 +
NIN"
adjacent elements describe a single coefficient of the forward transformation. Within each such
group, the first element is the coefficient value; the next element is the integer index of the ChebyMap
output which uses the coefficient within its defining expression (the first output has index 1); the
remaining elements of the group give the integer powers to use with each input coordinate
value (powers must not be negative, and floating point values are rounded to the nearest
integer).
For instance, if the ChebyMap has 3 inputs and 2 outputs, each group consisting of 5 elements, A
groups such as "
(1.2, 2.0, 1.0, 3.0, 0.0)"
describes a coefficient with value 1.2 which is used within the
definition of output 2. The output value is incremented by the product of the coefficient value, the
value of the Chebyshev polynomial of power 1 evaluated at input coordinate 1, and the value of the
Chebyshev polynomial of power 3 evaluated at input coordinate 2. Input coordinate 3 is not used
since its power is specified as zero. As another example, the group "
(-1.0, 1.0, 0.0, 0.0, 0.0 )"
adds a
constant value -1.0 onto output 1 (it is a constant value since the power for every input axis is given as
zero).
Each final output coordinate value is the sum of the "
NCOEFF_F"
terms described by
the "
NCOEFF_F"
groups within the supplied array.
"
NCOEFF_I∗( 2
+ NOUT )"
elements.
Each group of "
2 +
NOUT"
adjacent elements describe a single coefficient of the inverse transformation, using the same
schame as "
COEFF_F"
, except that "
inputs"
and "
outputs"
are transposed. "
NIN"
elements. "
NIN"
elements. "
NOUT"
elements. "
NOUT"
elements. A null Object pointer (AST__NULL) will be returned if this function is invoked with STATUS set to an error value, or if it should fail for any reason.