CORNER algorithm - akilmarshall/procedural-image-generation GitHub Wiki

Fix $(0, 0)$ in $\mathcal{F}$ with $t_i$

\mathcal{F}_{(0, 0, t_i)}=
\begin{bmatrix}
t_i  &   &  \\  &  &  \\  &  &
\end{bmatrix}

The $CORNER$ algorithm expands a fragment of the form $\mathcal{F}_{(0, 0, t)}$ (or any of its symmetries, $(2, 0), (0, 2), (2, 2)$).

    CORNER\langle\mathcal{F}_{(1, 1, t)}\rangle=
\begin{bmatrix}
    t & A=\mathcal{N}(t,2) & F=\mathcal{N}(b, 0)\cap \mathcal{N}(a, 1) \\
    B=\mathcal{N}(t,1) & C = \mathcal{N}(b, 0)\cap \mathcal{N}(a, 3) & D=\mathcal{N}(c,0) \\
    H=\mathcal{N}(b, 3)\cap \mathcal{N}(e, 2) & E=\mathcal{N}(c,3) & G=\mathcal{N}(e, 0)\cap \mathcal{N}(d, 3)
\end{bmatrix}

The $CORNER$ algorithm takes 4 steps:

  1. Compute $\{A, B\}$ directly from $t$
    1. select $\{a, b\}$ from $\{A, B\}$ respectively.
  2. Compute $C$ from $\mathcal{N}(b,0)\cap\mathcal{N}(a, 3)$
    1. select $c$ from $C$.
  3. Compute $\{D, E\}$ from $c$ directly
    1. select $\{d, e\}$ from $\{D, E\}$ respectively.
  4. Compute $\{F, G, H\}$ from $\mathcal{N}(b, 0)\cap\mathcal{N}(a, 1)$, $\mathcal{N}(e, 0)\cap\mathcal{N}(d, 3)$ and $\mathcal{N}(b, 3)\cap\mathcal{N}(e, 2)$ respectively
    1. select $\{f, g, h\}$ from $\{F, G, H\}$ respectively.