1 package Miscellaneous; 2 3 import painter.SPainter; 4 import shapes.SCircle; 5 import shapes.SPolygon; 6 import shapes.SSquare; 7 8 import javax.swing.*; 9 import java.awt.*; 10 import java.util.Random; 11 12 public class ColorfulArt2 { 13 14 public static void main(String[] arg) { 15 SwingUtilities.invokeLater(new Runnable() { 16 public void run() { 17 new ColorfulArt2(); 18 } 19 }); 20 } 21 22 23 public ColorfulArt2() { 24 paintTheImage(); 25 } 26 27 private void paintTheImage() { 28 SPainter painter = new SPainter("Artwork", 1000, 1000); 29 SSquare box = new SSquare(1000); 30 layer0(painter, box); 31 SSquare box2 = new SSquare(box.side() / 3); 32 SCircle dot = box2.inscribingCircle(); 33 layer1(painter, box2, dot); 34 SSquare box3 = new SSquare(box2.diagonal()); 35 SCircle dot2 = new SCircle((500 - (box3.diagonal() / 2)) / 2); 36 SPolygon stopsign = new SPolygon(8, box2.side() / (1 + 2 / Math.sqrt(2))); 37 layer2(painter, box2, box3, dot2, stopsign); 38 SCircle dot3 = box3.inscribingCircle(); 39 SCircle dot4 = stopsign.inscribingCircle(); 40 SPolygon pyramid = dot2.inscribingPolygon(3); 41 layer3(painter, box2, box3, dot2, dot3, dot4, pyramid); 42 SPolygon pyramid2 = new SPolygon(3, (2 / (1 + Math.sqrt(3))) * dot3.radius()); 43 SPolygon pyramid3 = dot4.inscribingPolygon(3); 44 SCircle dot5 = new SCircle(pyramid2.side() / 4); 45 layer4(painter, box2, dot3, pyramid2, pyramid3, dot5); 46 SSquare box4 = new SSquare(box3.side() / 3); 47 SPolygon pyramid4 = new SPolygon(3, box4.side()); 48 layer5(painter, box3, box4, pyramid4); 49 } 50 51 private void layer0(SPainter painter, SSquare box) { 52 Color firstColor = randomColor(); 53 painter.setColor(firstColor); 54 painter.paint(box); 55 } 56 57 private Color randomColor() { 58 Random rgb = new Random(); 59 int red = rgb.nextInt(256); 60 int green = rgb.nextInt(256); 61 int blue = rgb.nextInt(256); 62 return new Color(red, green, blue); 63 } 64 65 private void layer1(SPainter painter, SSquare box2, SCircle dot) { 66 int i = 0; 67 Color secondColor = randomColor2(); 68 while (i <= 3) { 69 if (i == 0) { 70 painter.mfd(box2.side()); 71 painter.mrt(box2.side()); 72 } else if (i == 1) { 73 painter.mfd(box2.side()); 74 painter.mlt(box2.side()); 75 } else if (i == 2) { 76 painter.mbk(box2.side()); 77 painter.mrt(box2.side()); 78 } else if (i == 3) { 79 painter.mbk(box2.side()); 80 painter.mlt(box2.side()); 81 } 82 painter.setColor(secondColor); 83 painter.paint(box2); 84 painter.moveToCenter(); 85 i = i + 1; 86 } 87 int z = 0; 88 Color thirdColor = randomColor3(); 89 while (z <= 3) { 90 if (z == 0) { 91 painter.mfd(box2.side()); 92 } else if (z == 1) { 93 painter.mrt(box2.side()); 94 } else if (z == 2) { 95 painter.mbk(box2.side()); 96 } else if (z == 3) { 97 painter.mlt(box2.side()); 98 } 99 painter.setColor(thirdColor); 100 painter.paint(dot); 101 painter.moveToCenter(); 102 z = z + 1; 103 } 104 } 105 106 private Color randomColor2() { 107 Random rgb2 = new Random(); 108 int red2 = rgb2.nextInt(256); 109 int green2 = rgb2.nextInt(256); 110 int blue2 = rgb2.nextInt(256); 111 return new Color(Math.abs(randomColor().getRed() - red2), Math.abs(randomColor().getGreen() - green2), Math.abs(randomColor().getBlue() - blue2)); 112 } 113 114 private Color randomColor3() { 115 int red3 = 255 - randomColor2().getRed(); 116 int green3 = 255 - randomColor2().getGreen(); 117 int blue3 = 255 - randomColor2().getBlue(); 118 return new Color(red3, green3, blue3); 119 } 120 121 private void layer2(SPainter painter, SSquare box2, SSquare box3, SCircle dot2, SPolygon honeycomb) { 122 painter.tl(45); 123 Color fourthColor = randomColor4(); 124 painter.setColor(fourthColor); 125 painter.paint(box3); 126 painter.tr(45); 127 Color fifthColor = randomColor5(); 128 painter.setColor(fifthColor); 129 int n = 0; 130 while (n <= 3) { 131 if (n == 0) { 132 painter.mfd((box3.diagonal() / 2) + dot2.radius()); 133 } else if (n == 1) { 134 painter.mrt((box3.diagonal() / 2) + dot2.radius()); 135 } else if (n == 2) { 136 painter.mbk((box3.diagonal() / 2) + dot2.radius()); 137 } else if (n == 3) { 138 painter.mlt((box3.diagonal() / 2) + dot2.radius()); 139 } 140 painter.paint(dot2); 141 painter.moveToCenter(); 142 n = n + 1; 143 } 144 Color sixthColor = randomColor6(); 145 painter.setColor(sixthColor); 146 int k = 0; 147 while (k <= 3) { 148 if (k == 0) { 149 painter.mfd(box2.side()); 150 painter.mrt(box2.side()); 151 } else if (k == 1) { 152 painter.mfd(box2.side()); 153 painter.mlt(box2.side()); 154 } else if (k == 2) { 155 painter.mbk(box2.side()); 156 painter.mrt(box2.side()); 157 } else if (k == 3) { 158 painter.mbk(box2.side()); 159 painter.mlt(box2.side()); 160 } 161 painter.paint(honeycomb); 162 painter.moveToCenter(); 163 k = k + 1; 164 } 165 } 166 167 private Color randomColor4() { 168 int red4 = (randomColor3().getRed() * randomColor3().getRed()) % 256; 169 int green4 = (randomColor3().getGreen() * randomColor3().getGreen()) % 256; 170 int blue4 = (randomColor3().getBlue() * randomColor3().getBlue()) % 256; 171 return new Color(red4, green4, blue4); 172 } 173 174 private Color randomColor5() { 175 Random rgb = new Random(); 176 int red5 = rgb.nextInt(256); 177 int green5 = rgb.nextInt(256); 178 int blue5 = rgb.nextInt(256); 179 return new Color(((red5 + randomColor4().getRed()) / 2) % 256, ((green5 + randomColor4().getGreen()) / 2) % 256, ((blue5 + randomColor4().getBlue()) / 2) % 256); 180 } 181 182 private Color randomColor6() { 183 return new Color((randomColor5().getRed()) / 2, (randomColor5().getGreen()) / 2, (randomColor5().getBlue()) / 2); 184 } 185 186 private void layer3(SPainter painter, SSquare box2, SSquare box3, SCircle dot2, SCircle dot3, SCircle dot4, SPolygon pyramid) { 187 Color seventhColor = randomColor7(); 188 painter.setColor(seventhColor); 189 painter.paint(dot3); 190 painter.moveToCenter(); 191 int b = 0; 192 Color eighthColor = randomColor8(); 193 painter.setColor(eighthColor); 194 while (b <= 3) { 195 if (b == 0) { 196 painter.mfd(box2.side()); 197 painter.mrt(box2.side()); 198 } else if (b == 1) { 199 painter.mfd(box2.side()); 200 painter.mlt(box2.side()); 201 } else if (b == 2) { 202 painter.mbk(box2.side()); 203 painter.mrt(box2.side()); 204 } else if (b == 3) { 205 painter.mbk(box2.side()); 206 painter.mlt(box2.side()); 207 } 208 painter.paint(dot4); 209 painter.moveToCenter(); 210 b = b + 1; 211 } 212 int y = 0; 213 Color ninthColor = randomColor9(); 214 painter.setColor(ninthColor); 215 while (y <= 3) { 216 painter.mfd(box3.diagonal() / 2 + dot2.radius()); 217 painter.paint(pyramid); 218 painter.tr(90); 219 painter.moveToCenter(); 220 y = y + 1; 221 } 222 } 223 224 private Color randomColor7() { 225 return new Color((randomColor6().getRed() * randomColor6().getGreen()) % 256, (randomColor6().getGreen() * randomColor6().getBlue()) % 256, (randomColor6().getBlue() * randomColor6().getRed()) % 256); 226 } 227 228 private Color randomColor8() { 229 return new Color((randomColor7().getRed() + randomColor7().getGreen() + randomColor7().getBlue()) / 3, (randomColor7().getRed() + randomColor7().getGreen() + randomColor7().getBlue()) / 3, (randomColor7().getRed() + randomColor7().getGreen() + randomColor7().getBlue()) / 3); 230 } 231 232 private Color randomColor9() { 233 int[] redArray = new int[]{randomColor().getRed(), randomColor2().getRed(), randomColor3().getRed(), randomColor4().getRed(), randomColor5().getRed(), randomColor6().getRed(), randomColor7().getRed(), randomColor8().getRed()}; 234 int[] greenArray = new int[]{randomColor().getGreen(), randomColor2().getGreen(), randomColor3().getGreen(), randomColor4().getGreen(), randomColor5().getGreen(), randomColor6().getGreen(), randomColor7().getGreen(), randomColor8().getGreen()}; 235 int[] blueArray = new int[]{randomColor().getBlue(), randomColor2().getBlue(), randomColor3().getBlue(), randomColor4().getBlue(), randomColor5().getBlue(), randomColor6().getBlue(), randomColor7().getBlue(), randomColor8().getBlue()}; 236 Random rgb = new Random(); 237 return new Color(redArray[rgb.nextInt(8)], greenArray[rgb.nextInt(8)], blueArray[rgb.nextInt(8)]); 238 } 239 240 private void layer4(SPainter painter, SSquare box2, SCircle dot3, SPolygon pyramid2, SPolygon pyramid3, SCircle dot5) { 241 int q = 0; 242 Color tenthColor = randomColor10(); 243 painter.setColor(tenthColor); 244 while (q <= 3) { 245 painter.mfd(dot3.radius() - pyramid2.side() / Math.sqrt(3)); 246 painter.paint(pyramid2); 247 painter.tr(); 248 painter.moveToCenter(); 249 q = q + 1; 250 } 251 int k = 0; 252 Color eleventhColor = randomColor11(); 253 painter.setColor(eleventhColor); 254 painter.tr(45); 255 while (k <= 3) { 256 painter.mfd(Math.sqrt(2) * box2.side()); 257 painter.paint(pyramid3); 258 painter.tr(90); 259 painter.moveToCenter(); 260 k = k + 1; 261 } 262 painter.tl(45); 263 int g = 0; 264 Color twelfthColor = randomColor12(); 265 painter.setColor(twelfthColor); 266 while (g <= 3) { 267 if (g == 0) { 268 painter.mfd(pyramid2.side() / 4); 269 painter.mrt(pyramid2.side() / 4); 270 } else if (g == 1) { 271 painter.mfd(pyramid2.side() / 4); 272 painter.mlt(pyramid2.side() / 4); 273 } else if (g == 2) { 274 painter.mbk(pyramid2.side() / 4); 275 painter.mrt(pyramid2.side() / 4); 276 } else if (g == 3) { 277 painter.mbk(pyramid2.side() / 4); 278 painter.mlt(pyramid2.side() / 4); 279 } 280 painter.paint(dot5); 281 painter.moveToCenter(); 282 g = g + 1; 283 } 284 } 285 286 private Color randomColor10() { 287 return new Color((randomColor().getRed() * randomColor9().getRed()) % 256, (randomColor().getGreen() * randomColor9().getGreen()) % 256, (randomColor().getBlue() * randomColor9().getBlue()) % 256); 288 } 289 290 private Color randomColor11() { 291 return new Color((randomColor10().getRed() + randomColor10().getGreen() * randomColor10().getBlue()) % 256, (randomColor10().getGreen() + randomColor10().getBlue() * randomColor10().getRed()) % 256, (randomColor10().getBlue() + randomColor10().getRed() * randomColor10().getGreen()) % 256); 292 } 293 294 private Color randomColor12() { 295 return new Color(255 - randomColor11().getRed(), 255 - randomColor11().getGreen(), 255 - randomColor11().getBlue()); 296 } 297 298 private void layer5(SPainter painter, SSquare box3, SSquare box4, SPolygon pyramid4) { 299 painter.tl(45); 300 Color thirteenthColor = randomColor13(); 301 painter.setColor(thirteenthColor); 302 int k = 0; 303 while (k <= 3) { 304 painter.mfd(box3.side() / 2 + box4.side() / 2); 305 painter.paint(box4); 306 painter.tl(90); 307 painter.moveToCenter(); 308 k = k + 1; 309 } 310 painter.tr(45); 311 Color fourteenthColor = randomColor14(); 312 painter.setColor(fourteenthColor); 313 painter.tl(45); 314 int x = 0; 315 while (x <= 3) { 316 painter.mfd(box3.side()/2 + box4.side() + pyramid4.side()*Math.sqrt(3)/6); 317 painter.paint(pyramid4); 318 painter.tl(90); 319 painter.moveToCenter(); 320 x = x + 1; 321 } 322 painter.tr(45); 323 } 324 325 private Color randomColor13() { 326 int randomroll = (int) (Math.random() * 5); 327 return new Color(((randomColor().getRed() + randomColor12().getRed()) ^ (randomroll)) % 256, ((randomColor().getGreen() + randomColor12().getGreen()) ^ (randomroll)) % 256, ((randomColor().getBlue() + randomColor12().getBlue()) ^ (randomroll)) % 256); 328 } 329 330 private Color randomColor14() { 331 int red6 = randomColor13().getRed(); 332 int green6 = randomColor13().getGreen(); 333 int blue6 = randomColor13().getBlue(); 334 if (red6 > 127 | green6 > 127 | blue6 > 127) { 335 return new Color(red6/2,green6/2,blue6/2); 336 } else { 337 red6 = (int) (red6 + red6*.5)%256; 338 green6 = (int) (green6 + green6*.5)%256; 339 blue6 = (int) (blue6 + blue6*.5)%256; 340 return new Color(red6,green6,blue6); 341 } 342 } 343 } 344