i have a program that recursively produces the koch snowflake on the click of a button. Im stuck at my last method.
component
main
import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JComponent; import java.awt.geom.Line2D; import java.util.ArrayList; import java.awt.geom.GeneralPath; import java.awt.Polygon; public class KochComponent extends JComponent { private int numIterations; public KochComponent() { numIterations = 1; } public void next() { numIterations++; repaint(); } public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; int length = Math.min(getWidth(), getHeight()) * 2 / 3; int x1 = 10; int y1 = length / 2; int x2 = x1 + length; int y2 = y1; int x3 = x1 + (length / 2); int y3 = y1 + length; draw(g2, numIterations, x1, y1, x2, y2); draw(g2, numIterations, x2, y2, x3, y3); draw(g2, numIterations, x3, y3, x1, y1); } private void draw(Graphics2D g2, int iteration, double x1, double y1, double x2, double y2) { /*********I dont know how to implement this method*****/ } }
component
import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JComponent; import java.awt.geom.Line2D; import java.util.ArrayList; import java.awt.geom.GeneralPath; import java.awt.Polygon; public class KochComponent extends JComponent { private int numIterations; public KochComponent() { numIterations = 1; } public void next() { numIterations++; repaint(); } public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; int length = Math.min(getWidth(), getHeight()) * 2 / 3; int x1 = 10; int y1 = length / 2; int x2 = x1 + length; int y2 = y1; int x3 = x1 + (length / 2); int y3 = y1 + length; draw(g2, numIterations, x1, y1, x2, y2); draw(g2, numIterations, x2, y2, x3, y3); draw(g2, numIterations, x3, y3, x1, y1); } private void draw(Graphics2D g2, int iteration, double x1, double y1, double x2, double y2) { . . . } }
main
import javax.swing.JFrame; public class KochViewer { public static void main(String[] args) { JFrame frame = new KochFrame(); frame.setTitle("KochViewer"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }