Mark Dow

Geek art

Simple recursive systems and fractal patterns

3x3 boundary L-systems

   The simplest 3x3 replacement systems that result in connected curves.

 
Three symbol systems

Boundary 6, 6b
Boundary 7, 7b
Boundary quarter ellipse


Three symbol systems

    The more symmetric 3-symbol 3x3 systems that form a boundary.

Boundary 6, 6b

Boundary 6 algorithm graphic
Boundary 6 algorithm graphic
Boundary 6 by generation graphic
Boundary 6 system pattern, link to 7th generation
Boundary 6 system pattern
Boundary 6 average pattern, link to 7th generation
average across generations
Boundary 6 symmetry graphic
self-symmetries
Boundary 6 pattern Fourier transform, link to 7th generation
pattern DFT amplitudes, colored by phase
hue-phase scale bar
Boundary 6 pattern Fourier transform, link to 7th generation
average pattern DFT
Boundary 6b algorithm graphic
Boundary 6 algorithm graphic
Boundary 6 by generation graphic
Boundary 6b system pattern, link to 7th generation
Boundary 6b system pattern
Boundary 6b average pattern, link to 7th generation
average across generations
Boundary 6b symmetry graphic
self-symmetries
Boundary 6b pattern Fourier transform, link to 7th generation
pattern DFT amplitudes, colored by phase
hue-phase scale bar
Boundary 6b pattern Fourier transform, link to 7th generation
average pattern DFT


MATLAB command:
>> imOut = L_system_tiling( 'BD6',   [ng], 3, 1, 0, '', 0, [1 2 2; 2 0 2; 2 2 21], [0 10 0; 2 2 30; 2 2 0], [2 2 2; 2 2 2; 2 2 2] );
>> imOut = L_system_tiling( 'BD6b', [ng], 3, 1, 0, '', 1, [1 2 2; 2 0 2; 2 2 21], [0 10 0; 2 2 30; 2 2 0], [2 2 2; 2 2 2; 2 2 2] );
where [ng] is the number of generation



Boundary 6 array 1 algorithm graphic
Boundary 6 array 1 by generation graphic
Boundary 6 array1 system pattern, link to 6th generation
Boundary 6 array 1 system pattern


Boundary 6 array 2 algorithm graphic
Boundary 6 array 2 by generation graphic
Boundary 6 array 2 system pattern, link to 6th generation
Boundary 6 array 2 system pattern
Boundary 6 array 2 system pattern, link to 6th generation
Boundary 6b array 1 algorithm graphic
Boundary 6b array 1 by generation graphic
Boundary 6b array 1 system pattern, link to 6th generation
Boundary 6barray 1 system pattern


Boundary 6b array 2 algorithm graphic
Boundary 6b array 2 by generation graphic
Boundary 6b array 2 system pattern, link to 6th generation
Boundary 6barray 2 system pattern
Boundary 6b array 3 algorithm graphic
Boundary 6b array 3 by generation graphic
Boundary 6b array 3 system pattern, link to 6th generation
Boundary 6barray 3 system pattern
Boundary 6b array 3 system pattern, link to 6th generation

MATLAB command:
>> imOut = L_system_tiling'BD6arr1', [ng], 3, 1, 0, '', [0 0 0 0; 0 0 0 0; 0 0 0 0; 0 0 0 0], [1 2 2; 2 0 2; 2 2 21], [0 10 0; 2 2 30; 2 2 0], [2 2 2; 2 2 2; 2 2 2] );
>> imOut = L_system_tiling'BD6arr2', [ng], 3, 1, 0, '', [0 110 0 110; 110 0 110 0; 0 110 0 110; 110 0 110 0], [1 2 2; 2 0 2; 2 2 21], [0 10 0; 2 2 30; 2 2 0], [2 2 2; 2 2 2; 2 2 2] );
>> imOut = L_system_tiling'BD6barr1', [ng], 3, 1, 0, '', [1 1 1 1; 1 1 1 1; 1 1 1 1; 1 1 1 1], [1 2 2; 2 0 2; 2 2 21], [0 10 0; 2 2 30; 2 2 0], [2 2 2; 2 2 2; 2 2 2] );
>> imOut = L_system_tiling'BD6barr2', [ng], 3, 1, 0, '', [1 121 1 121; 121 1 121 1; 1 121 1 121; 121 1 121 1], [1 2 2; 2 0 2; 2 2 21], [0 10 0; 2 2 30; 2 2 0], [2 2 2; 2 2 2; 2 2 2] );
>> imOut = L_system_tiling'BD6barr3', [ng], 3, 1, 0, '', [1 111 1 111; 111 1 111 1; 1 111 1 111; 111 1 111 1], [1 2 2; 2 0 2; 2 2 21], [0 10 0; 2 2 30; 2 2 0], [2 2 2; 2 2 2; 2 2 2] );
where [ng] is the number of generation


