Last data update: 2014.03.03
R: Draw a 2D L-System Using Turtle Graphics
Draw a 2D L-System Using Turtle Graphics
Description
This function takes input strings, previously created with Lsys
,
translates them into 2D turtle graphics instructions, and then plots the results.
Usage
drawLsys(string = NULL, drules = NULL, st = c(5, 50, 0), stepSize = 1,
ang = 90, which = length(string), shrinkFactor = NULL, ...)
Arguments
string
A character vector giving the strings containing the turtle graphics
instructions. Created by Lsys
.
drules
A data frame containing columns "symbols" and "action". These contain the input
symbols and the corresponding drawing action. See the examples.
st
A numeric vector of length 3 giving the screen coordinates where
the start of the curve should be placed. The screen is 100 x 100 with the
lower left corner as 0,0. The third element is the initial drawing angle
in degrees.
stepSize
Numeric. The length of the drawing step.
ang
Numeric. The angle in degrees when a change in direction is requested.
which
Integer. The entries in string
which should be drawn. Defaults
to the last (most complex) entry. If length(which) > 1
each plot is drawn in
its own window.
shrinkFactor
A numeric vector of the same length as string
. As each
plot is made, stepSize
will be divided by the corresponding value in shrinkFactor
.
This allows one to scale down the increasingly large/complex plots to make them
occupy a space similar to the less complex plots.
...
Additional parameters to be passed to the grid
drawing routines.
Most likely, something of the form gp = gpar(...)
. See gpar
and the last example.
Value
None; side effect is a plot.
Warning
Remember that if retAll = TRUE
, Lsys
returns the initial string plus the results
of all iterations. In this case, if you want the 5th iteration, you should specify which = 6
since
the initial string is in string[1]
.
Examples
require('grid')
# Modified Koch curve
rkoch1 <- data.frame(inp = c("F"), out = c("F+F-F-F+F"), stringsAsFactors = FALSE)
k1 <- Lsys(init = "F", rules = rkoch1, n = 3)
dkoch <- data.frame(symbol = c("F", "f", "+", "-", "[", "]"),
action = c("F", "f", "+", "-", "[", "]"), stringsAsFactors = FALSE)
drawLsys(string = k1, stepSize = 3, st = c(10, 50, 0), drules = dkoch)
grid.text("Modified Koch Curve (n = 3)", 0.5, 0.25)
# Classic Koch snowflake
rkoch2 <- data.frame(inp = c("F"), out = c("F-F++F-F"), stringsAsFactors = FALSE)
k2 <- Lsys(init = "F++F++F", rules = rkoch2, n = 4)
drawLsys(string = k2, stepSize = 1, ang = 60, st = c(10, 25, 0), drules = dkoch)
grid.text("Classic Koch Snowflake (n = 4)", 0.5, 0.5)
# Sierpinski Triangle
rSierp <- data.frame(inp = c("A", "B"), out = c("B-A-B", "A+B+A"), stringsAsFactors = FALSE)
s <- Lsys(init = "A", rules = rSierp, n = 6)
dSierp <- data.frame(symbol = c("A", "B", "+", "-", "[", "]"),
action = c("F", "F", "+", "-", "[", "]"), stringsAsFactors = FALSE)
drawLsys(string = s, stepSize = 1, ang = 60, st = c(20, 25, 0), drules = dSierp)
grid.text("Sierpinski Triangle (n = 6)", 0.5, 0.1)
# Islands & Lakes
islands_rules <- data.frame(inp = c("F", "f"), out = c("F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF",
"ffffff"), stringsAsFactors = FALSE)
islands <- Lsys(init = "F+F+F+F", rules = islands_rules, n = 2)
draw_islands <- data.frame(symbol = c("F", "f", "+", "-", "[", "]"),
action = c("F", "f", "+", "-", "[", "]"), stringsAsFactors = FALSE)
drawLsys(string = islands, step = 1, ang = 90, st = c(70, 35, 90),
drules = draw_islands, gp = gpar(col = "red", fill = "gray"))
# A primitive tree
prim_rules <- data.frame(inp = c("0", "1"),
out = c("1[+0]-0", "11"), stringsAsFactors = FALSE)
primitive_plant <- Lsys(init = "0", rules = prim_rules, n = 7)
draw_prim <- data.frame(symbol = c("0", "1", "+", "-", "[", "]"),
action = c("F", "F", "+", "-", "[", "]"), stringsAsFactors = FALSE)
drawLsys(string = primitive_plant, stepSize = 1, ang = 45, st = c(50, 5, 90),
drules = draw_prim, which = 7)
grid.text("Primitive Tree (n = 6)", 0.5, 0.75)
# A more realistic botanical structure
# Some call this a fractal tree, I think it is more like seaweed
# Try drawing the last iteration (too slow for here, but looks great)
fractal_tree_rules <- data.frame(inp = c("X", "F"),
out = c("F-[[X]+X]+F[+FX]-X", "FF"), stringsAsFactors = FALSE)
fractal_tree <- Lsys(init = "X", rules = fractal_tree_rules, n = 7)
draw_ft <- data.frame(symbol = c("X", "F", "+", "-", "[", "]"),
action = c("f", "F", "+", "-", "[", "]"), stringsAsFactors = FALSE)
drawLsys(string = fractal_tree, stepSize = 2, ang = 25, st = c(50, 5, 90),
drules = draw_ft, which = 5, gp = gpar(col = "chocolate4", fill = "honeydew"))
grid.text("Fractal Seaweed (n = 4)", 0.25, 0.25)
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(LindenmayeR)
Loading required package: stringr
Loading required package: grid
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/LindenmayeR/drawLsys.Rd_%03d_medium.png", width=480, height=480)
> ### Name: drawLsys
> ### Title: Draw a 2D L-System Using Turtle Graphics
> ### Aliases: drawLsys
> ### Keywords: plot
>
> ### ** Examples
>
> require('grid')
>
> # Modified Koch curve
> rkoch1 <- data.frame(inp = c("F"), out = c("F+F-F-F+F"), stringsAsFactors = FALSE)
> k1 <- Lsys(init = "F", rules = rkoch1, n = 3)
Cycle 0 string has length 1
Cycle 0: F
[[1]]
start end
[1,] 1 1
[[1]]
start end insert
1 1 1 F+F-F-F+F
Cycle 1 string has length 9
Cycle 1: F+F-F-F+F
[[1]]
start end
[1,] 1 1
[2,] 3 3
[3,] 5 5
[4,] 7 7
[5,] 9 9
[[1]]
start end insert
1 1 1 F+F-F-F+F
2 3 3 F+F-F-F+F
3 5 5 F+F-F-F+F
4 7 7 F+F-F-F+F
5 9 9 F+F-F-F+F
Cycle 2 string has length 49
Cycle 2: F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F
[[1]]
start end
[1,] 1 1
[2,] 3 3
[3,] 5 5
[4,] 7 7
[5,] 9 9
[6,] 11 11
[7,] 13 13
[8,] 15 15
[9,] 17 17
[10,] 19 19
[11,] 21 21
[12,] 23 23
[13,] 25 25
[14,] 27 27
[15,] 29 29
[16,] 31 31
[17,] 33 33
[18,] 35 35
[19,] 37 37
[20,] 39 39
[21,] 41 41
[22,] 43 43
[23,] 45 45
[24,] 47 47
[25,] 49 49
[[1]]
start end insert
1 1 1 F+F-F-F+F
2 3 3 F+F-F-F+F
3 5 5 F+F-F-F+F
4 7 7 F+F-F-F+F
5 9 9 F+F-F-F+F
6 11 11 F+F-F-F+F
7 13 13 F+F-F-F+F
8 15 15 F+F-F-F+F
9 17 17 F+F-F-F+F
10 19 19 F+F-F-F+F
11 21 21 F+F-F-F+F
12 23 23 F+F-F-F+F
13 25 25 F+F-F-F+F
14 27 27 F+F-F-F+F
15 29 29 F+F-F-F+F
16 31 31 F+F-F-F+F
17 33 33 F+F-F-F+F
18 35 35 F+F-F-F+F
19 37 37 F+F-F-F+F
20 39 39 F+F-F-F+F
21 41 41 F+F-F-F+F
22 43 43 F+F-F-F+F
23 45 45 F+F-F-F+F
24 47 47 F+F-F-F+F
25 49 49 F+F-F-F+F
Cycle 3 string has length 249
Cycle 3: F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F+F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F-F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F-F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F+F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F
> dkoch <- data.frame(symbol = c("F", "f", "+", "-", "[", "]"),
+ action = c("F", "f", "+", "-", "[", "]"), stringsAsFactors = FALSE)
> drawLsys(string = k1, stepSize = 3, st = c(10, 50, 0), drules = dkoch)
> grid.text("Modified Koch Curve (n = 3)", 0.5, 0.25)
>
> # Classic Koch snowflake
> rkoch2 <- data.frame(inp = c("F"), out = c("F-F++F-F"), stringsAsFactors = FALSE)
> k2 <- Lsys(init = "F++F++F", rules = rkoch2, n = 4)
Cycle 0 string has length 7
Cycle 0: F++F++F
[[1]]
start end
[1,] 1 1
[2,] 4 4
[3,] 7 7
[[1]]
start end insert
1 1 1 F-F++F-F
2 4 4 F-F++F-F
3 7 7 F-F++F-F
Cycle 1 string has length 28
Cycle 1: F-F++F-F++F-F++F-F++F-F++F-F
[[1]]
start end
[1,] 1 1
[2,] 3 3
[3,] 6 6
[4,] 8 8
[5,] 11 11
[6,] 13 13
[7,] 16 16
[8,] 18 18
[9,] 21 21
[10,] 23 23
[11,] 26 26
[12,] 28 28
[[1]]
start end insert
1 1 1 F-F++F-F
2 3 3 F-F++F-F
3 6 6 F-F++F-F
4 8 8 F-F++F-F
5 11 11 F-F++F-F
6 13 13 F-F++F-F
7 16 16 F-F++F-F
8 18 18 F-F++F-F
9 21 21 F-F++F-F
10 23 23 F-F++F-F
11 26 26 F-F++F-F
12 28 28 F-F++F-F
Cycle 2 string has length 112
Cycle 2: F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F
[[1]]
start end
[1,] 1 1
[2,] 3 3
[3,] 6 6
[4,] 8 8
[5,] 10 10
[6,] 12 12
[7,] 15 15
[8,] 17 17
[9,] 20 20
[10,] 22 22
[11,] 25 25
[12,] 27 27
[13,] 29 29
[14,] 31 31
[15,] 34 34
[16,] 36 36
[17,] 39 39
[18,] 41 41
[19,] 44 44
[20,] 46 46
[21,] 48 48
[22,] 50 50
[23,] 53 53
[24,] 55 55
[25,] 58 58
[26,] 60 60
[27,] 63 63
[28,] 65 65
[29,] 67 67
[30,] 69 69
[31,] 72 72
[32,] 74 74
[33,] 77 77
[34,] 79 79
[35,] 82 82
[36,] 84 84
[37,] 86 86
[38,] 88 88
[39,] 91 91
[40,] 93 93
[41,] 96 96
[42,] 98 98
[43,] 101 101
[44,] 103 103
[45,] 105 105
[46,] 107 107
[47,] 110 110
[48,] 112 112
[[1]]
start end insert
1 1 1 F-F++F-F
2 3 3 F-F++F-F
3 6 6 F-F++F-F
4 8 8 F-F++F-F
5 10 10 F-F++F-F
6 12 12 F-F++F-F
7 15 15 F-F++F-F
8 17 17 F-F++F-F
9 20 20 F-F++F-F
10 22 22 F-F++F-F
11 25 25 F-F++F-F
12 27 27 F-F++F-F
13 29 29 F-F++F-F
14 31 31 F-F++F-F
15 34 34 F-F++F-F
16 36 36 F-F++F-F
17 39 39 F-F++F-F
18 41 41 F-F++F-F
19 44 44 F-F++F-F
20 46 46 F-F++F-F
21 48 48 F-F++F-F
22 50 50 F-F++F-F
23 53 53 F-F++F-F
24 55 55 F-F++F-F
25 58 58 F-F++F-F
26 60 60 F-F++F-F
27 63 63 F-F++F-F
28 65 65 F-F++F-F
29 67 67 F-F++F-F
30 69 69 F-F++F-F
31 72 72 F-F++F-F
32 74 74 F-F++F-F
33 77 77 F-F++F-F
34 79 79 F-F++F-F
35 82 82 F-F++F-F
36 84 84 F-F++F-F
37 86 86 F-F++F-F
38 88 88 F-F++F-F
39 91 91 F-F++F-F
40 93 93 F-F++F-F
41 96 96 F-F++F-F
42 98 98 F-F++F-F
43 101 101 F-F++F-F
44 103 103 F-F++F-F
45 105 105 F-F++F-F
46 107 107 F-F++F-F
47 110 110 F-F++F-F
48 112 112 F-F++F-F
Cycle 3 string has length 448
Cycle 3: F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F
[[1]]
start end
[1,] 1 1
[2,] 3 3
[3,] 6 6
[4,] 8 8
[5,] 10 10
[6,] 12 12
[7,] 15 15
[8,] 17 17
[9,] 20 20
[10,] 22 22
[11,] 25 25
[12,] 27 27
[13,] 29 29
[14,] 31 31
[15,] 34 34
[16,] 36 36
[17,] 38 38
[18,] 40 40
[19,] 43 43
[20,] 45 45
[21,] 47 47
[22,] 49 49
[23,] 52 52
[24,] 54 54
[25,] 57 57
[26,] 59 59
[27,] 62 62
[28,] 64 64
[29,] 66 66
[30,] 68 68
[31,] 71 71
[32,] 73 73
[33,] 76 76
[34,] 78 78
[35,] 81 81
[36,] 83 83
[37,] 85 85
[38,] 87 87
[39,] 90 90
[40,] 92 92
[41,] 95 95
[42,] 97 97
[43,] 100 100
[44,] 102 102
[45,] 104 104
[46,] 106 106
[47,] 109 109
[48,] 111 111
[49,] 113 113
[50,] 115 115
[51,] 118 118
[52,] 120 120
[53,] 122 122
[54,] 124 124
[55,] 127 127
[56,] 129 129
[57,] 132 132
[58,] 134 134
[59,] 137 137
[60,] 139 139
[61,] 141 141
[62,] 143 143
[63,] 146 146
[64,] 148 148
[65,] 151 151
[66,] 153 153
[67,] 156 156
[68,] 158 158
[69,] 160 160
[70,] 162 162
[71,] 165 165
[72,] 167 167
[73,] 170 170
[74,] 172 172
[75,] 175 175
[76,] 177 177
[77,] 179 179
[78,] 181 181
[79,] 184 184
[80,] 186 186
[81,] 188 188
[82,] 190 190
[83,] 193 193
[84,] 195 195
[85,] 197 197
[86,] 199 199
[87,] 202 202
[88,] 204 204
[89,] 207 207
[90,] 209 209
[91,] 212 212
[92,] 214 214
[93,] 216 216
[94,] 218 218
[95,] 221 221
[96,] 223 223
[97,] 226 226
[98,] 228 228
[99,] 231 231
[100,] 233 233
[101,] 235 235
[102,] 237 237
[103,] 240 240
[104,] 242 242
[105,] 245 245
[106,] 247 247
[107,] 250 250
[108,] 252 252
[109,] 254 254
[110,] 256 256
[111,] 259 259
[112,] 261 261
[113,] 263 263
[114,] 265 265
[115,] 268 268
[116,] 270 270
[117,] 272 272
[118,] 274 274
[119,] 277 277
[120,] 279 279
[121,] 282 282
[122,] 284 284
[123,] 287 287
[124,] 289 289
[125,] 291 291
[126,] 293 293
[127,] 296 296
[128,] 298 298
[129,] 301 301
[130,] 303 303
[131,] 306 306
[132,] 308 308
[133,] 310 310
[134,] 312 312
[135,] 315 315
[136,] 317 317
[137,] 320 320
[138,] 322 322
[139,] 325 325
[140,] 327 327
[141,] 329 329
[142,] 331 331
[143,] 334 334
[144,] 336 336
[145,] 338 338
[146,] 340 340
[147,] 343 343
[148,] 345 345
[149,] 347 347
[150,] 349 349
[151,] 352 352
[152,] 354 354
[153,] 357 357
[154,] 359 359
[155,] 362 362
[156,] 364 364
[157,] 366 366
[158,] 368 368
[159,] 371 371
[160,] 373 373
[161,] 376 376
[162,] 378 378
[163,] 381 381
[164,] 383 383
[165,] 385 385
[166,] 387 387
[167,] 390 390
[168,] 392 392
[169,] 395 395
[170,] 397 397
[171,] 400 400
[172,] 402 402
[173,] 404 404
[174,] 406 406
[175,] 409 409
[176,] 411 411
[177,] 413 413
[178,] 415 415
[179,] 418 418
[180,] 420 420
[181,] 422 422
[182,] 424 424
[183,] 427 427
[184,] 429 429
[185,] 432 432
[186,] 434 434
[187,] 437 437
[188,] 439 439
[189,] 441 441
[190,] 443 443
[191,] 446 446
[192,] 448 448
[[1]]
start end insert
1 1 1 F-F++F-F
2 3 3 F-F++F-F
3 6 6 F-F++F-F
4 8 8 F-F++F-F
5 10 10 F-F++F-F
6 12 12 F-F++F-F
7 15 15 F-F++F-F
8 17 17 F-F++F-F
9 20 20 F-F++F-F
10 22 22 F-F++F-F
11 25 25 F-F++F-F
12 27 27 F-F++F-F
13 29 29 F-F++F-F
14 31 31 F-F++F-F
15 34 34 F-F++F-F
16 36 36 F-F++F-F
17 38 38 F-F++F-F
18 40 40 F-F++F-F
19 43 43 F-F++F-F
20 45 45 F-F++F-F
21 47 47 F-F++F-F
22 49 49 F-F++F-F
23 52 52 F-F++F-F
24 54 54 F-F++F-F
25 57 57 F-F++F-F
26 59 59 F-F++F-F
27 62 62 F-F++F-F
28 64 64 F-F++F-F
29 66 66 F-F++F-F
30 68 68 F-F++F-F
31 71 71 F-F++F-F
32 73 73 F-F++F-F
33 76 76 F-F++F-F
34 78 78 F-F++F-F
35 81 81 F-F++F-F
36 83 83 F-F++F-F
37 85 85 F-F++F-F
38 87 87 F-F++F-F
39 90 90 F-F++F-F
40 92 92 F-F++F-F
41 95 95 F-F++F-F
42 97 97 F-F++F-F
43 100 100 F-F++F-F
44 102 102 F-F++F-F
45 104 104 F-F++F-F
46 106 106 F-F++F-F
47 109 109 F-F++F-F
48 111 111 F-F++F-F
49 113 113 F-F++F-F
50 115 115 F-F++F-F
51 118 118 F-F++F-F
52 120 120 F-F++F-F
53 122 122 F-F++F-F
54 124 124 F-F++F-F
55 127 127 F-F++F-F
56 129 129 F-F++F-F
57 132 132 F-F++F-F
58 134 134 F-F++F-F
59 137 137 F-F++F-F
60 139 139 F-F++F-F
61 141 141 F-F++F-F
62 143 143 F-F++F-F
63 146 146 F-F++F-F
64 148 148 F-F++F-F
65 151 151 F-F++F-F
66 153 153 F-F++F-F
67 156 156 F-F++F-F
68 158 158 F-F++F-F
69 160 160 F-F++F-F
70 162 162 F-F++F-F
71 165 165 F-F++F-F
72 167 167 F-F++F-F
73 170 170 F-F++F-F
74 172 172 F-F++F-F
75 175 175 F-F++F-F
76 177 177 F-F++F-F
77 179 179 F-F++F-F
78 181 181 F-F++F-F
79 184 184 F-F++F-F
80 186 186 F-F++F-F
81 188 188 F-F++F-F
82 190 190 F-F++F-F
83 193 193 F-F++F-F
84 195 195 F-F++F-F
85 197 197 F-F++F-F
86 199 199 F-F++F-F
87 202 202 F-F++F-F
88 204 204 F-F++F-F
89 207 207 F-F++F-F
90 209 209 F-F++F-F
91 212 212 F-F++F-F
92 214 214 F-F++F-F
93 216 216 F-F++F-F
94 218 218 F-F++F-F
95 221 221 F-F++F-F
96 223 223 F-F++F-F
97 226 226 F-F++F-F
98 228 228 F-F++F-F
99 231 231 F-F++F-F
100 233 233 F-F++F-F
101 235 235 F-F++F-F
102 237 237 F-F++F-F
103 240 240 F-F++F-F
104 242 242 F-F++F-F
105 245 245 F-F++F-F
106 247 247 F-F++F-F
107 250 250 F-F++F-F
108 252 252 F-F++F-F
109 254 254 F-F++F-F
110 256 256 F-F++F-F
111 259 259 F-F++F-F
112 261 261 F-F++F-F
113 263 263 F-F++F-F
114 265 265 F-F++F-F
115 268 268 F-F++F-F
116 270 270 F-F++F-F
117 272 272 F-F++F-F
118 274 274 F-F++F-F
119 277 277 F-F++F-F
120 279 279 F-F++F-F
121 282 282 F-F++F-F
122 284 284 F-F++F-F
123 287 287 F-F++F-F
124 289 289 F-F++F-F
125 291 291 F-F++F-F
126 293 293 F-F++F-F
127 296 296 F-F++F-F
128 298 298 F-F++F-F
129 301 301 F-F++F-F
130 303 303 F-F++F-F
131 306 306 F-F++F-F
132 308 308 F-F++F-F
133 310 310 F-F++F-F
134 312 312 F-F++F-F
135 315 315 F-F++F-F
136 317 317 F-F++F-F
137 320 320 F-F++F-F
138 322 322 F-F++F-F
139 325 325 F-F++F-F
140 327 327 F-F++F-F
141 329 329 F-F++F-F
142 331 331 F-F++F-F
143 334 334 F-F++F-F
144 336 336 F-F++F-F
145 338 338 F-F++F-F
146 340 340 F-F++F-F
147 343 343 F-F++F-F
148 345 345 F-F++F-F
149 347 347 F-F++F-F
150 349 349 F-F++F-F
151 352 352 F-F++F-F
152 354 354 F-F++F-F
153 357 357 F-F++F-F
154 359 359 F-F++F-F
155 362 362 F-F++F-F
156 364 364 F-F++F-F
157 366 366 F-F++F-F
158 368 368 F-F++F-F
159 371 371 F-F++F-F
160 373 373 F-F++F-F
161 376 376 F-F++F-F
162 378 378 F-F++F-F
163 381 381 F-F++F-F
164 383 383 F-F++F-F
165 385 385 F-F++F-F
166 387 387 F-F++F-F
167 390 390 F-F++F-F
168 392 392 F-F++F-F
169 395 395 F-F++F-F
170 397 397 F-F++F-F
171 400 400 F-F++F-F
172 402 402 F-F++F-F
173 404 404 F-F++F-F
174 406 406 F-F++F-F
175 409 409 F-F++F-F
176 411 411 F-F++F-F
177 413 413 F-F++F-F
178 415 415 F-F++F-F
179 418 418 F-F++F-F
180 420 420 F-F++F-F
181 422 422 F-F++F-F
182 424 424 F-F++F-F
183 427 427 F-F++F-F
184 429 429 F-F++F-F
185 432 432 F-F++F-F
186 434 434 F-F++F-F
187 437 437 F-F++F-F
188 439 439 F-F++F-F
189 441 441 F-F++F-F
190 443 443 F-F++F-F
191 446 446 F-F++F-F
192 448 448 F-F++F-F
Cycle 4 string has length 1792
Cycle 4: F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F
> drawLsys(string = k2, stepSize = 1, ang = 60, st = c(10, 25, 0), drules = dkoch)
> grid.text("Classic Koch Snowflake (n = 4)", 0.5, 0.5)
>
> # Sierpinski Triangle
> rSierp <- data.frame(inp = c("A", "B"), out = c("B-A-B", "A+B+A"), stringsAsFactors = FALSE)
> s <- Lsys(init = "A", rules = rSierp, n = 6)
Cycle 0 string has length 1
Cycle 0: A
[[1]]
start end
[1,] 1 1
[[1]]
start end insert
1 1 1 B-A-B
Cycle 1 string has length 5
Cycle 1: B-A-B
[[1]]
start end
[1,] 3 3
[[2]]
start end
[1,] 1 1
[2,] 5 5
[[1]]
start end insert
1 3 3 B-A-B
[[2]]
start end insert
1 1 1 A+B+A
2 5 5 A+B+A
Cycle 2 string has length 17
Cycle 2: A+B+A-B-A-B-A+B+A
[[1]]
start end
[1,] 1 1
[2,] 5 5
[3,] 9 9
[4,] 13 13
[5,] 17 17
[[2]]
start end
[1,] 3 3
[2,] 7 7
[3,] 11 11
[4,] 15 15
[[1]]
start end insert
1 1 1 B-A-B
2 5 5 B-A-B
3 9 9 B-A-B
4 13 13 B-A-B
5 17 17 B-A-B
[[2]]
start end insert
1 3 3 A+B+A
2 7 7 A+B+A
3 11 11 A+B+A
4 15 15 A+B+A
Cycle 3 string has length 53
Cycle 3: B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B
[[1]]
start end
[1,] 3 3
[2,] 7 7
[3,] 11 11
[4,] 15 15
[5,] 19 19
[6,] 23 23
[7,] 27 27
[8,] 31 31
[9,] 35 35
[10,] 39 39
[11,] 43 43
[12,] 47 47
[13,] 51 51
[[2]]
start end
[1,] 1 1
[2,] 5 5
[3,] 9 9
[4,] 13 13
[5,] 17 17
[6,] 21 21
[7,] 25 25
[8,] 29 29
[9,] 33 33
[10,] 37 37
[11,] 41 41
[12,] 45 45
[13,] 49 49
[14,] 53 53
[[1]]
start end insert
1 3 3 B-A-B
2 7 7 B-A-B
3 11 11 B-A-B
4 15 15 B-A-B
5 19 19 B-A-B
6 23 23 B-A-B
7 27 27 B-A-B
8 31 31 B-A-B
9 35 35 B-A-B
10 39 39 B-A-B
11 43 43 B-A-B
12 47 47 B-A-B
13 51 51 B-A-B
[[2]]
start end insert
1 1 1 A+B+A
2 5 5 A+B+A
3 9 9 A+B+A
4 13 13 A+B+A
5 17 17 A+B+A
6 21 21 A+B+A
7 25 25 A+B+A
8 29 29 A+B+A
9 33 33 A+B+A
10 37 37 A+B+A
11 41 41 A+B+A
12 45 45 A+B+A
13 49 49 A+B+A
14 53 53 A+B+A
Cycle 4 string has length 161
Cycle 4: A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A
[[1]]
start end
[1,] 1 1
[2,] 5 5
[3,] 9 9
[4,] 13 13
[5,] 17 17
[6,] 21 21
[7,] 25 25
[8,] 29 29
[9,] 33 33
[10,] 37 37
[11,] 41 41
[12,] 45 45
[13,] 49 49
[14,] 53 53
[15,] 57 57
[16,] 61 61
[17,] 65 65
[18,] 69 69
[19,] 73 73
[20,] 77 77
[21,] 81 81
[22,] 85 85
[23,] 89 89
[24,] 93 93
[25,] 97 97
[26,] 101 101
[27,] 105 105
[28,] 109 109
[29,] 113 113
[30,] 117 117
[31,] 121 121
[32,] 125 125
[33,] 129 129
[34,] 133 133
[35,] 137 137
[36,] 141 141
[37,] 145 145
[38,] 149 149
[39,] 153 153
[40,] 157 157
[41,] 161 161
[[2]]
start end
[1,] 3 3
[2,] 7 7
[3,] 11 11
[4,] 15 15
[5,] 19 19
[6,] 23 23
[7,] 27 27
[8,] 31 31
[9,] 35 35
[10,] 39 39
[11,] 43 43
[12,] 47 47
[13,] 51 51
[14,] 55 55
[15,] 59 59
[16,] 63 63
[17,] 67 67
[18,] 71 71
[19,] 75 75
[20,] 79 79
[21,] 83 83
[22,] 87 87
[23,] 91 91
[24,] 95 95
[25,] 99 99
[26,] 103 103
[27,] 107 107
[28,] 111 111
[29,] 115 115
[30,] 119 119
[31,] 123 123
[32,] 127 127
[33,] 131 131
[34,] 135 135
[35,] 139 139
[36,] 143 143
[37,] 147 147
[38,] 151 151
[39,] 155 155
[40,] 159 159
[[1]]
start end insert
1 1 1 B-A-B
2 5 5 B-A-B
3 9 9 B-A-B
4 13 13 B-A-B
5 17 17 B-A-B
6 21 21 B-A-B
7 25 25 B-A-B
8 29 29 B-A-B
9 33 33 B-A-B
10 37 37 B-A-B
11 41 41 B-A-B
12 45 45 B-A-B
13 49 49 B-A-B
14 53 53 B-A-B
15 57 57 B-A-B
16 61 61 B-A-B
17 65 65 B-A-B
18 69 69 B-A-B
19 73 73 B-A-B
20 77 77 B-A-B
21 81 81 B-A-B
22 85 85 B-A-B
23 89 89 B-A-B
24 93 93 B-A-B
25 97 97 B-A-B
26 101 101 B-A-B
27 105 105 B-A-B
28 109 109 B-A-B
29 113 113 B-A-B
30 117 117 B-A-B
31 121 121 B-A-B
32 125 125 B-A-B
33 129 129 B-A-B
34 133 133 B-A-B
35 137 137 B-A-B
36 141 141 B-A-B
37 145 145 B-A-B
38 149 149 B-A-B
39 153 153 B-A-B
40 157 157 B-A-B
41 161 161 B-A-B
[[2]]
start end insert
1 3 3 A+B+A
2 7 7 A+B+A
3 11 11 A+B+A
4 15 15 A+B+A
5 19 19 A+B+A
6 23 23 A+B+A
7 27 27 A+B+A
8 31 31 A+B+A
9 35 35 A+B+A
10 39 39 A+B+A
11 43 43 A+B+A
12 47 47 A+B+A
13 51 51 A+B+A
14 55 55 A+B+A
15 59 59 A+B+A
16 63 63 A+B+A
17 67 67 A+B+A
18 71 71 A+B+A
19 75 75 A+B+A
20 79 79 A+B+A
21 83 83 A+B+A
22 87 87 A+B+A
23 91 91 A+B+A
24 95 95 A+B+A
25 99 99 A+B+A
26 103 103 A+B+A
27 107 107 A+B+A
28 111 111 A+B+A
29 115 115 A+B+A
30 119 119 A+B+A
31 123 123 A+B+A
32 127 127 A+B+A
33 131 131 A+B+A
34 135 135 A+B+A
35 139 139 A+B+A
36 143 143 A+B+A
37 147 147 A+B+A
38 151 151 A+B+A
39 155 155 A+B+A
40 159 159 A+B+A
Cycle 5 string has length 485
Cycle 5: B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B
[[1]]
start end
[1,] 3 3
[2,] 7 7
[3,] 11 11
[4,] 15 15
[5,] 19 19
[6,] 23 23
[7,] 27 27
[8,] 31 31
[9,] 35 35
[10,] 39 39
[11,] 43 43
[12,] 47 47
[13,] 51 51
[14,] 55 55
[15,] 59 59
[16,] 63 63
[17,] 67 67
[18,] 71 71
[19,] 75 75
[20,] 79 79
[21,] 83 83
[22,] 87 87
[23,] 91 91
[24,] 95 95
[25,] 99 99
[26,] 103 103
[27,] 107 107
[28,] 111 111
[29,] 115 115
[30,] 119 119
[31,] 123 123
[32,] 127 127
[33,] 131 131
[34,] 135 135
[35,] 139 139
[36,] 143 143
[37,] 147 147
[38,] 151 151
[39,] 155 155
[40,] 159 159
[41,] 163 163
[42,] 167 167
[43,] 171 171
[44,] 175 175
[45,] 179 179
[46,] 183 183
[47,] 187 187
[48,] 191 191
[49,] 195 195
[50,] 199 199
[51,] 203 203
[52,] 207 207
[53,] 211 211
[54,] 215 215
[55,] 219 219
[56,] 223 223
[57,] 227 227
[58,] 231 231
[59,] 235 235
[60,] 239 239
[61,] 243 243
[62,] 247 247
[63,] 251 251
[64,] 255 255
[65,] 259 259
[66,] 263 263
[67,] 267 267
[68,] 271 271
[69,] 275 275
[70,] 279 279
[71,] 283 283
[72,] 287 287
[73,] 291 291
[74,] 295 295
[75,] 299 299
[76,] 303 303
[77,] 307 307
[78,] 311 311
[79,] 315 315
[80,] 319 319
[81,] 323 323
[82,] 327 327
[83,] 331 331
[84,] 335 335
[85,] 339 339
[86,] 343 343
[87,] 347 347
[88,] 351 351
[89,] 355 355
[90,] 359 359
[91,] 363 363
[92,] 367 367
[93,] 371 371
[94,] 375 375
[95,] 379 379
[96,] 383 383
[97,] 387 387
[98,] 391 391
[99,] 395 395
[100,] 399 399
[101,] 403 403
[102,] 407 407
[103,] 411 411
[104,] 415 415
[105,] 419 419
[106,] 423 423
[107,] 427 427
[108,] 431 431
[109,] 435 435
[110,] 439 439
[111,] 443 443
[112,] 447 447
[113,] 451 451
[114,] 455 455
[115,] 459 459
[116,] 463 463
[117,] 467 467
[118,] 471 471
[119,] 475 475
[120,] 479 479
[121,] 483 483
[[2]]
start end
[1,] 1 1
[2,] 5 5
[3,] 9 9
[4,] 13 13
[5,] 17 17
[6,] 21 21
[7,] 25 25
[8,] 29 29
[9,] 33 33
[10,] 37 37
[11,] 41 41
[12,] 45 45
[13,] 49 49
[14,] 53 53
[15,] 57 57
[16,] 61 61
[17,] 65 65
[18,] 69 69
[19,] 73 73
[20,] 77 77
[21,] 81 81
[22,] 85 85
[23,] 89 89
[24,] 93 93
[25,] 97 97
[26,] 101 101
[27,] 105 105
[28,] 109 109
[29,] 113 113
[30,] 117 117
[31,] 121 121
[32,] 125 125
[33,] 129 129
[34,] 133 133
[35,] 137 137
[36,] 141 141
[37,] 145 145
[38,] 149 149
[39,] 153 153
[40,] 157 157
[41,] 161 161
[42,] 165 165
[43,] 169 169
[44,] 173 173
[45,] 177 177
[46,] 181 181
[47,] 185 185
[48,] 189 189
[49,] 193 193
[50,] 197 197
[51,] 201 201
[52,] 205 205
[53,] 209 209
[54,] 213 213
[55,] 217 217
[56,] 221 221
[57,] 225 225
[58,] 229 229
[59,] 233 233
[60,] 237 237
[61,] 241 241
[62,] 245 245
[63,] 249 249
[64,] 253 253
[65,] 257 257
[66,] 261 261
[67,] 265 265
[68,] 269 269
[69,] 273 273
[70,] 277 277
[71,] 281 281
[72,] 285 285
[73,] 289 289
[74,] 293 293
[75,] 297 297
[76,] 301 301
[77,] 305 305
[78,] 309 309
[79,] 313 313
[80,] 317 317
[81,] 321 321
[82,] 325 325
[83,] 329 329
[84,] 333 333
[85,] 337 337
[86,] 341 341
[87,] 345 345
[88,] 349 349
[89,] 353 353
[90,] 357 357
[91,] 361 361
[92,] 365 365
[93,] 369 369
[94,] 373 373
[95,] 377 377
[96,] 381 381
[97,] 385 385
[98,] 389 389
[99,] 393 393
[100,] 397 397
[101,] 401 401
[102,] 405 405
[103,] 409 409
[104,] 413 413
[105,] 417 417
[106,] 421 421
[107,] 425 425
[108,] 429 429
[109,] 433 433
[110,] 437 437
[111,] 441 441
[112,] 445 445
[113,] 449 449
[114,] 453 453
[115,] 457 457
[116,] 461 461
[117,] 465 465
[118,] 469 469
[119,] 473 473
[120,] 477 477
[121,] 481 481
[122,] 485 485
[[1]]
start end insert
1 3 3 B-A-B
2 7 7 B-A-B
3 11 11 B-A-B
4 15 15 B-A-B
5 19 19 B-A-B
6 23 23 B-A-B
7 27 27 B-A-B
8 31 31 B-A-B
9 35 35 B-A-B
10 39 39 B-A-B
11 43 43 B-A-B
12 47 47 B-A-B
13 51 51 B-A-B
14 55 55 B-A-B
15 59 59 B-A-B
16 63 63 B-A-B
17 67 67 B-A-B
18 71 71 B-A-B
19 75 75 B-A-B
20 79 79 B-A-B
21 83 83 B-A-B
22 87 87 B-A-B
23 91 91 B-A-B
24 95 95 B-A-B
25 99 99 B-A-B
26 103 103 B-A-B
27 107 107 B-A-B
28 111 111 B-A-B
29 115 115 B-A-B
30 119 119 B-A-B
31 123 123 B-A-B
32 127 127 B-A-B
33 131 131 B-A-B
34 135 135 B-A-B
35 139 139 B-A-B
36 143 143 B-A-B
37 147 147 B-A-B
38 151 151 B-A-B
39 155 155 B-A-B
40 159 159 B-A-B
41 163 163 B-A-B
42 167 167 B-A-B
43 171 171 B-A-B
44 175 175 B-A-B
45 179 179 B-A-B
46 183 183 B-A-B
47 187 187 B-A-B
48 191 191 B-A-B
49 195 195 B-A-B
50 199 199 B-A-B
51 203 203 B-A-B
52 207 207 B-A-B
53 211 211 B-A-B
54 215 215 B-A-B
55 219 219 B-A-B
56 223 223 B-A-B
57 227 227 B-A-B
58 231 231 B-A-B
59 235 235 B-A-B
60 239 239 B-A-B
61 243 243 B-A-B
62 247 247 B-A-B
63 251 251 B-A-B
64 255 255 B-A-B
65 259 259 B-A-B
66 263 263 B-A-B
67 267 267 B-A-B
68 271 271 B-A-B
69 275 275 B-A-B
70 279 279 B-A-B
71 283 283 B-A-B
72 287 287 B-A-B
73 291 291 B-A-B
74 295 295 B-A-B
75 299 299 B-A-B
76 303 303 B-A-B
77 307 307 B-A-B
78 311 311 B-A-B
79 315 315 B-A-B
80 319 319 B-A-B
81 323 323 B-A-B
82 327 327 B-A-B
83 331 331 B-A-B
84 335 335 B-A-B
85 339 339 B-A-B
86 343 343 B-A-B
87 347 347 B-A-B
88 351 351 B-A-B
89 355 355 B-A-B
90 359 359 B-A-B
91 363 363 B-A-B
92 367 367 B-A-B
93 371 371 B-A-B
94 375 375 B-A-B
95 379 379 B-A-B
96 383 383 B-A-B
97 387 387 B-A-B
98 391 391 B-A-B
99 395 395 B-A-B
100 399 399 B-A-B
101 403 403 B-A-B
102 407 407 B-A-B
103 411 411 B-A-B
104 415 415 B-A-B
105 419 419 B-A-B
106 423 423 B-A-B
107 427 427 B-A-B
108 431 431 B-A-B
109 435 435 B-A-B
110 439 439 B-A-B
111 443 443 B-A-B
112 447 447 B-A-B
113 451 451 B-A-B
114 455 455 B-A-B
115 459 459 B-A-B
116 463 463 B-A-B
117 467 467 B-A-B
118 471 471 B-A-B
119 475 475 B-A-B
120 479 479 B-A-B
121 483 483 B-A-B
[[2]]
start end insert
1 1 1 A+B+A
2 5 5 A+B+A
3 9 9 A+B+A
4 13 13 A+B+A
5 17 17 A+B+A
6 21 21 A+B+A
7 25 25 A+B+A
8 29 29 A+B+A
9 33 33 A+B+A
10 37 37 A+B+A
11 41 41 A+B+A
12 45 45 A+B+A
13 49 49 A+B+A
14 53 53 A+B+A
15 57 57 A+B+A
16 61 61 A+B+A
17 65 65 A+B+A
18 69 69 A+B+A
19 73 73 A+B+A
20 77 77 A+B+A
21 81 81 A+B+A
22 85 85 A+B+A
23 89 89 A+B+A
24 93 93 A+B+A
25 97 97 A+B+A
26 101 101 A+B+A
27 105 105 A+B+A
28 109 109 A+B+A
29 113 113 A+B+A
30 117 117 A+B+A
31 121 121 A+B+A
32 125 125 A+B+A
33 129 129 A+B+A
34 133 133 A+B+A
35 137 137 A+B+A
36 141 141 A+B+A
37 145 145 A+B+A
38 149 149 A+B+A
39 153 153 A+B+A
40 157 157 A+B+A
41 161 161 A+B+A
42 165 165 A+B+A
43 169 169 A+B+A
44