Advertisement
brilliant_moves

FractalTriangles.java

Oct 4th, 2013
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 2.38 KB | None | 0 0
  1. import java.awt.*;  // for graphics
  2. import javax.swing.*;   // for JFrame
  3.  
  4. public class FractalTriangles {
  5.  
  6.     /**
  7.     *   Program:    FractalTriangles.java
  8.     *   Purpose:    Draw Sierpinski Triangle using recursive algorithm.
  9.     *   Creator:    Chris Clarke
  10.     *   Created:    03.04.2012
  11.     *   Modified:   11.07.2013 larger size JFrame  
  12.     */ 
  13.    
  14.     public static void main(String[] args) {
  15.         FractalTrianglesJFrame frame = new FractalTrianglesJFrame();
  16.         frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
  17.         frame.setVisible(true);
  18.     }
  19. }
  20.  
  21. class FractalTrianglesJFrame extends JFrame {
  22.  
  23.     public FractalTrianglesJFrame() {
  24.         setTitle("Fractal Triangles by Chris Clarke");
  25.         // Set to maximum size.
  26.         setSize(MAX_X, MAX_Y);
  27.     }
  28.  
  29.     public void drawTriangle(Graphics g,int x0,int y0) {
  30.         // draw filled-in triangle whose apex is at (x0, y0)
  31.  
  32.         for (int i=x0; i<=x0+2*TRI_HALF_BASE; i++)
  33.             g.drawLine(i, y0+TRI_HEIGHT, x0+TRI_HALF_BASE, y0);
  34.  
  35.         // relatively long or short pause depending on value of DELAY
  36.         for (int i=0; i<DELAY; i++);
  37.     }
  38.  
  39.     public void draw3Triangles(Graphics g,int x0,int y0, int size) {
  40.         // draw fractal using recursion
  41.  
  42.         size/=2;
  43.  
  44.         if (size==1) {
  45.             // left corner
  46.             drawTriangle(g, x0-TRI_HALF_BASE, y0+TRI_HEIGHT);
  47.             // right corner
  48.             drawTriangle(g, x0+TRI_HALF_BASE, y0+TRI_HEIGHT);
  49.             // apex
  50.             drawTriangle(g, x0, y0);
  51.         } else { // recursive method call
  52.             // left corner
  53.             draw3Triangles(g, x0-size*TRI_HALF_BASE, y0+size*TRI_HEIGHT, size);
  54.             // right corner
  55.             draw3Triangles(g, x0+size*TRI_HALF_BASE, y0+size*TRI_HEIGHT, size);
  56.             // apex
  57.             draw3Triangles(g, x0, y0, size);
  58.         }
  59.     }
  60.  
  61.     public void paint(Graphics g) {
  62.         // draw background
  63.         g.setColor(new Color(100, 138, 255));
  64.         g.fillRect(0,0,MAX_X,MAX_Y);
  65.         // draw black triangles
  66.         g.setColor(Color.BLACK);
  67.         draw3Triangles(g, START_X, START_Y, SIZE);
  68.     }
  69.  
  70.     public static final int MAX_X=1280;     // maximum width = width of screen
  71.     public static final int MAX_Y=800;      // maximum height = height of screen
  72.     public static final int START_X=MAX_X/2;
  73.     public static final int START_Y=100;
  74.     public static final int TRI_HEIGHT = 2;     // size in pixels of black triangle
  75.     public static final int TRI_HALF_BASE = 2;  // size in pixels of black triangle
  76.     public static final int DELAY=5000000;      // many iterations to slow down construction
  77.     public static final int SIZE=256;       // size in pixels of base of largest triangle
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement