/* * @(#)Rose.java 1.0 1997-11-12 * */ import java.awt.*; import java.applet.*; import java.util.*; /** * Draws Paul "Rose" Ernst's modulo arithmetic patterns. * * @author Mark Gilbert */ class roseCanvas extends Canvas { int circle_x[]; int circle_y[]; int modulus; int multiplier; Random random; public roseCanvas(int modulus, int multiplier) { super(); resize(380, 380); this.modulus = modulus; this.multiplier = multiplier; random = new Random(System.currentTimeMillis()); } public roseCanvas() { this(100, 4); } public int setMultiplier(int multiplier) { this.multiplier = multiplier; paint(getGraphics()); return multiplier; } private int randomInt(int min, int max) { return min + (int) (random.nextDouble() * (max - min + 1)); } public int randomizeModulus() { return setModulus(randomInt(3, 1000)); } public int randomizeMultiplier() { return setMultiplier(randomInt(1, modulus)); } public int setModulus(int modulus) { this.modulus = modulus; paint(getGraphics()); return modulus; } void connectPoints(Graphics g, int p1, int p2) { g.drawLine(circle_x[p1], circle_y[p1], circle_x[p2], circle_y[p2]); } public void paint(Graphics g) { Rectangle area = bounds(); int width = area.width; int height = area.height; circle_x = new int[modulus]; circle_y = new int[modulus]; int origin_x = width / 2; int origin_y = height / 2; int radius = Math.min(width, height) / 2 - 5; for (int i=0 ; i