├── LICENSE ├── README.md ├── results ├── e1r1.jpg ├── e1r2.jpg ├── e1r3.jpg ├── e1r6.jpg ├── e1r7.jpg ├── e2r1.jpg ├── e3r1.jpg ├── e3r2.jpg ├── e4r1.jpg ├── e4r2.jpg ├── e4r3.jpg ├── e4r4.jpg ├── e4r5.jpg ├── e4r6.jpg ├── e4r7.jpg ├── e4r8.jpg ├── e4r9.jpg ├── e5r1-d2.jpg ├── e5r1-d3.jpg ├── e5r1-d4.jpg ├── e5r10-d2-1.jpg ├── e5r11-d2-1.jpg ├── e5r12-d2-2.jpg ├── e5r13-d1-2.jpg ├── e5r14-d1-1.jpg ├── e5r15-d1-3.jpg ├── e5r2-d5.jpg ├── e5r3-d5.jpg ├── e5r4-d5-1.jpg ├── e5r5-d5-2.jpg ├── e5r6-d5-3.jpg ├── e5r7-d5-4.jpg ├── e5r8-d3-1.jpg ├── e5r9-d3-2.jpg ├── e6r10.jpg ├── e6r11.jpg ├── e6r2.jpg ├── e6r3.jpg ├── e6r4.jpg ├── e6r5.jpg ├── e6r6.jpg ├── e6r7.jpg ├── e6r8.jpg ├── e6r9.jpg ├── f10r1.jpg ├── f10r2.jpg ├── f10r3.jpg ├── f10r4.jpg ├── f10r5.jpg ├── f11r1.jpg ├── f11r2.jpg ├── f11r3.jpg ├── f11r4.jpg ├── f12r1.jpg ├── f12r2.jpg ├── f12r3.jpg ├── f12r4.jpg ├── f12r5.jpg ├── f12r6.jpg ├── f13r1.jpg ├── f13r2.jpg ├── f13r3.jpg ├── f13r4.jpg ├── f1r1-1.jpg ├── f1r1.jpg ├── f1r2-1.jpg ├── f1r2.jpg ├── f2r1-1.jpg ├── f2r1-2.jpg ├── f2r1-3-bigger-segment-length.jpg ├── f2r1-3.jpg ├── f2r1-4-bigger-segment-length.jpg ├── f2r1.jpg ├── f2r2-2.jpg ├── f2r2.jpg ├── f3r1-1.jpg ├── f3r1-2-bigger-segment-length.jpg ├── f3r1.jpg ├── f3r2-1.jpg ├── f3r2.jpg ├── f4r1-1.jpg ├── f4r1-2.jpg ├── f4r1-3.jpg ├── f4r1.jpg ├── f4r2-1.jpg ├── f4r2.jpg ├── f5r1-1.jpg ├── f5r1-2.jpg ├── f5r1-3.jpg ├── f5r1.jpg ├── f5r2-1.jpg ├── f5r2-2.jpg ├── f5r2.jpg ├── f6r1-1.jpg ├── f6r1.jpg ├── f6r2-1.jpg ├── f6r2.jpg ├── f6r3-1.jpg ├── f6r3.jpg ├── f6r4-1.jpg ├── f6r4.jpg ├── f6r5-1.jpg ├── f6r5.jpg ├── f7r1.jpg ├── f7r2.jpg ├── f7r3.jpg ├── f7r4.jpg ├── f8r1.jpg ├── f8r2.jpg ├── f8r3.jpg ├── f8r4.jpg ├── f8r5.jpg ├── f8r6.jpg ├── f9r1.jpg ├── f9r2.jpg ├── f9r3.jpg ├── f9r4.jpg └── f9r5.jpg └── src ├── e1r1.pde ├── e1r6.pde ├── e1r7.pde ├── e2.pde ├── e3.pde ├── e4.pde ├── e5-d1-1.pde ├── e5-d1-2.pde ├── e5-d1-3.pde ├── e5-d2-1.pde ├── e5-d2-2.pde ├── e5-d3-1.pde ├── e5-d3-2.pde ├── e5-d5-1.pde ├── e5-d5-2.pde ├── e5-d5-3.pde ├── e5-d5-4.pde ├── e5.pde ├── e6.pde ├── f1-1.pde ├── f1.pde ├── f1.ttf ├── f10.pde ├── f11.pde ├── f12.pde ├── f13.pde ├── f2-2.pde ├── f2.pde ├── f2.ttf ├── f3-1.pde ├── f3.pde ├── f4.pde ├── f5.pde ├── f6-1.pde ├── f6.pde ├── f7.pde ├── f8.pde ├── f9.pde ├── monalisa.jpg └── view1.jpg /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Alexandru Adam 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 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | processing 2 | ========== 3 | 4 | Some Processing experiments 5 | 6 | What is Processing: https://www.processing.org/ 7 | 8 | Inspired by examples found here: http://www.openprocessing.org/ and http://code.andreaskoller.com/libraries/fontastic/ 9 | 10 | For generating fonts you need to install geomerative & fontastic 11 | 12 | 13 | ## Images examples: 14 | 15 | ![alt e1r1.jpg](https://github.com/alexadam/processing/blob/master/results/e1r1.jpg?raw=true) 16 | 17 | ![alt e1r2.jpg](https://github.com/alexadam/processing/blob/master/results/e1r2.jpg?raw=true) 18 | 19 | ![alt e1r3.jpg](https://github.com/alexadam/processing/blob/master/results/e1r3.jpg?raw=true) 20 | 21 | ![alt e1r6.jpg](https://github.com/alexadam/processing/blob/master/results/e1r6.jpg?raw=true) 22 | 23 | ![alt e1r7.jpg](https://github.com/alexadam/processing/blob/master/results/e1r7.jpg?raw=true) 24 | 25 | ![alt e2r1.jpg](https://github.com/alexadam/processing/blob/master/results/e2r1.jpg?raw=true) 26 | 27 | ![alt e3r1.jpg](https://github.com/alexadam/processing/blob/master/results/e3r1.jpg?raw=true) 28 | 29 | ![alt e3r2.jpg](https://github.com/alexadam/processing/blob/master/results/e3r2.jpg?raw=true) 30 | 31 | ![alt e4r1.jpg](https://github.com/alexadam/processing/blob/master/results/e4r1.jpg?raw=true) 32 | 33 | ![alt e4r2.jpg](https://github.com/alexadam/processing/blob/master/results/e4r2.jpg?raw=true) 34 | 35 | ![alt e4r3.jpg](https://github.com/alexadam/processing/blob/master/results/e4r3.jpg?raw=true) 36 | 37 | ![alt e4r4.jpg](https://github.com/alexadam/processing/blob/master/results/e4r4.jpg?raw=true) 38 | 39 | ![alt e4r5.jpg](https://github.com/alexadam/processing/blob/master/results/e4r5.jpg?raw=true) 40 | 41 | ![alt e4r6.jpg](https://github.com/alexadam/processing/blob/master/results/e4r6.jpg?raw=true) 42 | 43 | ![alt e4r7.jpg](https://github.com/alexadam/processing/blob/master/results/e4r7.jpg?raw=true) 44 | 45 | ![alt e4r8.jpg](https://github.com/alexadam/processing/blob/master/results/e4r8.jpg?raw=true) 46 | 47 | ![alt e4r9.jpg](https://github.com/alexadam/processing/blob/master/results/e4r9.jpg?raw=true) 48 | 49 | ![alt e5r10-d2-1.jpg](https://github.com/alexadam/processing/blob/master/results/e5r10-d2-1.jpg?raw=true) 50 | 51 | ![alt e5r11-d2-1.jpg](https://github.com/alexadam/processing/blob/master/results/e5r11-d2-1.jpg?raw=true) 52 | 53 | ![alt e5r12-d2-2.jpg](https://github.com/alexadam/processing/blob/master/results/e5r12-d2-2.jpg?raw=true) 54 | 55 | ![alt e5r13-d1-2.jpg](https://github.com/alexadam/processing/blob/master/results/e5r13-d1-2.jpg?raw=true) 56 | 57 | ![alt e5r14-d1-1.jpg](https://github.com/alexadam/processing/blob/master/results/e5r14-d1-1.jpg?raw=true) 58 | 59 | ![alt e5r15-d1-3.jpg](https://github.com/alexadam/processing/blob/master/results/e5r15-d1-3.jpg?raw=true) 60 | 61 | ![alt e5r1-d2.jpg](https://github.com/alexadam/processing/blob/master/results/e5r1-d2.jpg?raw=true) 62 | 63 | ![alt e5r1-d3.jpg](https://github.com/alexadam/processing/blob/master/results/e5r1-d3.jpg?raw=true) 64 | 65 | ![alt e5r1-d4.jpg](https://github.com/alexadam/processing/blob/master/results/e5r1-d4.jpg?raw=true) 66 | 67 | ![alt e5r2-d5.jpg](https://github.com/alexadam/processing/blob/master/results/e5r2-d5.jpg?raw=true) 68 | 69 | ![alt e5r3-d5.jpg](https://github.com/alexadam/processing/blob/master/results/e5r3-d5.jpg?raw=true) 70 | 71 | ![alt e5r4-d5-1.jpg](https://github.com/alexadam/processing/blob/master/results/e5r4-d5-1.jpg?raw=true) 72 | 73 | ![alt e5r5-d5-2.jpg](https://github.com/alexadam/processing/blob/master/results/e5r5-d5-2.jpg?raw=true) 74 | 75 | ![alt e5r6-d5-3.jpg](https://github.com/alexadam/processing/blob/master/results/e5r6-d5-3.jpg?raw=true) 76 | 77 | ![alt e5r7-d5-4.jpg](https://github.com/alexadam/processing/blob/master/results/e5r7-d5-4.jpg?raw=true) 78 | 79 | ![alt e5r8-d3-1.jpg](https://github.com/alexadam/processing/blob/master/results/e5r8-d3-1.jpg?raw=true) 80 | 81 | ![alt e5r9-d3-2.jpg](https://github.com/alexadam/processing/blob/master/results/e5r9-d3-2.jpg?raw=true) 82 | 83 | ![alt e6r10.jpg](https://github.com/alexadam/processing/blob/master/results/e6r10.jpg?raw=true) 84 | 85 | ![alt e6r11.jpg](https://github.com/alexadam/processing/blob/master/results/e6r11.jpg?raw=true) 86 | 87 | ![alt e6r2.jpg](https://github.com/alexadam/processing/blob/master/results/e6r2.jpg?raw=true) 88 | 89 | ![alt e6r3.jpg](https://github.com/alexadam/processing/blob/master/results/e6r3.jpg?raw=true) 90 | 91 | ![alt e6r4.jpg](https://github.com/alexadam/processing/blob/master/results/e6r4.jpg?raw=true) 92 | 93 | ![alt e6r5.jpg](https://github.com/alexadam/processing/blob/master/results/e6r5.jpg?raw=true) 94 | 95 | ![alt e6r6.jpg](https://github.com/alexadam/processing/blob/master/results/e6r6.jpg?raw=true) 96 | 97 | ![alt e6r7.jpg](https://github.com/alexadam/processing/blob/master/results/e6r7.jpg?raw=true) 98 | 99 | ![alt e6r8.jpg](https://github.com/alexadam/processing/blob/master/results/e6r8.jpg?raw=true) 100 | 101 | ![alt e6r9.jpg](https://github.com/alexadam/processing/blob/master/results/e6r9.jpg?raw=true) 102 | 103 | 104 | ## Font examples: 105 | 106 | ![alt f10r1.jpg](https://github.com/alexadam/processing/blob/master/results/f10r1.jpg?raw=true) 107 | 108 | ![alt f10r2.jpg](https://github.com/alexadam/processing/blob/master/results/f10r2.jpg?raw=true) 109 | 110 | ![alt f10r3.jpg](https://github.com/alexadam/processing/blob/master/results/f10r3.jpg?raw=true) 111 | 112 | ![alt f10r4.jpg](https://github.com/alexadam/processing/blob/master/results/f10r4.jpg?raw=true) 113 | 114 | ![alt f10r5.jpg](https://github.com/alexadam/processing/blob/master/results/f10r5.jpg?raw=true) 115 | 116 | ![alt f11r1.jpg](https://github.com/alexadam/processing/blob/master/results/f11r1.jpg?raw=true) 117 | 118 | ![alt f11r2.jpg](https://github.com/alexadam/processing/blob/master/results/f11r2.jpg?raw=true) 119 | 120 | ![alt f11r3.jpg](https://github.com/alexadam/processing/blob/master/results/f11r3.jpg?raw=true) 121 | 122 | ![alt f11r4.jpg](https://github.com/alexadam/processing/blob/master/results/f11r4.jpg?raw=true) 123 | 124 | ![alt f12r1.jpg](https://github.com/alexadam/processing/blob/master/results/f12r1.jpg?raw=true) 125 | 126 | ![alt f12r2.jpg](https://github.com/alexadam/processing/blob/master/results/f12r2.jpg?raw=true) 127 | 128 | ![alt f12r3.jpg](https://github.com/alexadam/processing/blob/master/results/f12r3.jpg?raw=true) 129 | 130 | ![alt f12r4.jpg](https://github.com/alexadam/processing/blob/master/results/f12r4.jpg?raw=true) 131 | 132 | ![alt f12r5.jpg](https://github.com/alexadam/processing/blob/master/results/f12r5.jpg?raw=true) 133 | 134 | ![alt f12r6.jpg](https://github.com/alexadam/processing/blob/master/results/f12r6.jpg?raw=true) 135 | 136 | ![alt f13r1.jpg](https://github.com/alexadam/processing/blob/master/results/f13r1.jpg?raw=true) 137 | 138 | ![alt f13r2.jpg](https://github.com/alexadam/processing/blob/master/results/f13r2.jpg?raw=true) 139 | 140 | ![alt f13r3.jpg](https://github.com/alexadam/processing/blob/master/results/f13r3.jpg?raw=true) 141 | 142 | ![alt f13r4.jpg](https://github.com/alexadam/processing/blob/master/results/f13r4.jpg?raw=true) 143 | 144 | ![alt f1r1-1.jpg](https://github.com/alexadam/processing/blob/master/results/f1r1-1.jpg?raw=true) 145 | 146 | ![alt f1r1.jpg](https://github.com/alexadam/processing/blob/master/results/f1r1.jpg?raw=true) 147 | 148 | ![alt f1r2-1.jpg](https://github.com/alexadam/processing/blob/master/results/f1r2-1.jpg?raw=true) 149 | 150 | ![alt f1r2.jpg](https://github.com/alexadam/processing/blob/master/results/f1r2.jpg?raw=true) 151 | 152 | ![alt f2r1-1.jpg](https://github.com/alexadam/processing/blob/master/results/f2r1-1.jpg?raw=true) 153 | 154 | ![alt f2r1-2.jpg](https://github.com/alexadam/processing/blob/master/results/f2r1-2.jpg?raw=true) 155 | 156 | ![alt f2r1-3-bigger-segment-length.jpg](https://github.com/alexadam/processing/blob/master/results/f2r1-3-bigger-segment-length.jpg?raw=true) 157 | 158 | ![alt f2r1-3.jpg](https://github.com/alexadam/processing/blob/master/results/f2r1-3.jpg?raw=true) 159 | 160 | ![alt f2r1-4-bigger-segment-length.jpg](https://github.com/alexadam/processing/blob/master/results/f2r1-4-bigger-segment-length.jpg?raw=true) 161 | 162 | ![alt f2r1.jpg](https://github.com/alexadam/processing/blob/master/results/f2r1.jpg?raw=true) 163 | 164 | ![alt f2r2-2.jpg](https://github.com/alexadam/processing/blob/master/results/f2r2-2.jpg?raw=true) 165 | 166 | ![alt f2r2.jpg](https://github.com/alexadam/processing/blob/master/results/f2r2.jpg?raw=true) 167 | 168 | ![alt f3r1-1.jpg](https://github.com/alexadam/processing/blob/master/results/f3r1-1.jpg?raw=true) 169 | 170 | ![alt f3r1-2-bigger-segment-length.jpg](https://github.com/alexadam/processing/blob/master/results/f3r1-2-bigger-segment-length.jpg?raw=true) 171 | 172 | ![alt f3r1.jpg](https://github.com/alexadam/processing/blob/master/results/f3r1.jpg?raw=true) 173 | 174 | ![alt f3r2-1.jpg](https://github.com/alexadam/processing/blob/master/results/f3r2-1.jpg?raw=true) 175 | 176 | ![alt f3r2.jpg](https://github.com/alexadam/processing/blob/master/results/f3r2.jpg?raw=true) 177 | 178 | ![alt f4r1-1.jpg](https://github.com/alexadam/processing/blob/master/results/f4r1-1.jpg?raw=true) 179 | 180 | ![alt f4r1-2.jpg](https://github.com/alexadam/processing/blob/master/results/f4r1-2.jpg?raw=true) 181 | 182 | ![alt f4r1-3.jpg](https://github.com/alexadam/processing/blob/master/results/f4r1-3.jpg?raw=true) 183 | 184 | ![alt f4r1.jpg](https://github.com/alexadam/processing/blob/master/results/f4r1.jpg?raw=true) 185 | 186 | ![alt f4r2-1.jpg](https://github.com/alexadam/processing/blob/master/results/f4r2-1.jpg?raw=true) 187 | 188 | ![alt f4r2.jpg](https://github.com/alexadam/processing/blob/master/results/f4r2.jpg?raw=true) 189 | 190 | ![alt f5r1-1.jpg](https://github.com/alexadam/processing/blob/master/results/f5r1-1.jpg?raw=true) 191 | 192 | ![alt f5r1-2.jpg](https://github.com/alexadam/processing/blob/master/results/f5r1-2.jpg?raw=true) 193 | 194 | ![alt f5r1-3.jpg](https://github.com/alexadam/processing/blob/master/results/f5r1-3.jpg?raw=true) 195 | 196 | ![alt f5r1.jpg](https://github.com/alexadam/processing/blob/master/results/f5r1.jpg?raw=true) 197 | 198 | ![alt f5r2-1.jpg](https://github.com/alexadam/processing/blob/master/results/f5r2-1.jpg?raw=true) 199 | 200 | ![alt f5r2-2.jpg](https://github.com/alexadam/processing/blob/master/results/f5r2-2.jpg?raw=true) 201 | 202 | ![alt f5r2.jpg](https://github.com/alexadam/processing/blob/master/results/f5r2.jpg?raw=true) 203 | 204 | ![alt f6r1-1.jpg](https://github.com/alexadam/processing/blob/master/results/f6r1-1.jpg?raw=true) 205 | 206 | ![alt f6r1.jpg](https://github.com/alexadam/processing/blob/master/results/f6r1.jpg?raw=true) 207 | 208 | ![alt f6r2-1.jpg](https://github.com/alexadam/processing/blob/master/results/f6r2-1.jpg?raw=true) 209 | 210 | ![alt f6r2.jpg](https://github.com/alexadam/processing/blob/master/results/f6r2.jpg?raw=true) 211 | 212 | ![alt f6r3-1.jpg](https://github.com/alexadam/processing/blob/master/results/f6r3-1.jpg?raw=true) 213 | 214 | ![alt f6r3.jpg](https://github.com/alexadam/processing/blob/master/results/f6r3.jpg?raw=true) 215 | 216 | ![alt f6r4-1.jpg](https://github.com/alexadam/processing/blob/master/results/f6r4-1.jpg?raw=true) 217 | 218 | ![alt f6r4.jpg](https://github.com/alexadam/processing/blob/master/results/f6r4.jpg?raw=true) 219 | 220 | ![alt f6r5-1.jpg](https://github.com/alexadam/processing/blob/master/results/f6r5-1.jpg?raw=true) 221 | 222 | ![alt f6r5.jpg](https://github.com/alexadam/processing/blob/master/results/f6r5.jpg?raw=true) 223 | 224 | ![alt f7r1.jpg](https://github.com/alexadam/processing/blob/master/results/f7r1.jpg?raw=true) 225 | 226 | ![alt f7r2.jpg](https://github.com/alexadam/processing/blob/master/results/f7r2.jpg?raw=true) 227 | 228 | ![alt f7r3.jpg](https://github.com/alexadam/processing/blob/master/results/f7r3.jpg?raw=true) 229 | 230 | ![alt f7r4.jpg](https://github.com/alexadam/processing/blob/master/results/f7r4.jpg?raw=true) 231 | 232 | ![alt f8r1.jpg](https://github.com/alexadam/processing/blob/master/results/f8r1.jpg?raw=true) 233 | 234 | ![alt f8r2.jpg](https://github.com/alexadam/processing/blob/master/results/f8r2.jpg?raw=true) 235 | 236 | ![alt f8r3.jpg](https://github.com/alexadam/processing/blob/master/results/f8r3.jpg?raw=true) 237 | 238 | ![alt f8r4.jpg](https://github.com/alexadam/processing/blob/master/results/f8r4.jpg?raw=true) 239 | 240 | ![alt f8r5.jpg](https://github.com/alexadam/processing/blob/master/results/f8r5.jpg?raw=true) 241 | 242 | ![alt f8r6.jpg](https://github.com/alexadam/processing/blob/master/results/f8r6.jpg?raw=true) 243 | 244 | ![alt f9r1.jpg](https://github.com/alexadam/processing/blob/master/results/f9r1.jpg?raw=true) 245 | 246 | ![alt f9r2.jpg](https://github.com/alexadam/processing/blob/master/results/f9r2.jpg?raw=true) 247 | 248 | ![alt f9r3.jpg](https://github.com/alexadam/processing/blob/master/results/f9r3.jpg?raw=true) 249 | 250 | ![alt f9r4.jpg](https://github.com/alexadam/processing/blob/master/results/f9r4.jpg?raw=true) 251 | 252 | ![alt f9r5.jpg](https://github.com/alexadam/processing/blob/master/results/f9r5.jpg?raw=true) 253 | 254 | 255 | 256 | 257 | -------------------------------------------------------------------------------- /results/e1r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e1r1.jpg -------------------------------------------------------------------------------- /results/e1r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e1r2.jpg -------------------------------------------------------------------------------- /results/e1r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e1r3.jpg -------------------------------------------------------------------------------- /results/e1r6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e1r6.jpg -------------------------------------------------------------------------------- /results/e1r7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e1r7.jpg -------------------------------------------------------------------------------- /results/e2r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e2r1.jpg -------------------------------------------------------------------------------- /results/e3r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e3r1.jpg -------------------------------------------------------------------------------- /results/e3r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e3r2.jpg -------------------------------------------------------------------------------- /results/e4r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e4r1.jpg -------------------------------------------------------------------------------- /results/e4r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e4r2.jpg -------------------------------------------------------------------------------- /results/e4r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e4r3.jpg -------------------------------------------------------------------------------- /results/e4r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e4r4.jpg -------------------------------------------------------------------------------- /results/e4r5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e4r5.jpg -------------------------------------------------------------------------------- /results/e4r6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e4r6.jpg -------------------------------------------------------------------------------- /results/e4r7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e4r7.jpg -------------------------------------------------------------------------------- /results/e4r8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e4r8.jpg -------------------------------------------------------------------------------- /results/e4r9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e4r9.jpg -------------------------------------------------------------------------------- /results/e5r1-d2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r1-d2.jpg -------------------------------------------------------------------------------- /results/e5r1-d3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r1-d3.jpg -------------------------------------------------------------------------------- /results/e5r1-d4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r1-d4.jpg -------------------------------------------------------------------------------- /results/e5r10-d2-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r10-d2-1.jpg -------------------------------------------------------------------------------- /results/e5r11-d2-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r11-d2-1.jpg -------------------------------------------------------------------------------- /results/e5r12-d2-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r12-d2-2.jpg -------------------------------------------------------------------------------- /results/e5r13-d1-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r13-d1-2.jpg -------------------------------------------------------------------------------- /results/e5r14-d1-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r14-d1-1.jpg -------------------------------------------------------------------------------- /results/e5r15-d1-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r15-d1-3.jpg -------------------------------------------------------------------------------- /results/e5r2-d5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r2-d5.jpg -------------------------------------------------------------------------------- /results/e5r3-d5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r3-d5.jpg -------------------------------------------------------------------------------- /results/e5r4-d5-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r4-d5-1.jpg -------------------------------------------------------------------------------- /results/e5r5-d5-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r5-d5-2.jpg -------------------------------------------------------------------------------- /results/e5r6-d5-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r6-d5-3.jpg -------------------------------------------------------------------------------- /results/e5r7-d5-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r7-d5-4.jpg -------------------------------------------------------------------------------- /results/e5r8-d3-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r8-d3-1.jpg -------------------------------------------------------------------------------- /results/e5r9-d3-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e5r9-d3-2.jpg -------------------------------------------------------------------------------- /results/e6r10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r10.jpg -------------------------------------------------------------------------------- /results/e6r11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r11.jpg -------------------------------------------------------------------------------- /results/e6r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r2.jpg -------------------------------------------------------------------------------- /results/e6r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r3.jpg -------------------------------------------------------------------------------- /results/e6r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r4.jpg -------------------------------------------------------------------------------- /results/e6r5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r5.jpg -------------------------------------------------------------------------------- /results/e6r6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r6.jpg -------------------------------------------------------------------------------- /results/e6r7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r7.jpg -------------------------------------------------------------------------------- /results/e6r8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r8.jpg -------------------------------------------------------------------------------- /results/e6r9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/e6r9.jpg -------------------------------------------------------------------------------- /results/f10r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f10r1.jpg -------------------------------------------------------------------------------- /results/f10r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f10r2.jpg -------------------------------------------------------------------------------- /results/f10r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f10r3.jpg -------------------------------------------------------------------------------- /results/f10r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f10r4.jpg -------------------------------------------------------------------------------- /results/f10r5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f10r5.jpg -------------------------------------------------------------------------------- /results/f11r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f11r1.jpg -------------------------------------------------------------------------------- /results/f11r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f11r2.jpg -------------------------------------------------------------------------------- /results/f11r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f11r3.jpg -------------------------------------------------------------------------------- /results/f11r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f11r4.jpg -------------------------------------------------------------------------------- /results/f12r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f12r1.jpg -------------------------------------------------------------------------------- /results/f12r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f12r2.jpg -------------------------------------------------------------------------------- /results/f12r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f12r3.jpg -------------------------------------------------------------------------------- /results/f12r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f12r4.jpg -------------------------------------------------------------------------------- /results/f12r5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f12r5.jpg -------------------------------------------------------------------------------- /results/f12r6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f12r6.jpg -------------------------------------------------------------------------------- /results/f13r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f13r1.jpg -------------------------------------------------------------------------------- /results/f13r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f13r2.jpg -------------------------------------------------------------------------------- /results/f13r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f13r3.jpg -------------------------------------------------------------------------------- /results/f13r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f13r4.jpg -------------------------------------------------------------------------------- /results/f1r1-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f1r1-1.jpg -------------------------------------------------------------------------------- /results/f1r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f1r1.jpg -------------------------------------------------------------------------------- /results/f1r2-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f1r2-1.jpg -------------------------------------------------------------------------------- /results/f1r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f1r2.jpg -------------------------------------------------------------------------------- /results/f2r1-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f2r1-1.jpg -------------------------------------------------------------------------------- /results/f2r1-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f2r1-2.jpg -------------------------------------------------------------------------------- /results/f2r1-3-bigger-segment-length.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f2r1-3-bigger-segment-length.jpg -------------------------------------------------------------------------------- /results/f2r1-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f2r1-3.jpg -------------------------------------------------------------------------------- /results/f2r1-4-bigger-segment-length.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f2r1-4-bigger-segment-length.jpg -------------------------------------------------------------------------------- /results/f2r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f2r1.jpg -------------------------------------------------------------------------------- /results/f2r2-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f2r2-2.jpg -------------------------------------------------------------------------------- /results/f2r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f2r2.jpg -------------------------------------------------------------------------------- /results/f3r1-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f3r1-1.jpg -------------------------------------------------------------------------------- /results/f3r1-2-bigger-segment-length.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f3r1-2-bigger-segment-length.jpg -------------------------------------------------------------------------------- /results/f3r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f3r1.jpg -------------------------------------------------------------------------------- /results/f3r2-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f3r2-1.jpg -------------------------------------------------------------------------------- /results/f3r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f3r2.jpg -------------------------------------------------------------------------------- /results/f4r1-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f4r1-1.jpg -------------------------------------------------------------------------------- /results/f4r1-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f4r1-2.jpg -------------------------------------------------------------------------------- /results/f4r1-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f4r1-3.jpg -------------------------------------------------------------------------------- /results/f4r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f4r1.jpg -------------------------------------------------------------------------------- /results/f4r2-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f4r2-1.jpg -------------------------------------------------------------------------------- /results/f4r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f4r2.jpg -------------------------------------------------------------------------------- /results/f5r1-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f5r1-1.jpg -------------------------------------------------------------------------------- /results/f5r1-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f5r1-2.jpg -------------------------------------------------------------------------------- /results/f5r1-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f5r1-3.jpg -------------------------------------------------------------------------------- /results/f5r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f5r1.jpg -------------------------------------------------------------------------------- /results/f5r2-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f5r2-1.jpg -------------------------------------------------------------------------------- /results/f5r2-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f5r2-2.jpg -------------------------------------------------------------------------------- /results/f5r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f5r2.jpg -------------------------------------------------------------------------------- /results/f6r1-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r1-1.jpg -------------------------------------------------------------------------------- /results/f6r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r1.jpg -------------------------------------------------------------------------------- /results/f6r2-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r2-1.jpg -------------------------------------------------------------------------------- /results/f6r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r2.jpg -------------------------------------------------------------------------------- /results/f6r3-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r3-1.jpg -------------------------------------------------------------------------------- /results/f6r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r3.jpg -------------------------------------------------------------------------------- /results/f6r4-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r4-1.jpg -------------------------------------------------------------------------------- /results/f6r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r4.jpg -------------------------------------------------------------------------------- /results/f6r5-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r5-1.jpg -------------------------------------------------------------------------------- /results/f6r5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f6r5.jpg -------------------------------------------------------------------------------- /results/f7r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f7r1.jpg -------------------------------------------------------------------------------- /results/f7r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f7r2.jpg -------------------------------------------------------------------------------- /results/f7r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f7r3.jpg -------------------------------------------------------------------------------- /results/f7r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f7r4.jpg -------------------------------------------------------------------------------- /results/f8r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f8r1.jpg -------------------------------------------------------------------------------- /results/f8r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f8r2.jpg -------------------------------------------------------------------------------- /results/f8r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f8r3.jpg -------------------------------------------------------------------------------- /results/f8r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f8r4.jpg -------------------------------------------------------------------------------- /results/f8r5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f8r5.jpg -------------------------------------------------------------------------------- /results/f8r6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f8r6.jpg -------------------------------------------------------------------------------- /results/f9r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f9r1.jpg -------------------------------------------------------------------------------- /results/f9r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f9r2.jpg -------------------------------------------------------------------------------- /results/f9r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f9r3.jpg -------------------------------------------------------------------------------- /results/f9r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f9r4.jpg -------------------------------------------------------------------------------- /results/f9r5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexadam/processing/68c84680d9210d0bae4b428e7aacb2acdcdd8ff9/results/f9r5.jpg -------------------------------------------------------------------------------- /src/e1r1.pde: -------------------------------------------------------------------------------- 1 | 2 | void setup() { 3 | size(600, 600); 4 | 5 | float a=0; 6 | float f = 30; 7 | 8 | for (int i = 0; i<5000; i++) { 9 | pushMatrix(); 10 | 11 | translate(width / 2, height / 2); 12 | strokeWeight(3); 13 | rotate(cos(a) + cos(a)); 14 | stroke(229, 0, 54, 20); 15 | fill(1, 150); 16 | 17 | // rect(200-a*f, 200-a*f, 200-a*f, 200-a*f); 18 | ellipse(200-a*f, 200-a*f, 200-a*f, 200-a*f); 19 | a+=0.005; 20 | 21 | popMatrix(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/e1r6.pde: -------------------------------------------------------------------------------- 1 | 2 | void setup() { 3 | size(2000, 2000); 4 | 5 | float a = 0; 6 | float f = 10; 7 | float s = 60; 8 | 9 | translate(width/2, width/2); 10 | 11 | for (int i = 0; i<1000; i++) { 12 | pushMatrix(); 13 | 14 | int m = (int)random(1, 20); 15 | int n1 = (int)random(1, 20); 16 | int n2 = (int)random(1, 20); 17 | int n3 = (int)random(1, 20); 18 | int aa = 1; 19 | int b = 1; 20 | int t = i - 3500; 21 | 22 | float xt = pow(pow(abs(cos(m * t / 4) / aa), n2) + pow(abs(sin(m * t / 4) / b), n3), -1 / n1) * cos(t); 23 | float yt = pow(pow(abs(cos(m * t / 4) / aa), n2) + pow(abs(sin(m * t / 4) / b), n3), -1 / n1) * sin(t) * cos(t); 24 | 25 | translate(xt * width/4, yt * width/4); 26 | strokeWeight(3); 27 | rotate(cos(a)); 28 | fill(229, 100, 54, 40); 29 | stroke(1, 150); 30 | 31 | rect(s-a*f, s-a*f, s-a*f, s-a*f); 32 | // ellipse(s-a*f, s-a*f, s-a*f, s-a*f); 33 | a+=0.005; 34 | 35 | popMatrix(); 36 | } 37 | 38 | 39 | save("e1r1.jpg"); 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/e1r7.pde: -------------------------------------------------------------------------------- 1 | 2 | void setup() { 3 | size(2000, 2000); 4 | 5 | float a = 0; 6 | float f = 10; 7 | float s = 60; 8 | 9 | translate(width/2, width/2); 10 | 11 | for (int i = 0; i<1000; i++) { 12 | pushMatrix(); 13 | 14 | int m = (int)random(1, 20); 15 | int n1 = (int)random(1, 20); 16 | int n2 = (int)random(1, 20); 17 | int n3 = (int)random(1, 20); 18 | int aa = 1; 19 | int b = 1; 20 | int t = i - 3500; 21 | 22 | float xt = pow(pow(abs(cos(m * t / 4) / aa), n2) + pow(abs(sin(m * t / 4) / b), n3), -1 / n1) * cos(t); 23 | float yt = pow(pow(abs(cos(m * t / 4) / aa), n2) + pow(abs(sin(m * t / 4) / b), n3), -1 / n1) * sin(t*3.1415); 24 | 25 | translate(xt * width/4, yt * width/4); 26 | strokeWeight(3); 27 | rotate(cos(a)); 28 | fill(229, 100, 54, 40); 29 | stroke(1, 150); 30 | 31 | rect(s-a*f, s-a*f, s-a*f, s-a*f); 32 | // ellipse(s-a*f, s-a*f, s-a*f, s-a*f); 33 | a+=0.005; 34 | 35 | popMatrix(); 36 | } 37 | 38 | 39 | save("e1r1.jpg"); 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/e2.pde: -------------------------------------------------------------------------------- 1 | 2 | void setup() { 3 | PImage img = loadImage("monalisa.jpg"); 4 | size(img.width, img.height); 5 | int minPoint = 4; 6 | int maxPoint = 16; 7 | imageMode(CENTER); 8 | noStroke(); 9 | background(255); 10 | 11 | for (int i = 0; i < 100000; i++) { 12 | float nDim = map(random(0, width), 0, width, minPoint, maxPoint); 13 | int x = int(random(img.width)); 14 | int y = int(random(img.height)); 15 | color pix = img.get(x, y); 16 | fill(pix, 64); 17 | if (random(100) < 50) { 18 | ellipse(x, y, nDim, nDim); 19 | } else { 20 | rect(x, y, nDim, nDim); 21 | } 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /src/e3.pde: -------------------------------------------------------------------------------- 1 | // Source: http://www.openprocessing.org/sketch/22557 2 | 3 | void setup() { 4 | PImage img = loadImage("monalisa.jpg"); 5 | size(img.width, img.height); 6 | background(0); 7 | 8 | image(img, 0, 0); //draw the image 9 | 10 | for (int i = 0; i < 5000; i++) { 11 | int xp = int(random(width)); 12 | int yp = int(random(height)); 13 | color c = img.get(xp, yp); 14 | fill(c, 50); 15 | strokeWeight(1); //OPTIONAL 16 | stroke(0, 50); //OPTIONAL 17 | rect(xp, yp, random(10, 50), random(10, 50)); 18 | } 19 | 20 | save("e3r1.jpg"); 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/e4.pde: -------------------------------------------------------------------------------- 1 | // Original: Marius Watz - http://workshop.evolutionzone.com 2 | 3 | void setup() { 4 | PImage img = loadImage("monalisa.jpg"); 5 | size(img.width, img.height); 6 | 7 | noLoop(); 8 | smooth(); 9 | background(0); 10 | 11 | int N = 5; 12 | int N2 = 5; 13 | 14 | int F1 = (random(100) < 50 ? N2 : 0); 15 | int F2 = (random(100) < 50 ? N2 : 0); 16 | int F3 = (random(100) < 50 ? N2 : 0); 17 | int F4 = (random(100) < 50 ? N2 : 0); 18 | 19 | int what = (int)random(4); 20 | 21 | stroke(255); 22 | for (int i = 0; i < width; i++) { 23 | for (int j = 0; j < height; j++) { 24 | int col = img.get(i * N, j * N); 25 | float bright = (brightness(col) / 255) * 8; 26 | 27 | stroke(col); // OPTIONAL 28 | strokeWeight(bright/2); 29 | 30 | int howManyLines = (int) random(1, 4); //OPTIONAL 31 | 32 | /*F1 = (random(100) < 50 ? N2 : 0); //OPTIONALS 33 | F2 = (random(100) < 50 ? N2 : 0); 34 | F3 = (random(100) < 50 ? N2 : 0); 35 | F4 = (random(100) < 50 ? N2 : 0);*/ 36 | 37 | for (int k = 0; k < howManyLines; k++) { 38 | if (what == 0) { 39 | line(i * N2 + F1, j * N2 + F2, i * N2 + F3, j * N2 + F4); 40 | } else if (what == 1) { 41 | line(i * N2, j * N2 + N2, i * N2 + N2, j * N2); 42 | } else if (what == 2) { 43 | line(i * N2, j * N2, i * N2 + N2, j * N2 + N2); 44 | } else { 45 | line(i * N2 + N2, j * N2, i * N2 + N2, j * N2 + N2); 46 | } 47 | } 48 | } 49 | } 50 | 51 | save("e4r1.jpg"); 52 | } 53 | 54 | -------------------------------------------------------------------------------- /src/e5-d1-1.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | draw1(); 31 | // draw2(); 32 | // draw3(); 33 | // draw4(); 34 | // draw5(); 35 | 36 | save("e5r1-d1.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | // noStroke(); 79 | stroke(red(c), green(c), blue(c)); 80 | fill(c); 81 | ellipse(posX, posY, w6 * x * 2, w6 * x * 10); 82 | } 83 | } 84 | } 85 | 86 | void draw3() { 87 | 88 | float x = map(random(width), 0, width, 0.05, 1); 89 | float y = map(random(height), 0, height, 0.05, 1); 90 | 91 | for (int i = 0; i < img.width; i++) { 92 | for (int j = 0; j < img.height; j++) { 93 | float tileWidth = width / (float)img.width; 94 | float tileHeight = height / (float)img.height; 95 | float posX = tileWidth * i; 96 | float posY = tileHeight * j; 97 | color c = img.pixels[j * img.width + i]; 98 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 99 | 100 | stroke(c); 101 | float w7 = map(greyscale, 0, 255, 5, 0.1); 102 | strokeWeight(w7); 103 | fill(0, 255 * x); 104 | pushMatrix(); 105 | translate(posX, posY); 106 | rotate(greyscale / 255.0 * PI * y); 107 | rect(0, 0, 50, 50); 108 | popMatrix(); 109 | } 110 | } 111 | } 112 | 113 | void draw4() { 114 | 115 | float x = map(random(width), 0, width, 0.05, 1); 116 | float y = map(random(height), 0, height, 0.05, 1); 117 | 118 | for (int i = 0; i < img.width; i++) { 119 | for (int j = 0; j < img.height; j++) { 120 | float tileWidth = width / (float)img.width; 121 | float tileHeight = height / (float)img.height; 122 | float posX = tileWidth * i; 123 | float posY = tileHeight * j; 124 | color c = img.pixels[j * img.width + i]; 125 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 126 | 127 | noStroke(); 128 | fill(greyscale, greyscale * x, 255 * y); 129 | ellipse(posX, posY, 13.5, 53.5); //posY * cos(posY) 130 | rect(posX+4, posY, 3.5, 3.5); 131 | rect(posX, posY+4, 3.5, 3.5); 132 | rect(posX+4, posY+4, 3.5, 3.5); 133 | } 134 | } 135 | } 136 | 137 | void draw5() { 138 | 139 | float x = map(random(width), 0, width, 0.05, 1); 140 | float y = map(random(height), 0, height, 0.05, 1); 141 | 142 | for (int i = 0; i < img.width; i++) { 143 | for (int j = 0; j < img.height; j++) { 144 | float tileWidth = width / (float)img.width; 145 | float tileHeight = height / (float)img.height; 146 | float posX = tileWidth * i; 147 | float posY = tileHeight * j; 148 | color c = img.pixels[j * img.width + i]; 149 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 150 | 151 | stroke(greyscale, greyscale, greyscale); 152 | stroke(red(c), green(c), blue(c)); 153 | noFill(); 154 | pushMatrix(); 155 | translate(posX, posY); 156 | rotate(greyscale/255.0 * PI); 157 | strokeWeight(1); 158 | rect(0, 0, 35 * x, 35 * y); 159 | float w9 = map(greyscale, 0, 255, 15, 0.1); 160 | strokeWeight(w9); 161 | stroke(red(c), green(c), blue(c), 70); 162 | ellipse(0, 0, 50, 25); 163 | popMatrix(); 164 | } 165 | } 166 | } 167 | 168 | -------------------------------------------------------------------------------- /src/e5-d1-2.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | draw1(); 31 | // draw2(); 32 | // draw3(); 33 | // draw4(); 34 | // draw5(); 35 | 36 | save("e5r1-d1.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2 * 2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | // noStroke(); 79 | stroke(red(c), green(c), blue(c)); 80 | fill(c); 81 | ellipse(posX, posY, w6 * x * 2, w6 * x * 10); 82 | } 83 | } 84 | } 85 | 86 | void draw3() { 87 | 88 | float x = map(random(width), 0, width, 0.05, 1); 89 | float y = map(random(height), 0, height, 0.05, 1); 90 | 91 | for (int i = 0; i < img.width; i++) { 92 | for (int j = 0; j < img.height; j++) { 93 | float tileWidth = width / (float)img.width; 94 | float tileHeight = height / (float)img.height; 95 | float posX = tileWidth * i; 96 | float posY = tileHeight * j; 97 | color c = img.pixels[j * img.width + i]; 98 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 99 | 100 | stroke(c); 101 | float w7 = map(greyscale, 0, 255, 5, 0.1); 102 | strokeWeight(w7); 103 | fill(0, 255 * x); 104 | pushMatrix(); 105 | translate(posX, posY); 106 | rotate(greyscale / 255.0 * PI * y); 107 | rect(0, 0, 50, 50); 108 | popMatrix(); 109 | } 110 | } 111 | } 112 | 113 | void draw4() { 114 | 115 | float x = map(random(width), 0, width, 0.05, 1); 116 | float y = map(random(height), 0, height, 0.05, 1); 117 | 118 | for (int i = 0; i < img.width; i++) { 119 | for (int j = 0; j < img.height; j++) { 120 | float tileWidth = width / (float)img.width; 121 | float tileHeight = height / (float)img.height; 122 | float posX = tileWidth * i; 123 | float posY = tileHeight * j; 124 | color c = img.pixels[j * img.width + i]; 125 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 126 | 127 | noStroke(); 128 | fill(greyscale, greyscale * x, 255 * y); 129 | ellipse(posX, posY, 13.5, 53.5); //posY * cos(posY) 130 | rect(posX+4, posY, 3.5, 3.5); 131 | rect(posX, posY+4, 3.5, 3.5); 132 | rect(posX+4, posY+4, 3.5, 3.5); 133 | } 134 | } 135 | } 136 | 137 | void draw5() { 138 | 139 | float x = map(random(width), 0, width, 0.05, 1); 140 | float y = map(random(height), 0, height, 0.05, 1); 141 | 142 | for (int i = 0; i < img.width; i++) { 143 | for (int j = 0; j < img.height; j++) { 144 | float tileWidth = width / (float)img.width; 145 | float tileHeight = height / (float)img.height; 146 | float posX = tileWidth * i; 147 | float posY = tileHeight * j; 148 | color c = img.pixels[j * img.width + i]; 149 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 150 | 151 | stroke(greyscale, greyscale, greyscale); 152 | stroke(red(c), green(c), blue(c)); 153 | noFill(); 154 | pushMatrix(); 155 | translate(posX, posY); 156 | rotate(greyscale/255.0 * PI); 157 | strokeWeight(1); 158 | rect(0, 0, 35 * x, 35 * y); 159 | float w9 = map(greyscale, 0, 255, 15, 0.1); 160 | strokeWeight(w9); 161 | stroke(red(c), green(c), blue(c), 70); 162 | ellipse(0, 0, 50, 25); 163 | popMatrix(); 164 | } 165 | } 166 | } 167 | 168 | -------------------------------------------------------------------------------- /src/e5-d1-3.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | draw1(); 31 | // draw2(); 32 | // draw3(); 33 | // draw4(); 34 | // draw5(); 35 | 36 | save("e5r1-d1.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX, posY, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | // noStroke(); 79 | stroke(red(c), green(c), blue(c)); 80 | fill(c); 81 | ellipse(posX, posY, w6 * x * 2, w6 * x * 10); 82 | } 83 | } 84 | } 85 | 86 | void draw3() { 87 | 88 | float x = map(random(width), 0, width, 0.05, 1); 89 | float y = map(random(height), 0, height, 0.05, 1); 90 | 91 | for (int i = 0; i < img.width; i++) { 92 | for (int j = 0; j < img.height; j++) { 93 | float tileWidth = width / (float)img.width; 94 | float tileHeight = height / (float)img.height; 95 | float posX = tileWidth * i; 96 | float posY = tileHeight * j; 97 | color c = img.pixels[j * img.width + i]; 98 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 99 | 100 | stroke(c); 101 | float w7 = map(greyscale, 0, 255, 5, 0.1); 102 | strokeWeight(w7); 103 | fill(0, 255 * x); 104 | pushMatrix(); 105 | translate(posX, posY); 106 | rotate(greyscale / 255.0 * PI * y); 107 | rect(0, 0, 50, 50); 108 | popMatrix(); 109 | } 110 | } 111 | } 112 | 113 | void draw4() { 114 | 115 | float x = map(random(width), 0, width, 0.05, 1); 116 | float y = map(random(height), 0, height, 0.05, 1); 117 | 118 | for (int i = 0; i < img.width; i++) { 119 | for (int j = 0; j < img.height; j++) { 120 | float tileWidth = width / (float)img.width; 121 | float tileHeight = height / (float)img.height; 122 | float posX = tileWidth * i; 123 | float posY = tileHeight * j; 124 | color c = img.pixels[j * img.width + i]; 125 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 126 | 127 | noStroke(); 128 | fill(greyscale, greyscale * x, 255 * y); 129 | ellipse(posX, posY, 13.5, 53.5); //posY * cos(posY) 130 | rect(posX+4, posY, 3.5, 3.5); 131 | rect(posX, posY+4, 3.5, 3.5); 132 | rect(posX+4, posY+4, 3.5, 3.5); 133 | } 134 | } 135 | } 136 | 137 | void draw5() { 138 | 139 | float x = map(random(width), 0, width, 0.05, 1); 140 | float y = map(random(height), 0, height, 0.05, 1); 141 | 142 | for (int i = 0; i < img.width; i++) { 143 | for (int j = 0; j < img.height; j++) { 144 | float tileWidth = width / (float)img.width; 145 | float tileHeight = height / (float)img.height; 146 | float posX = tileWidth * i; 147 | float posY = tileHeight * j; 148 | color c = img.pixels[j * img.width + i]; 149 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 150 | 151 | stroke(greyscale, greyscale, greyscale); 152 | stroke(red(c), green(c), blue(c)); 153 | noFill(); 154 | pushMatrix(); 155 | translate(posX, posY); 156 | rotate(greyscale/255.0 * PI); 157 | strokeWeight(1); 158 | rect(0, 0, 35 * x, 35 * y); 159 | float w9 = map(greyscale, 0, 255, 15, 0.1); 160 | strokeWeight(w9); 161 | stroke(red(c), green(c), blue(c), 70); 162 | ellipse(0, 0, 50, 25); 163 | popMatrix(); 164 | } 165 | } 166 | } 167 | 168 | -------------------------------------------------------------------------------- /src/e5-d2-1.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | // draw1(); 31 | draw2(); 32 | // draw3(); 33 | // draw4(); 34 | // draw5(); 35 | 36 | save("e5r1-d2.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | noStroke(); 79 | fill(c); 80 | ellipse(posX, posY, w6 * x * 2, w6 * x * 2); 81 | } 82 | } 83 | } 84 | 85 | void draw3() { 86 | 87 | float x = map(random(width), 0, width, 0.05, 1); 88 | float y = map(random(height), 0, height, 0.05, 1); 89 | 90 | for (int i = 0; i < img.width; i++) { 91 | for (int j = 0; j < img.height; j++) { 92 | float tileWidth = width / (float)img.width; 93 | float tileHeight = height / (float)img.height; 94 | float posX = tileWidth * i; 95 | float posY = tileHeight * j; 96 | color c = img.pixels[j * img.width + i]; 97 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 98 | 99 | stroke(c); 100 | float w7 = map(greyscale, 0, 255, 5, 0.1); 101 | strokeWeight(w7); 102 | fill(0, 255 * x); 103 | pushMatrix(); 104 | translate(posX, posY); 105 | rotate(greyscale / 255.0 * PI * y); 106 | rect(0, 0, 50, 50); 107 | popMatrix(); 108 | } 109 | } 110 | } 111 | 112 | void draw4() { 113 | 114 | float x = map(random(width), 0, width, 0.05, 1); 115 | float y = map(random(height), 0, height, 0.05, 1); 116 | 117 | for (int i = 0; i < img.width; i++) { 118 | for (int j = 0; j < img.height; j++) { 119 | float tileWidth = width / (float)img.width; 120 | float tileHeight = height / (float)img.height; 121 | float posX = tileWidth * i; 122 | float posY = tileHeight * j; 123 | color c = img.pixels[j * img.width + i]; 124 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 125 | 126 | noStroke(); 127 | fill(greyscale, greyscale * x, 255 * y); 128 | ellipse(posX, posY, 13.5, 53.5); //posY * cos(posY) 129 | rect(posX+4, posY, 3.5, 3.5); 130 | rect(posX, posY+4, 3.5, 3.5); 131 | rect(posX+4, posY+4, 3.5, 3.5); 132 | } 133 | } 134 | } 135 | 136 | void draw5() { 137 | 138 | float x = map(random(width), 0, width, 0.05, 1); 139 | float y = map(random(height), 0, height, 0.05, 1); 140 | 141 | for (int i = 0; i < img.width; i++) { 142 | for (int j = 0; j < img.height; j++) { 143 | float tileWidth = width / (float)img.width; 144 | float tileHeight = height / (float)img.height; 145 | float posX = tileWidth * i; 146 | float posY = tileHeight * j; 147 | color c = img.pixels[j * img.width + i]; 148 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 149 | 150 | stroke(greyscale, greyscale, greyscale); 151 | stroke(red(c), green(c), blue(c)); 152 | noFill(); 153 | pushMatrix(); 154 | translate(posX, posY); 155 | rotate(greyscale/255.0 * PI); 156 | strokeWeight(1); 157 | rect(0, 0, 35 * x, 35 * y); 158 | float w9 = map(greyscale, 0, 255, 15, 0.1); 159 | strokeWeight(w9); 160 | stroke(red(c), green(c), blue(c), 70); 161 | ellipse(0, 0, 50, 25); 162 | popMatrix(); 163 | } 164 | } 165 | } 166 | 167 | -------------------------------------------------------------------------------- /src/e5-d2-2.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | // draw1(); 31 | draw2(); 32 | // draw3(); 33 | // draw4(); 34 | // draw5(); 35 | 36 | save("e5r1-d2.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | // noStroke(); 79 | stroke(red(c), green(c), blue(c)); 80 | fill(c); 81 | ellipse(posX, posY, w6 * x * 10, w6 * x * 2); 82 | } 83 | } 84 | } 85 | 86 | void draw3() { 87 | 88 | float x = map(random(width), 0, width, 0.05, 1); 89 | float y = map(random(height), 0, height, 0.05, 1); 90 | 91 | for (int i = 0; i < img.width; i++) { 92 | for (int j = 0; j < img.height; j++) { 93 | float tileWidth = width / (float)img.width; 94 | float tileHeight = height / (float)img.height; 95 | float posX = tileWidth * i; 96 | float posY = tileHeight * j; 97 | color c = img.pixels[j * img.width + i]; 98 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 99 | 100 | stroke(c); 101 | float w7 = map(greyscale, 0, 255, 5, 0.1); 102 | strokeWeight(w7); 103 | fill(0, 255 * x); 104 | pushMatrix(); 105 | translate(posX, posY); 106 | rotate(greyscale / 255.0 * PI * y); 107 | rect(0, 0, 50, 50); 108 | popMatrix(); 109 | } 110 | } 111 | } 112 | 113 | void draw4() { 114 | 115 | float x = map(random(width), 0, width, 0.05, 1); 116 | float y = map(random(height), 0, height, 0.05, 1); 117 | 118 | for (int i = 0; i < img.width; i++) { 119 | for (int j = 0; j < img.height; j++) { 120 | float tileWidth = width / (float)img.width; 121 | float tileHeight = height / (float)img.height; 122 | float posX = tileWidth * i; 123 | float posY = tileHeight * j; 124 | color c = img.pixels[j * img.width + i]; 125 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 126 | 127 | noStroke(); 128 | fill(greyscale, greyscale * x, 255 * y); 129 | ellipse(posX, posY, 13.5, 53.5); //posY * cos(posY) 130 | rect(posX+4, posY, 3.5, 3.5); 131 | rect(posX, posY+4, 3.5, 3.5); 132 | rect(posX+4, posY+4, 3.5, 3.5); 133 | } 134 | } 135 | } 136 | 137 | void draw5() { 138 | 139 | float x = map(random(width), 0, width, 0.05, 1); 140 | float y = map(random(height), 0, height, 0.05, 1); 141 | 142 | for (int i = 0; i < img.width; i++) { 143 | for (int j = 0; j < img.height; j++) { 144 | float tileWidth = width / (float)img.width; 145 | float tileHeight = height / (float)img.height; 146 | float posX = tileWidth * i; 147 | float posY = tileHeight * j; 148 | color c = img.pixels[j * img.width + i]; 149 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 150 | 151 | stroke(greyscale, greyscale, greyscale); 152 | stroke(red(c), green(c), blue(c)); 153 | noFill(); 154 | pushMatrix(); 155 | translate(posX, posY); 156 | rotate(greyscale/255.0 * PI); 157 | strokeWeight(1); 158 | rect(0, 0, 35 * x, 35 * y); 159 | float w9 = map(greyscale, 0, 255, 15, 0.1); 160 | strokeWeight(w9); 161 | stroke(red(c), green(c), blue(c), 70); 162 | ellipse(0, 0, 50, 25); 163 | popMatrix(); 164 | } 165 | } 166 | } 167 | 168 | -------------------------------------------------------------------------------- /src/e5-d3-1.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | // draw1(); 31 | // draw2(); 32 | draw3(); 33 | // draw4(); 34 | // draw5(); 35 | 36 | save("e5r1-d3.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | noStroke(); 79 | fill(c); 80 | ellipse(posX, posY, w6 * x, w6 * x); 81 | } 82 | } 83 | } 84 | 85 | void draw3() { 86 | 87 | float x = map(random(width), 0, width, 0.05, 1); 88 | float y = map(random(height), 0, height, 0.05, 1); 89 | 90 | for (int i = 0; i < img.width; i++) { 91 | for (int j = 0; j < img.height; j++) { 92 | float tileWidth = width / (float)img.width; 93 | float tileHeight = height / (float)img.height; 94 | float posX = tileWidth * i; 95 | float posY = tileHeight * j; 96 | color c = img.pixels[j * img.width + i]; 97 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 98 | 99 | stroke(c); 100 | float w7 = map(greyscale, 0, 255, 5, 0.1); 101 | strokeWeight(w7); 102 | fill(255, 255 * x); 103 | pushMatrix(); 104 | translate(posX, posY); 105 | //rotate(greyscale / 255.0 * PI * y); 106 | rect(0, 0, 15, 15); 107 | popMatrix(); 108 | } 109 | } 110 | } 111 | 112 | void draw4() { 113 | 114 | float x = map(random(width), 0, width, 0.05, 1); 115 | float y = map(random(height), 0, height, 0.05, 1); 116 | 117 | for (int i = 0; i < img.width; i++) { 118 | for (int j = 0; j < img.height; j++) { 119 | float tileWidth = width / (float)img.width; 120 | float tileHeight = height / (float)img.height; 121 | float posX = tileWidth * i; 122 | float posY = tileHeight * j; 123 | color c = img.pixels[j * img.width + i]; 124 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 125 | 126 | noStroke(); 127 | fill(greyscale, greyscale * x, 255 * y); 128 | ellipse(posX, posY, 13.5, 53.5); //posY * cos(posY) 129 | rect(posX+4, posY, 3.5, 3.5); 130 | rect(posX, posY+4, 3.5, 3.5); 131 | rect(posX+4, posY+4, 3.5, 3.5); 132 | } 133 | } 134 | } 135 | 136 | void draw5() { 137 | 138 | float x = map(random(width), 0, width, 0.05, 1); 139 | float y = map(random(height), 0, height, 0.05, 1); 140 | 141 | for (int i = 0; i < img.width; i++) { 142 | for (int j = 0; j < img.height; j++) { 143 | float tileWidth = width / (float)img.width; 144 | float tileHeight = height / (float)img.height; 145 | float posX = tileWidth * i; 146 | float posY = tileHeight * j; 147 | color c = img.pixels[j * img.width + i]; 148 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 149 | 150 | stroke(greyscale, greyscale, greyscale); 151 | stroke(red(c), green(c), blue(c)); 152 | noFill(); 153 | pushMatrix(); 154 | translate(posX, posY); 155 | rotate(greyscale/255.0 * PI); 156 | strokeWeight(1); 157 | rect(0, 0, 35 * x, 35 * y); 158 | float w9 = map(greyscale, 0, 255, 15, 0.1); 159 | strokeWeight(w9); 160 | stroke(red(c), green(c), blue(c), 70); 161 | ellipse(0, 0, 50, 25); 162 | popMatrix(); 163 | } 164 | } 165 | } 166 | 167 | -------------------------------------------------------------------------------- /src/e5-d3-2.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | // draw1(); 31 | // draw2(); 32 | draw3(); 33 | // draw4(); 34 | // draw5(); 35 | 36 | save("e5r1-d3.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | noStroke(); 79 | fill(c); 80 | ellipse(posX, posY, w6 * x, w6 * x); 81 | } 82 | } 83 | } 84 | 85 | void draw3() { 86 | 87 | float x = map(random(width), 0, width, 0.05, 1); 88 | float y = map(random(height), 0, height, 0.05, 1); 89 | 90 | for (int i = 0; i < img.width; i++) { 91 | for (int j = 0; j < img.height; j++) { 92 | float tileWidth = width / (float)img.width; 93 | float tileHeight = height / (float)img.height; 94 | float posX = tileWidth * i; 95 | float posY = tileHeight * j; 96 | color c = img.pixels[j * img.width + i]; 97 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 98 | 99 | stroke(c); 100 | float w7 = map(greyscale, 0, 255, 5, 0.1); 101 | strokeWeight(w7); 102 | fill(0, 255 * x); 103 | pushMatrix(); 104 | translate(posX, posY); 105 | rotate(greyscale / 255.0 * PI * y); 106 | rect(0, 0, 50, 50); 107 | popMatrix(); 108 | } 109 | } 110 | } 111 | 112 | void draw4() { 113 | 114 | float x = map(random(width), 0, width, 0.05, 1); 115 | float y = map(random(height), 0, height, 0.05, 1); 116 | 117 | for (int i = 0; i < img.width; i++) { 118 | for (int j = 0; j < img.height; j++) { 119 | float tileWidth = width / (float)img.width; 120 | float tileHeight = height / (float)img.height; 121 | float posX = tileWidth * i; 122 | float posY = tileHeight * j; 123 | color c = img.pixels[j * img.width + i]; 124 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 125 | 126 | noStroke(); 127 | fill(greyscale, greyscale * x, 255 * y); 128 | ellipse(posX, posY, 13.5, 53.5); //posY * cos(posY) 129 | rect(posX+4, posY, 3.5, 3.5); 130 | rect(posX, posY+4, 3.5, 3.5); 131 | rect(posX+4, posY+4, 3.5, 3.5); 132 | } 133 | } 134 | } 135 | 136 | void draw5() { 137 | 138 | float x = map(random(width), 0, width, 0.05, 1); 139 | float y = map(random(height), 0, height, 0.05, 1); 140 | 141 | for (int i = 0; i < img.width; i++) { 142 | for (int j = 0; j < img.height; j++) { 143 | float tileWidth = width / (float)img.width; 144 | float tileHeight = height / (float)img.height; 145 | float posX = tileWidth * i; 146 | float posY = tileHeight * j; 147 | color c = img.pixels[j * img.width + i]; 148 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 149 | 150 | stroke(greyscale, greyscale, greyscale); 151 | stroke(red(c), green(c), blue(c)); 152 | noFill(); 153 | pushMatrix(); 154 | translate(posX, posY); 155 | rotate(greyscale/255.0 * PI); 156 | strokeWeight(1); 157 | rect(0, 0, 35 * x, 35 * y); 158 | float w9 = map(greyscale, 0, 255, 15, 0.1); 159 | strokeWeight(w9); 160 | stroke(red(c), green(c), blue(c), 70); 161 | ellipse(0, 0, 50, 25); 162 | popMatrix(); 163 | } 164 | } 165 | } 166 | 167 | -------------------------------------------------------------------------------- /src/e5-d5-1.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | // draw1(); 31 | // draw2(); 32 | // draw3(); 33 | // draw4(); 34 | draw5(); 35 | 36 | save("e5r1-d5.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | noStroke(); 79 | fill(c); 80 | ellipse(posX, posY, w6 * x, w6 * x); 81 | } 82 | } 83 | } 84 | 85 | void draw3() { 86 | 87 | float x = map(random(width), 0, width, 0.05, 1); 88 | float y = map(random(height), 0, height, 0.05, 1); 89 | 90 | for (int i = 0; i < img.width; i++) { 91 | for (int j = 0; j < img.height; j++) { 92 | float tileWidth = width / (float)img.width; 93 | float tileHeight = height / (float)img.height; 94 | float posX = tileWidth * i; 95 | float posY = tileHeight * j; 96 | color c = img.pixels[j * img.width + i]; 97 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 98 | 99 | stroke(c); 100 | float w7 = map(greyscale, 0, 255, 5, 0.1); 101 | strokeWeight(w7); 102 | fill(255, 255 * x); 103 | pushMatrix(); 104 | translate(posX, posY); 105 | rotate(greyscale / 255.0 * PI * y); 106 | rect(0, 0, 15, 15); 107 | popMatrix(); 108 | } 109 | } 110 | } 111 | 112 | void draw4() { 113 | 114 | float x = map(random(width), 0, width, 0.05, 1); 115 | float y = map(random(height), 0, height, 0.05, 1); 116 | 117 | for (int i = 0; i < img.width; i++) { 118 | for (int j = 0; j < img.height; j++) { 119 | float tileWidth = width / (float)img.width; 120 | float tileHeight = height / (float)img.height; 121 | float posX = tileWidth * i; 122 | float posY = tileHeight * j; 123 | color c = img.pixels[j * img.width + i]; 124 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 125 | 126 | noStroke(); 127 | fill(greyscale, greyscale * x, 255 * y); 128 | rect(posX, posY, 3.5, 3.5); //posY * cos(posY) 129 | rect(posX+4, posY, 3.5, 3.5); 130 | rect(posX, posY+4, 3.5, 3.5); 131 | rect(posX+4, posY+4, 3.5, 3.5); 132 | } 133 | } 134 | } 135 | 136 | void draw5() { 137 | 138 | float x = map(random(width), 0, width, 0.05, 1); 139 | float y = map(random(height), 0, height, 0.05, 1); 140 | 141 | for (int i = 0; i < img.width; i++) { 142 | for (int j = 0; j < img.height; j++) { 143 | float tileWidth = width / (float)img.width; 144 | float tileHeight = height / (float)img.height; 145 | float posX = tileWidth * i; 146 | float posY = tileHeight * j; 147 | color c = img.pixels[j * img.width + i]; 148 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 149 | 150 | stroke(greyscale, greyscale, greyscale); 151 | stroke(red(c), green(c), blue(c)); 152 | noFill(); 153 | pushMatrix(); 154 | translate(posX, posY); 155 | rotate(greyscale/255.0 * PI); 156 | //strokeWeight(1); 157 | rect(0, 0, 35 * x, 35 * y); 158 | // float w9 = map(greyscale, 0, 255, 15, 0.1); 159 | // strokeWeight(w9); 160 | // stroke(0, 70); 161 | // ellipse(0, 0, 10, 5); 162 | popMatrix(); 163 | } 164 | } 165 | } 166 | 167 | -------------------------------------------------------------------------------- /src/e5-d5-2.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | // draw1(); 31 | // draw2(); 32 | // draw3(); 33 | // draw4(); 34 | draw5(); 35 | 36 | save("e5r1-d5.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | noStroke(); 79 | fill(c); 80 | ellipse(posX, posY, w6 * x, w6 * x); 81 | } 82 | } 83 | } 84 | 85 | void draw3() { 86 | 87 | float x = map(random(width), 0, width, 0.05, 1); 88 | float y = map(random(height), 0, height, 0.05, 1); 89 | 90 | for (int i = 0; i < img.width; i++) { 91 | for (int j = 0; j < img.height; j++) { 92 | float tileWidth = width / (float)img.width; 93 | float tileHeight = height / (float)img.height; 94 | float posX = tileWidth * i; 95 | float posY = tileHeight * j; 96 | color c = img.pixels[j * img.width + i]; 97 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 98 | 99 | stroke(c); 100 | float w7 = map(greyscale, 0, 255, 5, 0.1); 101 | strokeWeight(w7); 102 | fill(255, 255 * x); 103 | pushMatrix(); 104 | translate(posX, posY); 105 | rotate(greyscale / 255.0 * PI * y); 106 | rect(0, 0, 15, 15); 107 | popMatrix(); 108 | } 109 | } 110 | } 111 | 112 | void draw4() { 113 | 114 | float x = map(random(width), 0, width, 0.05, 1); 115 | float y = map(random(height), 0, height, 0.05, 1); 116 | 117 | for (int i = 0; i < img.width; i++) { 118 | for (int j = 0; j < img.height; j++) { 119 | float tileWidth = width / (float)img.width; 120 | float tileHeight = height / (float)img.height; 121 | float posX = tileWidth * i; 122 | float posY = tileHeight * j; 123 | color c = img.pixels[j * img.width + i]; 124 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 125 | 126 | noStroke(); 127 | fill(greyscale, greyscale * x, 255 * y); 128 | rect(posX, posY, 3.5, 3.5); //posY * cos(posY) 129 | rect(posX+4, posY, 3.5, 3.5); 130 | rect(posX, posY+4, 3.5, 3.5); 131 | rect(posX+4, posY+4, 3.5, 3.5); 132 | } 133 | } 134 | } 135 | 136 | void draw5() { 137 | 138 | float x = map(random(width), 0, width, 0.05, 1); 139 | float y = map(random(height), 0, height, 0.05, 1); 140 | 141 | for (int i = 0; i < img.width; i++) { 142 | for (int j = 0; j < img.height; j++) { 143 | float tileWidth = width / (float)img.width; 144 | float tileHeight = height / (float)img.height; 145 | float posX = tileWidth * i; 146 | float posY = tileHeight * j; 147 | color c = img.pixels[j * img.width + i]; 148 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 149 | 150 | stroke(greyscale, greyscale, greyscale); 151 | stroke(red(c), green(c), blue(c)); 152 | noFill(); 153 | pushMatrix(); 154 | translate(posX, posY); 155 | rotate(greyscale/255.0 * PI); 156 | //strokeWeight(1); 157 | ellipse(0, 0, 35 * x, 35 * y); 158 | // float w9 = map(greyscale, 0, 255, 15, 0.1); 159 | // strokeWeight(w9); 160 | // stroke(0, 70); 161 | // ellipse(0, 0, 10, 5); 162 | popMatrix(); 163 | } 164 | } 165 | } 166 | 167 | -------------------------------------------------------------------------------- /src/e5-d5-3.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | // draw1(); 31 | // draw2(); 32 | // draw3(); 33 | // draw4(); 34 | draw5(); 35 | 36 | save("e5r1-d5.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | noStroke(); 79 | fill(c); 80 | ellipse(posX, posY, w6 * x, w6 * x); 81 | } 82 | } 83 | } 84 | 85 | void draw3() { 86 | 87 | float x = map(random(width), 0, width, 0.05, 1); 88 | float y = map(random(height), 0, height, 0.05, 1); 89 | 90 | for (int i = 0; i < img.width; i++) { 91 | for (int j = 0; j < img.height; j++) { 92 | float tileWidth = width / (float)img.width; 93 | float tileHeight = height / (float)img.height; 94 | float posX = tileWidth * i; 95 | float posY = tileHeight * j; 96 | color c = img.pixels[j * img.width + i]; 97 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 98 | 99 | stroke(c); 100 | float w7 = map(greyscale, 0, 255, 5, 0.1); 101 | strokeWeight(w7); 102 | fill(255, 255 * x); 103 | pushMatrix(); 104 | translate(posX, posY); 105 | rotate(greyscale / 255.0 * PI * y); 106 | rect(0, 0, 15, 15); 107 | popMatrix(); 108 | } 109 | } 110 | } 111 | 112 | void draw4() { 113 | 114 | float x = map(random(width), 0, width, 0.05, 1); 115 | float y = map(random(height), 0, height, 0.05, 1); 116 | 117 | for (int i = 0; i < img.width; i++) { 118 | for (int j = 0; j < img.height; j++) { 119 | float tileWidth = width / (float)img.width; 120 | float tileHeight = height / (float)img.height; 121 | float posX = tileWidth * i; 122 | float posY = tileHeight * j; 123 | color c = img.pixels[j * img.width + i]; 124 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 125 | 126 | noStroke(); 127 | fill(greyscale, greyscale * x, 255 * y); 128 | rect(posX, posY, 3.5, 3.5); //posY * cos(posY) 129 | rect(posX+4, posY, 3.5, 3.5); 130 | rect(posX, posY+4, 3.5, 3.5); 131 | rect(posX+4, posY+4, 3.5, 3.5); 132 | } 133 | } 134 | } 135 | 136 | void draw5() { 137 | 138 | float x = map(random(width), 0, width, 0.05, 1); 139 | float y = map(random(height), 0, height, 0.05, 1); 140 | 141 | for (int i = 0; i < img.width; i++) { 142 | for (int j = 0; j < img.height; j++) { 143 | float tileWidth = width / (float)img.width; 144 | float tileHeight = height / (float)img.height; 145 | float posX = tileWidth * i; 146 | float posY = tileHeight * j; 147 | color c = img.pixels[j * img.width + i]; 148 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 149 | 150 | stroke(greyscale, greyscale, greyscale); 151 | stroke(red(c), green(c), blue(c)); 152 | noFill(); 153 | pushMatrix(); 154 | translate(posX, posY); 155 | rotate(greyscale/255.0 * PI); 156 | strokeWeight(1); 157 | rect(0, 0, 35 * x, 35 * y); 158 | float w9 = map(greyscale, 0, 255, 15, 0.1); 159 | strokeWeight(w9); 160 | stroke(red(c), green(c), blue(c), 70); 161 | ellipse(0, 0, 100, 50); 162 | popMatrix(); 163 | } 164 | } 165 | } 166 | 167 | -------------------------------------------------------------------------------- /src/e5-d5-4.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | // draw1(); 31 | // draw2(); 32 | // draw3(); 33 | // draw4(); 34 | draw5(); 35 | 36 | save("e5r1-d5.jpg"); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | noStroke(); 79 | fill(c); 80 | ellipse(posX, posY, w6 * x, w6 * x); 81 | } 82 | } 83 | } 84 | 85 | void draw3() { 86 | 87 | float x = map(random(width), 0, width, 0.05, 1); 88 | float y = map(random(height), 0, height, 0.05, 1); 89 | 90 | for (int i = 0; i < img.width; i++) { 91 | for (int j = 0; j < img.height; j++) { 92 | float tileWidth = width / (float)img.width; 93 | float tileHeight = height / (float)img.height; 94 | float posX = tileWidth * i; 95 | float posY = tileHeight * j; 96 | color c = img.pixels[j * img.width + i]; 97 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 98 | 99 | stroke(c); 100 | float w7 = map(greyscale, 0, 255, 5, 0.1); 101 | strokeWeight(w7); 102 | fill(255, 255 * x); 103 | pushMatrix(); 104 | translate(posX, posY); 105 | rotate(greyscale / 255.0 * PI * y); 106 | rect(0, 0, 15, 15); 107 | popMatrix(); 108 | } 109 | } 110 | } 111 | 112 | void draw4() { 113 | 114 | float x = map(random(width), 0, width, 0.05, 1); 115 | float y = map(random(height), 0, height, 0.05, 1); 116 | 117 | for (int i = 0; i < img.width; i++) { 118 | for (int j = 0; j < img.height; j++) { 119 | float tileWidth = width / (float)img.width; 120 | float tileHeight = height / (float)img.height; 121 | float posX = tileWidth * i; 122 | float posY = tileHeight * j; 123 | color c = img.pixels[j * img.width + i]; 124 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 125 | 126 | noStroke(); 127 | fill(greyscale, greyscale * x, 255 * y); 128 | rect(posX, posY, 3.5, 3.5); //posY * cos(posY) 129 | rect(posX+4, posY, 3.5, 3.5); 130 | rect(posX, posY+4, 3.5, 3.5); 131 | rect(posX+4, posY+4, 3.5, 3.5); 132 | } 133 | } 134 | } 135 | 136 | void draw5() { 137 | 138 | float x = map(random(width), 0, width, 0.05, 1); 139 | float y = map(random(height), 0, height, 0.05, 1); 140 | 141 | for (int i = 0; i < img.width; i++) { 142 | for (int j = 0; j < img.height; j++) { 143 | float tileWidth = width / (float)img.width; 144 | float tileHeight = height / (float)img.height; 145 | float posX = tileWidth * i; 146 | float posY = tileHeight * j; 147 | color c = img.pixels[j * img.width + i]; 148 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 149 | 150 | stroke(greyscale, greyscale, greyscale); 151 | stroke(red(c), green(c), blue(c)); 152 | noFill(); 153 | pushMatrix(); 154 | translate(posX, posY); 155 | rotate(greyscale/255.0 * PI); 156 | strokeWeight(1); 157 | rect(0, 0, 35 * x, 35 * y); 158 | float w9 = map(greyscale, 0, 255, 15, 0.1); 159 | strokeWeight(w9); 160 | stroke(red(c), green(c), blue(c), 70); 161 | ellipse(0, 0, 50, 25); 162 | popMatrix(); 163 | } 164 | } 165 | } 166 | 167 | -------------------------------------------------------------------------------- /src/e5.pde: -------------------------------------------------------------------------------- 1 | // ORIGINAL: 2 | //P_4_3_1_01.pde 3 | // 4 | // Generative Gestaltung, ISBN: 978-3-87439-759-9 5 | // First Edition, Hermann Schmidt, Mainz, 2009 6 | // Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 7 | // Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni 8 | // 9 | // http://www.generative-gestaltung.de 10 | // 11 | // Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 14 | // Unless required by applicable law or agreed to in writing, software 15 | // distributed under the License is distributed on an "AS IS" BASIS, 16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | // See the License for the specific language governing permissions and 18 | // limitations under the License. 19 | 20 | 21 | PImage img; 22 | 23 | void setup() { 24 | img = loadImage("monalisa.jpg"); 25 | size(img.width, img.height); 26 | smooth(); 27 | 28 | background(255); 29 | 30 | // draw1(); 31 | // draw2(); 32 | // draw3(); 33 | // draw4(); 34 | draw5(); 35 | 36 | save(); 37 | } 38 | void draw1() { 39 | float x = map(random(width), 0, width, 0.05, 1); 40 | float y = map(random(height), 0, height, 0.05, 1); 41 | 42 | for (int i = 0; i < img.width; i++) { 43 | for (int j = 0; j < img.height; j++) { 44 | float tileWidth = width / (float)img.width; 45 | float tileHeight = height / (float)img.height; 46 | float posX = tileWidth * i; 47 | float posY = tileHeight * j; 48 | color c = img.pixels[j * img.width + i]; 49 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 50 | 51 | float w5 = map(greyscale, 0, 255, 5, 0.2); 52 | strokeWeight(w5 * y + 0.1); 53 | color c2 = img.get(min(i + 1, img.width - 1), j); 54 | stroke(c2); 55 | int greyscale2 = int(red(c2) * 0.222 + green(c2) * 0.707 + blue(c2) * 0.071); 56 | float h5 = 50 * x; 57 | float d1 = map(greyscale, 0, 255, h5, 0); 58 | float d2 = map(greyscale2, 0, 255, h5, 0); 59 | line(posX-d1, posY + d1, posX + tileWidth - d2, posY + d2); 60 | } 61 | } 62 | } 63 | 64 | void draw2() { 65 | float x = map(random(width), 0, width, 0.05, 1); 66 | float y = map(random(height), 0, height, 0.05, 1); 67 | 68 | for (int i = 0; i < img.width; i++) { 69 | for (int j = 0; j < img.height; j++) { 70 | float tileWidth = width / (float)img.width; 71 | float tileHeight = height / (float)img.height; 72 | float posX = tileWidth * i; 73 | float posY = tileHeight * j; 74 | color c = img.pixels[j * img.width + i]; 75 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 76 | 77 | float w6 = map(greyscale, 0, 255, 25, 0); 78 | noStroke(); 79 | fill(c); 80 | ellipse(posX, posY, w6 * x, w6 * x); 81 | } 82 | } 83 | } 84 | 85 | void draw3() { 86 | 87 | float x = map(random(width), 0, width, 0.05, 1); 88 | float y = map(random(height), 0, height, 0.05, 1); 89 | 90 | for (int i = 0; i < img.width; i++) { 91 | for (int j = 0; j < img.height; j++) { 92 | float tileWidth = width / (float)img.width; 93 | float tileHeight = height / (float)img.height; 94 | float posX = tileWidth * i; 95 | float posY = tileHeight * j; 96 | color c = img.pixels[j * img.width + i]; 97 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 98 | 99 | stroke(c); 100 | float w7 = map(greyscale, 0, 255, 5, 0.1); 101 | strokeWeight(w7); 102 | fill(255, 255 * x); 103 | pushMatrix(); 104 | translate(posX, posY); 105 | rotate(greyscale / 255.0 * PI * y); 106 | rect(0, 0, 15, 15); 107 | popMatrix(); 108 | } 109 | } 110 | } 111 | 112 | void draw4() { 113 | 114 | float x = map(random(width), 0, width, 0.05, 1); 115 | float y = map(random(height), 0, height, 0.05, 1); 116 | 117 | for (int i = 0; i < img.width; i++) { 118 | for (int j = 0; j < img.height; j++) { 119 | float tileWidth = width / (float)img.width; 120 | float tileHeight = height / (float)img.height; 121 | float posX = tileWidth * i; 122 | float posY = tileHeight * j; 123 | color c = img.pixels[j * img.width + i]; 124 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 125 | 126 | noStroke(); 127 | fill(greyscale, greyscale * x, 255 * y); 128 | rect(posX, posY, 3.5, 3.5); //posY * cos(posY) 129 | rect(posX+4, posY, 3.5, 3.5); 130 | rect(posX, posY+4, 3.5, 3.5); 131 | rect(posX+4, posY+4, 3.5, 3.5); 132 | } 133 | } 134 | } 135 | 136 | void draw5() { 137 | 138 | float x = map(random(width), 0, width, 0.05, 1); 139 | float y = map(random(height), 0, height, 0.05, 1); 140 | 141 | for (int i = 0; i < img.width; i++) { 142 | for (int j = 0; j < img.height; j++) { 143 | float tileWidth = width / (float)img.width; 144 | float tileHeight = height / (float)img.height; 145 | float posX = tileWidth * i; 146 | float posY = tileHeight * j; 147 | color c = img.pixels[j * img.width + i]; 148 | int greyscale = round(red(c) * 0.222 + green(c) * 0.707 + blue(c) * 0.071); 149 | 150 | stroke(greyscale, greyscale, greyscale); 151 | stroke(red(c), green(c), blue(c)); 152 | noFill(); 153 | pushMatrix(); 154 | translate(posX, posY); 155 | rotate(greyscale/255.0 * PI); 156 | //strokeWeight(1); 157 | rect(0, 0, 15 * x, 15 * y); 158 | //float w9 = map(greyscale, 0, 255, 15, 0.1); 159 | //strokeWeight(w9); 160 | //stroke(0, 70); 161 | //ellipse(0, 0, 10, 5); 162 | popMatrix(); 163 | } 164 | } 165 | } 166 | 167 | -------------------------------------------------------------------------------- /src/e6.pde: -------------------------------------------------------------------------------- 1 | int strokeR = (int)random(241, 253); 2 | int strokeG = (int)random(94, 255); 3 | int strokeB = 58; 4 | 5 | void setup() { 6 | size(500, 500); 7 | smooth(); 8 | background(36, 39, 41); 9 | 10 | float rFactor = 25; 11 | 12 | if (random(100) < rFactor) { 13 | drawEntity1(); 14 | } 15 | if (random(100) < rFactor) { 16 | drawEntity2(); 17 | } 18 | if (random(100) < rFactor) { 19 | drawEntity3(); 20 | } 21 | if (random(100) < rFactor) { 22 | drawSpray(); 23 | } 24 | if (random(100) < rFactor) { 25 | drawLines(); 26 | } 27 | if (random(100) < rFactor) { 28 | drawLines2(); 29 | } 30 | if (random(100) < rFactor) { 31 | drawLines3(); 32 | } 33 | if (random(100) < rFactor) { 34 | drawBrush(); 35 | } 36 | if (random(100) < rFactor) { 37 | drawGraphite(); 38 | } 39 | if (random(100) < rFactor) { 40 | drawSpiderWeb(); 41 | } 42 | 43 | if (random(100) < 10) { 44 | filter(BLUR, 1); 45 | } 46 | 47 | save("e6r1.jpg"); 48 | } 49 | 50 | 51 | void drawEntity1() { 52 | int nrOfPoints = (int)random(300, 600); 53 | int nrOfIterations = (int)random(80, 120); 54 | 55 | float gs = 3.0; //random(0.0, 3.0); 56 | float gx = 0.5; //random(0.0, 1.0); 57 | float gy = 0.75; //random(0.0, 1.0); 58 | float a = random(-2.5, 2.5); 59 | float b = random(-2.5, 2.5); 60 | float c = random(-2.5, 2.5); 61 | float d = random(-2.5, 2.5); 62 | 63 | Entity1[] points = new Entity1[nrOfPoints]; 64 | 65 | for (int i = 0; i < nrOfPoints; i++) { 66 | points[i] = new Entity1(); 67 | } 68 | 69 | for (int j = 0; j < nrOfIterations; j++) { 70 | for (int i = 0; i < nrOfPoints; i++) { 71 | points[i].nextStep(gs, gx, gy, a, b, c, d); 72 | } 73 | } 74 | } 75 | 76 | void drawEntity2() { 77 | int nrOfPoints = (int)random(300, 600); 78 | int nrOfIterations = (int)random(80, 120); 79 | 80 | float mx = 0; 81 | float my = 0; 82 | float limit = 5; 83 | float factor = 1.05; 84 | float drag = 0.01; 85 | 86 | Entity2[] points2 = new Entity2[nrOfPoints]; 87 | 88 | for (int i = 0; i < nrOfPoints; i++) { 89 | points2[i] = new Entity2(limit); 90 | } 91 | 92 | for (int j = 0; j < nrOfIterations; j++) { 93 | mx += 0.3 * (random(width) - mx); 94 | my += 0.3 * (random(height) - my); 95 | 96 | for (int i = 0; i < nrOfPoints; i++) { 97 | points2[i].nextStep(factor, drag, mx, my); 98 | } 99 | } 100 | } 101 | 102 | void drawEntity3() { 103 | int nrOfPoints = (int)random(2000, 4000); 104 | int nrOfIterations = (int)random(80, 120); 105 | 106 | float size = 15; //VARIABLE 107 | float a = random(TWO_PI); 108 | float c = cos(a); 109 | float s = sin(a); 110 | float scale = 1.0/nrOfPoints; 111 | 112 | Entity3[] points3 = new Entity3[nrOfPoints]; 113 | 114 | for (int i = 0; i < nrOfPoints; i++) { 115 | points3[i] = new Entity3(i * scale, random(1)); 116 | } 117 | 118 | for (int j = 0; j < nrOfIterations; j++) { 119 | for (int i = 0; i < nrOfPoints; i++) { 120 | points3[i].nextStep(s, c, size); 121 | } 122 | } 123 | } 124 | 125 | 126 | class Entity1 { 127 | float x, y; 128 | 129 | public Entity1() { 130 | x = random(-1.0, 1.0); 131 | y = random(-1.0, 1.0); 132 | } 133 | 134 | public void nextStep(float gs, float gx, float gy, float a, float b, float c, float d) { 135 | x = sin(a * y) - cos(b * x); 136 | y = sin(c * x) - cos(d * y); 137 | 138 | stroke(strokeR, strokeG, strokeB, (int)(random(25, 100))); 139 | point((x / gs + gx) * width, (y / gs + gy) * width); 140 | } 141 | } 142 | 143 | class Entity2 { 144 | float x = 0; 145 | float y = 0; 146 | float dx = 0; 147 | float dy = 0; 148 | float px = 0; 149 | float py = 0; 150 | float w = 0; 151 | 152 | Entity2(float limit) { 153 | x = random(width); 154 | y = random(height); 155 | w = random(1 / limit, limit); 156 | } 157 | 158 | void nextStep(float factor, float drag, float mx, float my) { 159 | dx /= factor; 160 | dy /= factor; 161 | dx += drag * (mx - x) * w / factor; 162 | dy += drag * (my - y) * w / factor; 163 | x += dx; 164 | y += dy; 165 | 166 | if (x != 0 && y != 0 && px != 0 && py != 0) { 167 | stroke(strokeR, strokeG, strokeB, (int)(random(5, 10))); 168 | line(x, y, px, py); 169 | } 170 | 171 | px = x; 172 | py = y; 173 | } 174 | } 175 | 176 | class Entity3 { 177 | 178 | float x1, y1, x2, y2; 179 | 180 | Entity3(float x, float y) { 181 | x1 = x; 182 | y1 = y; 183 | } 184 | 185 | public void nextStep(float s, float c, float size) { 186 | float k = y1 - x1 * x1; 187 | y1 = (x1 * s) + (k * c); 188 | x1 = (x1 * c) - (k * s); 189 | x2 = width / 2 + size * x1; 190 | y2 = height / 2 + size * y1; 191 | 192 | if (x2 > 0 && x2 < width && y2 > 0 && y2 < height) { 193 | stroke(strokeR, strokeG, strokeB, (int)(random(25, 100))); 194 | point(x2, y2); 195 | } 196 | } 197 | } 198 | 199 | void drawSpray() { 200 | int nrOfPoints = 4096; 201 | PVector[] points = new PVector[nrOfPoints]; 202 | 203 | fill(255, 50); 204 | smooth(); 205 | 206 | for (int i = 0; i < nrOfPoints; i++) { 207 | points[i] = new PVector(random(0, width), random(0, height)); 208 | } 209 | 210 | noiseDetail(3); 211 | 212 | for (int j = 0; j < 20; j++) { 213 | for (int i = 0; i < nrOfPoints; i++) { 214 | points[i].x = width * noise(points[i].y * 0.07 + random(15)); 215 | points[i].y = height * noise(points[i].x * 0.07 + random(15)); 216 | 217 | if (points[i].x < 0 || points[i].y < 0 || points[i].x > width || points[i].y > height) { 218 | points[i].x = random(0, width); 219 | points[i].y = random(0, height); 220 | } 221 | 222 | stroke(strokeR, strokeG, strokeB, (int)(random(25, 100))); 223 | point(points[i].x, points[i].y); 224 | } 225 | } 226 | } 227 | 228 | void drawLines() { 229 | ArrayList history = new ArrayList(); 230 | float distthresh = 60; 231 | 232 | float p1 = random(100, 200); 233 | float p2 = random(p1, p1+200); 234 | 235 | for (int i = 0; i < random (11); i++) { 236 | float k = random(p1, p2); 237 | PVector d = new PVector(random(k, k + 10), random(k, k + 10)); 238 | history.add(0, d); 239 | 240 | if (i > 0) { 241 | for (int p = 0; p < history.size (); p++) { 242 | PVector v = (PVector) history.get(p); 243 | d = v; 244 | if (p > 0) 245 | d = (PVector) history.get(p-1); 246 | 247 | stroke(strokeR, strokeG, strokeB, (int)(random(25, 100))); 248 | line(d.x, d.y, v.x, v.y); 249 | } 250 | } 251 | } 252 | } 253 | 254 | void drawLines2() { 255 | stroke(strokeR, strokeG, strokeB, (int)(random(20, 30))); 256 | float[] a = new float[14]; 257 | 258 | for (int j = 0; j < random (15); j++) { 259 | a[7] = random(width); 260 | a[0] = random(height); 261 | 262 | for (int k = 0; k < 18; k++) { 263 | for (int i = 1; i < 7; i++) { 264 | a[i] += (a[i-1] - a[i]) / i; 265 | a[i+7] += (a[i+6] - a[i+7]) / i; 266 | 267 | line(a[i], a[i+7], a[i-1], a[i+6]); 268 | } 269 | } 270 | } 271 | } 272 | 273 | void drawLines3() { 274 | stroke(strokeR, strokeG, strokeB, (int)(random(25, 100))); 275 | 276 | float x1 = random(10, 400); 277 | float y1 = random(10, 400); 278 | float x2 = random(10, 400); 279 | float y2 = random(10, 400); 280 | 281 | for (float i = 0; i < random (20, 35); i++) { 282 | float bound = random(2, 10); 283 | line(x1 + random(-bound, bound), y1 + random(-bound, bound), x2 + random(-bound, bound), y2 + random(-bound, bound)); 284 | } 285 | } 286 | 287 | 288 | void drawBrush() { 289 | stroke(strokeR, strokeG, strokeB, 255); 290 | for (int j = 0; j < random (1, 11); j++) { 291 | float x1 = random(10, 400); 292 | float y1 = random(10, 400); 293 | float x2 = random(10, 400); 294 | float y2 = random(10, 400); 295 | 296 | float dx = (x2 - x1) * 0.1; 297 | float dy = (y2 - y1) * 0.1; 298 | float weight = dist(x1, y1, x2, y2); 299 | 300 | int startSize = (int)random(3, 10); 301 | int nrOfPoints = 30; 302 | 303 | for (int i = 0; i < nrOfPoints; i++) { 304 | if (random(100) < 50) 305 | startSize += 1; 306 | else if (startSize > 0) 307 | startSize -= 1; 308 | 309 | strokeWeight(startSize); 310 | line(x1, y1, x1 + x2 / nrOfPoints, y1 + y2 / nrOfPoints); 311 | 312 | x1 += x2 / nrOfPoints; 313 | y1 += y2 / nrOfPoints; 314 | } 315 | } 316 | } 317 | 318 | void drawGraphite() { 319 | //source http://www.openprocessing.org/sketch/2922 320 | int num = 4096; 321 | PVector[] pos = new PVector[num]; 322 | PVector[] vel = new PVector[num]; 323 | 324 | fill(255, 50); 325 | smooth(); 326 | stroke(100, 255); 327 | for (int i = 0; i < num; i++) { 328 | pos[i] = new PVector(random(0, width), random(0, height)); 329 | vel[i] = new PVector(0, 0); 330 | } 331 | 332 | noiseDetail(14); 333 | float noisy = 0.007; 334 | 335 | for (int j = 0; j < random (50, 100); j++) { 336 | for (int i = 0; i < num; i++) { 337 | stroke(strokeR, strokeG, strokeB, (int)(random(25, 100))); 338 | point(pos[i].x, pos[i].y); 339 | vel[i].x = 10 * noise(pos[i].x * 0.7, pos[i].y * 0.7, noisy * 0.2) * cos(12 + PI * noise(pos[i].x * 0.007, pos[i].y * 0.007, noisy * 0.5)); 340 | vel[i].y = 10 * noise(pos[i].x * 0.7, pos[i].y * 0.7, noisy * 0.2) * sin(12 * PI * noise(pos[i].x * 0.007, pos[i].y * 0.7, noisy * 0.5)); 341 | pos[i].add(vel[i]); 342 | } 343 | noisy += .007; 344 | } 345 | } 346 | 347 | void drawSpiderWeb() { 348 | /* 349 | Original: 350 | Name: Drunken Spider 351 | Author: Marco Scarfagna 352 | 353 | */ 354 | 355 | // colorMode(HSB, 360, 100, 100, 100); 356 | float x, y; 357 | float dirX = 2.7; 358 | float dirY = 1.5; 359 | float offset = 0.75; 360 | float drunkFactor = random(0.5, 2); 361 | int attraction = int(random(20, 60)); 362 | 363 | ArrayList history = new ArrayList(); 364 | int lineDensity = 5; 365 | 366 | for (int t = 0; t < random (10000, 20000); t++) { 367 | 368 | x = random(width) + random(0.5, 2) * cos(radians(drunkFactor % 360)); 369 | y = random(height) + random(0.5, 2) *sin(radians(drunkFactor % 360)); 370 | 371 | for (int i = 0; i < history.size (); i = i + lineDensity) { 372 | PVector p = (PVector) history.get(i); 373 | float d = dist(x, y, p.x, p.y); 374 | stroke(strokeR, strokeG, strokeB, (int)(random(10, 20))); 375 | // stroke(1+int(sq(11*cos(radians(i)))), 1+int(sq(11*cos(radians(i)))), 1+int(sq(11*cos(radians(i)))), d*4); 376 | if (d > 1) { 377 | strokeWeight(1/d); 378 | } 379 | if (d < attraction) { 380 | if (random(10) < lineDensity) 381 | line(x, y, p.x + 1, p.y + 1); 382 | } 383 | } 384 | history.add(new PVector(x, y)); 385 | } 386 | } 387 | 388 | -------------------------------------------------------------------------------- /src/f1-1.pde: -------------------------------------------------------------------------------- 1 | import fontastic.*; 2 | import geomerative.*; 3 | 4 | Fontastic f; 5 | RFont font; 6 | 7 | void setup() { 8 | size(1000, 300); 9 | fill(0); 10 | 11 | RG.init(this); 12 | font = new RFont("f2.ttf", 100); 13 | 14 | RCommand.setSegmentLength (1); 15 | RCommand.setSegmentator(RCommand.UNIFORMLENGTH); 16 | 17 | createFont(); 18 | } 19 | void draw() { 20 | background(255); 21 | PFont myFont = createFont(f.getTTFfilename(), 150); 22 | textFont(myFont); 23 | textAlign(CENTER, CENTER); 24 | text(Fontastic.alphabet, 0, Fontastic.alphabet.length/2, width/2, height/5); 25 | text(Fontastic.alphabet, Fontastic.alphabet.length/2, Fontastic.alphabet.length, width/2, height/5*2.5); 26 | noLoop(); 27 | save("f1r1-1.jpg"); 28 | } 29 | void createFont() { 30 | 31 | 32 | boolean isLowerCase = false; 33 | 34 | f = new Fontastic(this, "f1"); 35 | f.setAuthor("Alex"); 36 | 37 | for (char c : Fontastic.alphabet) { 38 | RShape shp = font.toShape(c); 39 | RPoint[] pnts = new RPoint[0]; 40 | try { 41 | pnts = shp.getPoints(); 42 | } 43 | catch (NullPointerException e) { 44 | println("Problem with setSegmentOffset at Character "+c); 45 | } 46 | 47 | PVector[] mpoints = new PVector[0]; 48 | for (int ii=0; ii