├── README.md ├── eqns.txt ├── img ├── example.png ├── img0.png ├── img1.png ├── img10.png ├── img11.png ├── img12.png ├── img13.png ├── img14.png ├── img15.png ├── img16.png ├── img17.png ├── img18.png ├── img19.png ├── img2.png ├── img20.png ├── img21.png ├── img22.png ├── img23.png ├── img24.png ├── img25.png ├── img26.png ├── img27.png ├── img28.png ├── img29.png ├── img3.png ├── img30.png ├── img31.png ├── img32.png ├── img33.png ├── img34.png ├── img35.png ├── img36.png ├── img37.png ├── img38.png ├── img39.png ├── img4.png ├── img40.png ├── img41.png ├── img42.png ├── img43.png ├── img44.png ├── img45.png ├── img46.png ├── img47.png ├── img48.png ├── img49.png ├── img5.png ├── img6.png ├── img7.png ├── img8.png ├── img9.png └── test.png └── randomart.py /README.md: -------------------------------------------------------------------------------- 1 | random-art 2 | ========== 3 | 4 | Python code for the post ["Random (Psychedelic) Art, and a Pinch of Python"](http://jeremykun.com/2012/01/01/random-psychedelic-art/) 5 | -------------------------------------------------------------------------------- /eqns.txt: -------------------------------------------------------------------------------- 1 | img0: 2 | red = sin(pi*sin(pi*cos(pi*sin(pi*sin(pi*y))*cos(pi*x*x*sin(pi*cos(pi*x)))))) 3 | green = cos(pi*y*cos(pi*x)*x*cos(pi*x*x)*sin(pi*y)*cos(pi*cos(pi*cos(pi*y)))) 4 | blue = cos(pi*cos(pi*cos(pi*cos(pi*y*cos(pi*x)*sin(pi*sin(pi*x)))))) 5 | 6 | img1: 7 | red = sin(pi*sin(pi*x)*sin(pi*x)*x)*sin(pi*sin(pi*cos(pi*x*sin(pi*x))))*cos(pi*x)*sin(pi*x)*sin(pi*sin(pi*cos(pi*y))) 8 | green = sin(pi*cos(pi*sin(pi*sin(pi*y*y))*y*y*cos(pi*y*x)*y*sin(pi*x*y*y))) 9 | blue = sin(pi*cos(pi*cos(pi*sin(pi*x)*cos(pi*y)*x*cos(pi*sin(pi*y*sin(pi*y))*y)))) 10 | 11 | img2: 12 | red = cos(pi*x)*cos(pi*cos(pi*sin(pi*sin(pi*x))))*cos(pi*cos(pi*sin(pi*x)))*cos(pi*cos(pi*x*x)*x*cos(pi*y)) 13 | green = sin(pi*cos(pi*cos(pi*sin(pi*x)*y*y))*cos(pi*cos(pi*y))*cos(pi*sin(pi*x)))*cos(pi*y*y*sin(pi*sin(pi*cos(pi*x)))) 14 | blue = cos(pi*cos(pi*y*cos(pi*cos(pi*x))))*cos(pi*cos(pi*x))*x*sin(pi*cos(pi*sin(pi*sin(pi*cos(pi*sin(pi*y*y)))))) 15 | 16 | img3: 17 | red = sin(pi*sin(pi*sin(pi*cos(pi*x))))*sin(pi*cos(pi*y*y*x))*y*y*sin(pi*y)*sin(pi*x)*y*cos(pi*sin(pi*y))*sin(pi*x) 18 | green = sin(pi*x*y*sin(pi*cos(pi*sin(pi*cos(pi*x)))*sin(pi*x)*cos(pi*cos(pi*sin(pi*x))))) 19 | blue = cos(pi*sin(pi*sin(pi*x)))*sin(pi*x)*cos(pi*x)*sin(pi*y)*sin(pi*y)*x*sin(pi*y)*y*sin(pi*sin(pi*y*y*x)*cos(pi*y)) 20 | 21 | img4: 22 | red = cos(pi*sin(pi*cos(pi*cos(pi*y*x)))*sin(pi*cos(pi*cos(pi*y)))) 23 | green = cos(pi*sin(pi*cos(pi*sin(pi*y)))*sin(pi*cos(pi*sin(pi*y)))*cos(pi*y*y*sin(pi*x))*x)*sin(pi*cos(pi*sin(pi*cos(pi*cos(pi*cos(pi*y)))))) 24 | blue = cos(pi*x*x*sin(pi*x*x)*cos(pi*x)*sin(pi*y)*cos(pi*x*cos(pi*x))*cos(pi*x*y*x*y)*sin(pi*cos(pi*y)*y*x*sin(pi*x*x))) 25 | 26 | img5: 27 | red = sin(pi*sin(pi*sin(pi*sin(pi*y*y)))*cos(pi*sin(pi*cos(pi*x)*x*sin(pi*sin(pi*y))))) 28 | green = cos(pi*cos(pi*cos(pi*sin(pi*cos(pi*y*cos(pi*y)))))) 29 | blue = sin(pi*sin(pi*y)*y*y*sin(pi*x)*cos(pi*x)*cos(pi*x)) 30 | 31 | img6: 32 | red = sin(pi*y) 33 | green = cos(pi*y*cos(pi*sin(pi*sin(pi*y)))*cos(pi*cos(pi*y)))*cos(pi*cos(pi*sin(pi*cos(pi*y)))) 34 | blue = sin(pi*cos(pi*cos(pi*x*y)*cos(pi*y*cos(pi*cos(pi*x))))) 35 | 36 | img7: 37 | red = sin(pi*cos(pi*cos(pi*sin(pi*sin(pi*x)*x*x))*cos(pi*cos(pi*cos(pi*x)))*sin(pi*cos(pi*sin(pi*y))))) 38 | green = sin(pi*cos(pi*cos(pi*sin(pi*sin(pi*sin(pi*x)))))) 39 | blue = y 40 | 41 | img8: 42 | red = cos(pi*sin(pi*cos(pi*cos(pi*sin(pi*sin(pi*x)))))*cos(pi*sin(pi*y))*sin(pi*x)) 43 | green = cos(pi*cos(pi*sin(pi*y)))*y*cos(pi*sin(pi*cos(pi*cos(pi*x)*sin(pi*sin(pi*y))))) 44 | blue = cos(pi*cos(pi*cos(pi*sin(pi*sin(pi*x))*cos(pi*sin(pi*x*y))))) 45 | 46 | img9: 47 | red = sin(pi*cos(pi*y))*cos(pi*y)*sin(pi*sin(pi*y)*cos(pi*x)*cos(pi*sin(pi*sin(pi*x)))*cos(pi*sin(pi*x)))*cos(pi*sin(pi*y*y*y)*x*sin(pi*sin(pi*sin(pi*y)))) 48 | green = cos(pi*cos(pi*sin(pi*y*x*x))*sin(pi*y)) 49 | blue = sin(pi*cos(pi*cos(pi*cos(pi*y)*y*sin(pi*x))*y)) 50 | 51 | img10: 52 | red = cos(pi*cos(pi*cos(pi*sin(pi*cos(pi*x*y))))) 53 | green = cos(pi*x*sin(pi*sin(pi*x)))*cos(pi*cos(pi*sin(pi*x*y)*cos(pi*cos(pi*cos(pi*y))))) 54 | blue = sin(pi*cos(pi*sin(pi*y)*sin(pi*cos(pi*x))))*sin(pi*x*cos(pi*x)*sin(pi*y)*sin(pi*cos(pi*x))) 55 | 56 | img11: 57 | red = cos(pi*sin(pi*cos(pi*cos(pi*cos(pi*sin(pi*y)*x))))*sin(pi*cos(pi*sin(pi*y)))*cos(pi*cos(pi*sin(pi*y)*y))) 58 | green = cos(pi*cos(pi*x)) 59 | blue = sin(pi*sin(pi*cos(pi*sin(pi*cos(pi*cos(pi*x)*y))))*cos(pi*cos(pi*sin(pi*sin(pi*y)*sin(pi*sin(pi*y)))))) 60 | 61 | img12: 62 | red = sin(pi*cos(pi*x))*cos(pi*x)*cos(pi*sin(pi*y))*cos(pi*x*cos(pi*x)*cos(pi*cos(pi*cos(pi*y)*y*x)))*y 63 | green = cos(pi*sin(pi*cos(pi*sin(pi*cos(pi*x))))) 64 | blue = cos(pi*x)*cos(pi*cos(pi*sin(pi*x))) 65 | 66 | img13: 67 | red = sin(pi*sin(pi*cos(pi*cos(pi*y*cos(pi*y))*sin(pi*cos(pi*y*y)*y)))) 68 | green = cos(pi*sin(pi*cos(pi*sin(pi*y)*y*sin(pi*x))*sin(pi*sin(pi*x)))) 69 | blue = sin(pi*sin(pi*cos(pi*sin(pi*sin(pi*x)))))*cos(pi*y*sin(pi*y*sin(pi*x))*cos(pi*y)*sin(pi*cos(pi*x)))*cos(pi*cos(pi*cos(pi*cos(pi*sin(pi*x)*y)))) 70 | 71 | img14: 72 | red = sin(pi*sin(pi*cos(pi*x)*x*sin(pi*x))*sin(pi*sin(pi*sin(pi*y)))*sin(pi*x)) 73 | green = sin(pi*sin(pi*cos(pi*sin(pi*x)))*cos(pi*cos(pi*sin(pi*sin(pi*sin(pi*y))))))*sin(pi*cos(pi*y*y*cos(pi*x)))*sin(pi*y)*cos(pi*cos(pi*y))*cos(pi*cos(pi*x*y*x*y*sin(pi*cos(pi*y))*x)) 74 | blue = sin(pi*sin(pi*cos(pi*sin(pi*x*y))))*cos(pi*cos(pi*sin(pi*y))) 75 | 76 | img15: 77 | red = cos(pi*cos(pi*cos(pi*sin(pi*cos(pi*x)))*y*x*x))*sin(pi*sin(pi*sin(pi*x)))*cos(pi*cos(pi*x)*x)*x 78 | green = sin(pi*cos(pi*sin(pi*y*y)*x*sin(pi*sin(pi*y)))) 79 | blue = cos(pi*cos(pi*x*cos(pi*y)*cos(pi*y)*x*y))*sin(pi*y) 80 | 81 | img16: 82 | red = x 83 | green = sin(pi*sin(pi*cos(pi*y)*sin(pi*y)*cos(pi*cos(pi*y*y*y))*sin(pi*y))) 84 | blue = cos(pi*sin(pi*cos(pi*cos(pi*cos(pi*y*y))*sin(pi*cos(pi*x))))) 85 | 86 | img17: 87 | red = sin(pi*cos(pi*cos(pi*cos(pi*sin(pi*x*y*cos(pi*sin(pi*x))))))) 88 | green = sin(pi*sin(pi*cos(pi*cos(pi*x*x*x))*cos(pi*x*cos(pi*x*x)))) 89 | blue = cos(pi*sin(pi*cos(pi*cos(pi*sin(pi*x))))) 90 | 91 | img18: 92 | red = sin(pi*sin(pi*cos(pi*x)*cos(pi*x)))*sin(pi*cos(pi*sin(pi*y))*sin(pi*cos(pi*cos(pi*x)))) 93 | green = sin(pi*cos(pi*cos(pi*x))*sin(pi*sin(pi*sin(pi*x)))*cos(pi*cos(pi*cos(pi*x*y)))) 94 | blue = cos(pi*cos(pi*cos(pi*sin(pi*y*sin(pi*y))*y*sin(pi*cos(pi*x))))) 95 | 96 | img19: 97 | red = cos(pi*cos(pi*sin(pi*sin(pi*sin(pi*cos(pi*x))))*cos(pi*cos(pi*sin(pi*y)))*sin(pi*sin(pi*cos(pi*sin(pi*x)))))) 98 | green = cos(pi*sin(pi*cos(pi*x*sin(pi*x*x))))*sin(pi*cos(pi*sin(pi*y*y*x*y)))*sin(pi*sin(pi*x)) 99 | blue = cos(pi*sin(pi*cos(pi*sin(pi*y))))*cos(pi*cos(pi*sin(pi*sin(pi*x)))) 100 | 101 | img20: 102 | red = sin(pi*sin(pi*sin(pi*cos(pi*sin(pi*cos(pi*cos(pi*x))))))) 103 | green = sin(pi*y)*cos(pi*cos(pi*x)) 104 | blue = cos(pi*x*sin(pi*cos(pi*x))*cos(pi*sin(pi*x)))*cos(pi*cos(pi*cos(pi*x))*x)*sin(pi*cos(pi*x*x*y)*x)*sin(pi*x)*sin(pi*sin(pi*cos(pi*y)))*sin(pi*cos(pi*cos(pi*sin(pi*y)))) 105 | 106 | img21: 107 | red = sin(pi*cos(pi*sin(pi*y*cos(pi*y)*x*x*sin(pi*x*y)))) 108 | green = sin(pi*sin(pi*x)*sin(pi*cos(pi*cos(pi*x)))) 109 | blue = cos(pi*cos(pi*sin(pi*cos(pi*cos(pi*x*y))))) 110 | 111 | img22: 112 | red = sin(pi*sin(pi*sin(pi*sin(pi*y*cos(pi*sin(pi*x))))*x)) 113 | green = sin(pi*sin(pi*sin(pi*cos(pi*cos(pi*x))*sin(pi*y*y))))*sin(pi*sin(pi*sin(pi*sin(pi*sin(pi*sin(pi*x)))))) 114 | blue = sin(pi*cos(pi*sin(pi*y*x*x*sin(pi*y)))) 115 | 116 | img23: 117 | red = cos(pi*cos(pi*sin(pi*y))*cos(pi*sin(pi*cos(pi*x)))*sin(pi*sin(pi*sin(pi*x)))*sin(pi*cos(pi*cos(pi*y)))*sin(pi*sin(pi*cos(pi*cos(pi*y*x))))) 118 | green = cos(pi*cos(pi*cos(pi*sin(pi*cos(pi*y)*cos(pi*cos(pi*x))*cos(pi*x))))) 119 | blue = sin(pi*cos(pi*sin(pi*x))) 120 | 121 | img24: 122 | red = sin(pi*sin(pi*cos(pi*sin(pi*x)*cos(pi*sin(pi*y))*y))*cos(pi*cos(pi*y)*sin(pi*y*y))) 123 | green = sin(pi*y)*sin(pi*cos(pi*y))*cos(pi*cos(pi*cos(pi*x)*y*sin(pi*y))) 124 | blue = sin(pi*cos(pi*sin(pi*cos(pi*x))*y))*sin(pi*sin(pi*y)*sin(pi*y))*y*sin(pi*sin(pi*y*x)*sin(pi*y)) 125 | 126 | img25: 127 | red = sin(pi*cos(pi*sin(pi*y))*cos(pi*cos(pi*y*y*x*y))) 128 | green = cos(pi*cos(pi*sin(pi*cos(pi*x)))*cos(pi*sin(pi*cos(pi*y))*y*y*y*x*cos(pi*y)*cos(pi*y)*x)) 129 | blue = cos(pi*sin(pi*cos(pi*sin(pi*y)*cos(pi*y)))*x*x*cos(pi*cos(pi*y*x*y*y))) 130 | 131 | img26: 132 | red = cos(pi*sin(pi*sin(pi*cos(pi*cos(pi*cos(pi*y)))))) 133 | green = sin(pi*sin(pi*cos(pi*x)*y)*y*cos(pi*sin(pi*sin(pi*x))*y)*cos(pi*cos(pi*y*y*x))*cos(pi*cos(pi*x)*sin(pi*x)*y)) 134 | blue = cos(pi*sin(pi*cos(pi*cos(pi*y)*y))*y*sin(pi*sin(pi*sin(pi*sin(pi*y))))) 135 | 136 | img27: 137 | red = cos(pi*sin(pi*sin(pi*x*y)*cos(pi*sin(pi*y)*sin(pi*x)*x*y*y*y))) 138 | green = cos(pi*sin(pi*y)) 139 | blue = sin(pi*sin(pi*sin(pi*cos(pi*x))*x*y*y*x*cos(pi*y*x*y))*sin(pi*x)*cos(pi*sin(pi*x*sin(pi*x)))) 140 | 141 | img28: 142 | red = cos(pi*cos(pi*sin(pi*cos(pi*x)))) 143 | green = cos(pi*sin(pi*sin(pi*cos(pi*y*cos(pi*cos(pi*x))))*cos(pi*sin(pi*x)))) 144 | blue = cos(pi*x)*cos(pi*y)*cos(pi*cos(pi*sin(pi*sin(pi*x))*x*y*y)) 145 | 146 | img29: 147 | red = sin(pi*sin(pi*sin(pi*cos(pi*sin(pi*y))))*sin(pi*x*y*y)*x*y*x*y*cos(pi*x)*sin(pi*x*sin(pi*x)*sin(pi*cos(pi*y)))*cos(pi*sin(pi*sin(pi*sin(pi*sin(pi*x)))))) 148 | green = sin(pi*sin(pi*sin(pi*y*x))*x) 149 | blue = cos(pi*cos(pi*sin(pi*cos(pi*y*y)))) 150 | 151 | img30: 152 | red = cos(pi*sin(pi*cos(pi*sin(pi*cos(pi*x))*cos(pi*cos(pi*cos(pi*y*x)))))) 153 | green = sin(pi*sin(pi*y*y))*cos(pi*cos(pi*y)*cos(pi*x)*sin(pi*sin(pi*x)))*cos(pi*cos(pi*sin(pi*cos(pi*cos(pi*x)))))*sin(pi*cos(pi*sin(pi*x)))*sin(pi*sin(pi*sin(pi*y)))*sin(pi*x*cos(pi*x)) 154 | blue = cos(pi*sin(pi*cos(pi*cos(pi*cos(pi*y)*x*x)*sin(pi*y)))) 155 | 156 | img31: 157 | red = cos(pi*sin(pi*x)*cos(pi*y)*sin(pi*cos(pi*sin(pi*sin(pi*x))))) 158 | green = cos(pi*cos(pi*x*y*sin(pi*sin(pi*y))*cos(pi*cos(pi*cos(pi*x))*y)))*sin(pi*cos(pi*sin(pi*x)*cos(pi*y*sin(pi*x))))*sin(pi*cos(pi*y)*y*cos(pi*x))*y 159 | blue = sin(pi*cos(pi*sin(pi*cos(pi*y))*sin(pi*cos(pi*cos(pi*y*y*y))))) 160 | 161 | img32: 162 | red = cos(pi*sin(pi*sin(pi*x))*cos(pi*cos(pi*x))*sin(pi*cos(pi*x*y)*x)) 163 | green = y*cos(pi*sin(pi*cos(pi*cos(pi*y))*cos(pi*sin(pi*y))))*cos(pi*cos(pi*cos(pi*y)*cos(pi*cos(pi*x)))*cos(pi*cos(pi*sin(pi*y))*cos(pi*sin(pi*x)))*cos(pi*cos(pi*cos(pi*x)*sin(pi*cos(pi*sin(pi*y)))))) 164 | blue = sin(pi*sin(pi*x*y*x*y)*cos(pi*cos(pi*x)*y)*y*sin(pi*cos(pi*sin(pi*x))*sin(pi*x))) 165 | 166 | img33: 167 | red = cos(pi*sin(pi*sin(pi*sin(pi*cos(pi*y*sin(pi*x))*x)))) 168 | green = sin(pi*sin(pi*sin(pi*sin(pi*x))*sin(pi*y*x)*cos(pi*x*x*y*x*x*y))) 169 | blue = cos(pi*sin(pi*sin(pi*cos(pi*sin(pi*y)*sin(pi*y))))*y) 170 | 171 | img34: 172 | red = sin(pi*cos(pi*cos(pi*sin(pi*y)))) 173 | green = sin(pi*x)*sin(pi*cos(pi*y)*sin(pi*x)*cos(pi*x))*sin(pi*cos(pi*y*sin(pi*y*x*cos(pi*y)))) 174 | blue = sin(pi*x) 175 | 176 | img35: 177 | red = cos(pi*cos(pi*cos(pi*sin(pi*cos(pi*y)*y)))) 178 | green = cos(pi*cos(pi*sin(pi*sin(pi*sin(pi*sin(pi*y)))))) 179 | blue = sin(pi*sin(pi*cos(pi*cos(pi*x*y*x*y*y)))*cos(pi*cos(pi*cos(pi*x)))*x) 180 | 181 | img36: 182 | red = sin(pi*cos(pi*sin(pi*sin(pi*cos(pi*y*cos(pi*y))))))*sin(pi*sin(pi*cos(pi*cos(pi*x)*cos(pi*y)))) 183 | green = cos(pi*sin(pi*cos(pi*y)))*sin(pi*sin(pi*x*y*y*y*y)*x)*sin(pi*sin(pi*x))*x*cos(pi*x*sin(pi*y))*sin(pi*y)*sin(pi*y*y)*cos(pi*sin(pi*x)) 184 | blue = cos(pi*sin(pi*cos(pi*sin(pi*sin(pi*sin(pi*x)))))) 185 | 186 | img37: 187 | red = sin(pi*cos(pi*cos(pi*cos(pi*cos(pi*x)))*cos(pi*y)*cos(pi*x)*cos(pi*x)*sin(pi*cos(pi*x)))*sin(pi*sin(pi*y*x*x*sin(pi*y)))*sin(pi*y)) 188 | green = cos(pi*sin(pi*sin(pi*y*x)*cos(pi*x*y)*x*y))*sin(pi*y*cos(pi*cos(pi*y)))*cos(pi*cos(pi*sin(pi*x)))*cos(pi*x)*sin(pi*cos(pi*x)) 189 | blue = sin(pi*cos(pi*cos(pi*sin(pi*sin(pi*x)))))*cos(pi*sin(pi*cos(pi*cos(pi*y)))) 190 | 191 | img38: 192 | red = sin(pi*cos(pi*cos(pi*sin(pi*y)*cos(pi*x)*cos(pi*y)))*sin(pi*sin(pi*cos(pi*y))*sin(pi*x*x*x*y))) 193 | green = cos(pi*sin(pi*sin(pi*y)*x*cos(pi*y)*y*sin(pi*sin(pi*y)))) 194 | blue = cos(pi*y)*cos(pi*cos(pi*x)*y*cos(pi*y))*sin(pi*cos(pi*y)*sin(pi*cos(pi*cos(pi*y)))*x*cos(pi*x)*x)*cos(pi*y)*cos(pi*cos(pi*y*y)*y*sin(pi*y)*y)*sin(pi*cos(pi*x))*sin(pi*y)*cos(pi*cos(pi*sin(pi*y))) 195 | 196 | img39: 197 | red = cos(pi*sin(pi*y)) 198 | green = sin(pi*cos(pi*sin(pi*cos(pi*sin(pi*sin(pi*x)))))) 199 | blue = cos(pi*sin(pi*sin(pi*x)*sin(pi*sin(pi*y))*cos(pi*cos(pi*sin(pi*cos(pi*y)))))) 200 | 201 | img40: 202 | red = cos(pi*cos(pi*cos(pi*cos(pi*x))*y*x*sin(pi*cos(pi*sin(pi*y))))) 203 | green = cos(pi*cos(pi*cos(pi*y))) 204 | blue = sin(pi*cos(pi*sin(pi*sin(pi*sin(pi*x)*y)))) 205 | 206 | img41: 207 | red = sin(pi*cos(pi*cos(pi*sin(pi*sin(pi*sin(pi*x)))*sin(pi*cos(pi*cos(pi*x*y)))))) 208 | green = sin(pi*cos(pi*x)*cos(pi*y)*cos(pi*cos(pi*cos(pi*cos(pi*y))*x)*x*x)) 209 | blue = sin(pi*sin(pi*cos(pi*cos(pi*sin(pi*x))))) 210 | 211 | img42: 212 | red = cos(pi*cos(pi*cos(pi*x*y))*sin(pi*sin(pi*y))*sin(pi*sin(pi*cos(pi*cos(pi*x)))*y))*cos(pi*sin(pi*cos(pi*x*y*x)))*sin(pi*sin(pi*cos(pi*x*y*x)))*cos(pi*x) 213 | green = cos(pi*cos(pi*cos(pi*cos(pi*sin(pi*x*y*cos(pi*x)))))) 214 | blue = cos(pi*sin(pi*sin(pi*y*x*cos(pi*y*cos(pi*sin(pi*y)))))) 215 | 216 | img43: 217 | red = cos(pi*cos(pi*sin(pi*x)*y*x*x*y)*cos(pi*x))*cos(pi*sin(pi*y))*cos(pi*cos(pi*cos(pi*sin(pi*x)*x))) 218 | green = sin(pi*sin(pi*cos(pi*x*cos(pi*x*y)))*cos(pi*x)*cos(pi*cos(pi*y))*sin(pi*x)*sin(pi*y*x)*y) 219 | blue = sin(pi*cos(pi*y*sin(pi*y)*sin(pi*cos(pi*cos(pi*x)))*cos(pi*sin(pi*cos(pi*x*x)*y)))) 220 | 221 | img44: 222 | red = cos(pi*sin(pi*cos(pi*x)))*sin(pi*y*cos(pi*x)*cos(pi*cos(pi*cos(pi*x))))*sin(pi*sin(pi*sin(pi*x)*x)) 223 | green = sin(pi*cos(pi*cos(pi*cos(pi*cos(pi*y)))*cos(pi*cos(pi*y)*sin(pi*y)))) 224 | blue = cos(pi*cos(pi*sin(pi*cos(pi*y))*sin(pi*cos(pi*sin(pi*y)))))*sin(pi*cos(pi*cos(pi*cos(pi*y)))*sin(pi*cos(pi*sin(pi*cos(pi*x))))) 225 | 226 | img45: 227 | red = cos(pi*sin(pi*cos(pi*cos(pi*y))*cos(pi*x)))*cos(pi*cos(pi*sin(pi*x)*sin(pi*x))*cos(pi*cos(pi*x*y*x))) 228 | green = sin(pi*cos(pi*cos(pi*y)*sin(pi*cos(pi*y))*sin(pi*sin(pi*sin(pi*y*x*sin(pi*y)))))) 229 | blue = cos(pi*sin(pi*cos(pi*x))*cos(pi*y)*sin(pi*cos(pi*y))*cos(pi*y*x)) 230 | 231 | img46: 232 | red = cos(pi*cos(pi*cos(pi*cos(pi*sin(pi*cos(pi*cos(pi*x)*x)))))) 233 | green = sin(pi*cos(pi*cos(pi*x*y)*x*x*sin(pi*y)*cos(pi*y)*x)*x*sin(pi*sin(pi*y*y*cos(pi*x)))) 234 | blue = sin(pi*cos(pi*x*sin(pi*cos(pi*y*x*x)))*cos(pi*cos(pi*sin(pi*x)*cos(pi*x)))) 235 | 236 | img47: 237 | red = cos(pi*cos(pi*x)) 238 | green = cos(pi*sin(pi*x))*cos(pi*x*x)*sin(pi*cos(pi*sin(pi*sin(pi*x*y))*sin(pi*y)))*sin(pi*sin(pi*y)*y*cos(pi*y*cos(pi*y))*x)*cos(pi*sin(pi*y)*cos(pi*cos(pi*sin(pi*x)))) 239 | blue = cos(pi*cos(pi*sin(pi*cos(pi*x))*cos(pi*x))) 240 | 241 | img48: 242 | red = cos(pi*cos(pi*cos(pi*sin(pi*y))))*sin(pi*sin(pi*x))*sin(pi*x)*sin(pi*sin(pi*x*y)*sin(pi*cos(pi*x)*x*x*y)*x*sin(pi*cos(pi*x))) 243 | green = sin(pi*cos(pi*cos(pi*sin(pi*cos(pi*cos(pi*y)*x))*sin(pi*sin(pi*y*x))))) 244 | blue = sin(pi*y*sin(pi*cos(pi*cos(pi*x)*sin(pi*y)))*sin(pi*cos(pi*sin(pi*x)*x)*sin(pi*x*x))) 245 | 246 | img49: 247 | red = cos(pi*sin(pi*y*cos(pi*cos(pi*x)))*sin(pi*y*cos(pi*x*y)*y)) 248 | green = sin(pi*sin(pi*x*sin(pi*y))) 249 | blue = cos(pi*sin(pi*sin(pi*sin(pi*sin(pi*y))*sin(pi*y)*x))*cos(pi*cos(pi*sin(pi*y)))) 250 | 251 | -------------------------------------------------------------------------------- /img/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/example.png -------------------------------------------------------------------------------- /img/img0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img0.png -------------------------------------------------------------------------------- /img/img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img1.png -------------------------------------------------------------------------------- /img/img10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img10.png -------------------------------------------------------------------------------- /img/img11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img11.png -------------------------------------------------------------------------------- /img/img12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img12.png -------------------------------------------------------------------------------- /img/img13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img13.png -------------------------------------------------------------------------------- /img/img14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img14.png -------------------------------------------------------------------------------- /img/img15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img15.png -------------------------------------------------------------------------------- /img/img16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img16.png -------------------------------------------------------------------------------- /img/img17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img17.png -------------------------------------------------------------------------------- /img/img18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img18.png -------------------------------------------------------------------------------- /img/img19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img19.png -------------------------------------------------------------------------------- /img/img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img2.png -------------------------------------------------------------------------------- /img/img20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img20.png -------------------------------------------------------------------------------- /img/img21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img21.png -------------------------------------------------------------------------------- /img/img22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img22.png -------------------------------------------------------------------------------- /img/img23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img23.png -------------------------------------------------------------------------------- /img/img24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img24.png -------------------------------------------------------------------------------- /img/img25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img25.png -------------------------------------------------------------------------------- /img/img26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img26.png -------------------------------------------------------------------------------- /img/img27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img27.png -------------------------------------------------------------------------------- /img/img28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img28.png -------------------------------------------------------------------------------- /img/img29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img29.png -------------------------------------------------------------------------------- /img/img3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img3.png -------------------------------------------------------------------------------- /img/img30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img30.png -------------------------------------------------------------------------------- /img/img31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img31.png -------------------------------------------------------------------------------- /img/img32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img32.png -------------------------------------------------------------------------------- /img/img33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img33.png -------------------------------------------------------------------------------- /img/img34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img34.png -------------------------------------------------------------------------------- /img/img35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img35.png -------------------------------------------------------------------------------- /img/img36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img36.png -------------------------------------------------------------------------------- /img/img37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img37.png -------------------------------------------------------------------------------- /img/img38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img38.png -------------------------------------------------------------------------------- /img/img39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img39.png -------------------------------------------------------------------------------- /img/img4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img4.png -------------------------------------------------------------------------------- /img/img40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img40.png -------------------------------------------------------------------------------- /img/img41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img41.png -------------------------------------------------------------------------------- /img/img42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img42.png -------------------------------------------------------------------------------- /img/img43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img43.png -------------------------------------------------------------------------------- /img/img44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img44.png -------------------------------------------------------------------------------- /img/img45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img45.png -------------------------------------------------------------------------------- /img/img46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img46.png -------------------------------------------------------------------------------- /img/img47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img47.png -------------------------------------------------------------------------------- /img/img48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img48.png -------------------------------------------------------------------------------- /img/img49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img49.png -------------------------------------------------------------------------------- /img/img5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img5.png -------------------------------------------------------------------------------- /img/img6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img6.png -------------------------------------------------------------------------------- /img/img7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img7.png -------------------------------------------------------------------------------- /img/img8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img8.png -------------------------------------------------------------------------------- /img/img9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/img9.png -------------------------------------------------------------------------------- /img/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/j2kun/random-art/39f77424b4460ce90230abd313cf1256cfb4a59f/img/test.png -------------------------------------------------------------------------------- /randomart.py: -------------------------------------------------------------------------------- 1 | import random, math 2 | from PIL import Image 3 | 4 | random.seed() 5 | 6 | class X: 7 | def eval(self, x, y): 8 | return x 9 | 10 | def __str__(self): 11 | return "x" 12 | 13 | class Y: 14 | def eval(self, x, y): 15 | return y 16 | 17 | def __str__(self): 18 | return "y" 19 | 20 | class SinPi: 21 | def __init__(self, prob): 22 | self.arg = buildExpr(prob * prob) 23 | 24 | def __str__(self): 25 | return "sin(pi*" + str(self.arg) + ")" 26 | 27 | def eval(self, x, y): 28 | return math.sin(math.pi * self.arg.eval(x,y)) 29 | 30 | class CosPi: 31 | def __init__(self, prob): 32 | self.arg = buildExpr(prob * prob) 33 | 34 | def __str__(self): 35 | return "cos(pi*" + str(self.arg) + ")" 36 | 37 | def eval(self, x, y): 38 | return math.cos(math.pi * self.arg.eval(x,y)) 39 | 40 | class Times: 41 | def __init__(self, prob): 42 | self.lhs = buildExpr(prob * prob) 43 | self.rhs = buildExpr(prob * prob) 44 | 45 | def __str__(self): 46 | return str(self.lhs) + "*" + str(self.rhs) 47 | 48 | def eval(self, x, y): 49 | return self.lhs.eval(x,y) * self.rhs.eval(x,y) 50 | 51 | def buildExpr(prob = 0.99): 52 | if random.random() < prob: 53 | return random.choice([SinPi, CosPi, Times])(prob) 54 | else: 55 | return random.choice([X, Y])() 56 | 57 | def plotIntensity(exp, pixelsPerUnit = 150): 58 | canvasWidth = 2 * pixelsPerUnit + 1 59 | canvas = Image.new("L", (canvasWidth, canvasWidth)) 60 | 61 | for py in range(canvasWidth): 62 | for px in range(canvasWidth): 63 | # Convert pixel location to [-1,1] coordinates 64 | x = float(px - pixelsPerUnit) / pixelsPerUnit 65 | y = -float(py - pixelsPerUnit) / pixelsPerUnit 66 | z = exp.eval(x,y) 67 | 68 | # Scale [-1,1] result to [0,255]. 69 | intensity = int(z * 127.5 + 127.5) 70 | canvas.putpixel((px,py), intensity) 71 | 72 | return canvas 73 | 74 | def plotColor(redExp, greenExp, blueExp, pixelsPerUnit = 150): 75 | redPlane = plotIntensity(redExp, pixelsPerUnit) 76 | greenPlane = plotIntensity(greenExp, pixelsPerUnit) 77 | bluePlane = plotIntensity(blueExp, pixelsPerUnit) 78 | return Image.merge("RGB", (redPlane, greenPlane, bluePlane)) 79 | 80 | def makeImage(numPics = 20): 81 | with open("eqns.txt", 'w') as eqnsFile: 82 | for i in range(numPics): 83 | redExp = buildExpr() 84 | greenExp = buildExpr() 85 | blueExp = buildExpr() 86 | 87 | eqnsFile.write("img" + str(i) + ":\n") 88 | eqnsFile.write("red = " + str(redExp) + "\n") 89 | eqnsFile.write("green = " + str(greenExp) + "\n") 90 | eqnsFile.write("blue = " + str(blueExp) + "\n\n") 91 | 92 | image = plotColor(redExp, greenExp, blueExp) 93 | image.save("img" + str(i) + ".png", "PNG") 94 | 95 | #makeImage(50) 96 | --------------------------------------------------------------------------------