1 package npw; 2 3 import java.awt.Color; 4 import javax.swing.SwingUtilities; 5 import painter.SPainter; 6 import shapes.SCircle; 7 import shapes.SSquare; 8 9 public class KanizsaSquare { 10 11 // THE SOLUTION TO THE KANIZSA SQUARE PROBLEM 12 13 private void paintTheImage() { 14 SPainter klee = new SPainter("KanizsaSquare", 400, 400); 15 SCircle dot = new SCircle(75); 16 PaintBlueCircle(klee, dot); 17 } 18 19 private void PaintBlueCircle(SPainter klee, SCircle dot) { 20 klee.setColor(Color.blue); 21 klee.mfd(100); 22 klee.mlt(100); 23 klee.paint(dot); 24 klee.mbk(100); 25 klee.mrt(100); 26 PaintRedCircle(klee, dot); 27 28 } 29 30 private void PaintRedCircle(SPainter klee, SCircle dot) { 31 klee.setColor(Color.red); 32 klee.mbk(100); 33 klee.mrt(100); 34 klee.paint(dot); 35 klee.mfd(100); 36 klee.mlt(100); 37 paintGreenCircles(klee, dot); 38 } 39 40 private void paintGreenCircles(SPainter klee, SCircle dot) { 41 klee.setColor(Color.GREEN); 42 klee.mlt(100); 43 klee.mbk(100); 44 klee.paint(dot); 45 klee.mrt(100); 46 klee.mfd(100); 47 klee.setColor(Color.green); 48 klee.mfd(100); 49 klee.mrt(100); 50 klee.paint(dot); 51 klee.mbk(100); 52 klee.mlt(100); 53 SSquare square = new SSquare(200); 54 paintWhiteSquare(klee, square); 55 } 56 57 private void paintWhiteSquare(SPainter klee, SSquare square) { 58 klee.setColor(Color.WHITE); 59 klee.paint(square); 60 } 61 62 // REQUIRED INFRASTRUCTURE 63 64 public KanizsaSquare() { 65 paintTheImage(); 66 } 67 68 public static void main(String[] args) { 69 SwingUtilities.invokeLater(new Runnable() { 70 @Override 71 public void run() { 72 new KanizsaSquare(); 73 } 74 }); 75 } 76 } 77 78 79 80 81