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

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

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

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

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

The $SIDE$ algorithm takes three steps:

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