Boundary 7, 7b

[To Do: Show combined symmetries.]

Boundary 7 algorithm graphic
Boundary 7 by generation graphic
Boundary 7 system pattern, link to 7th generation
Boundary 7 system pattern
Boundary 7 average pattern, link to 7th generation
average across generations
Boundary 7 symmetry graphic
self-symmetries
Boundary 7 pattern Fourier transform, link to 7th generation
pattern DFT amplitudes, colored by phase
hue-phase scale bar
Boundary 7 pattern Fourier transform, link to 7th generation
average pattern DFT
Boundary 7b algorithm graphic
Boundary 7 algorithm graphic
Boundary 7 by generation graphic
Boundary 7b system pattern, link to 7th generation
Boundary 7b system pattern
[To Do: The variations with horizontal mirror symmetry.]
Boundary 7b average pattern, link to 7th generation
average across generations
Boundary 7b symmetry graphic
self-symmetries
[To Do: Show combined symmetries.]
Boundary 7b pattern Fourier transform, link to 7th generation
pattern DFT amplitudes, colored by phase
hue-phase scale bar
Boundary 7b pattern Fourier transform, link to 7th generation
average pattern DFT


MATLAB command:
>> imOut = L_system_tiling( 'BD7', [ng], 3, 1, 0, '', 0, [1 2 2; 11 0 31; 2 2 21], [0 2 2; 2 1 2; 10 2 2], [2 2 2; 2 2 2; 2 2 2] );
>> imOut = L_system_tiling( 'BD7b', [ng], 3, 1, 0, '', 1, [1 2 2; 11 0 31; 2 2 21], [0 2 2; 2 1 2; 10 2 2], [2 2 2; 2 2 2; 2 2 2] );
where [ng] is the number of generation


Boundary quarter ellipse

    This system uses a single asymmetric motif to traverse a 3x3 through 7 of 9 cells. I don't think there are is another two symbol 3x3 system as dense, except space-filling systems that use two symbols without a termination symbol.
Boundary quarter ellipse algorithm graphic
Boundary quarter ellipse by generation graphic
Boundary quarter ellipse system pattern
Boundary quarter ellipse system pattern

Boundary quarter ellipse symmetry graphic
self-symmetries with this asymmetric motif



    Variations:
Boundary quarter ellipse algorithm graphic
Boundary quarter ellipse system pattern
Second generation
Boundary quarter ellipse algorithm graphic
Boundary quarter ellipse by generation graphic
half and half template
The first generation pattern extended to a half turn permute symmetric 4x4 initial condition, and exteneded to a square.

half and half mirage
A simple abstraction that maintains half-turn permute symmetry.



Boundary quarter ellipse

The second generation pattern, colored.
tristare
Tristare:
The third generation pattern, rotated and streched to a square.


  
Boundary quarter ellipse algorithm graphic

Boundary quarter ellipse system pattern, link to 3th generation
Boundary quarter ellipse system pattern, link to 3rd generation


Boundary quarter ellipse system Fourier transform, link to 3th generation
pattern DFT amplitudes, colored by phase
hue-phase scale bar



  Symbols only:
Boundary quarter ellipse algorithm graphic
(without an asymmetric motif;
half rotation == mirror,
half rotation and mirror == 1)
Boundary quarter ellipse by generation graphic
Boundary quarter ellipse system symbol pattern, link to 7th generation
Boundary quarter ellipse system pattern
Boundary quarter ellipse average symbol pattern, link to 7th generation
average across generations
Boundary quarter ellipse symbol symmetry graphic
self-symmetries
Boundary quarter ellipse system symbol Fourier transform, link to 7th generation
pattern DFT amplitudes, colored by phase
hue-phase scale bar
Boundary quarter ellipse system symbol average Fourier transform, link to 7th generation
average pattern DFT


