The algorithms and cell properties are described in
type must be the symbol
centered. rank must be an integer larger than 1. side, if present, must be an even integer larger than 1 if type is
adjacentor an odd integer larger than 2 otherwise; side defaults to the smallest value. precession, if present, must be an integer between 0 and side^rank-1; it is relevant only when type is
type must be a vector of side^rank lists of rank of integers encoding the coordinate positions of a Hamiltonian path on the rank-dimensional grid of points starting and ending on corners of the grid. The starting corner must be the origin (all-zero coordinates). If the side-length is even, then the ending corner must be non-zero in only one coordinate; otherwise, the ending corner must be the furthest diagonally opposite corner from the origin.
make-cellreturns a data object suitable for passing as the first argument to
Hilbert, Peano, and centered Peano cells are generated respectively by:
(make-cell 'adjacent rank 2) ; Hilbert (make-cell 'diagonal rank 3) ; Peano (make-cell 'centered rank 3) ; centered Peano
In the conversion procedures, if the cell is
adjacent, then the coordinates and scalar must be nonnegative
centered, then the integers can be negative.
integer->coordinatesconverts the integer u to a list of coordinates according to cell.
coordinates->integerconverts the list of coordinates v to an integer according to cell.
coordinates->integer and integer->coordinates are inverse functions when passed the same cell argument.