import java.util.Random; import javax.swing.SwingUtilities; import static java.lang.Math.*; public class Leaves extends Triangles { static final double FILL = 0.6; static class Leaf extends Triangle { Leaf(Random random, int scale) { super(random, scale); } void buildPath () { double apex_x = x + FILL * delta_sin; double apex_y = y + FILL * delta_cos; double tail_x = x - delta_sin; double tail_y = y - delta_cos; double port_x = x - delta_sin - FILL * delta_cos; double port_y = y - delta_cos + FILL * delta_sin; double star_x = x - delta_sin + FILL * delta_cos; double star_y = y - delta_cos - FILL * delta_sin; path.moveTo(apex_x, apex_y); path.quadTo(port_x, port_y, tail_x, tail_y); path.quadTo(star_x, star_y, apex_x, apex_y); } } public Leaves (String...args) { super(args); } Triangle makeElement (Random random, int scale) { return new Leaf(random, scale); } String getTitle () { return "Leaf Storm"; } public static void main (String...args) { SwingUtilities.invokeLater(new Leaves(args)); } }