MATLAB command:
>> imOut = L_system_tiling( 'BD', [ng], 2, 1, 0, 'trav_11_b_motif.png', 0,  [0 100 1; 120 100 120; 0 20 1], [1 1 1; 1 1 1; 1 1 1]  );
>> imOut = L_system_tiling( 'BD', [ng], 2, 1, 0, '2s_27x27_half-ellipse_motif.png', 0,  [0 100 1; 120 100 120; 0 20 1], [1 1 1; 1 1 1; 1 1 1]  );
>> imOut = L_system_tiling( 'BD', [ng], 2, 1, 0, '2s_27x27_half-ellipse_motif.png',  [ 1 0 100 1; 100 120 100 120; 1 120 20 1] [0 100 1; 120 100 120; 0 20 1], [1 1 1; 1 1 1; 1 1 1]  );
>> imOut = L_system_tiling( 'BD', [ng], 2, 1, 0, '2s_27x27_half-ellipse_motif.png',  [ 0 100; 120 20 ],  [0 100 1; 120 100 120; 0 20 1], [1 1 1; 1 1 1; 1 1 1]  );
>> imOut = L_system_tiling( 'BD', [ng], 2, 1, 0, '', 0,  [0 100 1; 120 100 120; 0 20 1], [1 1 1; 1 1 1; 1 1 1]  );
where [ng] is the number of generation




To Do:

L_system_tiling( 'BD', 5, 3, 1, 0, '', 1, [2 2 2; 30 20 10; 1 2 101], [2 30 20; 30 121 10; 0 10 2], [2 2 2; 2 2 2; 2 2 2] );
L_system_tiling( 'BD', 4, 3, 1, 0, '3s_3x3_a_clr_motif.png', [0;20], [0 2 0; 11 20 1; 1 2 101], [0 2 1; 121 101 121; 1 2 20], [2 2 2; 2 2 2; 2 2 2] );
L_system_tiling( 'BD', 2, 3, 1, 0, 'trav_pk_dg_b_motif.png', 1, [0 20 0; 101 20 1; 1 0 101], [0 20 1; 121 101 121; 1 0 20], [2 2 2; 2 2 2; 2 2 2] );


L_system_tiling( 'BD7c', 5, 3, 1, 0, '', 0, [1 2 2; 11 110 31; 2 2 21], [0 2 2; 2 1 2; 10 2 2], [2 2 2; 2 2 2; 2 2 2] );
L_system_tiling( 'BD8', 5, 3, 1, 0, '', 0, [1 31 2; 11 10 31; 2 11 21], [0 2 2; 2 1 2; 10 2 2], [2 2 2; 2 2 2; 2 2 2] );

(touching boundary)
L_system_tiling( 'TB1', 6, 3, 1, 0, '', 0, [1 31 2; 11 10 31; 2 11 21], [0 31 2; 2 2 1; 10 11 2], [2 2 2; 2 2 2; 2 2 2] );
    L_system_tiling( 'TB1', 6, 3, 1, 0, ''dz_zig_bl-18x18_motif.png'', 0, [1 31 2; 11 10 31; 2 11 21], [0 31 2; 2 2 1; 10 11 2], [2 2 2; 2 2 2; 2 2 2] );
    L_system_tiling( 'TBps1', 4, 3, 1, 0, 'dz_zig_bl-18x18_motif_d.png', 0, [1 31 2; 11 10 31; 2 11 21], [0 31 2; 2 2 1; 10 11 2], [2 2 2; 2 2 2; 2 2 2] );
L_system_tiling( 'TB2', 6, 3, 1, 0, '', 0, [1 10 1; 11 10 31; 21 30 21], [0 31 2; 2 2 1; 10 11 2], [2 2 2; 2 2 2; 2 2 2] );
L_system_tiling( 'TB3', 7, 3, 1, 0, '', 0, [1 10 1; 11 10 31; 21 30 21], [0 31 2; 2 2 1; 10 11 2], [2 2 2; 2 2 2; 2 2 2] );
L_system_tiling( 'TB4', 4, 3, 1, 0, 'diag_key_bl-9x9_motif.png', 0, [1 2 2; 2 0 2; 2 2 21], [0 10 0; 10 2 30; 0 10 0], [2 2 2; 2 2 2; 2 2 2] );

(space filling)
L_system_tiling( 'SF1', 2, 2, 1, 0, 'SF1_2s_motif.png', 0, [1 10 1; 11 10 31; 21 30 21], [1 30 1; 0 1 0; 31 10 11] );

