The interpop operator
This page applies to Harlequin v13.1r0 and later; both Harlequin Core and Harlequin MultiRIP
internaldict real array interpop real
Implements a simple y(x)
mapping using linear interpolation over an equally spaced table of values.
The real operand should be a real value between 0
and 1
; if the value is outside this range, it is clipped. This number is the x
value input to the function.
The array operand must be an array of numbers; each value may be an integer or a real. There is no restriction on the values of the numbers or the number of entries in the array (except for PostScript limits). The array is treated as a table of y
values along equally-spaced x
positions. The first value is for x
=0
and the last value is for x
=1
.
The returned real value is the value of y(x)
obtained by linearly interpolating over the appropriate segment of the table.
A simple example follows:
userdict /interpop 1183615869 internaldict /interpop get put 0.7 {0 0.15 0.45 0.65 0.85 1} //interpop
with the result of 0.75
. There are six values in the table spaced by x
of 0.2
; with x
=0.7
, the segment is between x
=0.6
and x
=0.8
. These have values of y
=0.65
and y
=0.85
respectively with the result of 0.75
, which is 50% along that segment.
For other examples, see Variant 2 lookup procedures .
If you need a more flexible function with variable spacing of data points or a larger domain, use piecewiselineargen
from the HqnHalftoneUtilities procset - or indeed a PostScript-language function constructed in the standard ways. Invoke them with The evalfunc operator.