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