Next: , Previous: , Up: Space-Filling Curves   [Contents][Index]

#### 7.2.7.1 Multidimensional Space-Filling Curves

`(require 'space-filling)`

The algorithms and cell properties are described in http://people.csail.mit.edu/jaffer/Geometry/RMDSFF.pdf

Function: make-cell type rank side precession
Function: make-cell type rank side
Function: make-cell type rank

type must be the symbol `diagonal`, `adjacent`, or `centered`. rank must be an integer larger than 1. side, if present, must be an even integer larger than 1 if type is `adjacent` or 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 `diagonal` or `centered`.

Function: make-cell Hamiltonian-path-vector precession
Function: make-cell Hamiltonian-path-vector

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-cell` returns a data object suitable for passing as the first argument to `integer->coordinates` or `coordinates->integer`.

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 `diagonal` or `adjacent`, then the coordinates and scalar must be nonnegative integers. If `centered`, then the integers can be negative.

Function: integer->coordinates cell u

`integer->coordinates` converts the integer u to a list of coordinates according to cell.

Function: coordinates->integer cell v

`coordinates->integer` converts 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.

Next: , Previous: , Up: Space-Filling Curves   [Contents][Index]