├── Archive
├── Handmade Artwork
│ ├── handcut paper lattice 1 - 9x2feet.jpg
│ ├── handcut paper lattice 2 - 3x2feet.JPG
│ ├── paper handdrawn 1 - 7x10feet.jpg
│ ├── paper handdrawn 1 closeup - 7x10feet.jpg
│ ├── paper handdrawn 2.JPG
│ ├── paper handdrawn 3.JPG
│ ├── paper handdrawn 4.JPG
│ └── paper handdrawn 5.JPG
├── Software Sketches
│ ├── 1st-Draft_2006.jpg
│ ├── 2nd-Draft_P1.JPG
│ ├── 2nd-Draft_P2.JPG
│ ├── 2nd-Draft_P3.JPG
│ ├── 2nd-Draft_P4.JPG
│ ├── 2nd-Draft_P5.JPG
│ ├── 3rd-Draft_P01_StartUp.jpg
│ ├── 3rd-Draft_P02_DrawGuideLines.jpg
│ ├── 3rd-Draft_P03_PreviewRecursion.jpg
│ ├── 3rd-Draft_P04_ReverseDirection.jpg
│ ├── 3rd-Draft_P05_InitialColorFill.jpg
│ ├── 3rd-Draft_P06_DepthOverride.jpg
│ ├── 3rd-Draft_P07_Disable.jpg
│ ├── 3rd-Draft_P08_IterationSpacing.jpg
│ ├── 3rd-Draft_P09_FooterBufferHeight.jpg
│ ├── 3rd-Draft_P10_InnerEdge.jpg
│ └── 3rd-Draft_P11_GIF_ExampleOfTechnique.gif
├── Vector-Recursion-Workbench_screenshot1.JPG
└── Vector-Recursion-Workbench_screenshot2.JPG
├── Examples
├── FaceSilhouette_001.json
├── FaceSilhouette_001.svg
├── FaceSilhouette_001_BackgroundImage.jpg
├── FaceSilhouette_001b.json
├── FaceSilhouette_001b.svg
├── GoldenRatio_001.json
├── GoldenRatio_001.svg
├── GoldenRatio_001_rasterized.jpg
├── GoldenRatio_001b.json
├── GoldenRatio_001b.svg
├── GoldenRatio_002.json
├── GoldenRatio_002.svg
├── GoldenRatio_002_rasterized.jpg
├── GoldenRatio_002b.json
├── GoldenRatio_002b.svg
├── GoldenRatio_BackgroundImage.jpg
├── VRW_icon.json
├── VRW_icon.svg
├── beehive_001.json
├── beehive_001.svg
├── beehive_001_rasterized.jpg
├── handcut_mimic_001.json
├── handcut_mimic_001.svg
├── handcut_mimic_001_rasterized.jpg
├── handcut_mimic_001b.json
├── handcut_mimic_001b.svg
├── handcut_mimic_001b_rasterized.jpg
├── handcut_mimic_001c.json
├── handcut_mimic_001c.svg
├── handcut_mimic_001d.json
├── handcut_mimic_001d.svg
├── handcut_mimic_001d_rasterized.jpg
├── handcut_photo_original.jpg
├── hands_001.json
├── hands_001.svg
├── hands_001_BackgroundImage.jpg
├── hexagon_001.json
├── hexagon_001.svg
├── hexagon_001_cutout.json
├── hexagon_001_cutout.svg
├── hexagon_001_cutout_rasterized.jpg
├── hexagon_001_rasterized.jpg
├── hexagon_001b.json
├── hexagon_001b.svg
├── hexagon_002.json
├── hexagon_002.svg
├── hexagon_003.json
├── hexagon_003.svg
├── hexagon_003b.json
├── hexagon_003b.svg
├── hexagon_003b_rasterized.jpg
├── hexagon_004.json
├── hexagon_004.svg
├── vanilla_001.json
├── vanilla_001.svg
├── vanilla_002.json
├── vanilla_002.svg
├── vanilla_003.json
├── vanilla_003.svg
├── vanilla_004.json
├── vanilla_004.svg
├── vanilla_005.json
├── vanilla_005.svg
├── vanilla_005b.json
├── vanilla_005b.svg
├── vanilla_006.json
├── vanilla_006.svg
├── vanilla_007.json
├── vanilla_007.svg
├── vanilla_007_cutout.json
├── vanilla_007_cutout.svg
├── vanilla_007_cutout_rasterized.jpg
└── vanilla_007_rasterized.jpg
├── LICENSE
├── README.md
├── VRW-gui.py
├── geometry.py
├── project.py
└── recursion_excursion.py
/Archive/Handmade Artwork/handcut paper lattice 1 - 9x2feet.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Handmade Artwork/handcut paper lattice 1 - 9x2feet.jpg
--------------------------------------------------------------------------------
/Archive/Handmade Artwork/handcut paper lattice 2 - 3x2feet.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Handmade Artwork/handcut paper lattice 2 - 3x2feet.JPG
--------------------------------------------------------------------------------
/Archive/Handmade Artwork/paper handdrawn 1 - 7x10feet.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Handmade Artwork/paper handdrawn 1 - 7x10feet.jpg
--------------------------------------------------------------------------------
/Archive/Handmade Artwork/paper handdrawn 1 closeup - 7x10feet.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Handmade Artwork/paper handdrawn 1 closeup - 7x10feet.jpg
--------------------------------------------------------------------------------
/Archive/Handmade Artwork/paper handdrawn 2.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Handmade Artwork/paper handdrawn 2.JPG
--------------------------------------------------------------------------------
/Archive/Handmade Artwork/paper handdrawn 3.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Handmade Artwork/paper handdrawn 3.JPG
--------------------------------------------------------------------------------
/Archive/Handmade Artwork/paper handdrawn 4.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Handmade Artwork/paper handdrawn 4.JPG
--------------------------------------------------------------------------------
/Archive/Handmade Artwork/paper handdrawn 5.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Handmade Artwork/paper handdrawn 5.JPG
--------------------------------------------------------------------------------
/Archive/Software Sketches/1st-Draft_2006.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/1st-Draft_2006.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/2nd-Draft_P1.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/2nd-Draft_P1.JPG
--------------------------------------------------------------------------------
/Archive/Software Sketches/2nd-Draft_P2.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/2nd-Draft_P2.JPG
--------------------------------------------------------------------------------
/Archive/Software Sketches/2nd-Draft_P3.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/2nd-Draft_P3.JPG
--------------------------------------------------------------------------------
/Archive/Software Sketches/2nd-Draft_P4.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/2nd-Draft_P4.JPG
--------------------------------------------------------------------------------
/Archive/Software Sketches/2nd-Draft_P5.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/2nd-Draft_P5.JPG
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P01_StartUp.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P01_StartUp.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P02_DrawGuideLines.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P02_DrawGuideLines.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P03_PreviewRecursion.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P03_PreviewRecursion.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P04_ReverseDirection.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P04_ReverseDirection.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P05_InitialColorFill.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P05_InitialColorFill.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P06_DepthOverride.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P06_DepthOverride.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P07_Disable.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P07_Disable.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P08_IterationSpacing.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P08_IterationSpacing.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P09_FooterBufferHeight.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P09_FooterBufferHeight.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P10_InnerEdge.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P10_InnerEdge.jpg
--------------------------------------------------------------------------------
/Archive/Software Sketches/3rd-Draft_P11_GIF_ExampleOfTechnique.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Software Sketches/3rd-Draft_P11_GIF_ExampleOfTechnique.gif
--------------------------------------------------------------------------------
/Archive/Vector-Recursion-Workbench_screenshot1.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Vector-Recursion-Workbench_screenshot1.JPG
--------------------------------------------------------------------------------
/Archive/Vector-Recursion-Workbench_screenshot2.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Archive/Vector-Recursion-Workbench_screenshot2.JPG
--------------------------------------------------------------------------------
/Examples/FaceSilhouette_001_BackgroundImage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/FaceSilhouette_001_BackgroundImage.jpg
--------------------------------------------------------------------------------
/Examples/FaceSilhouette_001b.svg:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Examples/GoldenRatio_001.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 154,
6 | 100
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 141,
17 | "disabled": false,
18 | "inc": 0.0108,
19 | "points": [
20 | [
21 | 0.0,
22 | 0.0
23 | ],
24 | [
25 | 95.10925926,
26 | 0.0
27 | ],
28 | [
29 | 94.96666667,
30 | 100.0
31 | ],
32 | [
33 | 0.0,
34 | 100.0
35 | ]
36 | ],
37 | "reverse_colors": true,
38 | "step": 0.084
39 | },
40 | {
41 | "clockwise": false,
42 | "depth": 50,
43 | "disabled": false,
44 | "inc": 0.0108,
45 | "points": [
46 | [
47 | 95.10925926,
48 | 0.0
49 | ],
50 | [
51 | 154.0,
52 | 0.0
53 | ],
54 | [
55 | 154.0,
56 | 61.6
57 | ],
58 | [
59 | 95.02143139,
60 | 61.59357164
61 | ]
62 | ],
63 | "reverse_colors": false,
64 | "step": 0.084
65 | },
66 | {
67 | "clockwise": true,
68 | "depth": 50,
69 | "disabled": false,
70 | "inc": 0.0108,
71 | "points": [
72 | [
73 | 117.49649877,
74 | 61.59602131
75 | ],
76 | [
77 | 154.0,
78 | 61.6
79 | ],
80 | [
81 | 154.0,
82 | 100.0
83 | ],
84 | [
85 | 117.3537037,
86 | 100.0
87 | ]
88 | ],
89 | "reverse_colors": true,
90 | "step": 0.084
91 | },
92 | {
93 | "clockwise": false,
94 | "depth": 50,
95 | "disabled": false,
96 | "inc": 0.0178,
97 | "points": [
98 | [
99 | 95.00070228,
100 | 76.1308701
101 | ],
102 | [
103 | 117.44186303,
104 | 76.2900158
105 | ],
106 | [
107 | 117.3537037,
108 | 100.0
109 | ],
110 | [
111 | 94.96666667,
112 | 100.0
113 | ]
114 | ],
115 | "reverse_colors": false,
116 | "step": 0.141
117 | },
118 | {
119 | "clockwise": true,
120 | "depth": 50,
121 | "disabled": false,
122 | "inc": 0.0199,
123 | "points": [
124 | [
125 | 95.02143139,
126 | 61.59357164
127 | ],
128 | [
129 | 108.94128524,
130 | 61.59508883
131 | ],
132 | [
133 | 108.95024768,
134 | 76.22979592
135 | ],
136 | [
137 | 95.00070228,
138 | 76.1308701
139 | ]
140 | ],
141 | "reverse_colors": true,
142 | "step": 0.244
143 | },
144 | {
145 | "clockwise": false,
146 | "depth": 50,
147 | "disabled": false,
148 | "inc": 0.0297,
149 | "points": [
150 | [
151 | 108.94128524,
152 | 61.59508883
153 | ],
154 | [
155 | 117.49649877,
156 | 61.59602131
157 | ],
158 | [
159 | 117.46253633,
160 | 70.73004194
161 | ],
162 | [
163 | 108.94679064,
164 | 70.58481416
165 | ]
166 | ],
167 | "reverse_colors": false,
168 | "step": 0.3
169 | },
170 | {
171 | "clockwise": true,
172 | "depth": 50,
173 | "disabled": false,
174 | "inc": 0.0279,
175 | "points": [
176 | [
177 | 112.52880629,
178 | 70.64590196
179 | ],
180 | [
181 | 117.46253633,
182 | 70.73004194
183 | ],
184 | [
185 | 117.44186303,
186 | 76.2900158
187 | ],
188 | [
189 | 112.50173799,
190 | 76.25498198
191 | ]
192 | ],
193 | "reverse_colors": true,
194 | "step": 0.398
195 | },
196 | {
197 | "clockwise": true,
198 | "depth": 50,
199 | "disabled": false,
200 | "inc": 0.0295,
201 | "points": [
202 | [
203 | 108.94679064,
204 | 70.58481416
205 | ],
206 | [
207 | 112.52880629,
208 | 70.64590196
209 | ],
210 | [
211 | 112.51810461,
212 | 72.86349913
213 | ],
214 | [
215 | 108.94818714,
216 | 72.86515955
217 | ]
218 | ],
219 | "reverse_colors": true,
220 | "step": 0.398
221 | },
222 | {
223 | "clockwise": false,
224 | "depth": 50,
225 | "disabled": false,
226 | "inc": 0.025,
227 | "points": [
228 | [
229 | 108.94818714,
230 | 72.86515955
231 | ],
232 | [
233 | 112.51810461,
234 | 72.86349913
235 | ],
236 | [
237 | 112.50173799,
238 | 76.25498198
239 | ],
240 | [
241 | 108.95024768,
242 | 76.22979592
243 | ]
244 | ],
245 | "reverse_colors": false,
246 | "step": 0.51
247 | }
248 | ]
249 | }
--------------------------------------------------------------------------------
/Examples/GoldenRatio_001_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/GoldenRatio_001_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/GoldenRatio_001b.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 154,
6 | 100
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 15,
17 | "disabled": false,
18 | "inc": 0.0108,
19 | "points": [
20 | [
21 | 0.0,
22 | 0.0
23 | ],
24 | [
25 | 95.10925926,
26 | 0.0
27 | ],
28 | [
29 | 94.96666667,
30 | 100.0
31 | ],
32 | [
33 | 0.0,
34 | 100.0
35 | ]
36 | ],
37 | "reverse_colors": true,
38 | "step": 0.084
39 | },
40 | {
41 | "clockwise": false,
42 | "depth": 16,
43 | "disabled": false,
44 | "inc": 0.0108,
45 | "points": [
46 | [
47 | 95.10925926,
48 | 0.0
49 | ],
50 | [
51 | 154.0,
52 | 0.0
53 | ],
54 | [
55 | 154.0,
56 | 61.6
57 | ],
58 | [
59 | 95.02143139,
60 | 61.59357164
61 | ]
62 | ],
63 | "reverse_colors": false,
64 | "step": 0.084
65 | },
66 | {
67 | "clockwise": true,
68 | "depth": 17,
69 | "disabled": false,
70 | "inc": 0.0108,
71 | "points": [
72 | [
73 | 117.49649877,
74 | 61.59602131
75 | ],
76 | [
77 | 154.0,
78 | 61.6
79 | ],
80 | [
81 | 154.0,
82 | 100.0
83 | ],
84 | [
85 | 117.3537037,
86 | 100.0
87 | ]
88 | ],
89 | "reverse_colors": true,
90 | "step": 0.084
91 | },
92 | {
93 | "clockwise": false,
94 | "depth": 12,
95 | "disabled": false,
96 | "inc": 0.0178,
97 | "points": [
98 | [
99 | 95.00070228,
100 | 76.1308701
101 | ],
102 | [
103 | 117.44186303,
104 | 76.2900158
105 | ],
106 | [
107 | 117.3537037,
108 | 100.0
109 | ],
110 | [
111 | 94.96666667,
112 | 100.0
113 | ]
114 | ],
115 | "reverse_colors": false,
116 | "step": 0.141
117 | },
118 | {
119 | "clockwise": true,
120 | "depth": 9,
121 | "disabled": false,
122 | "inc": 0.0199,
123 | "points": [
124 | [
125 | 95.02143139,
126 | 61.59357164
127 | ],
128 | [
129 | 108.94128524,
130 | 61.59508883
131 | ],
132 | [
133 | 108.95024768,
134 | 76.22979592
135 | ],
136 | [
137 | 95.00070228,
138 | 76.1308701
139 | ]
140 | ],
141 | "reverse_colors": true,
142 | "step": 0.244
143 | },
144 | {
145 | "clockwise": false,
146 | "depth": 8,
147 | "disabled": false,
148 | "inc": 0.0297,
149 | "points": [
150 | [
151 | 108.94128524,
152 | 61.59508883
153 | ],
154 | [
155 | 117.49649877,
156 | 61.59602131
157 | ],
158 | [
159 | 117.46253633,
160 | 70.73004194
161 | ],
162 | [
163 | 108.94679064,
164 | 70.58481416
165 | ]
166 | ],
167 | "reverse_colors": false,
168 | "step": 0.3
169 | },
170 | {
171 | "clockwise": true,
172 | "depth": 7,
173 | "disabled": false,
174 | "inc": 0.0279,
175 | "points": [
176 | [
177 | 112.52880629,
178 | 70.64590196
179 | ],
180 | [
181 | 117.46253633,
182 | 70.73004194
183 | ],
184 | [
185 | 117.44186303,
186 | 76.2900158
187 | ],
188 | [
189 | 112.50173799,
190 | 76.25498198
191 | ]
192 | ],
193 | "reverse_colors": true,
194 | "step": 0.398
195 | },
196 | {
197 | "clockwise": true,
198 | "depth": 7,
199 | "disabled": false,
200 | "inc": 0.0295,
201 | "points": [
202 | [
203 | 108.94679064,
204 | 70.58481416
205 | ],
206 | [
207 | 112.52880629,
208 | 70.64590196
209 | ],
210 | [
211 | 112.51810461,
212 | 72.86349913
213 | ],
214 | [
215 | 108.94818714,
216 | 72.86515955
217 | ]
218 | ],
219 | "reverse_colors": true,
220 | "step": 0.398
221 | },
222 | {
223 | "clockwise": false,
224 | "depth": 6,
225 | "disabled": false,
226 | "inc": 0.025,
227 | "points": [
228 | [
229 | 108.94818714,
230 | 72.86515955
231 | ],
232 | [
233 | 112.51810461,
234 | 72.86349913
235 | ],
236 | [
237 | 112.50173799,
238 | 76.25498198
239 | ],
240 | [
241 | 108.95024768,
242 | 76.22979592
243 | ]
244 | ],
245 | "reverse_colors": false,
246 | "step": 0.51
247 | }
248 | ]
249 | }
--------------------------------------------------------------------------------
/Examples/GoldenRatio_002.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 154,
6 | 100
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 141,
17 | "disabled": false,
18 | "inc": 0.0016,
19 | "points": [
20 | [
21 | 0.0,
22 | 0.0
23 | ],
24 | [
25 | 95.10925926,
26 | 0.0
27 | ],
28 | [
29 | 94.96666667,
30 | 100.0
31 | ],
32 | [
33 | 0.0,
34 | 100.0
35 | ]
36 | ],
37 | "reverse_colors": true,
38 | "step": 0.001
39 | },
40 | {
41 | "clockwise": false,
42 | "depth": 100,
43 | "disabled": false,
44 | "inc": 0.0027,
45 | "points": [
46 | [
47 | 95.10925926,
48 | 0.0
49 | ],
50 | [
51 | 154.0,
52 | 0.0
53 | ],
54 | [
55 | 154.0,
56 | 61.6
57 | ],
58 | [
59 | 95.02143139,
60 | 61.59357164
61 | ]
62 | ],
63 | "reverse_colors": false,
64 | "step": 0.001
65 | },
66 | {
67 | "clockwise": true,
68 | "depth": 69,
69 | "disabled": false,
70 | "inc": 0.0057,
71 | "points": [
72 | [
73 | 117.49649877,
74 | 61.59602131
75 | ],
76 | [
77 | 154.0,
78 | 61.6
79 | ],
80 | [
81 | 154.0,
82 | 100.0
83 | ],
84 | [
85 | 117.3537037,
86 | 100.0
87 | ]
88 | ],
89 | "reverse_colors": true,
90 | "step": 0.001
91 | },
92 | {
93 | "clockwise": false,
94 | "depth": 50,
95 | "disabled": false,
96 | "inc": 0.0131,
97 | "points": [
98 | [
99 | 95.00070228,
100 | 76.1308701
101 | ],
102 | [
103 | 117.44186303,
104 | 76.2900158
105 | ],
106 | [
107 | 117.3537037,
108 | 100.0
109 | ],
110 | [
111 | 94.96666667,
112 | 100.0
113 | ]
114 | ],
115 | "reverse_colors": false,
116 | "step": 0.001
117 | },
118 | {
119 | "clockwise": true,
120 | "depth": 50,
121 | "disabled": false,
122 | "inc": 0.0199,
123 | "points": [
124 | [
125 | 95.02143139,
126 | 61.59357164
127 | ],
128 | [
129 | 108.94128524,
130 | 61.59508883
131 | ],
132 | [
133 | 108.95024768,
134 | 76.22979592
135 | ],
136 | [
137 | 95.00070228,
138 | 76.1308701
139 | ]
140 | ],
141 | "reverse_colors": true,
142 | "step": 0.001
143 | },
144 | {
145 | "clockwise": false,
146 | "depth": 50,
147 | "disabled": false,
148 | "inc": 0.0297,
149 | "points": [
150 | [
151 | 108.94128524,
152 | 61.59508883
153 | ],
154 | [
155 | 117.49649877,
156 | 61.59602131
157 | ],
158 | [
159 | 117.46253633,
160 | 70.73004194
161 | ],
162 | [
163 | 108.94679064,
164 | 70.58481416
165 | ]
166 | ],
167 | "reverse_colors": false,
168 | "step": 0.001
169 | },
170 | {
171 | "clockwise": true,
172 | "depth": 50,
173 | "disabled": false,
174 | "inc": 0.0522,
175 | "points": [
176 | [
177 | 112.52880629,
178 | 70.64590196
179 | ],
180 | [
181 | 117.46253633,
182 | 70.73004194
183 | ],
184 | [
185 | 117.44186303,
186 | 76.2900158
187 | ],
188 | [
189 | 112.50173799,
190 | 76.25498198
191 | ]
192 | ],
193 | "reverse_colors": true,
194 | "step": 0.001
195 | },
196 | {
197 | "clockwise": true,
198 | "depth": 50,
199 | "disabled": false,
200 | "inc": 0.0988,
201 | "points": [
202 | [
203 | 108.94679064,
204 | 70.58481416
205 | ],
206 | [
207 | 112.52880629,
208 | 70.64590196
209 | ],
210 | [
211 | 112.51810461,
212 | 72.86349913
213 | ],
214 | [
215 | 108.94818714,
216 | 72.86515955
217 | ]
218 | ],
219 | "reverse_colors": true,
220 | "step": 0.001
221 | },
222 | {
223 | "clockwise": false,
224 | "depth": 50,
225 | "disabled": false,
226 | "inc": 0.0768,
227 | "points": [
228 | [
229 | 108.94818714,
230 | 72.86515955
231 | ],
232 | [
233 | 112.51810461,
234 | 72.86349913
235 | ],
236 | [
237 | 112.50173799,
238 | 76.25498198
239 | ],
240 | [
241 | 108.95024768,
242 | 76.22979592
243 | ]
244 | ],
245 | "reverse_colors": false,
246 | "step": 0.001
247 | }
248 | ]
249 | }
--------------------------------------------------------------------------------
/Examples/GoldenRatio_002_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/GoldenRatio_002_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/GoldenRatio_002b.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 154,
6 | 100
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 51,
17 | "disabled": false,
18 | "inc": 0.0016,
19 | "points": [
20 | [
21 | 0.0,
22 | 0.0
23 | ],
24 | [
25 | 95.10925926,
26 | 0.0
27 | ],
28 | [
29 | 94.96666667,
30 | 100.0
31 | ],
32 | [
33 | 0.0,
34 | 100.0
35 | ]
36 | ],
37 | "reverse_colors": true,
38 | "step": 0.001
39 | },
40 | {
41 | "clockwise": false,
42 | "depth": 42,
43 | "disabled": false,
44 | "inc": 0.0027,
45 | "points": [
46 | [
47 | 95.10925926,
48 | 0.0
49 | ],
50 | [
51 | 154.0,
52 | 0.0
53 | ],
54 | [
55 | 154.0,
56 | 61.6
57 | ],
58 | [
59 | 95.02143139,
60 | 61.59357164
61 | ]
62 | ],
63 | "reverse_colors": false,
64 | "step": 0.001
65 | },
66 | {
67 | "clockwise": true,
68 | "depth": 29,
69 | "disabled": false,
70 | "inc": 0.0057,
71 | "points": [
72 | [
73 | 117.49649877,
74 | 61.59602131
75 | ],
76 | [
77 | 154.0,
78 | 61.6
79 | ],
80 | [
81 | 154.0,
82 | 100.0
83 | ],
84 | [
85 | 117.3537037,
86 | 100.0
87 | ]
88 | ],
89 | "reverse_colors": true,
90 | "step": 0.001
91 | },
92 | {
93 | "clockwise": false,
94 | "depth": 20,
95 | "disabled": false,
96 | "inc": 0.0131,
97 | "points": [
98 | [
99 | 95.00070228,
100 | 76.1308701
101 | ],
102 | [
103 | 117.44186303,
104 | 76.2900158
105 | ],
106 | [
107 | 117.3537037,
108 | 100.0
109 | ],
110 | [
111 | 94.96666667,
112 | 100.0
113 | ]
114 | ],
115 | "reverse_colors": false,
116 | "step": 0.001
117 | },
118 | {
119 | "clockwise": true,
120 | "depth": 17,
121 | "disabled": false,
122 | "inc": 0.0199,
123 | "points": [
124 | [
125 | 95.02143139,
126 | 61.59357164
127 | ],
128 | [
129 | 108.94128524,
130 | 61.59508883
131 | ],
132 | [
133 | 108.95024768,
134 | 76.22979592
135 | ],
136 | [
137 | 95.00070228,
138 | 76.1308701
139 | ]
140 | ],
141 | "reverse_colors": true,
142 | "step": 0.001
143 | },
144 | {
145 | "clockwise": false,
146 | "depth": 14,
147 | "disabled": false,
148 | "inc": 0.0297,
149 | "points": [
150 | [
151 | 108.94128524,
152 | 61.59508883
153 | ],
154 | [
155 | 117.49649877,
156 | 61.59602131
157 | ],
158 | [
159 | 117.46253633,
160 | 70.73004194
161 | ],
162 | [
163 | 108.94679064,
164 | 70.58481416
165 | ]
166 | ],
167 | "reverse_colors": false,
168 | "step": 0.001
169 | },
170 | {
171 | "clockwise": true,
172 | "depth": 11,
173 | "disabled": false,
174 | "inc": 0.0522,
175 | "points": [
176 | [
177 | 112.52880629,
178 | 70.64590196
179 | ],
180 | [
181 | 117.46253633,
182 | 70.73004194
183 | ],
184 | [
185 | 117.44186303,
186 | 76.2900158
187 | ],
188 | [
189 | 112.50173799,
190 | 76.25498198
191 | ]
192 | ],
193 | "reverse_colors": true,
194 | "step": 0.001
195 | },
196 | {
197 | "clockwise": true,
198 | "depth": 9,
199 | "disabled": false,
200 | "inc": 0.0988,
201 | "points": [
202 | [
203 | 108.94679064,
204 | 70.58481416
205 | ],
206 | [
207 | 112.52880629,
208 | 70.64590196
209 | ],
210 | [
211 | 112.51810461,
212 | 72.86349913
213 | ],
214 | [
215 | 108.94818714,
216 | 72.86515955
217 | ]
218 | ],
219 | "reverse_colors": true,
220 | "step": 0.001
221 | },
222 | {
223 | "clockwise": false,
224 | "depth": 10,
225 | "disabled": false,
226 | "inc": 0.0768,
227 | "points": [
228 | [
229 | 108.94818714,
230 | 72.86515955
231 | ],
232 | [
233 | 112.51810461,
234 | 72.86349913
235 | ],
236 | [
237 | 112.50173799,
238 | 76.25498198
239 | ],
240 | [
241 | 108.95024768,
242 | 76.22979592
243 | ]
244 | ],
245 | "reverse_colors": false,
246 | "step": 0.001
247 | }
248 | ]
249 | }
--------------------------------------------------------------------------------
/Examples/GoldenRatio_BackgroundImage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/GoldenRatio_BackgroundImage.jpg
--------------------------------------------------------------------------------
/Examples/VRW_icon.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 500,
6 | 500
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "shapes": [
13 | {
14 | "clockwise": true,
15 | "depth": 8,
16 | "disabled": false,
17 | "footer": 0.0,
18 | "footer_inc": 0.0,
19 | "footer_offset": 0,
20 | "inc": 0.0,
21 | "points": [
22 | [
23 | 0.0,
24 | 0.0
25 | ],
26 | [
27 | 500.0,
28 | 0.0
29 | ],
30 | [
31 | 500.0,
32 | 500.0
33 | ],
34 | [
35 | 0.0,
36 | 500.0
37 | ]
38 | ],
39 | "reverse_colors": false,
40 | "step": 0.37
41 | }
42 | ]
43 | }
--------------------------------------------------------------------------------
/Examples/VRW_icon.svg:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Examples/beehive_001.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1000,
6 | 1000
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.05,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 50,
17 | "disabled": true,
18 | "inc": 0.0,
19 | "points": [
20 | [
21 | 720.0538358,
22 | 0.0
23 | ],
24 | [
25 | 1000,
26 | 0
27 | ],
28 | [
29 | 1000.0,
30 | 506.05652759
31 | ]
32 | ],
33 | "reverse_colors": false,
34 | "step": 0.2
35 | },
36 | {
37 | "clockwise": true,
38 | "depth": 50,
39 | "disabled": true,
40 | "inc": 0.0,
41 | "points": [
42 | [
43 | 1000.0,
44 | 506.05652759
45 | ],
46 | [
47 | 1000,
48 | 1000
49 | ],
50 | [
51 | 745.62584118,
52 | 1000.0
53 | ]
54 | ],
55 | "reverse_colors": false,
56 | "step": 0.2
57 | },
58 | {
59 | "clockwise": true,
60 | "depth": 50,
61 | "disabled": true,
62 | "inc": 0.0,
63 | "points": [
64 | [
65 | 0,
66 | 0
67 | ],
68 | [
69 | 258.41184388,
70 | 0.0
71 | ],
72 | [
73 | 0.0,
74 | 502.01884253
75 | ]
76 | ],
77 | "reverse_colors": false,
78 | "step": 0.2
79 | },
80 | {
81 | "clockwise": true,
82 | "depth": 50,
83 | "disabled": true,
84 | "inc": 0.0,
85 | "points": [
86 | [
87 | 0.0,
88 | 502.01884253
89 | ],
90 | [
91 | 261.10363392,
92 | 1000.0
93 | ],
94 | [
95 | 0,
96 | 1000
97 | ]
98 | ],
99 | "reverse_colors": false,
100 | "step": 0.2
101 | },
102 | {
103 | "clockwise": true,
104 | "depth": 50,
105 | "disabled": false,
106 | "inc": 0.0048,
107 | "points": [
108 | [
109 | 0.0,
110 | 502.01884253
111 | ],
112 | [
113 | 258.41184388,
114 | 0.0
115 | ],
116 | [
117 | 720.0538358,
118 | 0.0
119 | ],
120 | [
121 | 1000.0,
122 | 506.05652759
123 | ],
124 | [
125 | 745.62584118,
126 | 1000.0
127 | ],
128 | [
129 | 261.10363392,
130 | 1000.0
131 | ]
132 | ],
133 | "reverse_colors": false,
134 | "step": 0.272
135 | }
136 | ]
137 | }
--------------------------------------------------------------------------------
/Examples/beehive_001.svg:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Examples/beehive_001_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/beehive_001_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/handcut_mimic_001_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/handcut_mimic_001_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/handcut_mimic_001b_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/handcut_mimic_001b_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/handcut_mimic_001d_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/handcut_mimic_001d_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/handcut_photo_original.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/handcut_photo_original.jpg
--------------------------------------------------------------------------------
/Examples/hands_001_BackgroundImage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/hands_001_BackgroundImage.jpg
--------------------------------------------------------------------------------
/Examples/hexagon_001.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1000,
6 | 1000
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 50,
17 | "disabled": true,
18 | "inc": 0.0,
19 | "points": [
20 | [
21 | 720.0538358,
22 | 0.0
23 | ],
24 | [
25 | 1000.0,
26 | 0.0
27 | ],
28 | [
29 | 1000.0,
30 | 506.05652759
31 | ]
32 | ],
33 | "reverse_colors": false,
34 | "step": 0.092
35 | },
36 | {
37 | "clockwise": true,
38 | "depth": 50,
39 | "disabled": true,
40 | "inc": 0.0,
41 | "points": [
42 | [
43 | 1000.0,
44 | 506.05652759
45 | ],
46 | [
47 | 1000.0,
48 | 1000.0
49 | ],
50 | [
51 | 745.62584118,
52 | 1000.0
53 | ]
54 | ],
55 | "reverse_colors": false,
56 | "step": 0.092
57 | },
58 | {
59 | "clockwise": true,
60 | "depth": 50,
61 | "disabled": true,
62 | "inc": 0.0,
63 | "points": [
64 | [
65 | 0.0,
66 | 0.0
67 | ],
68 | [
69 | 258.41184388,
70 | 0.0
71 | ],
72 | [
73 | 0.0,
74 | 502.01884253
75 | ]
76 | ],
77 | "reverse_colors": false,
78 | "step": 0.092
79 | },
80 | {
81 | "clockwise": true,
82 | "depth": 50,
83 | "disabled": true,
84 | "inc": 0.0,
85 | "points": [
86 | [
87 | 0.0,
88 | 502.01884253
89 | ],
90 | [
91 | 261.10363392,
92 | 1000.0
93 | ],
94 | [
95 | 0.0,
96 | 1000.0
97 | ]
98 | ],
99 | "reverse_colors": false,
100 | "step": 0.092
101 | },
102 | {
103 | "clockwise": false,
104 | "depth": 32,
105 | "disabled": false,
106 | "inc": 0.0048,
107 | "points": [
108 | [
109 | 258.41184388,
110 | 0.0
111 | ],
112 | [
113 | 720.0538358,
114 | 0.0
115 | ],
116 | [
117 | 473.57895463,
118 | 370.24674075
119 | ],
120 | [
121 | 0.0,
122 | 502.01884253
123 | ]
124 | ],
125 | "reverse_colors": false,
126 | "step": 0.092
127 | },
128 | {
129 | "clockwise": true,
130 | "depth": 25,
131 | "disabled": false,
132 | "inc": 0.0048,
133 | "points": [
134 | [
135 | 0.0,
136 | 502.01884253
137 | ],
138 | [
139 | 473.57895463,
140 | 370.24674075
141 | ],
142 | [
143 | 1000.0,
144 | 506.05652759
145 | ],
146 | [
147 | 745.62584118,
148 | 1000.0
149 | ],
150 | [
151 | 261.10363392,
152 | 1000.0
153 | ]
154 | ],
155 | "reverse_colors": true,
156 | "step": 0.092
157 | },
158 | {
159 | "clockwise": true,
160 | "depth": 15,
161 | "disabled": false,
162 | "inc": 0.0048,
163 | "points": [
164 | [
165 | 720.0538358,
166 | 0.0
167 | ],
168 | [
169 | 846.50265563,
170 | 228.58055893
171 | ],
172 | [
173 | 730.67127462,
174 | 270.68914477
175 | ],
176 | [
177 | 605.65355118,
178 | 171.84847528
179 | ]
180 | ],
181 | "reverse_colors": true,
182 | "step": 0.188
183 | },
184 | {
185 | "clockwise": true,
186 | "depth": 22,
187 | "disabled": false,
188 | "inc": 0.0048,
189 | "points": [
190 | [
191 | 634.28596943,
192 | 317.15747004
193 | ],
194 | [
195 | 730.67127462,
196 | 270.68914477
197 | ],
198 | [
199 | 846.50265563,
200 | 228.58055893
201 | ],
202 | [
203 | 1000.0,
204 | 506.05652759
205 | ],
206 | [
207 | 629.17000187,
208 | 410.38720843
209 | ]
210 | ],
211 | "reverse_colors": false,
212 | "step": 0.211
213 | },
214 | {
215 | "clockwise": false,
216 | "depth": 9,
217 | "disabled": false,
218 | "inc": 0.0048,
219 | "points": [
220 | [
221 | 542.15471165,
222 | 267.23441588
223 | ],
224 | [
225 | 634.28596943,
226 | 317.15747004
227 | ],
228 | [
229 | 629.17000187,
230 | 410.38720843
231 | ],
232 | [
233 | 473.57895463,
234 | 370.24674075
235 | ]
236 | ],
237 | "reverse_colors": true,
238 | "step": 0.196
239 | },
240 | {
241 | "clockwise": false,
242 | "depth": 16,
243 | "disabled": false,
244 | "inc": 0.0048,
245 | "points": [
246 | [
247 | 605.65355118,
248 | 171.84847528
249 | ],
250 | [
251 | 730.67127462,
252 | 270.68914477
253 | ],
254 | [
255 | 634.28596943,
256 | 317.15747004
257 | ],
258 | [
259 | 542.15471165,
260 | 267.23441588
261 | ]
262 | ],
263 | "reverse_colors": false,
264 | "step": 0.246
265 | }
266 | ]
267 | }
--------------------------------------------------------------------------------
/Examples/hexagon_001_cutout.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1000,
6 | 1000
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "shapes": [
13 | {
14 | "clockwise": true,
15 | "depth": 50,
16 | "disabled": true,
17 | "footer": 0.0,
18 | "footer_inc": 0.0,
19 | "footer_offset": 0.0,
20 | "inc": 0.0,
21 | "points": [
22 | [
23 | 720.0538358,
24 | 0.0
25 | ],
26 | [
27 | 1000.0,
28 | 0.0
29 | ],
30 | [
31 | 1000.0,
32 | 506.05652759
33 | ]
34 | ],
35 | "reverse_colors": false,
36 | "step": 0.092
37 | },
38 | {
39 | "clockwise": true,
40 | "depth": 50,
41 | "disabled": true,
42 | "footer": 0.0,
43 | "footer_inc": 0.0,
44 | "footer_offset": 0.0,
45 | "inc": 0.0,
46 | "points": [
47 | [
48 | 1000.0,
49 | 506.05652759
50 | ],
51 | [
52 | 1000.0,
53 | 1000.0
54 | ],
55 | [
56 | 745.62584118,
57 | 1000.0
58 | ]
59 | ],
60 | "reverse_colors": false,
61 | "step": 0.092
62 | },
63 | {
64 | "clockwise": true,
65 | "depth": 50,
66 | "disabled": true,
67 | "footer": 0.0,
68 | "footer_inc": 0.0,
69 | "footer_offset": 0.0,
70 | "inc": 0.0,
71 | "points": [
72 | [
73 | 0.0,
74 | 0.0
75 | ],
76 | [
77 | 258.41184388,
78 | 0.0
79 | ],
80 | [
81 | 0.0,
82 | 502.01884253
83 | ]
84 | ],
85 | "reverse_colors": false,
86 | "step": 0.092
87 | },
88 | {
89 | "clockwise": true,
90 | "depth": 50,
91 | "disabled": true,
92 | "footer": 0.0,
93 | "footer_inc": 0.0,
94 | "footer_offset": 0.0,
95 | "inc": 0.0,
96 | "points": [
97 | [
98 | 0.0,
99 | 502.01884253
100 | ],
101 | [
102 | 261.10363392,
103 | 1000.0
104 | ],
105 | [
106 | 0.0,
107 | 1000.0
108 | ]
109 | ],
110 | "reverse_colors": false,
111 | "step": 0.092
112 | },
113 | {
114 | "clockwise": false,
115 | "depth": 32,
116 | "disabled": false,
117 | "footer": 0.108,
118 | "footer_inc": 0.006,
119 | "footer_offset": 6,
120 | "inc": 0.0048,
121 | "points": [
122 | [
123 | 258.41184388,
124 | 0.0
125 | ],
126 | [
127 | 720.0538358,
128 | 0.0
129 | ],
130 | [
131 | 473.57895463,
132 | 370.24674075
133 | ],
134 | [
135 | 0.0,
136 | 502.01884253
137 | ]
138 | ],
139 | "reverse_colors": false,
140 | "step": 0.092
141 | },
142 | {
143 | "clockwise": true,
144 | "depth": 25,
145 | "disabled": false,
146 | "footer": 0.075,
147 | "footer_inc": 0.01,
148 | "footer_offset": 10,
149 | "inc": 0.0048,
150 | "points": [
151 | [
152 | 0.0,
153 | 502.01884253
154 | ],
155 | [
156 | 473.57895463,
157 | 370.24674075
158 | ],
159 | [
160 | 1000.0,
161 | 506.05652759
162 | ],
163 | [
164 | 745.62584118,
165 | 1000.0
166 | ],
167 | [
168 | 261.10363392,
169 | 1000.0
170 | ]
171 | ],
172 | "reverse_colors": true,
173 | "step": 0.092
174 | },
175 | {
176 | "clockwise": true,
177 | "depth": 15,
178 | "disabled": false,
179 | "footer": 0.192,
180 | "footer_inc": 0.032,
181 | "footer_offset": 7,
182 | "inc": 0.0048,
183 | "points": [
184 | [
185 | 720.0538358,
186 | 0.0
187 | ],
188 | [
189 | 846.50265563,
190 | 228.58055893
191 | ],
192 | [
193 | 730.67127462,
194 | 270.68914477
195 | ],
196 | [
197 | 605.65355118,
198 | 171.84847528
199 | ]
200 | ],
201 | "reverse_colors": true,
202 | "step": 0.188
203 | },
204 | {
205 | "clockwise": true,
206 | "depth": 22,
207 | "disabled": false,
208 | "footer": 0.13,
209 | "footer_inc": 0.028,
210 | "footer_offset": 2,
211 | "inc": 0.0048,
212 | "points": [
213 | [
214 | 634.28596943,
215 | 317.15747004
216 | ],
217 | [
218 | 730.67127462,
219 | 270.68914477
220 | ],
221 | [
222 | 846.50265563,
223 | 228.58055893
224 | ],
225 | [
226 | 1000.0,
227 | 506.05652759
228 | ],
229 | [
230 | 629.17000187,
231 | 410.38720843
232 | ]
233 | ],
234 | "reverse_colors": false,
235 | "step": 0.211
236 | },
237 | {
238 | "clockwise": false,
239 | "depth": 9,
240 | "disabled": false,
241 | "footer": 0.151,
242 | "footer_inc": 0.024,
243 | "footer_offset": 3,
244 | "inc": 0.0048,
245 | "points": [
246 | [
247 | 542.15471165,
248 | 267.23441588
249 | ],
250 | [
251 | 634.28596943,
252 | 317.15747004
253 | ],
254 | [
255 | 629.17000187,
256 | 410.38720843
257 | ],
258 | [
259 | 473.57895463,
260 | 370.24674075
261 | ]
262 | ],
263 | "reverse_colors": true,
264 | "step": 0.196
265 | },
266 | {
267 | "clockwise": false,
268 | "depth": 16,
269 | "disabled": false,
270 | "footer": 0.223,
271 | "footer_inc": 0.03,
272 | "footer_offset": 3,
273 | "inc": 0.0048,
274 | "points": [
275 | [
276 | 605.65355118,
277 | 171.84847528
278 | ],
279 | [
280 | 730.67127462,
281 | 270.68914477
282 | ],
283 | [
284 | 634.28596943,
285 | 317.15747004
286 | ],
287 | [
288 | 542.15471165,
289 | 267.23441588
290 | ]
291 | ],
292 | "reverse_colors": false,
293 | "step": 0.246
294 | }
295 | ]
296 | }
--------------------------------------------------------------------------------
/Examples/hexagon_001_cutout_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/hexagon_001_cutout_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/hexagon_001_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/hexagon_001_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/hexagon_001b.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1000,
6 | 1000
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "shapes": [
13 | {
14 | "clockwise": true,
15 | "depth": 50,
16 | "disabled": true,
17 | "footer": 0.136,
18 | "inc": 0.0,
19 | "points": [
20 | [
21 | 720.0538358,
22 | 0.0
23 | ],
24 | [
25 | 1000.0,
26 | 0.0
27 | ],
28 | [
29 | 1000.0,
30 | 506.05652759
31 | ]
32 | ],
33 | "reverse_colors": false,
34 | "step": 0.092
35 | },
36 | {
37 | "clockwise": true,
38 | "depth": 50,
39 | "disabled": true,
40 | "footer": 0.136,
41 | "inc": 0.0,
42 | "points": [
43 | [
44 | 1000.0,
45 | 506.05652759
46 | ],
47 | [
48 | 1000.0,
49 | 1000.0
50 | ],
51 | [
52 | 745.62584118,
53 | 1000.0
54 | ]
55 | ],
56 | "reverse_colors": false,
57 | "step": 0.092
58 | },
59 | {
60 | "clockwise": true,
61 | "depth": 50,
62 | "disabled": true,
63 | "footer": 0.136,
64 | "inc": 0.0,
65 | "points": [
66 | [
67 | 0.0,
68 | 0.0
69 | ],
70 | [
71 | 258.41184388,
72 | 0.0
73 | ],
74 | [
75 | 0.0,
76 | 502.01884253
77 | ]
78 | ],
79 | "reverse_colors": false,
80 | "step": 0.092
81 | },
82 | {
83 | "clockwise": true,
84 | "depth": 50,
85 | "disabled": true,
86 | "footer": 0.136,
87 | "inc": 0.0,
88 | "points": [
89 | [
90 | 0.0,
91 | 502.01884253
92 | ],
93 | [
94 | 261.10363392,
95 | 1000.0
96 | ],
97 | [
98 | 0.0,
99 | 1000.0
100 | ]
101 | ],
102 | "reverse_colors": false,
103 | "step": 0.092
104 | },
105 | {
106 | "clockwise": false,
107 | "depth": 32,
108 | "disabled": false,
109 | "footer": 0.176,
110 | "inc": 0.0048,
111 | "points": [
112 | [
113 | 258.41184388,
114 | 0.0
115 | ],
116 | [
117 | 720.0538358,
118 | 0.0
119 | ],
120 | [
121 | 473.57895463,
122 | 370.24674075
123 | ],
124 | [
125 | 0.0,
126 | 502.01884253
127 | ]
128 | ],
129 | "reverse_colors": false,
130 | "step": 0.092
131 | },
132 | {
133 | "clockwise": true,
134 | "depth": 25,
135 | "disabled": false,
136 | "footer": 0.136,
137 | "inc": 0.0048,
138 | "points": [
139 | [
140 | 0.0,
141 | 502.01884253
142 | ],
143 | [
144 | 473.57895463,
145 | 370.24674075
146 | ],
147 | [
148 | 1000.0,
149 | 506.05652759
150 | ],
151 | [
152 | 745.62584118,
153 | 1000.0
154 | ],
155 | [
156 | 261.10363392,
157 | 1000.0
158 | ]
159 | ],
160 | "reverse_colors": true,
161 | "step": 0.092
162 | },
163 | {
164 | "clockwise": true,
165 | "depth": 15,
166 | "disabled": false,
167 | "footer": 0.196,
168 | "inc": 0.0048,
169 | "points": [
170 | [
171 | 720.0538358,
172 | 0.0
173 | ],
174 | [
175 | 846.50265563,
176 | 228.58055893
177 | ],
178 | [
179 | 730.67127462,
180 | 270.68914477
181 | ],
182 | [
183 | 605.65355118,
184 | 171.84847528
185 | ]
186 | ],
187 | "reverse_colors": true,
188 | "step": 0.188
189 | },
190 | {
191 | "clockwise": true,
192 | "depth": 22,
193 | "disabled": false,
194 | "footer": 0.223,
195 | "inc": 0.0048,
196 | "points": [
197 | [
198 | 634.28596943,
199 | 317.15747004
200 | ],
201 | [
202 | 730.67127462,
203 | 270.68914477
204 | ],
205 | [
206 | 846.50265563,
207 | 228.58055893
208 | ],
209 | [
210 | 1000.0,
211 | 506.05652759
212 | ],
213 | [
214 | 629.17000187,
215 | 410.38720843
216 | ]
217 | ],
218 | "reverse_colors": false,
219 | "step": 0.211
220 | },
221 | {
222 | "clockwise": false,
223 | "depth": 9,
224 | "disabled": false,
225 | "footer": 0.214,
226 | "inc": 0.0048,
227 | "points": [
228 | [
229 | 542.15471165,
230 | 267.23441588
231 | ],
232 | [
233 | 634.28596943,
234 | 317.15747004
235 | ],
236 | [
237 | 629.17000187,
238 | 410.38720843
239 | ],
240 | [
241 | 473.57895463,
242 | 370.24674075
243 | ]
244 | ],
245 | "reverse_colors": true,
246 | "step": 0.196
247 | },
248 | {
249 | "clockwise": false,
250 | "depth": 16,
251 | "disabled": false,
252 | "footer": 0.208,
253 | "inc": 0.0048,
254 | "points": [
255 | [
256 | 605.65355118,
257 | 171.84847528
258 | ],
259 | [
260 | 730.67127462,
261 | 270.68914477
262 | ],
263 | [
264 | 634.28596943,
265 | 317.15747004
266 | ],
267 | [
268 | 542.15471165,
269 | 267.23441588
270 | ]
271 | ],
272 | "reverse_colors": false,
273 | "step": 0.246
274 | }
275 | ]
276 | }
--------------------------------------------------------------------------------
/Examples/hexagon_002.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1000,
6 | 1000
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 50,
17 | "disabled": true,
18 | "inc": 0.0,
19 | "points": [
20 | [
21 | 720.0538358,
22 | 0.0
23 | ],
24 | [
25 | 1000.0,
26 | 0.0
27 | ],
28 | [
29 | 1000.0,
30 | 506.05652759
31 | ]
32 | ],
33 | "reverse_colors": false,
34 | "step": 0.06
35 | },
36 | {
37 | "clockwise": true,
38 | "depth": 50,
39 | "disabled": true,
40 | "inc": 0.0,
41 | "points": [
42 | [
43 | 1000.0,
44 | 506.05652759
45 | ],
46 | [
47 | 1000.0,
48 | 1000.0
49 | ],
50 | [
51 | 745.62584118,
52 | 1000.0
53 | ]
54 | ],
55 | "reverse_colors": false,
56 | "step": 0.06
57 | },
58 | {
59 | "clockwise": true,
60 | "depth": 50,
61 | "disabled": true,
62 | "inc": 0.0,
63 | "points": [
64 | [
65 | 0.0,
66 | 0.0
67 | ],
68 | [
69 | 258.41184388,
70 | 0.0
71 | ],
72 | [
73 | 0.0,
74 | 502.01884253
75 | ]
76 | ],
77 | "reverse_colors": false,
78 | "step": 0.06
79 | },
80 | {
81 | "clockwise": true,
82 | "depth": 50,
83 | "disabled": true,
84 | "inc": 0.0,
85 | "points": [
86 | [
87 | 0.0,
88 | 502.01884253
89 | ],
90 | [
91 | 261.10363392,
92 | 1000.0
93 | ],
94 | [
95 | 0.0,
96 | 1000.0
97 | ]
98 | ],
99 | "reverse_colors": false,
100 | "step": 0.06
101 | },
102 | {
103 | "clockwise": false,
104 | "depth": 23,
105 | "disabled": false,
106 | "inc": 0.0048,
107 | "points": [
108 | [
109 | 172.02250313,
110 | 167.82929218
111 | ],
112 | [
113 | 258.41184388,
114 | 0.0
115 | ],
116 | [
117 | 720.0538358,
118 | 0.0
119 | ],
120 | [
121 | 1000.0,
122 | 506.05652759
123 | ],
124 | [
125 | 821.69477571,
126 | 852.28942343
127 | ]
128 | ],
129 | "reverse_colors": true,
130 | "step": 0.063
131 | },
132 | {
133 | "clockwise": true,
134 | "depth": 32,
135 | "disabled": false,
136 | "inc": 0.0048,
137 | "points": [
138 | [
139 | 0.0,
140 | 502.01884253
141 | ],
142 | [
143 | 172.02250313,
144 | 167.82929218
145 | ],
146 | [
147 | 567.58470976,
148 | 584.57258152
149 | ],
150 | [
151 | 261.10363392,
152 | 1000.0
153 | ]
154 | ],
155 | "reverse_colors": false,
156 | "step": 0.033
157 | },
158 | {
159 | "clockwise": true,
160 | "depth": 21,
161 | "disabled": false,
162 | "inc": 0.0048,
163 | "points": [
164 | [
165 | 567.58470976,
166 | 584.57258152
167 | ],
168 | [
169 | 821.69477571,
170 | 852.28942343
171 | ],
172 | [
173 | 745.62584118,
174 | 1000.0
175 | ],
176 | [
177 | 261.10363392,
178 | 1000.0
179 | ]
180 | ],
181 | "reverse_colors": true,
182 | "step": 0.06
183 | }
184 | ]
185 | }
--------------------------------------------------------------------------------
/Examples/hexagon_002.svg:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Examples/hexagon_003.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1000,
6 | 1000
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 50,
17 | "disabled": true,
18 | "inc": 0.0,
19 | "points": [
20 | [
21 | 720.0538358,
22 | 0.0
23 | ],
24 | [
25 | 1000.0,
26 | 0.0
27 | ],
28 | [
29 | 1000.0,
30 | 506.05652759
31 | ]
32 | ],
33 | "reverse_colors": false,
34 | "step": 0.145
35 | },
36 | {
37 | "clockwise": true,
38 | "depth": 50,
39 | "disabled": true,
40 | "inc": 0.0,
41 | "points": [
42 | [
43 | 1000.0,
44 | 506.05652759
45 | ],
46 | [
47 | 1000.0,
48 | 1000.0
49 | ],
50 | [
51 | 745.62584118,
52 | 1000.0
53 | ]
54 | ],
55 | "reverse_colors": false,
56 | "step": 0.145
57 | },
58 | {
59 | "clockwise": true,
60 | "depth": 50,
61 | "disabled": true,
62 | "inc": 0.0,
63 | "points": [
64 | [
65 | 0.0,
66 | 0.0
67 | ],
68 | [
69 | 258.41184388,
70 | 0.0
71 | ],
72 | [
73 | 0.0,
74 | 502.01884253
75 | ]
76 | ],
77 | "reverse_colors": false,
78 | "step": 0.145
79 | },
80 | {
81 | "clockwise": true,
82 | "depth": 50,
83 | "disabled": true,
84 | "inc": 0.0,
85 | "points": [
86 | [
87 | 0.0,
88 | 502.01884253
89 | ],
90 | [
91 | 261.10363392,
92 | 1000.0
93 | ],
94 | [
95 | 0.0,
96 | 1000.0
97 | ]
98 | ],
99 | "reverse_colors": false,
100 | "step": 0.145
101 | },
102 | {
103 | "clockwise": false,
104 | "depth": 50,
105 | "disabled": false,
106 | "inc": 0.0048,
107 | "points": [
108 | [
109 | 258.41184388,
110 | 0.0
111 | ],
112 | [
113 | 261.10363392,
114 | 1000.0
115 | ],
116 | [
117 | 0.0,
118 | 502.01884253
119 | ]
120 | ],
121 | "reverse_colors": true,
122 | "step": 0.145
123 | },
124 | {
125 | "clockwise": true,
126 | "depth": 50,
127 | "disabled": false,
128 | "inc": 0.0048,
129 | "points": [
130 | [
131 | 258.41184388,
132 | 0.0
133 | ],
134 | [
135 | 720.0538358,
136 | 0.0
137 | ],
138 | [
139 | 261.10363392,
140 | 1000.0
141 | ]
142 | ],
143 | "reverse_colors": false,
144 | "step": 0.145
145 | },
146 | {
147 | "clockwise": true,
148 | "depth": 50,
149 | "disabled": false,
150 | "inc": 0.0048,
151 | "points": [
152 | [
153 | 720.0538358,
154 | 0.0
155 | ],
156 | [
157 | 1000.0,
158 | 506.05652759
159 | ],
160 | [
161 | 491.44399192,
162 | 498.11470381
163 | ]
164 | ],
165 | "reverse_colors": false,
166 | "step": 0.145
167 | },
168 | {
169 | "clockwise": true,
170 | "depth": 50,
171 | "disabled": false,
172 | "inc": 0.0048,
173 | "points": [
174 | [
175 | 491.44399192,
176 | 498.11470381
177 | ],
178 | [
179 | 745.62584118,
180 | 1000.0
181 | ],
182 | [
183 | 261.10363392,
184 | 1000.0
185 | ]
186 | ],
187 | "reverse_colors": true,
188 | "step": 0.145
189 | },
190 | {
191 | "clockwise": false,
192 | "depth": 50,
193 | "disabled": false,
194 | "inc": 0.0048,
195 | "points": [
196 | [
197 | 491.44399192,
198 | 498.11470381
199 | ],
200 | [
201 | 1000.0,
202 | 506.05652759
203 | ],
204 | [
205 | 601.51636299,
206 | 715.45400131
207 | ]
208 | ],
209 | "reverse_colors": false,
210 | "step": 0.145
211 | },
212 | {
213 | "clockwise": false,
214 | "depth": 50,
215 | "disabled": false,
216 | "inc": 0.0048,
217 | "points": [
218 | [
219 | 601.51636299,
220 | 715.45400131
221 | ],
222 | [
223 | 867.53317527,
224 | 763.28046767
225 | ],
226 | [
227 | 745.62584118,
228 | 1000.0
229 | ]
230 | ],
231 | "reverse_colors": false,
232 | "step": 0.145
233 | },
234 | {
235 | "clockwise": true,
236 | "depth": 50,
237 | "disabled": false,
238 | "inc": 0.0048,
239 | "points": [
240 | [
241 | 1000.0,
242 | 506.05652759
243 | ],
244 | [
245 | 867.53317527,
246 | 763.28046767
247 | ],
248 | [
249 | 601.51636299,
250 | 715.45400131
251 | ]
252 | ],
253 | "reverse_colors": true,
254 | "step": 0.145
255 | }
256 | ]
257 | }
--------------------------------------------------------------------------------
/Examples/hexagon_003b.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1000,
6 | 1000
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 50,
17 | "disabled": true,
18 | "inc": 0.0,
19 | "points": [
20 | [
21 | 720.0538358,
22 | 0.0
23 | ],
24 | [
25 | 1000.0,
26 | 0.0
27 | ],
28 | [
29 | 1000.0,
30 | 506.05652759
31 | ]
32 | ],
33 | "reverse_colors": false,
34 | "step": 0.145
35 | },
36 | {
37 | "clockwise": true,
38 | "depth": 50,
39 | "disabled": true,
40 | "inc": 0.0,
41 | "points": [
42 | [
43 | 1000.0,
44 | 506.05652759
45 | ],
46 | [
47 | 1000.0,
48 | 1000.0
49 | ],
50 | [
51 | 745.62584118,
52 | 1000.0
53 | ]
54 | ],
55 | "reverse_colors": false,
56 | "step": 0.145
57 | },
58 | {
59 | "clockwise": true,
60 | "depth": 50,
61 | "disabled": true,
62 | "inc": 0.0,
63 | "points": [
64 | [
65 | 0.0,
66 | 0.0
67 | ],
68 | [
69 | 258.41184388,
70 | 0.0
71 | ],
72 | [
73 | 0.0,
74 | 502.01884253
75 | ]
76 | ],
77 | "reverse_colors": false,
78 | "step": 0.145
79 | },
80 | {
81 | "clockwise": true,
82 | "depth": 50,
83 | "disabled": true,
84 | "inc": 0.0,
85 | "points": [
86 | [
87 | 0.0,
88 | 502.01884253
89 | ],
90 | [
91 | 261.10363392,
92 | 1000.0
93 | ],
94 | [
95 | 0.0,
96 | 1000.0
97 | ]
98 | ],
99 | "reverse_colors": false,
100 | "step": 0.145
101 | },
102 | {
103 | "clockwise": false,
104 | "depth": 15,
105 | "disabled": false,
106 | "inc": 0.0048,
107 | "points": [
108 | [
109 | 258.41184388,
110 | 0.0
111 | ],
112 | [
113 | 261.10363392,
114 | 1000.0
115 | ],
116 | [
117 | 0.0,
118 | 502.01884253
119 | ]
120 | ],
121 | "reverse_colors": true,
122 | "step": 0.145
123 | },
124 | {
125 | "clockwise": true,
126 | "depth": 12,
127 | "disabled": false,
128 | "inc": 0.0048,
129 | "points": [
130 | [
131 | 258.41184388,
132 | 0.0
133 | ],
134 | [
135 | 720.0538358,
136 | 0.0
137 | ],
138 | [
139 | 261.10363392,
140 | 1000.0
141 | ]
142 | ],
143 | "reverse_colors": false,
144 | "step": 0.145
145 | },
146 | {
147 | "clockwise": true,
148 | "depth": 14,
149 | "disabled": false,
150 | "inc": 0.0048,
151 | "points": [
152 | [
153 | 720.0538358,
154 | 0.0
155 | ],
156 | [
157 | 1000.0,
158 | 506.05652759
159 | ],
160 | [
161 | 491.44399192,
162 | 498.11470381
163 | ]
164 | ],
165 | "reverse_colors": false,
166 | "step": 0.145
167 | },
168 | {
169 | "clockwise": true,
170 | "depth": 11,
171 | "disabled": false,
172 | "inc": 0.0048,
173 | "points": [
174 | [
175 | 491.44399192,
176 | 498.11470381
177 | ],
178 | [
179 | 745.62584118,
180 | 1000.0
181 | ],
182 | [
183 | 261.10363392,
184 | 1000.0
185 | ]
186 | ],
187 | "reverse_colors": true,
188 | "step": 0.145
189 | },
190 | {
191 | "clockwise": false,
192 | "depth": 16,
193 | "disabled": false,
194 | "inc": 0.0048,
195 | "points": [
196 | [
197 | 491.44399192,
198 | 498.11470381
199 | ],
200 | [
201 | 1000.0,
202 | 506.05652759
203 | ],
204 | [
205 | 601.51636299,
206 | 715.45400131
207 | ]
208 | ],
209 | "reverse_colors": false,
210 | "step": 0.145
211 | },
212 | {
213 | "clockwise": false,
214 | "depth": 16,
215 | "disabled": false,
216 | "inc": 0.0048,
217 | "points": [
218 | [
219 | 601.51636299,
220 | 715.45400131
221 | ],
222 | [
223 | 867.53317527,
224 | 763.28046767
225 | ],
226 | [
227 | 745.62584118,
228 | 1000.0
229 | ]
230 | ],
231 | "reverse_colors": false,
232 | "step": 0.145
233 | },
234 | {
235 | "clockwise": true,
236 | "depth": 17,
237 | "disabled": false,
238 | "inc": 0.0048,
239 | "points": [
240 | [
241 | 1000.0,
242 | 506.05652759
243 | ],
244 | [
245 | 867.53317527,
246 | 763.28046767
247 | ],
248 | [
249 | 601.51636299,
250 | 715.45400131
251 | ]
252 | ],
253 | "reverse_colors": true,
254 | "step": 0.145
255 | }
256 | ]
257 | }
--------------------------------------------------------------------------------
/Examples/hexagon_003b.svg:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Examples/hexagon_003b_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/hexagon_003b_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/vanilla_001.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 843,
6 | 398
7 | ],
8 | "colors": [
9 | "#FFFFFF",
10 | "#000000"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": false,
16 | "depth": 23,
17 | "disabled": false,
18 | "inc": 0.02,
19 | "points": [
20 | [
21 | 0.0,
22 | 0.0
23 | ],
24 | [
25 | 285.0,
26 | 0.0
27 | ],
28 | [
29 | 285.0,
30 | 398.0
31 | ],
32 | [
33 | 0.0,
34 | 398.0
35 | ]
36 | ],
37 | "reverse_colors": false,
38 | "step": 0.075
39 | },
40 | {
41 | "clockwise": false,
42 | "depth": 17,
43 | "disabled": false,
44 | "inc": 0.0259,
45 | "points": [
46 | [
47 | 285.0,
48 | 0.0
49 | ],
50 | [
51 | 498.0,
52 | 0.0
53 | ],
54 | [
55 | 372.0,
56 | 237.0
57 | ],
58 | [
59 | 285.0,
60 | 161.0
61 | ]
62 | ],
63 | "reverse_colors": false,
64 | "step": 0.148
65 | },
66 | {
67 | "clockwise": true,
68 | "depth": 10,
69 | "disabled": false,
70 | "inc": 0.0451,
71 | "points": [
72 | [
73 | 285.0,
74 | 161.0
75 | ],
76 | [
77 | 372.0,
78 | 237.0
79 | ],
80 | [
81 | 285.0,
82 | 398.0
83 | ]
84 | ],
85 | "reverse_colors": true,
86 | "step": 0.166
87 | },
88 | {
89 | "clockwise": false,
90 | "depth": 13,
91 | "disabled": false,
92 | "inc": 0.03,
93 | "points": [
94 | [
95 | 372.0,
96 | 237.0
97 | ],
98 | [
99 | 554.0,
100 | 398.0
101 | ],
102 | [
103 | 285.0,
104 | 398.0
105 | ]
106 | ],
107 | "reverse_colors": false,
108 | "step": 0.155
109 | },
110 | {
111 | "clockwise": true,
112 | "depth": 29,
113 | "disabled": false,
114 | "inc": 0.0298,
115 | "points": [
116 | [
117 | 498.0,
118 | 0.0
119 | ],
120 | [
121 | 843.0,
122 | 0.0
123 | ],
124 | [
125 | 843.0,
126 | 398.0
127 | ],
128 | [
129 | 554.0,
130 | 398.0
131 | ],
132 | [
133 | 372.0,
134 | 237.0
135 | ]
136 | ],
137 | "reverse_colors": false,
138 | "step": 0.063
139 | }
140 | ]
141 | }
--------------------------------------------------------------------------------
/Examples/vanilla_001.svg:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Examples/vanilla_002.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1500,
6 | 500
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 50,
17 | "disabled": false,
18 | "inc": 0.0092,
19 | "points": [
20 | [
21 | 1015.32033426,
22 | 0.0
23 | ],
24 | [
25 | 1500.0000000000005,
26 | 0.0
27 | ],
28 | [
29 | 1500.0000000000005,
30 | 500.0
31 | ],
32 | [
33 | 1020.54317549,
34 | 500.0
35 | ]
36 | ],
37 | "reverse_colors": false,
38 | "step": 0.118
39 | },
40 | {
41 | "clockwise": false,
42 | "depth": 50,
43 | "disabled": false,
44 | "inc": 0.0072,
45 | "points": [
46 | [
47 | 0.0,
48 | 282.03342618
49 | ],
50 | [
51 | 1018.22522299,
52 | 278.0946807
53 | ],
54 | [
55 | 1020.54317549,
56 | 500.0
57 | ],
58 | [
59 | 0.0,
60 | 500.0
61 | ]
62 | ],
63 | "reverse_colors": false,
64 | "step": 0.049
65 | },
66 | {
67 | "clockwise": true,
68 | "depth": 50,
69 | "disabled": false,
70 | "inc": 0.0107,
71 | "points": [
72 | [
73 | 0.0,
74 | 0.0
75 | ],
76 | [
77 | 721.79665738,
78 | 0.0
79 | ],
80 | [
81 | 724.16184392,
82 | 279.23219014
83 | ],
84 | [
85 | 0.0,
86 | 282.03342618
87 | ]
88 | ],
89 | "reverse_colors": true,
90 | "step": 0.118
91 | },
92 | {
93 | "clockwise": true,
94 | "depth": 50,
95 | "disabled": false,
96 | "inc": 0.0137,
97 | "points": [
98 | [
99 | 721.79665738,
100 | 0.0
101 | ],
102 | [
103 | 853.41225627,
104 | 0.0
105 | ],
106 | [
107 | 855.61789056,
108 | 278.72368584
109 | ],
110 | [
111 | 724.16184392,
112 | 279.23219014
113 | ]
114 | ],
115 | "reverse_colors": false,
116 | "step": 0.29
117 | },
118 | {
119 | "clockwise": true,
120 | "depth": 50,
121 | "disabled": false,
122 | "inc": 0.0,
123 | "points": [
124 | [
125 | 853.41225627,
126 | 0.0
127 | ],
128 | [
129 | 1015.32033426,
130 | 0.0
131 | ],
132 | [
133 | 1015.88663056,
134 | 54.21343234
135 | ],
136 | [
137 | 853.86062103,
138 | 56.65938379
139 | ]
140 | ],
141 | "reverse_colors": false,
142 | "step": 0.356
143 | },
144 | {
145 | "clockwise": true,
146 | "depth": 50,
147 | "disabled": false,
148 | "inc": 0.0,
149 | "points": [
150 | [
151 | 854.39046348,
152 | 123.61501692
153 | ],
154 | [
155 | 1016.58350542,
156 | 120.92758596
157 | ],
158 | [
159 | 1018.22522299,
160 | 278.0946807
161 | ],
162 | [
163 | 855.61789056,
164 | 278.72368584
165 | ]
166 | ],
167 | "reverse_colors": false,
168 | "step": 0.301
169 | },
170 | {
171 | "clockwise": false,
172 | "depth": 50,
173 | "disabled": false,
174 | "inc": 0.0,
175 | "points": [
176 | [
177 | 853.86062103,
178 | 56.65938379
179 | ],
180 | [
181 | 929.43156716,
182 | 55.51856161
183 | ],
184 | [
185 | 928.83163214,
186 | 122.38157621
187 | ],
188 | [
189 | 854.39046348,
190 | 123.61501692
191 | ]
192 | ],
193 | "reverse_colors": false,
194 | "step": 0.344
195 | },
196 | {
197 | "clockwise": true,
198 | "depth": 50,
199 | "disabled": false,
200 | "inc": 0.0,
201 | "points": [
202 | [
203 | 972.37522953,
204 | 54.87028228
205 | ],
206 | [
207 | 1015.88663056,
208 | 54.21343234
209 | ],
210 | [
211 | 1016.58350542,
212 | 120.92758596
213 | ],
214 | [
215 | 972.70876008,
216 | 121.65456135
217 | ]
218 | ],
219 | "reverse_colors": false,
220 | "step": 0.522
221 | },
222 | {
223 | "clockwise": true,
224 | "depth": 50,
225 | "disabled": false,
226 | "inc": 0.0,
227 | "points": [
228 | [
229 | 929.43156716,
230 | 55.51856161
231 | ],
232 | [
233 | 972.37522953,
234 | 54.87028228
235 | ],
236 | [
237 | 972.49754019,
238 | 79.3610805
239 | ],
240 | [
241 | 929.20941333,
242 | 80.27770058
243 | ]
244 | ],
245 | "reverse_colors": false,
246 | "step": 0.436
247 | },
248 | {
249 | "clockwise": true,
250 | "depth": 50,
251 | "disabled": false,
252 | "inc": 0.0,
253 | "points": [
254 | [
255 | 929.20941333,
256 | 80.27770058
257 | ],
258 | [
259 | 972.49754019,
260 | 79.3610805
261 | ],
262 | [
263 | 972.70876008,
264 | 121.65456135
265 | ],
266 | [
267 | 928.83163214,
268 | 122.38157621
269 | ]
270 | ],
271 | "reverse_colors": false,
272 | "step": 0.465
273 | }
274 | ]
275 | }
--------------------------------------------------------------------------------
/Examples/vanilla_004.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1500,
6 | 500
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": false,
16 | "depth": 50,
17 | "disabled": false,
18 | "inc": 0.0092,
19 | "points": [
20 | [
21 | 227.71587744,
22 | 0.0
23 | ],
24 | [
25 | 1176.18384401,
26 | 0.0
27 | ],
28 | [
29 | 836.54246503,
30 | 334.91367692
31 | ]
32 | ],
33 | "reverse_colors": true,
34 | "step": 0.053
35 | },
36 | {
37 | "clockwise": true,
38 | "depth": 50,
39 | "disabled": false,
40 | "inc": 0.0013,
41 | "points": [
42 | [
43 | 1023.44741381,
44 | 150.61038673
45 | ],
46 | [
47 | 1176.18384401,
48 | 0.0
49 | ],
50 | [
51 | 1500.0,
52 | 0
53 | ],
54 | [
55 | 1500.0,
56 | 500.0
57 | ]
58 | ],
59 | "reverse_colors": false,
60 | "step": 0.177
61 | },
62 | {
63 | "clockwise": false,
64 | "depth": 50,
65 | "disabled": false,
66 | "inc": 0.0043,
67 | "points": [
68 | [
69 | 836.54246503,
70 | 334.91367692
71 | ],
72 | [
73 | 1023.44741381,
74 | 150.61038673
75 | ],
76 | [
77 | 1500.0,
78 | 500.0
79 | ],
80 | [
81 | 856.545961,
82 | 500.0
83 | ]
84 | ],
85 | "reverse_colors": true,
86 | "step": 0.177
87 | },
88 | {
89 | "clockwise": true,
90 | "depth": 50,
91 | "disabled": false,
92 | "inc": 0.0,
93 | "points": [
94 | [
95 | 0.0,
96 | 0
97 | ],
98 | [
99 | 227.71587744,
100 | 0.0
101 | ],
102 | [
103 | 0.0,
104 | 500.0
105 | ]
106 | ],
107 | "reverse_colors": true,
108 | "step": 0.177
109 | },
110 | {
111 | "clockwise": true,
112 | "depth": 53,
113 | "disabled": false,
114 | "inc": 0.0018,
115 | "points": [
116 | [
117 | 227.71587744,
118 | 0.0
119 | ],
120 | [
121 | 836.54246503,
122 | 334.91367692
123 | ],
124 | [
125 | 856.545961,
126 | 500.0
127 | ],
128 | [
129 | 0.0,
130 | 500.0
131 | ]
132 | ],
133 | "reverse_colors": false,
134 | "step": 0.144
135 | }
136 | ]
137 | }
--------------------------------------------------------------------------------
/Examples/vanilla_005.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1500,
6 | 600
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 50,
17 | "disabled": false,
18 | "inc": 0.0077,
19 | "points": [
20 | [
21 | 0,
22 | 0.0
23 | ],
24 | [
25 | 311.79039301,
26 | 0.0
27 | ],
28 | [
29 | 428.38427948,
30 | 600.0
31 | ],
32 | [
33 | 0,
34 | 600.0
35 | ]
36 | ],
37 | "reverse_colors": false,
38 | "step": 0.177
39 | },
40 | {
41 | "clockwise": false,
42 | "depth": 50,
43 | "disabled": false,
44 | "inc": 0.0055,
45 | "points": [
46 | [
47 | 1164.62882096,
48 | 0.0
49 | ],
50 | [
51 | 1500,
52 | 0.0
53 | ],
54 | [
55 | 1500,
56 | 600.0
57 | ],
58 | [
59 | 902.62008734,
60 | 600.0
61 | ]
62 | ],
63 | "reverse_colors": false,
64 | "step": 0.173
65 | },
66 | {
67 | "clockwise": true,
68 | "depth": 50,
69 | "disabled": false,
70 | "inc": 0.0094,
71 | "points": [
72 | [
73 | 405.9926401,
74 | 484.77111422
75 | ],
76 | [
77 | 992.62015657,
78 | 393.89984145
79 | ],
80 | [
81 | 902.62008734,
82 | 600.0
83 | ],
84 | [
85 | 428.38427948,
86 | 600.0
87 | ]
88 | ],
89 | "reverse_colors": true,
90 | "step": 0.175
91 | },
92 | {
93 | "clockwise": false,
94 | "depth": 50,
95 | "disabled": false,
96 | "inc": 0.0112,
97 | "points": [
98 | [
99 | 311.79039301,
100 | 0.0
101 | ],
102 | [
103 | 690.3930131,
104 | 0.0
105 | ],
106 | [
107 | 365.96074232,
108 | 278.76426947
109 | ]
110 | ],
111 | "reverse_colors": true,
112 | "step": 0.15
113 | },
114 | {
115 | "clockwise": true,
116 | "depth": 50,
117 | "disabled": false,
118 | "inc": 0.0118,
119 | "points": [
120 | [
121 | 830.56768559,
122 | 0.0
123 | ],
124 | [
125 | 1164.62882096,
126 | 0.0
127 | ],
128 | [
129 | 992.62015657,
130 | 393.89984145
131 | ],
132 | [
133 | 885.49246004,
134 | 410.49440931
135 | ]
136 | ],
137 | "reverse_colors": false,
138 | "step": 0.254
139 | },
140 | {
141 | "clockwise": false,
142 | "depth": 50,
143 | "disabled": false,
144 | "inc": 0.0111,
145 | "points": [
146 | [
147 | 365.96074232,
148 | 278.76426947
149 | ],
150 | [
151 | 462.09319874,
152 | 196.1636887
153 | ],
154 | [
155 | 700.04248139,
156 | 439.22145522
157 | ],
158 | [
159 | 405.9926401,
160 | 484.77111422
161 | ]
162 | ],
163 | "reverse_colors": true,
164 | "step": 0.223
165 | },
166 | {
167 | "clockwise": false,
168 | "depth": 50,
169 | "disabled": false,
170 | "inc": 0.0152,
171 | "points": [
172 | [
173 | 690.3930131,
174 | 0.0
175 | ],
176 | [
177 | 830.56768559,
178 | 0.0
179 | ],
180 | [
181 | 863.99809061,
182 | 249.85071856
183 | ],
184 | [
185 | 556.50371299,
186 | 115.04266467
187 | ]
188 | ],
189 | "reverse_colors": true,
190 | "step": 0.187
191 | },
192 | {
193 | "clockwise": true,
194 | "depth": 50,
195 | "disabled": false,
196 | "inc": 0.0134,
197 | "points": [
198 | [
199 | 556.50371299,
200 | 115.04266467
201 | ],
202 | [
203 | 642.3772243,
204 | 152.69031544
205 | ],
206 | [
207 | 545.75955143,
208 | 281.62625699
209 | ],
210 | [
211 | 462.09319874,
212 | 196.1636887
213 | ]
214 | ],
215 | "reverse_colors": false,
216 | "step": 0.236
217 | },
218 | {
219 | "clockwise": false,
220 | "depth": 50,
221 | "disabled": false,
222 | "inc": 0.014,
223 | "points": [
224 | [
225 | 753.19734202,
226 | 201.27476279
227 | ],
228 | [
229 | 863.99809061,
230 | 249.85071856
231 | ],
232 | [
233 | 885.49246004,
234 | 410.49440931
235 | ],
236 | [
237 | 700.04248139,
238 | 439.22145522
239 | ],
240 | [
241 | 619.00331085,
242 | 356.44247152
243 | ]
244 | ],
245 | "reverse_colors": false,
246 | "step": 0.232
247 | },
248 | {
249 | "clockwise": true,
250 | "depth": 50,
251 | "disabled": false,
252 | "inc": 0.0164,
253 | "points": [
254 | [
255 | 603.74977284,
256 | 204.23851233
257 | ],
258 | [
259 | 642.3772243,
260 | 152.69031544
261 | ],
262 | [
263 | 753.19734202,
264 | 201.27476279
265 | ],
266 | [
267 | 702.10760766,
268 | 260.34949921
269 | ]
270 | ],
271 | "reverse_colors": false,
272 | "step": 0.224
273 | },
274 | {
275 | "clockwise": true,
276 | "depth": 50,
277 | "disabled": false,
278 | "inc": 0.0102,
279 | "points": [
280 | [
281 | 603.74977284,
282 | 204.23851233
283 | ],
284 | [
285 | 647.26416822,
286 | 229.06252023
287 | ],
288 | [
289 | 619.00331085,
290 | 356.44247152
291 | ],
292 | [
293 | 545.75955143,
294 | 281.62625699
295 | ]
296 | ],
297 | "reverse_colors": true,
298 | "step": 0.219
299 | },
300 | {
301 | "clockwise": true,
302 | "depth": 50,
303 | "disabled": false,
304 | "inc": 0.014,
305 | "points": [
306 | [
307 | 647.26416822,
308 | 229.06252023
309 | ],
310 | [
311 | 702.10760766,
312 | 260.34949921
313 | ],
314 | [
315 | 636.16870108,
316 | 279.07303636
317 | ]
318 | ],
319 | "reverse_colors": false,
320 | "step": 0.257
321 | },
322 | {
323 | "clockwise": true,
324 | "depth": 50,
325 | "disabled": false,
326 | "inc": 0.0157,
327 | "points": [
328 | [
329 | 636.16870108,
330 | 279.07303636
331 | ],
332 | [
333 | 702.10760766,
334 | 260.34949921
335 | ],
336 | [
337 | 619.00331085,
338 | 356.44247152
339 | ]
340 | ],
341 | "reverse_colors": true,
342 | "step": 0.242
343 | }
344 | ]
345 | }
--------------------------------------------------------------------------------
/Examples/vanilla_005b.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1500,
6 | 600
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 12,
17 | "disabled": false,
18 | "inc": 0.0077,
19 | "points": [
20 | [
21 | 0.0,
22 | 0.0
23 | ],
24 | [
25 | 311.79039301,
26 | 0.0
27 | ],
28 | [
29 | 428.38427948,
30 | 600.0
31 | ],
32 | [
33 | 0.0,
34 | 600.0
35 | ]
36 | ],
37 | "reverse_colors": false,
38 | "step": 0.177
39 | },
40 | {
41 | "clockwise": false,
42 | "depth": 10,
43 | "disabled": false,
44 | "inc": 0.0055,
45 | "points": [
46 | [
47 | 1164.62882096,
48 | 0.0
49 | ],
50 | [
51 | 1500.0,
52 | 0.0
53 | ],
54 | [
55 | 1500.0,
56 | 600.0
57 | ],
58 | [
59 | 902.62008734,
60 | 600.0
61 | ]
62 | ],
63 | "reverse_colors": false,
64 | "step": 0.173
65 | },
66 | {
67 | "clockwise": true,
68 | "depth": 19,
69 | "disabled": false,
70 | "inc": 0.0094,
71 | "points": [
72 | [
73 | 405.9926401,
74 | 484.77111422
75 | ],
76 | [
77 | 992.62015657,
78 | 393.89984145
79 | ],
80 | [
81 | 902.62008734,
82 | 600.0
83 | ],
84 | [
85 | 428.38427948,
86 | 600.0
87 | ]
88 | ],
89 | "reverse_colors": true,
90 | "step": 0.175
91 | },
92 | {
93 | "clockwise": false,
94 | "depth": 13,
95 | "disabled": false,
96 | "inc": 0.0112,
97 | "points": [
98 | [
99 | 311.79039301,
100 | 0.0
101 | ],
102 | [
103 | 690.3930131,
104 | 0.0
105 | ],
106 | [
107 | 365.96074232,
108 | 278.76426947
109 | ]
110 | ],
111 | "reverse_colors": true,
112 | "step": 0.15
113 | },
114 | {
115 | "clockwise": true,
116 | "depth": 16,
117 | "disabled": false,
118 | "inc": 0.0118,
119 | "points": [
120 | [
121 | 830.56768559,
122 | 0.0
123 | ],
124 | [
125 | 1164.62882096,
126 | 0.0
127 | ],
128 | [
129 | 992.62015657,
130 | 393.89984145
131 | ],
132 | [
133 | 885.49246004,
134 | 410.49440931
135 | ]
136 | ],
137 | "reverse_colors": false,
138 | "step": 0.254
139 | },
140 | {
141 | "clockwise": false,
142 | "depth": 17,
143 | "disabled": false,
144 | "inc": 0.0111,
145 | "points": [
146 | [
147 | 365.96074232,
148 | 278.76426947
149 | ],
150 | [
151 | 462.09319874,
152 | 196.1636887
153 | ],
154 | [
155 | 700.04248139,
156 | 439.22145522
157 | ],
158 | [
159 | 405.9926401,
160 | 484.77111422
161 | ]
162 | ],
163 | "reverse_colors": true,
164 | "step": 0.223
165 | },
166 | {
167 | "clockwise": false,
168 | "depth": 7,
169 | "disabled": false,
170 | "inc": 0.0152,
171 | "points": [
172 | [
173 | 690.3930131,
174 | 0.0
175 | ],
176 | [
177 | 830.56768559,
178 | 0.0
179 | ],
180 | [
181 | 863.99809061,
182 | 249.85071856
183 | ],
184 | [
185 | 556.50371299,
186 | 115.04266467
187 | ]
188 | ],
189 | "reverse_colors": true,
190 | "step": 0.187
191 | },
192 | {
193 | "clockwise": true,
194 | "depth": 14,
195 | "disabled": false,
196 | "inc": 0.0134,
197 | "points": [
198 | [
199 | 556.50371299,
200 | 115.04266467
201 | ],
202 | [
203 | 642.3772243,
204 | 152.69031544
205 | ],
206 | [
207 | 545.75955143,
208 | 281.62625699
209 | ],
210 | [
211 | 462.09319874,
212 | 196.1636887
213 | ]
214 | ],
215 | "reverse_colors": false,
216 | "step": 0.236
217 | },
218 | {
219 | "clockwise": false,
220 | "depth": 14,
221 | "disabled": false,
222 | "inc": 0.014,
223 | "points": [
224 | [
225 | 753.19734202,
226 | 201.27476279
227 | ],
228 | [
229 | 863.99809061,
230 | 249.85071856
231 | ],
232 | [
233 | 885.49246004,
234 | 410.49440931
235 | ],
236 | [
237 | 700.04248139,
238 | 439.22145522
239 | ],
240 | [
241 | 619.00331085,
242 | 356.44247152
243 | ]
244 | ],
245 | "reverse_colors": false,
246 | "step": 0.232
247 | },
248 | {
249 | "clockwise": true,
250 | "depth": 14,
251 | "disabled": false,
252 | "inc": 0.0164,
253 | "points": [
254 | [
255 | 603.74977284,
256 | 204.23851233
257 | ],
258 | [
259 | 642.3772243,
260 | 152.69031544
261 | ],
262 | [
263 | 753.19734202,
264 | 201.27476279
265 | ],
266 | [
267 | 702.10760766,
268 | 260.34949921
269 | ]
270 | ],
271 | "reverse_colors": false,
272 | "step": 0.224
273 | },
274 | {
275 | "clockwise": true,
276 | "depth": 15,
277 | "disabled": false,
278 | "inc": 0.0102,
279 | "points": [
280 | [
281 | 603.74977284,
282 | 204.23851233
283 | ],
284 | [
285 | 647.26416822,
286 | 229.06252023
287 | ],
288 | [
289 | 619.00331085,
290 | 356.44247152
291 | ],
292 | [
293 | 545.75955143,
294 | 281.62625699
295 | ]
296 | ],
297 | "reverse_colors": true,
298 | "step": 0.219
299 | },
300 | {
301 | "clockwise": true,
302 | "depth": 8,
303 | "disabled": false,
304 | "inc": 0.014,
305 | "points": [
306 | [
307 | 647.26416822,
308 | 229.06252023
309 | ],
310 | [
311 | 702.10760766,
312 | 260.34949921
313 | ],
314 | [
315 | 636.16870108,
316 | 279.07303636
317 | ]
318 | ],
319 | "reverse_colors": false,
320 | "step": 0.257
321 | },
322 | {
323 | "clockwise": true,
324 | "depth": 5,
325 | "disabled": false,
326 | "inc": 0.0157,
327 | "points": [
328 | [
329 | 636.16870108,
330 | 279.07303636
331 | ],
332 | [
333 | 702.10760766,
334 | 260.34949921
335 | ],
336 | [
337 | 619.00331085,
338 | 356.44247152
339 | ]
340 | ],
341 | "reverse_colors": true,
342 | "step": 0.242
343 | }
344 | ]
345 | }
--------------------------------------------------------------------------------
/Examples/vanilla_006.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1500,
6 | 600
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 50,
17 | "disabled": false,
18 | "inc": 0.0193,
19 | "points": [
20 | [
21 | 1162.00873362,
22 | 0.0
23 | ],
24 | [
25 | 1500,
26 | 0
27 | ],
28 | [
29 | 1500.0,
30 | 455.89519651
31 | ],
32 | [
33 | 1139.06326003,
34 | 174.28071914
35 | ]
36 | ],
37 | "reverse_colors": true,
38 | "step": 0.135
39 | },
40 | {
41 | "clockwise": false,
42 | "depth": 50,
43 | "disabled": false,
44 | "inc": 0.0197,
45 | "points": [
46 | [
47 | 996.66905663,
48 | 197.03891933
49 | ],
50 | [
51 | 1139.06326003,
52 | 174.28071914
53 | ],
54 | [
55 | 1500.0,
56 | 455.89519651
57 | ],
58 | [
59 | 1500,
60 | 600
61 | ],
62 | [
63 | 1046.72489083,
64 | 600.0
65 | ]
66 | ],
67 | "reverse_colors": false,
68 | "step": 0.135
69 | },
70 | {
71 | "clockwise": false,
72 | "depth": 50,
73 | "disabled": false,
74 | "inc": 0.021,
75 | "points": [
76 | [
77 | 171.42997395,
78 | 328.933026
79 | ],
80 | [
81 | 444.73281796,
82 | 285.25230945
83 | ],
84 | [
85 | 458.51528384,
86 | 600.0
87 | ],
88 | [
89 | 172.92576419,
90 | 600.0
91 | ]
92 | ],
93 | "reverse_colors": true,
94 | "step": 0.135
95 | },
96 | {
97 | "clockwise": true,
98 | "depth": 50,
99 | "disabled": false,
100 | "inc": 0.0186,
101 | "points": [
102 | [
103 | 724.43388466,
104 | 240.54899485
105 | ],
106 | [
107 | 996.66905663,
108 | 197.03891933
109 | ],
110 | [
111 | 1046.72489083,
112 | 600.0
113 | ],
114 | [
115 | 750.65502183,
116 | 600.0
117 | ]
118 | ],
119 | "reverse_colors": true,
120 | "step": 0.135
121 | },
122 | {
123 | "clockwise": true,
124 | "depth": 50,
125 | "disabled": false,
126 | "inc": 0.0208,
127 | "points": [
128 | [
129 | 444.73281796,
130 | 285.25230945
131 | ],
132 | [
133 | 724.43388466,
134 | 240.54899485
135 | ],
136 | [
137 | 458.51528384,
138 | 600.0
139 | ]
140 | ],
141 | "reverse_colors": false,
142 | "step": 0.135
143 | },
144 | {
145 | "clockwise": false,
146 | "depth": 50,
147 | "disabled": false,
148 | "inc": 0.0181,
149 | "points": [
150 | [
151 | 724.43388466,
152 | 240.54899485
153 | ],
154 | [
155 | 750.65502183,
156 | 600.0
157 | ],
158 | [
159 | 458.51528384,
160 | 600.0
161 | ]
162 | ],
163 | "reverse_colors": false,
164 | "step": 0.135
165 | },
166 | {
167 | "clockwise": false,
168 | "depth": 50,
169 | "disabled": false,
170 | "inc": 0.0192,
171 | "points": [
172 | [
173 | 319.65065502,
174 | 0.0
175 | ],
176 | [
177 | 602.62008734,
178 | 0.0
179 | ],
180 | [
181 | 587.59336087,
182 | 262.41957638
183 | ],
184 | [
185 | 306.36386084,
186 | 307.36717333
187 | ]
188 | ],
189 | "reverse_colors": false,
190 | "step": 0.135
191 | },
192 | {
193 | "clockwise": true,
194 | "depth": 50,
195 | "disabled": false,
196 | "inc": 0.0193,
197 | "points": [
198 | [
199 | 602.62008734,
200 | 0.0
201 | ],
202 | [
203 | 881.65938865,
204 | 0.0
205 | ],
206 | [
207 | 865.08991353,
208 | 218.06859897
209 | ],
210 | [
211 | 587.59336087,
212 | 262.41957638
213 | ]
214 | ],
215 | "reverse_colors": true,
216 | "step": 0.135
217 | },
218 | {
219 | "clockwise": false,
220 | "depth": 50,
221 | "disabled": false,
222 | "inc": 0.0196,
223 | "points": [
224 | [
225 | 881.65938865,
226 | 0.0
227 | ],
228 | [
229 | 1162.00873362,
230 | 0.0
231 | ],
232 | [
233 | 1139.06326003,
234 | 174.28071914
235 | ],
236 | [
237 | 865.08991353,
238 | 218.06859897
239 | ]
240 | ],
241 | "reverse_colors": false,
242 | "step": 0.149
243 | },
244 | {
245 | "clockwise": true,
246 | "depth": 50,
247 | "disabled": false,
248 | "inc": 0.0193,
249 | "points": [
250 | [
251 | 0,
252 | 0
253 | ],
254 | [
255 | 306.36386084,
256 | 307.36717333
257 | ],
258 | [
259 | 0.0,
260 | 356.33187773
261 | ]
262 | ],
263 | "reverse_colors": false,
264 | "step": 0.135
265 | },
266 | {
267 | "clockwise": true,
268 | "depth": 50,
269 | "disabled": false,
270 | "inc": 0.0186,
271 | "points": [
272 | [
273 | 0.0,
274 | 0.0
275 | ],
276 | [
277 | 319.65065502,
278 | 0.0
279 | ],
280 | [
281 | 306.36386084,
282 | 307.36717333
283 | ]
284 | ],
285 | "reverse_colors": true,
286 | "step": 0.135
287 | },
288 | {
289 | "clockwise": false,
290 | "depth": 50,
291 | "disabled": false,
292 | "inc": 0.0265,
293 | "points": [
294 | [
295 | 0.0,
296 | 356.33187773
297 | ],
298 | [
299 | 171.42997395,
300 | 328.933026
301 | ],
302 | [
303 | 172.16634055,
304 | 462.37731519
305 | ],
306 | [
307 | 0.0,
308 | 482.09606987
309 | ]
310 | ],
311 | "reverse_colors": true,
312 | "step": 0.217
313 | },
314 | {
315 | "clockwise": true,
316 | "depth": 50,
317 | "disabled": false,
318 | "inc": 0.0192,
319 | "points": [
320 | [
321 | 0.0,
322 | 482.09606987
323 | ],
324 | [
325 | 172.16634055,
326 | 462.37731519
327 | ],
328 | [
329 | 172.92576419,
330 | 600.0
331 | ],
332 | [
333 | 0,
334 | 600
335 | ]
336 | ],
337 | "reverse_colors": false,
338 | "step": 0.204
339 | }
340 | ]
341 | }
--------------------------------------------------------------------------------
/Examples/vanilla_007.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1500,
6 | 600
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "footer_buffer": 0.0,
13 | "shapes": [
14 | {
15 | "clockwise": true,
16 | "depth": 50,
17 | "disabled": false,
18 | "inc": 0.0042,
19 | "points": [
20 | [
21 | 0,
22 | 0
23 | ],
24 | [
25 | 683.84279476,
26 | 0.0
27 | ],
28 | [
29 | 0.0,
30 | 600.0
31 | ]
32 | ],
33 | "reverse_colors": true,
34 | "step": 0.09
35 | },
36 | {
37 | "clockwise": true,
38 | "depth": 50,
39 | "disabled": false,
40 | "inc": 0.0032,
41 | "points": [
42 | [
43 | 322.27031858,
44 | 317.24175113
45 | ],
46 | [
47 | 576.41921397,
48 | 600.0
49 | ],
50 | [
51 | 0.0,
52 | 600.0
53 | ]
54 | ],
55 | "reverse_colors": false,
56 | "step": 0.14
57 | },
58 | {
59 | "clockwise": false,
60 | "depth": 50,
61 | "disabled": false,
62 | "inc": 0.0,
63 | "points": [
64 | [
65 | 322.27031858,
66 | 317.24175113
67 | ],
68 | [
69 | 499.7000764,
70 | 161.56583335
71 | ],
72 | [
73 | 475.96545457,
74 | 488.23823508
75 | ]
76 | ],
77 | "reverse_colors": true,
78 | "step": 0.206
79 | },
80 | {
81 | "clockwise": true,
82 | "depth": 50,
83 | "disabled": false,
84 | "inc": 0.0044,
85 | "points": [
86 | [
87 | 499.7000764,
88 | 161.56583335
89 | ],
90 | [
91 | 683.84279476,
92 | 0.0
93 | ],
94 | [
95 | 890.82969432,
96 | 0.0
97 | ],
98 | [
99 | 852.01370965,
100 | 320.37319165
101 | ],
102 | [
103 | 488.93238772,
104 | 309.76734034
105 | ]
106 | ],
107 | "reverse_colors": false,
108 | "step": 0.226
109 | },
110 | {
111 | "clockwise": false,
112 | "depth": 50,
113 | "disabled": false,
114 | "inc": 0.0033,
115 | "points": [
116 | [
117 | 488.93238772,
118 | 309.76734034
119 | ],
120 | [
121 | 852.01370965,
122 | 320.37319165
123 | ],
124 | [
125 | 818.77729258,
126 | 600.0
127 | ],
128 | [
129 | 576.41921397,
130 | 600.0
131 | ],
132 | [
133 | 475.96545457,
134 | 488.23823508
135 | ]
136 | ],
137 | "reverse_colors": true,
138 | "step": 0.214
139 | },
140 | {
141 | "clockwise": true,
142 | "depth": 50,
143 | "disabled": false,
144 | "inc": 0.0036,
145 | "points": [
146 | [
147 | 852.01370965,
148 | 320.37319165
149 | ],
150 | [
151 | 1087.8409939,
152 | 327.26186634
153 | ],
154 | [
155 | 1100.43668122,
156 | 600.0
157 | ],
158 | [
159 | 818.77729258,
160 | 600.0
161 | ]
162 | ],
163 | "reverse_colors": false,
164 | "step": 0.168
165 | },
166 | {
167 | "clockwise": false,
168 | "depth": 50,
169 | "disabled": false,
170 | "inc": 0.002,
171 | "points": [
172 | [
173 | 1087.8409939,
174 | 327.26186634
175 | ],
176 | [
177 | 1500.0,
178 | 339.30131004
179 | ],
180 | [
181 | 1500,
182 | 600
183 | ],
184 | [
185 | 1100.43668122,
186 | 600.0
187 | ]
188 | ],
189 | "reverse_colors": true,
190 | "step": 0.156
191 | },
192 | {
193 | "clockwise": false,
194 | "depth": 50,
195 | "disabled": false,
196 | "inc": 0.0028,
197 | "points": [
198 | [
199 | 890.82969432,
200 | 0.0
201 | ],
202 | [
203 | 1156.76855895,
204 | 0.0
205 | ],
206 | [
207 | 1260.05476213,
208 | 332.29234714
209 | ],
210 | [
211 | 852.01370965,
212 | 320.37319165
213 | ]
214 | ],
215 | "reverse_colors": true,
216 | "step": 0.171
217 | },
218 | {
219 | "clockwise": true,
220 | "depth": 50,
221 | "disabled": false,
222 | "inc": 0.0031,
223 | "points": [
224 | [
225 | 1156.76855895,
226 | 0.0
227 | ],
228 | [
229 | 1500,
230 | 0
231 | ],
232 | [
233 | 1500.0,
234 | 339.30131004
235 | ],
236 | [
237 | 1260.05476213,
238 | 332.29234714
239 | ]
240 | ],
241 | "reverse_colors": false,
242 | "step": 0.159
243 | }
244 | ]
245 | }
--------------------------------------------------------------------------------
/Examples/vanilla_007_cutout.json:
--------------------------------------------------------------------------------
1 | {
2 | "canvas": [
3 | 0,
4 | 0,
5 | 1500,
6 | 600
7 | ],
8 | "colors": [
9 | "#000000",
10 | "#FFFFFF"
11 | ],
12 | "shapes": [
13 | {
14 | "clockwise": true,
15 | "depth": 26,
16 | "disabled": false,
17 | "footer": 0.109,
18 | "footer_inc": 0.027,
19 | "footer_offset": 15,
20 | "inc": 0.0042,
21 | "points": [
22 | [
23 | 0.0,
24 | 0.0
25 | ],
26 | [
27 | 683.84279476,
28 | 0.0
29 | ],
30 | [
31 | 0.0,
32 | 600.0
33 | ]
34 | ],
35 | "reverse_colors": true,
36 | "step": 0.09
37 | },
38 | {
39 | "clockwise": true,
40 | "depth": 18,
41 | "disabled": false,
42 | "footer": 0.112,
43 | "footer_inc": 0.035,
44 | "footer_offset": 0.0,
45 | "inc": 0.0032,
46 | "points": [
47 | [
48 | 322.27031858,
49 | 317.24175113
50 | ],
51 | [
52 | 576.41921397,
53 | 600.0
54 | ],
55 | [
56 | 0.0,
57 | 600.0
58 | ]
59 | ],
60 | "reverse_colors": false,
61 | "step": 0.14
62 | },
63 | {
64 | "clockwise": false,
65 | "depth": 13,
66 | "disabled": false,
67 | "footer": 0.149,
68 | "footer_inc": 0.038,
69 | "footer_offset": 0.0,
70 | "inc": 0.0,
71 | "points": [
72 | [
73 | 322.27031858,
74 | 317.24175113
75 | ],
76 | [
77 | 499.7000764,
78 | 161.56583335
79 | ],
80 | [
81 | 475.96545457,
82 | 488.23823508
83 | ]
84 | ],
85 | "reverse_colors": true,
86 | "step": 0.206
87 | },
88 | {
89 | "clockwise": true,
90 | "depth": 25,
91 | "disabled": false,
92 | "footer": 0.157,
93 | "footer_inc": 0.031,
94 | "footer_offset": 6,
95 | "inc": 0.0044,
96 | "points": [
97 | [
98 | 499.7000764,
99 | 161.56583335
100 | ],
101 | [
102 | 683.84279476,
103 | 0.0
104 | ],
105 | [
106 | 890.82969432,
107 | 0.0
108 | ],
109 | [
110 | 852.01370965,
111 | 320.37319165
112 | ],
113 | [
114 | 488.93238772,
115 | 309.76734034
116 | ]
117 | ],
118 | "reverse_colors": false,
119 | "step": 0.226
120 | },
121 | {
122 | "clockwise": false,
123 | "depth": 27,
124 | "disabled": false,
125 | "footer": 0.156,
126 | "footer_inc": 0.027,
127 | "footer_offset": 8,
128 | "inc": 0.0033,
129 | "points": [
130 | [
131 | 488.93238772,
132 | 309.76734034
133 | ],
134 | [
135 | 852.01370965,
136 | 320.37319165
137 | ],
138 | [
139 | 818.77729258,
140 | 600.0
141 | ],
142 | [
143 | 576.41921397,
144 | 600.0
145 | ],
146 | [
147 | 475.96545457,
148 | 488.23823508
149 | ]
150 | ],
151 | "reverse_colors": true,
152 | "step": 0.214
153 | },
154 | {
155 | "clockwise": true,
156 | "depth": 22,
157 | "disabled": false,
158 | "footer": 0.118,
159 | "footer_inc": 0.038,
160 | "footer_offset": 7,
161 | "inc": 0.0036,
162 | "points": [
163 | [
164 | 852.01370965,
165 | 320.37319165
166 | ],
167 | [
168 | 1087.8409939,
169 | 327.26186634
170 | ],
171 | [
172 | 1100.43668122,
173 | 600.0
174 | ],
175 | [
176 | 818.77729258,
177 | 600.0
178 | ]
179 | ],
180 | "reverse_colors": false,
181 | "step": 0.168
182 | },
183 | {
184 | "clockwise": false,
185 | "depth": 28,
186 | "disabled": false,
187 | "footer": 0.13,
188 | "footer_inc": 0.033,
189 | "footer_offset": 12,
190 | "inc": 0.002,
191 | "points": [
192 | [
193 | 1087.8409939,
194 | 327.26186634
195 | ],
196 | [
197 | 1500.0,
198 | 339.30131004
199 | ],
200 | [
201 | 1500.0,
202 | 600.0
203 | ],
204 | [
205 | 1100.43668122,
206 | 600.0
207 | ]
208 | ],
209 | "reverse_colors": true,
210 | "step": 0.156
211 | },
212 | {
213 | "clockwise": false,
214 | "depth": 26,
215 | "disabled": false,
216 | "footer": 0.116,
217 | "footer_inc": 0.029,
218 | "footer_offset": 8,
219 | "inc": 0.0028,
220 | "points": [
221 | [
222 | 890.82969432,
223 | 0.0
224 | ],
225 | [
226 | 1156.76855895,
227 | 0.0
228 | ],
229 | [
230 | 1260.05476213,
231 | 332.29234714
232 | ],
233 | [
234 | 852.01370965,
235 | 320.37319165
236 | ]
237 | ],
238 | "reverse_colors": true,
239 | "step": 0.171
240 | },
241 | {
242 | "clockwise": true,
243 | "depth": 25,
244 | "disabled": false,
245 | "footer": 0.111,
246 | "footer_inc": 0.029,
247 | "footer_offset": 6,
248 | "inc": 0.0031,
249 | "points": [
250 | [
251 | 1156.76855895,
252 | 0.0
253 | ],
254 | [
255 | 1500.0,
256 | 0.0
257 | ],
258 | [
259 | 1500.0,
260 | 339.30131004
261 | ],
262 | [
263 | 1260.05476213,
264 | 332.29234714
265 | ]
266 | ],
267 | "reverse_colors": false,
268 | "step": 0.159
269 | }
270 | ]
271 | }
--------------------------------------------------------------------------------
/Examples/vanilla_007_cutout_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/vanilla_007_cutout_rasterized.jpg
--------------------------------------------------------------------------------
/Examples/vanilla_007_rasterized.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuclearsugar/VectorRecursionWorkbench/3881605d9c6bd4e64d4252f3ee6cb7c1a9ea64ed/Examples/vanilla_007_rasterized.jpg
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2014-2016 Nathan Williams, Jason Fletcher
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Vector Recursion Workbench
2 | This is a tool for laying out recursively nested polygons that can be exported as an SVG.
3 | *Designed with laser cutting in mind.*
4 |
5 |
6 | 
7 |
8 |
9 | ## App Screenshots
10 | 
11 | *Screenshot: previewing the guide lines*
12 |
13 | 
14 | *Screenshot: previewing the guide lines and recursion concurrently*
15 |
16 |
17 | ### Standalone App
18 | To play with this software without any fuss, check out the [standalone app](https://github.com/nuclearsugar/VectorRecursionWorkbench/releases) available for Mac & Windows.
19 |
20 | ### Development Frozen
21 | This software is no longer being maintained and issues will not be fixed. But you're welcome to fork this project.
22 |
23 | ### Dependencies
24 | Python 2.7.9
25 | wxPython 3.0.1.1
26 | PyOpenGL 3.1.0
27 |
28 | ### Usage
29 | Run this script in a CMD shell to initiate the GUI:
30 | ```python VRW-gui.py```
31 |
32 |
33 | ## Documentation
34 | ### Preview Window
35 | - **Draw Guide Line**: Allows you to draw a guide line onto the canvas. (hotkey is ‘d’.) To cancel drawing a guide line hit ‘ESC’. If you need to slice a specific shape, then first click to select that shape and then draw the guide line within it.
36 | - **Delete Guide Lines**: Allows you to delete a specific guide line by clicking on it. (hotkey is ‘x’.) Useful mainly for creating shapes such as a pentagon. *Beware: deleting a line is risky and may break your layout, so be sure to save prior.*
37 | - Undo (cmd-z) and Redo (cmd-shft-z) are functional for guide lines. *Beware: But if you try to undo the change of a shape attribute, then all of the attributes will revert to their original state (known annoying bug). Also undo-ing a guide line is risky and may break your layout, so be sure to save often.*
38 | - **Snapping**: When drawing a guide line, the cursor will snap to the nearest corner when within a certain proximity.
39 | - **Hide Guide Lines**: Makes the guide lines invisible within the preview area so that you can see the recursion as it will be exported.
40 | - **Hide Shape #’s**: Makes the shape #’s invisible within the preview area. But you can still select a shape.
41 | - **Preview**: Allows you to preview just the guide lines, or preview the guide lines and recursion concurrently.
42 | - **Aspect Ratio**: Allows you to fit the recursion to the canvas, or stretch the recursion to the canvas. When exporting, fit will always be used. But stretch is useful if you’re doing projection mapping and want to layout in context.
43 |
44 | ### Shape Attributes
45 | - Select a shape by click on the # within the preview window.
46 | - **Direction**: Decide whether the recursion iterates clockwise or counter-clockwise.
47 | - **Depth**: Limits the amount of iterations.
48 | - **Step**: Increases or decreases the spacing of the shape recursion.
49 | - **Inner**: Increases or decreases the spacing of the shape recursion, but affecting the inner iterations more heavily. This allows you to decide on the complexity of the inner iterations without affecting the outer iterations.
50 | - **Reverse Colors**: Swap the starting color. This is important for maintaining a cohesive pattern when laying out a piece.
51 | - **Disable**: This will turn off recursions for the currently selected shape and it will not render when exported. This is useful for creating unique canvas shapes, such as a hexagon. It’s also useful for creating empty spaces within your layout. Or approaching it creatively to create a silhouette within your layout.
52 | - **Footer**: Adds extra spacing around each triangle. Affects the overall recursion evenly.
53 | - **Buffer**: Adds extra spacing around each triangle. Affects the inner iterations more heavily.
54 | - **Offset**: Adjusts the starting point of which the Buffer begins within the outer iterations.
55 |
56 | ### Global Attributes
57 | - **Step**: Increases or decreases the spacing of the shape recursion for the whole layout. Every shape is affected equally, without resetting the individual Shape Step setting.
58 | - **Colors**: Determine what two colors are used to alternate within the recursion.
59 | - **Canvas Width/Height**: Set in pixels of your monitor. Just a way to determine the aspect ratio since the SVG exports are vector in nature.
60 | - **Load Background Image**: Allows you to load a background image within the preview window. This background image does not affect the recursion or export, it can only be used as a helper when laying out guide lines. It can be useful for tracing complex patterns you want to draw. To see an example, check of the ‘FaceSilhouette_001’ or ‘Hands_001’ within the Examples folder.
61 |
62 | ### Saving & Exporting
63 | - **File > Save as**: Writes an JSON file which can be opened later and edited.
64 | - **File > Export**: Writes an SVG of the whole canvas. This is the easiest approach for when you’re doing a single laser cut piece.
65 | - **File > Export Shapes**: Exports in a modular fashion by writing multiple SVG’s. One SVG is exported for each shape # on the canvas. This option is useful if you want to cut out each shape # individually and then physically assemble them all together after completed. So long as you plan with the max dimensions of your work bed in mind, then you can fill a wall of unlimited size.
66 |
67 | ### Post-Production
68 | - If you need to alter the exported SVG or combine multiple SVG’s, [Inkscape](https://inkscape.org/) is free and highly recommended.
69 |
70 |
71 | ## History
72 | This software was programmed by [Nathan Williams](https://github.com/nathanlws) and designed by [Jason Fletcher](http://www.jasonfletcher.info/).
73 |
74 | I was first introduced to this technique through drawing by hand. Over the years I experimented with different approaches and started using an exacto blade to cutout the patterns into paper. I loved the resulting artworks but the effort required was enormous and difficult on my hands. So for many years I dreamed of creating a software which would automate the process and make laser cutting possible. While studying in college, Alex Horn helped me to create an early version of the idea first in Pure Data and then Adobe Flash. Then many years later I met Nathan and randomly shared my idea over a beer and a collaboration bloomed. This software is the result. Check out the Archive folder to see some early hand drawings of this software and its evolution.
75 |
76 | I've long wanted to laser cut these patterns into wood and make giant latticed windows or pieces which precisely fill up an entire wall. Due to available free time, workspace constraints, and spare money, I haven't yet explored this dream. Someday I will but in the meantime why not open-source it? I would love to see your creations, please share photos with me. Cheers!
77 |
78 | 
79 | *Red paper which has been hand drawn and then hand cut - (9 x 2 feet / 2.74 x .60 meters)*
80 |
81 | 
82 | *A similar recursion pattern can been mimicked using this software*
83 |
84 | 
85 | *Then by tweaking the shape Footer, Buffer, and Offset attributes, the piece can be optimized for laser cutting*
86 |
87 |
88 | ## License
89 | The MIT License (MIT)
90 | Copyright (c) 2014-2016 Nathan Williams, Jason Fletcher
91 | It is free software and may be redistributed under the terms specified in the LICENSE file.
92 |
93 |
94 | ## Example Renders (rasterized)
95 | *SVG versions of these renders are available within the Examples folder.*
96 |
97 | 
98 |
99 | 
100 |
101 | 
102 |
103 | 
104 |
105 | 
106 |
107 | 
108 |
109 | 
110 |
--------------------------------------------------------------------------------
/geometry.py:
--------------------------------------------------------------------------------
1 | #
2 | # Vector Recursion Workbench
3 | # Copyright (c) 2014-2016 Nathan Williams, Jason Fletcher
4 | #
5 | # Permission is hereby granted, free of charge, to any person obtaining a copy
6 | # of this software and associated documentation files (the "Software"), to deal
7 | # in the Software without restriction, including without limitation the rights
8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | # copies of the Software, and to permit persons to whom the Software is
10 | # furnished to do so, subject to the following conditions:
11 | #
12 | # The above copyright notice and this permission notice shall be included in
13 | # all copies or substantial portions of the Software.
14 | #
15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | # SOFTWARE.
22 | #
23 |
24 | import math
25 |
26 |
27 | class vec2(object):
28 | def __init__(self, x, y):
29 | self.x = x
30 | self.y = y
31 |
32 | def __repr__(self):
33 | return "(%g,%g)" % (self.x, self.y)
34 |
35 | def __eq__(self, rhs):
36 | return (self.x == rhs.x) and (self.y == rhs.y)
37 |
38 | def __sub__(self, rhs):
39 | return vec2(self.x - rhs.x, self.y - rhs.y)
40 |
41 | def __add__(self, rhs):
42 | return vec2(self.x + rhs.x, self.y + rhs.y)
43 |
44 | def __mul__(self, s):
45 | return vec2(self.x * s, self.y * s)
46 |
47 | def __div__(self, s):
48 | return vec2(self.x / s, self.y / s)
49 |
50 | def dot(self, rhs):
51 | return (self.x * rhs.x) + (self.y * rhs.y)
52 |
53 | def cross(self, rhs):
54 | # u x v = ( u.y * v.z - u.z * v.y,
55 | # u.z * v.x - u.x * v.z,
56 | # u.x * v.y - u.y * v.x)
57 | # Treat this vec2 as vec3 with 0 for z components
58 | return (self.x * rhs.y) - (self.y * rhs.x)
59 |
60 | def dist_sq(self, rhs):
61 | a = (rhs.x - self.x) ** 2
62 | b = (rhs.y - self.y) ** 2
63 | return a + b
64 |
65 | def dist(self, rhs):
66 | return math.sqrt(self.dist_sq(rhs))
67 |
68 | def rot(self, deg):
69 | rad = math.radians(deg)
70 | c = math.cos(rad)
71 | s = math.sin(rad)
72 | return vec2(self.x * c - self.y * s, self.x * s + self.y * c)
73 |
74 | def project_onto_line(self, a, b):
75 | """ Project this vec2 on the line segment defined by a and b """
76 | ab = b - a
77 | ab_dist_sq = ab.dot(ab)
78 | if ab_dist_sq == 0:
79 | # a and b are equal
80 | return a
81 | else:
82 | # Line parameterized as a + t(b - a)
83 | ap = self - a
84 | t = ap.dot(ab) / ab_dist_sq
85 | if t < 0.0:
86 | # before a
87 | return a
88 | elif t > 1:
89 | # before b
90 | return b
91 | else:
92 | # between
93 | return a + (ab * t)
94 |
95 |
96 | class polygon(object):
97 | def __init__(self, points, make_clockwise=True):
98 | self.points = []
99 | self.points.extend(points)
100 | if make_clockwise:
101 | self.make_clockwise()
102 |
103 | def __repr__(self):
104 | return str(self.points)
105 |
106 | @classmethod
107 | def aabb(cls, x, y, w, h):
108 | return polygon([
109 | vec2(x, y),
110 | vec2(x, y+h),
111 | vec2(x+w, y+h),
112 | vec2(x+w, y)
113 | ])
114 |
115 | def make_clockwise(self):
116 | # Get into clockwise order
117 | c = self.center()
118 | if c is None:
119 | return None
120 | a = {}
121 | for p in self.points:
122 | # Angle between vertex and center
123 | a[p] = math.atan2(p.y - c.y, p.x - c.x)
124 | self.points.sort(key=lambda p: a[p])
125 | return self
126 |
127 | def is_concave(self):
128 | # All consecutive line segments must have cross products of same sign
129 | n = len(self.points)
130 | prev_sign = None
131 | for i,a in enumerate(self.points):
132 | b = self.points[(i+1) % n]
133 | c = self.points[(i+2) % n]
134 | ab = b - a
135 | bc = c - b
136 | sign = ab.cross(bc) >= 0.0
137 | if prev_sign is None:
138 | prev_sign = sign
139 | elif prev_sign != sign:
140 | return False
141 | return True
142 |
143 | def center(self):
144 | a = 0.0
145 | cx = 0.0
146 | cy = 0.0
147 | p = self.points + [ self.points[0] ]
148 | for i in range(0, len(p)-1):
149 | tmp = p[i].x * p[i+1].y - p[i+1].x * p[i].y
150 | a += tmp
151 | cx += ( (p[i].x + p[i+1].x) * tmp)
152 | cy += ( (p[i].y + p[i+1].y) * tmp)
153 | a = 0.5 * a
154 | if a == 0.0:
155 | return None
156 | tmp = (1.0 / (6.0 * a))
157 | return vec2( tmp * cx, tmp * cy )
158 |
159 | def contains(self, p):
160 | # self.points sorted clockwise so pointer must
161 | # be on right (inner) side of all segments
162 | for i,a in enumerate(self.points):
163 | b = self.points[(i+1)%len(self.points)]
164 | ab = b - a
165 | ap = p - a
166 | if ab.cross(ap) < 0:
167 | return False
168 | return True
169 |
170 | def rotate(self, deg):
171 | c = self.center()
172 | if c is None:
173 | return None
174 | out = []
175 | for p in self.points:
176 | x = p - c
177 | x = x.rot(deg)
178 | x = x + c
179 | out.append(x)
180 | return polygon(out)
181 |
182 | def scale(self, s):
183 | c = self.center()
184 | if c is None:
185 | return None
186 | out = []
187 | for p in self.points:
188 | x = (p.x - c.x) * s + c.x
189 | y = (p.y - c.y) * s + c.y
190 | out.append(vec2(x, y))
191 | p = polygon(out, make_clockwise=False)
192 | return p.make_clockwise()
193 |
194 | def recurse(self, s):
195 | p = []
196 | l = len(self.points)
197 | for i in range(0, l):
198 | p.append(self.points[i] + (self.points[(i+1)%l] - self.points[i]) * s)
199 | # Input polygon already clockwise => recurse is clockwise
200 | return polygon(p, make_clockwise=False)
201 |
202 |
--------------------------------------------------------------------------------
/project.py:
--------------------------------------------------------------------------------
1 | #
2 | # Vector Recursion Workbench
3 | # Copyright (c) 2014-2016 Nathan Williams, Jason Fletcher
4 | #
5 | # Permission is hereby granted, free of charge, to any person obtaining a copy
6 | # of this software and associated documentation files (the "Software"), to deal
7 | # in the Software without restriction, including without limitation the rights
8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | # copies of the Software, and to permit persons to whom the Software is
10 | # furnished to do so, subject to the following conditions:
11 | #
12 | # The above copyright notice and this permission notice shall be included in
13 | # all copies or substantial portions of the Software.
14 | #
15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | # SOFTWARE.
22 | #
23 |
24 | import json
25 |
26 | from geometry import vec2, polygon
27 |
28 |
29 | class shape(object):
30 | def __init__(self, poly, depth, step, inc, clockwise, reverse_colors, disabled, footer, footer_inc, footer_offset):
31 | # Polygon.
32 | assert type(poly) == polygon
33 | self.poly = poly
34 | # Int >= 1. Max recursion count.
35 | assert depth >= 1
36 | self.depth = depth
37 | # Float (0.0, 1.0). How far to step along the (half) line.
38 | assert (step > 0.0) and (step < 1.0)
39 | self.step = step
40 | # Float [0.0, 1.0). How much to add to step each iteration.
41 | assert (inc >= 0.0) and (inc < 1.0)
42 | self.inc = inc
43 | # Bool. Whether or not recursion appears clockwise.
44 | assert clockwise in (True, False)
45 | self.clockwise = clockwise
46 | # Bool. Whether or not to reverse color sequence.
47 | assert reverse_colors in (True, False)
48 | self.reverse_colors = reverse_colors
49 | # Bool. Whether or not to disable shape.
50 | assert disabled in (True, False)
51 | self.disabled = disabled
52 | # Float [0.0, 1.0). How much to footer to apply each iteration.
53 | assert (footer >= 0.0) and (footer < 1.0)
54 | self.footer = footer
55 | # Float [0.0, 1.0). How much to add each iteration after footer_offset.
56 | assert (footer_inc >= 0.0) and (footer_inc < 1.0)
57 | self.footer_inc = footer_inc
58 | # Int >= 0. What iteration to start applying footer_inc.
59 | assert footer_offset >= 0
60 | self.footer_offset = footer_offset
61 |
62 |
63 | COLOR_NAME_TO_HTML = {
64 | 'black' : "#000000",
65 | 'red' : "#FF0000",
66 | 'green' : "#00FF00",
67 | 'blue' : "#0000FF",
68 | 'gray' : "#7F7F7F",
69 | 'white' : "#FFFFFF",
70 | }
71 |
72 | def convert_color_names(colors):
73 | out = []
74 | for c in colors:
75 | out.append(COLOR_NAME_TO_HTML.get(c, c))
76 | return out
77 |
78 | class project(object):
79 | def __init__(self, canvas, colors, shapes):
80 | # List. [start_x, start_y, end_x, end_y]
81 | assert (type(canvas) == list) and (len(canvas) == 4)
82 | self.canvas = canvas
83 | # List. HTML color strings
84 | assert (type(colors) == list)
85 | self.colors = colors
86 | self.shapes = shapes
87 |
88 | def to_json(self, filename=None):
89 | raw_shapes = []
90 | for s in self.shapes:
91 | points = []
92 | for p in s.poly.points:
93 | points.append((p.x, p.y))
94 | raw_shapes.append({
95 | 'points': points,
96 | 'depth': s.depth,
97 | 'step': s.step,
98 | 'inc': s.inc,
99 | 'clockwise': s.clockwise,
100 | 'reverse_colors': s.reverse_colors,
101 | 'disabled': s.disabled,
102 | 'footer': s.footer,
103 | 'footer_inc': s.footer_inc,
104 | 'footer_offset': s.footer_offset,
105 | })
106 | obj = {
107 | 'canvas': self.canvas,
108 | 'colors': self.colors,
109 | 'shapes': raw_shapes,
110 | }
111 | args = { 'sort_keys': True, 'indent': 4, 'separators': (',', ': ') }
112 | if filename:
113 | with open(filename, 'w') as f:
114 | json.dump(obj, f, **args)
115 | return None
116 | else:
117 | return json.dumps(obj, **args)
118 |
119 | def save_file(self, filename):
120 | self.to_json(filename)
121 |
122 | @classmethod
123 | def load_file(cls, filename):
124 | with open(filename, 'r') as f:
125 | data = json.load(f)
126 | return cls.load_dict(data)
127 |
128 | @classmethod
129 | def load_json(cls, json_str):
130 | data = json.loads(json_str)
131 | return cls.load_dict(data)
132 |
133 | @classmethod
134 | def load_dict(cls, data):
135 | canvas = data['canvas']
136 | colors = convert_color_names(data['colors'])
137 | footer_buffer = float(data.get('footer_buffer', 0.0))
138 | raw_shapes = data.get('shapes', [])
139 | shapes = []
140 | for s in raw_shapes:
141 | points = []
142 | for p in s['points']:
143 | points.append(vec2(float(p[0]), float(p[1])))
144 | shapes.append(
145 | shape(
146 | poly=polygon(points),
147 | depth=int(s['depth']),
148 | step=float(s['step']),
149 | inc=float(s['inc']),
150 | clockwise=bool(s['clockwise']),
151 | reverse_colors=bool(s.get('reverse_colors', False)),
152 | disabled=bool(s.get('disabled', False)),
153 | footer=float(s.get('footer', footer_buffer)),
154 | footer_inc=float(s.get('footer_inc', 0.0)),
155 | footer_offset=float(s.get('footer_offset', 0)),
156 | )
157 | )
158 | return project(canvas, colors, shapes)
159 |
160 |
--------------------------------------------------------------------------------
/recursion_excursion.py:
--------------------------------------------------------------------------------
1 | #
2 | # Vector Recursion Workbench
3 | # Copyright (c) 2014-2016 Nathan Williams, Jason Fletcher
4 | #
5 | # Permission is hereby granted, free of charge, to any person obtaining a copy
6 | # of this software and associated documentation files (the "Software"), to deal
7 | # in the Software without restriction, including without limitation the rights
8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | # copies of the Software, and to permit persons to whom the Software is
10 | # furnished to do so, subject to the following conditions:
11 | #
12 | # The above copyright notice and this permission notice shall be included in
13 | # all copies or substantial portions of the Software.
14 | #
15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | # SOFTWARE.
22 | #
23 |
24 | from project import project
25 | from geometry import polygon
26 |
27 | def svg_vec2_str(vec2):
28 | return "%g,%g" % (vec2.x, vec2.y)
29 |
30 | def generate_svg(canvas, recursion_list, output):
31 | output.write('\n')
32 | output.write('\n')
33 | output.write('\n' % str(canvas)[1:-1])
34 | for n,poly_list in enumerate(recursion_list):
35 | output.write(' \n' % (n + 1))
36 | for c,poly in poly_list:
37 | output.write(' \n' % (c, ", ".join(map(svg_vec2_str, poly.points))))
38 | output.write(' \n')
39 |
40 |
41 | def generate_recursion(proj):
42 | """
43 | Returns list of list of color,polygon tuples:
44 | [
45 | [ ('color', poly0_recursion0), ('color', poly1_recursion1), ...],
46 | [ ('color', poly1_recursion0), ... ]
47 | ]
48 | """
49 | all_output = []
50 | for n,shape in enumerate(proj.shapes):
51 | if shape.disabled:
52 | all_output.append([])
53 | continue
54 | if shape.reverse_colors:
55 | colors = list(proj.colors)
56 | colors.reverse()
57 | else:
58 | colors = proj.colors
59 | step = shape.step
60 | inc = shape.inc
61 | footer_scale = 1.0 - shape.footer
62 | footer_inc = shape.footer_inc
63 | footer_offset = shape.footer_offset
64 | poly = shape.poly
65 | # real step (0.0,0.5) appears clockwise and (0.5, 1.0) counter-clockwise
66 | step /= 2.0
67 | inc /= 2.0
68 | if not shape.clockwise:
69 | step = 1.0 - step
70 | inc = 0.0 - inc
71 | poly_output = []
72 | for d in range(shape.depth):
73 | c = colors[d % len(colors)]
74 | new_poly = poly.recurse(step)
75 | if new_poly is None:
76 | break
77 | if d >= footer_offset:
78 | footer_scale -= footer_inc
79 | if footer_scale < 0:
80 | break
81 | #
82 | # 0 is poly[0], 0` is new_poly[0], etc:
83 | #
84 | # 0...0`....1
85 | # . .
86 | # . .
87 | # . .
88 | # . 1`
89 | # 3` .
90 | # . .
91 | # . .
92 | # . .
93 | # 3....2`...2
94 | #
95 | # Would triangulate as:
96 | # [0, 0`, 3`],
97 | # [1, 1`, 0`],
98 | # [2, 2`, 1`],
99 | # [3, 3`, 2`]
100 | #
101 | # That is, for i in p:
102 | # [i, i`, (i-1)`]
103 | #
104 | assert len(poly.points) == len(new_poly.points)
105 | l = len(poly.points)
106 | for i in range(l):
107 | tri = [
108 | poly.points[i],
109 | new_poly.points[i],
110 | new_poly.points[(i-1)%l]
111 | ]
112 | # Starting poly clockwise => tri already is
113 | tri_poly = polygon(tri, make_clockwise=False)
114 | # Footer shrinks tri to add a gap
115 | if footer_scale != 1.0:
116 | tri_poly = tri_poly.scale(footer_scale)
117 | poly_output.append((c, tri_poly))
118 | poly = new_poly
119 | step += inc
120 | if (step <= 0.0) or (step >= 1.0):
121 | print 'Recursion stopped due to step size'
122 | break
123 | all_output.append(poly_output)
124 | return all_output
125 |
126 |
127 | if __name__ == "__main__":
128 | import sys
129 | if len(sys.argv) not in (2,3):
130 | sys.stderr.write('Usage: %s [output.svg]\n' % sys.argv[0])
131 | sys.exit(1)
132 | proj = project.load_file(sys.argv[1])
133 | rec_list = generate_recursion(proj)
134 | if len(sys.argv) == 3:
135 | output = open(sys.argv[2], 'w')
136 | else:
137 | output = sys.stdout
138 | generate_svg(proj.canvas, rec_list, output)
139 |
140 |
--------------------------------------------------------------------------------