[To Do: 2x2 boundary systems, new page.]
L_system_tiling( 'BD', 4, 8, 1, 0, '../motifs/ss_soc_ocs_7x7_8s_motif.png', [30 0; 20 10], [102 0; 4 12], [102 0; 5 12], [103 1; 6 113], [103 1; 7 113], [7 26; 0 7], [7 26; 7 7], [7 7; 0 7], [7 7; 7 7] ); % Can this be reduced? Is it better with a smaller motif?
L_system_tiling( 'BD', 8, 4, 1, 0, '../motifs/2x2_bd_4-5x5_b_motif.png', 0, [100 3; 2 1], [2 0; 20 22], [2 3; 2 3], [3 3; 3 3] ); % Gray code counting boundary
L_system_tiling( 'BD', 7, 4, 1, 0, '../motifs/2x2_bd_4-5x5_b_motif.png', 1, [100 3; 2 1], [2 0; 20 22], [1 3; 101 3], [3 3; 3 3] ); % Very Gray code boundary
L_system_tiling( 'BD', 9, 4, 1, 0, '../motifs/2x2_bd_4-3x3_b_motif.png', 1, [100 3; 2 1], [2 0; 20 22], [1 3; 101 3], [3 3; 3 3] );


L_system_tiling( 'BD', 6, 5, 1, 0, '../motifs/2x2_bd_5-5x5_b_motif.png', 1, [ 32 132; 123 23], [0 2; 4 10], [4 4; 1 4], [4 4; 20 133], [31 1; 21 11] );
L_system_tiling( 'BD', 6, 5, 1, 0, '../motifs/2x2_bd_5-5x5_d_motif.png', 1, [ 33 133; 123 23], [3 4; 22 133], [4 4; 1 4], [4 4; 20 133], [4 4; 4 4] );
L_system_tiling( 'BD', 6, 5, 1, 0, '../motifs/2x2_bd_5-5x5_b_motif.png', 1, [ 33 133; 123 23], [3 4; 22 133], [4 4; 1 4], [4 4; 20 133], [31 1; 21 11] );
L_system_tiling( 'BD', 6, 5, 1, 0, '../motifs/2x2_bd_5-5x5_b_motif.png', 1, [ 33 133; 123 23], [0 2; 4 10], [4 4; 1 4], [4 4; 20 133], [31 1; 21 11] );


% Note that rule 3 is not visited and should be removed (and changed to a 5 symbol system.
L_system_tiling( 'BD', 4, 6, 1, 0, '../motifs/2x2_bd_6-7x7_a_motif.png', 0, [ 32 2; 124 24], [0 2; 5 10], [5 5; 1 5], [5 5; 2 5], [5 5; 20 134], [5 5; 5 5] );
L_system_tiling( 'BD', 4, 6, 1, 0, '../motifs/2x2_bd_6-7x7_b_motif.png', 1, [ 32 2; 124 24], [0 2; 5 10], [5 5; 1 5], [5 5; 2 5], [5 5; 20 134], [31 1; 21 11] );

L_system_tiling( 'BD', 4, 3, 1, 0, '../motifs/2x2_bd_3-trav_a_motif.png', 1, [ 1 111; 131 21], [2 101; 110 31], [2 2; 2 2] );

% Center double symmetric
L_system_tiling( 'BD', 5, 4, 1, 0, '4s_5x5_a_motif.png', 0, [3 31 1; 1 10 21; 21 11 3], [3 31 1; 0 12 11; 3 10 3], [3 21 1; 1 3 21; 21 1 3], [3 3 3; 3 3 3; 3 3 3] );
L_system_tiling( 'BD', 4, 4, 1, 0, '4s_5x5_a_motif.png', 0, [3 31 1; 1 10 21; 21 11 3], [3 31 1; 0 12 11; 3 10 3], [3 10 3; 0 2 0; 3 10 3], [3 3 3; 3 3 3; 3 3 3] );

% fractal quarter spiral
L_system_tiling( 'BD', 4, 3, 1, 0, '3s_15x15_a_motif.png', 0, [11 1 21; 31 10 11; 1 21 31], [1 101 2; 121 101 121; 1 21 2], [2 2 2; 2 2 2; 2 2 2] );

% 3-symbol 3x3 spiral
L_system_tiling( 'SP', 4, 3, 1, 0, '3s_5x5_a_motif.png', 0, [11 1 21; 31 10 11; 1 21 31], [2 2 2; 2 2 1; 1 21 2], [2 2 2; 2 2 2; 2 2 2] );

------------------------------------
There are no restrictions on use of the images on this page. Claiming to be the originator of the material, explicitly or implicitly, is bad
karma. A link (if appropriate), a note to dow[at]uoregon.edu, and credit are appreciated but not required.

Comments are welcome (dow[at]uoregon.edu).