-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpythagoras-tree.nb
6842 lines (6801 loc) · 392 KB
/
pythagoras-tree.nb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
(* Content-type: application/vnd.wolfram.mathematica *)
(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)
(* CreatedBy='Mathematica 10.4' *)
(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[ 158, 7]
NotebookDataLength[ 394750, 6834]
NotebookOptionsPosition[ 393227, 6778]
NotebookOutlinePosition[ 393570, 6793]
CellTagsIndexPosition[ 393527, 6790]
WindowFrame->Normal*)
(* Beginning of Notebook Content *)
Notebook[{
Cell[CellGroupData[{
Cell["Pythagoras Tree", "Title",
CellChangeTimes->{{3.776600831050974*^9, 3.7766008318453026`*^9}, {
3.7766410080375385`*^9, 3.776641012100668*^9}}],
Cell["Adam Rumpf, 1/6/2016", "Text",
CellChangeTimes->{{3.7766008347881403`*^9, 3.776600838290375*^9}, {
3.776641123862254*^9, 3.776641125807254*^9}}],
Cell[CellGroupData[{
Cell["Introduction", "Section",
CellChangeTimes->{{3.7766008459498987`*^9, 3.776600848547045*^9}}],
Cell["\<\
A Pythagoras tree is a fractal generated by iteratively by beginning with one \
square, and then repeatedly stacking two smaller squares on top of every \
square in the most recent generation, leaning against each other and meeting \
at their corner. The relative sizes of the two boxes can be adjusted to yield \
different shapes of tree.\
\>", "Text",
CellChangeTimes->{{3.776600856235587*^9, 3.776600860481224*^9}, {
3.7766413548209915`*^9, 3.7766414304407253`*^9}}],
Cell[TextData[{
"The main function defined below, ",
StyleBox["pythagorastree[]", "Code"],
", accepts variable numbers of arguments to generate a Pythagoras tree. If \
given only an integer, it will generate a wireframe symmetric tree with the \
specified number of iterations. The optional second argument selects the \
ratio of the side lengths of the left and right child squares, respectively \
(so ",
Cell[BoxData[
FormBox["1", TraditionalForm]],
FormatType->"TraditionalForm"],
" is symmetric, ",
Cell[BoxData[
FormBox[
RowBox[{">", "1"}], TraditionalForm]],
FormatType->"TraditionalForm"],
" makes left larger, and ",
Cell[BoxData[
FormBox[
RowBox[{"<", "1"}], TraditionalForm]],
FormatType->"TraditionalForm"],
" makes right larger). The third argument is a boolean value to select \
whether to fillin the boxes (defaults to False for wireframe, while True is \
solid fill). The fourth argument is a pair of triples specifying the initial \
and final RGB vectors, respectively, and causes the shading to smoothly fade \
from one to the other as the generations advance. The fifth argument is a \
pair of initial and final opacity values, and causes the opacity to smoothly \
fade from one to the other as the generations advance."
}], "Text",
CellChangeTimes->{{3.7766415169153233`*^9, 3.7766418679808416`*^9}}]
}, Open ]],
Cell[CellGroupData[{
Cell["Code", "Section",
CellChangeTimes->{{3.776600864408964*^9, 3.7766008650447807`*^9}}],
Cell[CellGroupData[{
Cell["Initialization", "Subsection",
CellChangeTimes->{{3.776600871130811*^9, 3.776600873087188*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
RowBox[{
RowBox[{"left", "[",
RowBox[{"tl", ",", "len", ",", "\[Theta]"}], "]"}], " ", "accepts", " ",
"the", " ", "coordinates", " ", "of", " ", "a", " ", "top", " ", "left",
" ", "corner"}], ",", " ",
RowBox[{"a", " ", "length"}], ",", " ",
RowBox[{"and", " ", "an", " ", "angle"}], ",", " ",
RowBox[{
"and", " ", "returns", " ", "the", " ", "coordinates", " ", "of", " ",
"the", " ", "corners", " ", "of", " ", "the", " ", "left", " ", "child",
" ",
RowBox[{"square", "."}]}]}], " ", "*)"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"left", "[",
RowBox[{"tl_", ",", "len_", ",", "\[Theta]_"}], "]"}], ":=",
RowBox[{"{",
RowBox[{"tl", ",",
RowBox[{"tl", "+",
RowBox[{"len",
RowBox[{"{",
RowBox[{
RowBox[{"Cos", "[", "\[Theta]", "]"}], ",",
RowBox[{"Sin", "[", "\[Theta]", "]"}]}], "}"}]}]}], ",",
RowBox[{"tl", "+",
RowBox[{"len",
SqrtBox["2"],
RowBox[{"{",
RowBox[{
RowBox[{"Cos", "[",
RowBox[{"\[Theta]", "+",
FractionBox["\[Pi]", "4"]}], "]"}], ",",
RowBox[{"Sin", "[",
RowBox[{"\[Theta]", "+",
FractionBox["\[Pi]", "4"]}], "]"}]}], "}"}]}]}], ",",
RowBox[{"tl", "+",
RowBox[{"len",
RowBox[{"{",
RowBox[{
RowBox[{"Cos", "[",
RowBox[{"\[Theta]", "+",
FractionBox["\[Pi]", "2"]}], "]"}], ",",
RowBox[{"Sin", "[",
RowBox[{"\[Theta]", "+",
FractionBox["\[Pi]", "2"]}], "]"}]}], "}"}]}]}], ",", "tl"}],
"}"}]}], ";"}]}]], "Input",
CellChangeTimes->{{3.7766008761831923`*^9, 3.776600882799075*^9},
3.7766414527279806`*^9}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
RowBox[{
RowBox[{"right", "[",
RowBox[{"tr", ",", "len", ",", "\[Theta]"}], "]"}], " ", "accepts", " ",
"the", " ", "coordinates", " ", "of", " ", "a", " ", "top", " ",
"right", " ", "corner"}], ",", " ",
RowBox[{"a", " ", "length"}], ",", " ",
RowBox[{"and", " ", "an", " ", "angle"}], ",", " ",
RowBox[{
"and", " ", "returns", " ", "the", " ", "coordinates", " ", "of", " ",
"the", " ", "corners", " ", "of", " ", "the", " ", "right", " ", "child",
" ",
RowBox[{"square", "."}]}]}], " ", "*)"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"right", "[",
RowBox[{"tr_", ",", "len_", ",", "\[Theta]_"}], "]"}], ":=",
RowBox[{"{",
RowBox[{
RowBox[{"tr", "-",
RowBox[{"len",
RowBox[{"{",
RowBox[{
RowBox[{"Cos", "[", "\[Theta]", "]"}], ",",
RowBox[{"Sin", "[", "\[Theta]", "]"}]}], "}"}]}]}], ",", "tr", ",",
RowBox[{"tr", "-",
RowBox[{"len",
RowBox[{"{",
RowBox[{
RowBox[{"Cos", "[",
RowBox[{"\[Theta]", "-",
FractionBox["\[Pi]", "2"]}], "]"}], ",",
RowBox[{"Sin", "[",
RowBox[{"\[Theta]", "-",
FractionBox["\[Pi]", "2"]}], "]"}]}], "}"}]}]}], ",",
RowBox[{"tr", "-",
RowBox[{"len",
SqrtBox["2"],
RowBox[{"{",
RowBox[{
RowBox[{"Cos", "[",
RowBox[{"\[Theta]", "-",
FractionBox["\[Pi]", "4"]}], "]"}], ",",
RowBox[{"Sin", "[",
RowBox[{"\[Theta]", "-",
FractionBox["\[Pi]", "4"]}], "]"}]}], "}"}]}]}], ",",
RowBox[{"tr", "-",
RowBox[{"len",
RowBox[{"{",
RowBox[{
RowBox[{"Cos", "[", "\[Theta]", "]"}], ",",
RowBox[{"Sin", "[", "\[Theta]", "]"}]}], "}"}]}]}]}], "}"}]}],
";"}]}]], "Input",
CellChangeTimes->{{3.6595582357842364`*^9, 3.65955829520041*^9}, {
3.6595585083505783`*^9, 3.6595586634374423`*^9}, {3.6595587150615864`*^9,
3.6595589684094734`*^9}, 3.659559008346676*^9, {3.6595590555781126`*^9,
3.65955932806184*^9}, {3.659570604095045*^9, 3.6595706048767295`*^9}, {
3.659575692805735*^9, 3.6595757578230276`*^9}, {3.6595758596455283`*^9,
3.6595759877104764`*^9}, {3.65957734386141*^9, 3.6595773783392286`*^9},
3.659577444591051*^9, {3.659577519359599*^9, 3.6595775213759775`*^9}, {
3.659577648660577*^9, 3.6595776539744673`*^9}, {3.6595779860695944`*^9,
3.659578038125187*^9}, {3.6595780698516784`*^9, 3.659578107376319*^9}, {
3.659578142369326*^9, 3.659578167928322*^9}, {3.659578208453906*^9,
3.6595782307105446`*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
RowBox[{"interpolate", "[",
RowBox[{"x", ",", "y", ",", "n"}], "]"}], " ", "gives", " ", "a", " ",
"list", " ", "of", " ", "n", " ", "numbers", " ", "linearly", " ",
"interpolated", " ", "between", " ", "x", " ", "and", " ",
RowBox[{"y", "."}]}], " ", "*)"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"interpolate", "[",
RowBox[{"x_", ",", "y_", ",", "n_"}], "]"}], ":=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"N", "[",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"1", "-", "t"}], ")"}], "x"}], "+",
RowBox[{"t", " ", "y"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"t", ",", "0", ",", "1", ",",
FractionBox["1",
RowBox[{"n", "-", "1"}]]}], "}"}]}], "]"}]}], ";"}]}]], "Input",
CellChangeTimes->{{3.659744441797007*^9, 3.6597445874202986`*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
RowBox[{
RowBox[{"rgbint", "[",
RowBox[{"col1", ",", "col2", ",", "n"}], "]"}], " ", "gives", " ", "a",
" ", "list", " ", "of", " ", "n", " ", "colors", " ", "whose", " ",
"extremes", " ", "are", " ", "col1", " ", "and", " ", "col2"}], ",", " ",
RowBox[{
"with", " ", "all", " ", "other", " ", "elements", " ", "varying", " ",
"linearly", " ", "between", " ", "the", " ",
RowBox[{"two", ".", " ", "The"}], " ", "color", " ", "inputs", " ",
"are", " ", "triples", " ", "of", " ", "RGB", " ",
RowBox[{"values", "."}]}]}], " ", "*)"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"rgbint", "[",
RowBox[{"col1_", ",", "col2_", ",", "n_"}], "]"}], ":=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"RGBColor", "[",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"1", "-", "t"}], ")"}],
RowBox[{"col1", "[",
RowBox[{"[", "1", "]"}], "]"}]}], "+",
RowBox[{"t", " ",
RowBox[{"col2", "[",
RowBox[{"[", "1", "]"}], "]"}]}]}], ",",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"1", "-", "t"}], ")"}],
RowBox[{"col1", "[",
RowBox[{"[", "2", "]"}], "]"}]}], "+",
RowBox[{"t", " ",
RowBox[{"col2", "[",
RowBox[{"[", "2", "]"}], "]"}]}]}], ",",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"1", "-", "t"}], ")"}],
RowBox[{"col1", "[",
RowBox[{"[", "3", "]"}], "]"}]}], "+",
RowBox[{"t", " ",
RowBox[{"col2", "[",
RowBox[{"[", "3", "]"}], "]"}]}]}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"t", ",", "0", ",", "1", ",",
FractionBox["1",
RowBox[{"n", "-", "1"}]]}], "}"}]}], "]"}]}], ";"}]}]], "Input",
CellChangeTimes->{{3.659579039718624*^9, 3.6595791026256065`*^9}, {
3.6595791508444643`*^9, 3.6595793415971766`*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"pythagorastree", "[",
RowBox[{"n", ",", "r", ",", "solid", ",", "col", ",", "opac"}], "]"}],
" ", "generates", " ", "an", " ", "outline", " ", "Pythagoras", " ",
"tree", " ", "with", " ", "n", " ", "iterations", " ", "and", " ", "a",
" ", "ratio", " ", "between", " ", "the", " ", "left"}], "-", " ",
RowBox[{"and", " ", "right"}], "-",
RowBox[{"child", " ", "sizes", " ", "of", " ",
RowBox[{"r", ".", " ", "solid"}], " ", "stores", " ", "whether", " ",
"the", " ", "squares", " ", "should", " ", "be", " ", "solid"}]}], ",",
" ",
RowBox[{
"col", " ", "stores", " ", "the", " ", "starting", " ", "and", " ",
"ending", " ", "colors"}], ",", " ",
RowBox[{
"while", " ", "opac", " ", "stores", " ", "the", " ", "starting", " ",
"and", " ", "ending", " ",
RowBox[{"opacities", "."}]}]}], " ", "*)"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"pythagorastree", "[",
RowBox[{"n_", ",",
RowBox[{"r_:", "1"}], ",",
RowBox[{"solid_:", "False"}], ",",
RowBox[{"col_:",
RowBox[{"{",
RowBox[{
RowBox[{"{",
RowBox[{"0", ",", "0", ",", "0"}], "}"}], ",",
RowBox[{"{",
RowBox[{"0", ",", "0", ",", "0"}], "}"}]}], "}"}]}], ",",
RowBox[{"opac_:",
RowBox[{"{",
RowBox[{"1", ",", "1"}], "}"}]}]}], "]"}], ":=",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{
"squares", ",", "i", ",", "old", ",", " ", "new", ",", "\[Theta]l",
",", "\[Theta]r", ",", "angles", ",", "anglesold", ",", "lengths",
",", "lengthsold", ",", "collist", ",", "opaclist", ",", "g"}], "}"}],
",", "\[IndentingNewLine]",
RowBox[{"(*", " ",
RowBox[{"squares", " ", "=", " ",
RowBox[{
RowBox[{
"list", " ", "of", " ", "coordinates", " ", "of", " ", "each", " ",
"square", "\[IndentingNewLine]", "i"}], " ", "=", " ",
RowBox[{
RowBox[{"current", " ", "layer", "\[IndentingNewLine]", "old"}],
" ", "=", " ",
RowBox[{
RowBox[{
"list", " ", "of", " ", "squares", " ", "from", " ", "the", " ",
"last", " ", "iteration", " ",
RowBox[{"(", "parents", ")"}], "\[IndentingNewLine]", "new"}],
" ", "=", " ",
RowBox[{
RowBox[{
RowBox[{"list", " ", "of", " ", "newly"}], "-",
RowBox[{"generates", " ", "squares", " ",
RowBox[{"(", "children", ")"}], "\[IndentingNewLine]",
"\[Theta]", "*"}]}], " ", "=", " ",
RowBox[{
RowBox[{"*", " ", "angle", "\[IndentingNewLine]", "angles"}],
" ", "=", " ",
RowBox[{
RowBox[{
"list", " ", "of", " ", "all", " ", "new", " ", "top", " ",
"edge", " ", "angles", "\[IndentingNewLine]", "anglesold"}],
" ", "=", " ",
RowBox[{
RowBox[{
"list", " ", "of", " ", "all", " ", "old", " ", "top", " ",
"endge", " ", "angles", "\[IndentingNewLine]", "lengths"}],
" ", "=", " ",
RowBox[{
RowBox[{
"list", " ", "of", " ", "all", " ", "new", " ", "lengths",
"\[IndentingNewLine]", "lengthsold"}], " ", "=", " ",
RowBox[{
RowBox[{
"list", " ", "of", " ", "all", " ", "old", " ", "lengths",
"\[IndentingNewLine]", "collist"}], " ", "=", " ",
RowBox[{
RowBox[{
"list", " ", "of", " ", "colors", " ", "to", " ", "use",
"\[IndentingNewLine]", "opaclist"}], " ", "=", " ",
RowBox[{
RowBox[{
"list", " ", "of", " ", "opacities", " ", "to", " ", "use",
"\[IndentingNewLine]", "g"}], " ", "=", " ",
RowBox[{
"line", " ", "or", " ",
"polygon"}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "*)"}],
"\[IndentingNewLine]",
RowBox[{
RowBox[{"collist", "=",
RowBox[{"rgbint", "[",
RowBox[{
RowBox[{"col", "[",
RowBox[{"[", "1", "]"}], "]"}], ",",
RowBox[{"col", "[",
RowBox[{"[", "2", "]"}], "]"}], ",",
RowBox[{"n", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"opaclist", "=",
RowBox[{"interpolate", "[",
RowBox[{
RowBox[{"opac", "[",
RowBox[{"[", "1", "]"}], "]"}], ",",
RowBox[{"opac", "[",
RowBox[{"[", "2", "]"}], "]"}], ",",
RowBox[{"n", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"If", "[",
RowBox[{
RowBox[{"solid", "\[Equal]", "True"}], ",", "\[IndentingNewLine]",
RowBox[{
RowBox[{"g", "[", "x_", "]"}], ":=",
RowBox[{"Polygon", "[", "x", "]"}]}], ",", "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"g", "[", "x_", "]"}], ":=",
RowBox[{"Line", "[", "x", "]"}]}], ";"}]}], "\[IndentingNewLine]",
"]"}], ";", "\[IndentingNewLine]",
RowBox[{"squares", "=",
RowBox[{"{",
RowBox[{
RowBox[{"collist", "[",
RowBox[{"[", "1", "]"}], "]"}], ",",
RowBox[{"Opacity", "[",
RowBox[{"opaclist", "[",
RowBox[{"[", "1", "]"}], "]"}], "]"}], ",",
RowBox[{"g", "[",
RowBox[{"{",
RowBox[{
RowBox[{"{",
RowBox[{"0", ",", "0"}], "}"}], ",",
RowBox[{"{",
RowBox[{"1", ",", "0"}], "}"}], ",",
RowBox[{"{",
RowBox[{"1", ",", "1"}], "}"}], ",",
RowBox[{"{",
RowBox[{"0", ",", "1"}], "}"}], ",",
RowBox[{"{",
RowBox[{"0", ",", "0"}], "}"}]}], "}"}], "]"}]}], "}"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"\[Theta]r", "=",
RowBox[{"ArcTan", "[", "r", "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"\[Theta]l", "=",
RowBox[{
FractionBox["\[Pi]", "2"], "-", "\[Theta]r"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"anglesold", "=",
RowBox[{"{", "0", "}"}]}], ";", "\[IndentingNewLine]",
RowBox[{"lengthsold", "=",
RowBox[{"{", "1", "}"}]}], ";", "\[IndentingNewLine]",
RowBox[{"old", "=",
RowBox[{"{",
RowBox[{"{",
RowBox[{
RowBox[{"{",
RowBox[{"0", ",", "0"}], "}"}], ",",
RowBox[{"{",
RowBox[{"1", ",", "0"}], "}"}], ",",
RowBox[{"{",
RowBox[{"1", ",", "1"}], "}"}], ",",
RowBox[{"{",
RowBox[{"0", ",", "1"}], "}"}], ",",
RowBox[{"{",
RowBox[{"0", ",", "0"}], "}"}]}], "}"}], "}"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"For", "[",
RowBox[{
RowBox[{"i", "=", "1"}], ",",
RowBox[{"i", "\[LessEqual]", "n"}], ",",
RowBox[{"i", "++"}], ",", "\[IndentingNewLine]",
RowBox[{
RowBox[{"angles", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"OddQ", "[", "k", "]"}], "\[Equal]", "True"}], ",",
RowBox[{"N", "[",
RowBox[{"Mod", "[",
RowBox[{
RowBox[{
RowBox[{"anglesold", "[",
RowBox[{"[",
FractionBox[
RowBox[{"k", "+", "1"}], "2"], "]"}], "]"}], "+",
"\[Theta]l"}], ",",
RowBox[{"2", "\[Pi]"}]}], "]"}], "]"}], ",",
RowBox[{"N", "[",
RowBox[{"Mod", "[",
RowBox[{
RowBox[{
RowBox[{"anglesold", "[",
RowBox[{"[",
FractionBox["k", "2"], "]"}], "]"}], "-", "\[Theta]r"}],
",",
RowBox[{"2", "\[Pi]"}]}], "]"}], "]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"k", ",", "1", ",",
SuperscriptBox["2", "i"]}], "}"}]}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"lengths", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"OddQ", "[", "k", "]"}], "\[Equal]", "True"}], ",",
RowBox[{"N", "[",
FractionBox[
RowBox[{"r", " ",
RowBox[{"lengthsold", "[",
RowBox[{"[",
FractionBox[
RowBox[{"k", "+", "1"}], "2"], "]"}], "]"}]}],
SqrtBox[
RowBox[{
SuperscriptBox["r", "2"], "+", "1"}]]], "]"}], ",",
RowBox[{"N", "[",
FractionBox[
RowBox[{"lengthsold", "[",
RowBox[{"[",
FractionBox["k", "2"], "]"}], "]"}],
SqrtBox[
RowBox[{
SuperscriptBox["r", "2"], "+", "1"}]]], "]"}]}], "]"}],
",",
RowBox[{"{",
RowBox[{"k", ",", "1", ",",
SuperscriptBox["2", "i"]}], "}"}]}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"new", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"OddQ", "[", "k", "]"}], "\[Equal]", "True"}], ",",
RowBox[{"left", "[",
RowBox[{
RowBox[{"old", "[",
RowBox[{"[",
RowBox[{
FractionBox[
RowBox[{"k", "+", "1"}], "2"], ",", "4"}], "]"}], "]"}],
",",
RowBox[{"lengths", "[",
RowBox[{"[", "k", "]"}], "]"}], ",",
RowBox[{"angles", "[",
RowBox[{"[", "k", "]"}], "]"}]}], "]"}], ",",
RowBox[{"right", "[",
RowBox[{
RowBox[{"old", "[",
RowBox[{"[",
RowBox[{
FractionBox["k", "2"], ",", "3"}], "]"}], "]"}], ",",
RowBox[{"lengths", "[",
RowBox[{"[", "k", "]"}], "]"}], ",",
RowBox[{"angles", "[",
RowBox[{"[", "k", "]"}], "]"}]}], "]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"k", ",", "1", ",",
SuperscriptBox["2", "i"]}], "}"}]}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"anglesold", "=", "angles"}], ";", "\[IndentingNewLine]",
RowBox[{"lengthsold", "=", "lengths"}], ";", "\[IndentingNewLine]",
RowBox[{"old", "=", "new"}], ";", "\[IndentingNewLine]",
RowBox[{"squares", "=",
RowBox[{"Join", "[",
RowBox[{"squares", ",",
RowBox[{"{",
RowBox[{
RowBox[{"collist", "[",
RowBox[{"[",
RowBox[{"i", "+", "1"}], "]"}], "]"}], ",",
RowBox[{"Opacity", "[",
RowBox[{"opaclist", "[",
RowBox[{"[",
RowBox[{"i", "+", "1"}], "]"}], "]"}], "]"}], ",",
RowBox[{"g", "[", "new", "]"}]}], "}"}]}], "]"}]}], ";"}]}],
"\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]",
RowBox[{"Graphics", "[", "squares", "]"}]}]}], "\[IndentingNewLine]",
"]"}]}], ";"}]}]], "Input",
CellChangeTimes->CompressedData["
1:eJwd0FtM0gEYBXBgwKqN0ExtDuxCo6xF5bAyjYYhpa4L2gRdbuEyddMEKbc0
ymrmpNpk0JaXZbrJJqNSKytlRUOSrJawfMHZwAobMk3GiMwwzv/h2287O+fl
21xak19GIZFI/OjBs9LEjLWiOWHd0xsiuHuDNRf6PzElUK9jS2F6trIEDskM
FVC1L7kaitUHlPA1z3cN9vfODMdFldv6zLCY/dsKDyos72HWSc4ErGcemYJV
V8644amU+G+QFRqbhQKRxA9PdJADsCdQE4IF0ld/oWzaRWg0u4+tjxr5apfD
ztY7ZTCri3sBblUEauGo/1ILzBhvuwuTRoRaGP730gQpHS2P4YON+iG4M3LY
BudZ7HGo6Z79ABdHmyaho33JA90S2w846Gn1wub7fj+cGHaS4qPuyhunwlLm
LRoMSrxJMH25kQ15aWIupCp7D8HJ7J9Cos+PzYFxy4XHYXsw5zSUOGLPQdOz
vZdhUYn+NqyUWwh1D/laqDB16eCboj1t0GunPIIz9vzncA0jxQzFV5usMFea
+hGKZCMuuGWaPEXsyzkL8KjKSRisawzBeYErDHsizBVYn/GZmhCV7ophwXDt
HAcKGKu/wzTB9lno49qX4FuDgzC5KrM+Ebma2wDX/QkXV0RNVQ6WQ94Asxp6
r3svQlmzWwPJNM09uL9v0Qg7SU/6oXOH+gU0ShUj0MCIvINLA+oxeD5G9QV2
C/LckH6T5oUJtk2EBUqPj9j/sizAYGF4BWbObKNU4m/aBjps5spWwf83Jn6Y
"]]
}, Closed]],
Cell[CellGroupData[{
Cell["Demonstration", "Subsection",
CellChangeTimes->{{3.7766008885632277`*^9, 3.7766008904796133`*^9}}],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
"Simple", " ", "Pythagoras", " ", "tree", " ", "with", " ", "5", " ",
RowBox[{"generations", "."}]}], " ", "*)"}], "\[IndentingNewLine]",
RowBox[{"pythagorastree", "[", "5", "]"}]}]], "Input",
CellChangeTimes->{{3.7766008920271177`*^9, 3.7766008970415297`*^9}, {
3.776641875208373*^9, 3.7766418950746636`*^9}}],
Cell[BoxData[
GraphicsBox[{
{RGBColor[0, 0, 0], Opacity[1.],
LineBox[{{0, 0}, {1, 0}, {1, 1}, {0, 1}, {0, 0}}]},
{RGBColor[0, 0, 0], Opacity[1.],
LineBox[{{{0, 1}, {0.5, 1.5}, {6.123233995736766*^-17,
2.}, {-0.4999999999999999, 1.5}, {0, 1}}, {{0.5000000000000002, 1.5}, {
1, 1}, {1.5, 1.5}, {1.0000000000000002`, 2.}, {0.5000000000000002,
1.5}}}]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1:eJxTTMoPSmVmYGBgAWJWIGYC4n//QeD+fgYw+GH/F4XP4ACRf4+D/8OekH72
GBFjtWUTbWB8DjC/EcpncfiPop7FAV0/I5j6YA/jw+xBlYfxWdDUo/Mx9aPy
cYnD+JjiAAB1Vww=
"]]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1:eJxTTMoPSmVmYGDgAGJWIGYC4n//QeD9fgYw+GEP5v7/DOX/sYfIf8ch/8We
OP0weQYHVHkmB1Tz0eX/QM27D+WzOEDoC1A+G1Q/TJ4Dqv85XB5d/28w/zxc
niNGxFhtWaMNTJ4RYr49TJ4NLL/QBmY+un6I+g/2qPq/2GOX53BgBtMvcMiz
ODBh1f8Dzfw/OOQ5MPTDwhWVZoLSf+DmQsLpvz2qPIwmpB8m/gNN/xe4+djl
/9gDAH9vr6A=
"]]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1:eJyF0k8KgkAYBfBxNBFXLbpAmy7QVpg5Q+tWQet2XaFzRNA1ukLrNrVT2iQk
ZBSZzB9jnn4pDB8/fQ/HwfFiNVv6jLFhvQb14vWq1HU/MHUVQvtBOBduHl2I
D/Rdl8Yvwn19Jl1z6fbRmGeygr67f3QAebTNp8YhODLvvxHGfGieY/9MOIY8
OpLhfDSd7LeJtafmUXQ7lpt0/byedok19vnffij1vBBu9301sybvOpIB9F1j
vt3X+8sJx2Y/WePufgl+E44hj+7r2/Nistvtvp4cZkCYut/u6//SA1fNPruN
+Z/1tOdgXcB3ozFP9TnhHPLoQnwBhUpc8g==
"]]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1:eJyVlltKw0AUhnObpKkBt6D7KGTW4BIEn30Q3IILEXx1CXUJvnl5UajQogHb
tNa22taSmTPh/NNpY2A4/Hx8p5mTSejx6fnJWeh53tFmic0KNmtdXeOuV13D
XOUvnYucuF/lgc4ji+/2v4HPLc771/6qyj86T3Re6jzVee3gZUOf+Az4Avoj
R9+TnPuS+8hXDX3iAfAQ+iP3JZ9/JPl8BfBY8ueD3OWPgY8cPLZ8db+fwMlP
HP6osc95C3gK/ZGT39e5rXNP5wPgmc4fDu7yX4A/GL5kPLP8q/7l/P35ukN+
WNW7nHjr4ql7e3jTIb9Ux8XpC/DVe3mfE1f10fCA8czyVX3N+Xx7Oc1X5b7h
qr7pnFo+5wnwGLiA/sgTGYGfsv0lss32F8sW42Kvz3kLeAr9kSd6vgMzf5UL
mP/AzD9g+0NO56OA5zs0XOXSwTOHPwN/4eCZztN/+r/AVw6eWb6qnq50fnxd
6fwEDk7nb59PPAYuoD9y/P1I17Chj9zlR1CFg1N/9Om7Wt+3yvVctvOgoU98
Dd+FJXw3kOPcZ4arOjX+dk7nZJ9PfAK8hP7Iyaf50ntE8y0Mp/8/KguL7/YD
4L7Fef/a/wPVEMkD
"]]}}]], "Output",
CellChangeTimes->{{3.776641889072942*^9, 3.7766418918648043`*^9},
3.7766422449342127`*^9}]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
"Asymmetric", " ", "Pythagoras", " ", "tree", " ", "biased", " ",
"towards", " ",
RowBox[{"left", "."}]}], " ", "*)"}], "\[IndentingNewLine]",
RowBox[{"pythagorastree", "[",
RowBox[{"10", ",", "1.5"}], "]"}]}]], "Input",
CellChangeTimes->{{3.7766418993684163`*^9, 3.776641930973237*^9}}],
Cell[BoxData[
GraphicsBox[{
{RGBColor[0, 0, 0], Opacity[1.],
LineBox[{{0, 0}, {1, 0}, {1, 1}, {0, 1}, {0, 0}}]},
{RGBColor[0, 0, 0], Opacity[1.],
LineBox[{{{0, 1}, {0.6923076923076924, 1.4615384615384615`}, {
0.23076923076923098`, 2.153846153846154}, {-0.4615384615384614,
1.6923076923076925`}, {0, 1}}, {{0.6923076923076923,
1.4615384615384615`}, {1, 1}, {1.4615384615384615`,
1.3076923076923077`}, {1.1538461538461537`, 1.7692307692307694`}, {
0.6923076923076923, 1.4615384615384615`}}}]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1:eJxTTMoPSmVmYGBgAWJWIGYC4tk3Oufe6Ly732ajsPVG4d/2Z0I6zGr+ndj/
sCd74oJlTA52zzTu7tv0av8Kpy0PPx9ncVhzT5Wfbc7H/adklt4OD/tvj67/
NJr+pWD5s/abQNLWjA7ntnoEBCvesu8EqpqxmMVhAR/bnELdSft3rAeb7ICu
P0m9DIg+2b894vfmiN8fe8HcH38M3X/aT7j0Vnt1+U/7vPjIvd5yf+zleSwe
R6kwOOyXvK7k6PvV3q814/DzfkYM/QJQ/f1Q/WDppO/2R0HSb77Yf/yZ3Hfp
7W/7O+Fh7yexf7a/9QEk8Nd+2W2QwHcM/QBwDarf
"]]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1:eJxTTMoPSmVmYGDgAGJWIGYC4jX3VPnZ5nzcf0pm6e3wsP/260vDjAQSP+8P
FFjS8MGAxaGj8mf4zJw/+y8c4c7P9mN2aHl0wqR/+a/9x1tLdvhO/GuPrn8D
VH8QVL/dM427+za92r/CacvDz8dZHGasz0w8w/d2/wfnqc5nTrM7xNwq+yLW
/2X/LMFWoMnsDuj6F/CxzSnUnbR/x3qwTQ5hK92/vv59zZ7v0R57zWVsDovF
jr254HzJPvzx3IWMqzgdys6xd57I3r6fYWOvwz8hTgz94Wj6z231CAhWvGXf
aVbzb8ZiFoe/HOprX0k9tZeIuPPSlYPV4VDTsv9mHY/t5zHLal/jYsfQv1/y
upKj71d7v9aMw8/7GR38ZWY++xjy237p9gqV12pMDgvB9C/7tzsi2w5rsToI
bt2WYCX/xX5am6fqgcksOPUvgerPi4/c6y33x16ex+JxlAqDg030W/ltggwO
63RnAH3K4BBVLJUpFPXf3uTmDf4Z3UwY+m99+Jncd+mv/TJg7Lyf9N3+p/Eu
qxez/9nPbrl2+VzvZ/umo3PjWgIYHXYdn7ZKI/yL/afFtsXXXzM4HJWT0PWM
+WGPrv8Hmv6PIOm3v+3vgKTZP9tvUHtSxFfyx/6qLINzbeQH++1A36oo/bef
4tWgvvP+Bwz9AGnOPsU=
"]]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1:eJyF0ltQlAUUwPFv75eIWJSNsIVouIhJam0QDHEOUjqoIIPoAnI1miAIEkQh
pRECXEhCJJhFBUWLjBkKU1hg0O9rEWHkMswmcl1ByBlyWVhhy+W6bTP7xI7j
w//xd87DOY5HUkM+YxAEYWWMZYxuLG+yS1zy8xLZmX+sObB0FR5zSy/q2ARl
1Shrv5pDQ8uTc7lakk5Neg/lqS+tQuqUIqfdgqCkhzY1LWzRw3o/uc5LsxYl
lckrZP/dV1KTghiY15MqsWEQ1KzVlegNDiy8asvcfftPGvUuzf3mnhAGrveR
I8d1whIdeUGQb9zEwbd2Btl0arRkhKO+uJTGw8tx4uSwMzoy88uz2V5KPo4u
Ru69vllPNke9ofyKxXuhDzd52W+JcT2WGlLrX+7f083Bea9HnnLPadJu8XHj
yhoXL1oKaFlMDZn38GNCIeab+eN9nMKuJDlJ3CjGNWse1oxQty6E/gEURczc
G+dj/c4J5sRcE6myKB9NabDAyqMj2Z5+D0j7VcfttVN8M395nb8mvDfT768E
yVRVDa2OhzM0FSw/G4Vc2dMN76n4KAs7UX8iTAnqjMDo59YWZl6RW2vwkE5B
NUP0zkM+B5Mlw1360Gn4wKV1wmqAhda98fOvbtVAzCj7gB+Xg5/rd7jti5mG
rubEKrYv18wnmbzY5Fe5rvVP7Z6AbdjY359wWZjiVy0VBk3DqbtzRxReTBwr
Cf7RSaqGyvO94cVslpkXNDbFejvooKIgwJkqY+K+wHEoop7DoYq2fmksG3vc
F6f1LjpInwymtu/gYml5P++XfC3cVKo2JsSzX+pr5JlOapcl0DSHF7RvYWFa
mm9LxvkVsE2p1S9EsVHE/enBxq1LkLOX599SxjHzEel2idYRBhAPD70m+46O
Q7PDtV4TBHYvZ3QoD9LQr8fn2ZoNHf9tUHgyCukofF37Td8kgTHfO+d23WGY
+UGTv2/yPoc1Dk0CAn91lxk/gcAwt25hziMCncWSEm6GAXRt8ipmPQ23JRT6
7j9DmPn5ax+lD6oJ7LC3dQ+I1IMovOgJx4GOC5+GyO5o/4ECD8223lAGBvSp
TzlI9HA458rtS4503FR4Q1CnWIKX+dyOqui8YBq2dlbUbZbooLrs5MH9Ijp+
+/+Y1nnwdk0YU6rp2OaTVSQ/oDPzcuN1nN42wA97Tru2jGvhtFecQJS/CvLI
wvRdZ2ehZeBNw+/2BgiwHJR8GKKGzLWv2aooAlt3Bb0fnz/7Qt9k8g0uf6VZ
HluBARHhnx2uBQ/59cRbscvAE7IDVOdmgXPfmdt+dAVsPEs83L6YMfP/AbqC
Wsk=
"]]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1: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
"]]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1: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
"]]},
{RGBColor[0, 0, 0], Opacity[1.], LineBox[CompressedData["
1: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