std_F(P(a1,b1), P(a2,b2));
draws the image of the unit
square under the linear transformation corresponding to the matrix
whose columns are and
. The parallelogram
contains the image of the ``standard F'':
plot_profile(f, a, b, n);
Not intended for general use, but documented anyway. Suffice it to
say that a ``profile'' plot solves a certain differential equation
and plots the solution. If is a quadratic polynomial, the
resulting curve will be the profile of a surface of revolution of
constant Gaussian curvature.
Consider a path made up of equal-length segments that can point at
any angle of the form , for
, like spokes on
a wheel. The path is specified by a finite sequence of integers,
taken modulo
. For example, if
, then the sequence
corresponds to the ASCII path
_/\_
. ePiX's fractal
generation routine starts with such a ``seed'' then recursively
(up to a specified depth ) replaces each segment with a scaled
and rotated copy of the seed. The seed above generates the Koch
fractal, for instance.
fractal(P(a,b), P(c,d), D, seed);
seed is declared in the preamble as (e.g.)
const int seed[] = {6, 4, 0, 1, -1, 0};
The first entry (here 6) is the number of ``spokes'' , the
second (4) is the number of terms in the seed, and the remaining
entries are the seed proper. The final path joins
to
. The number of segments in the final path grows
exponentially in the depth, so depths larger than 5 or 6 are not
likely to work: LATEX may crash, or the machine may even run out
of memory, depending on the length of the seed. At large depth,
the output will probably suffer from round-off error even if the
figure renders.