diff options
| author | Camil Staps | 2015-04-29 22:37:13 +0200 | 
|---|---|---|
| committer | Camil Staps | 2015-04-29 22:37:13 +0200 | 
| commit | 57cc1163708260f3e4f5b56cc1de2ad2ee625018 (patch) | |
| tree | c865e7c5ad8db5bf4e3846395e55046a9bc2263f | |
| parent | Bugfix drawing zoom rectangle (diff) | |
cleanup
| -rw-r--r-- | Week11 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotView.java (renamed from Week11 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotController.java) | 15 | ||||
| -rw-r--r-- | Week11 Mandelbrot/src/com/camilstaps/mandelbrot/ZoomFrame.java | 28 | ||||
| -rw-r--r-- | Week11 Mandelbrot/src/fractals/ColorTable.java | 69 | ||||
| -rw-r--r-- | Week11 Mandelbrot/src/fractals/GridFiller.java | 40 | ||||
| -rw-r--r-- | Week11 Mandelbrot/src/fractals/GridView.java | 1 | ||||
| -rw-r--r-- | Week11 Mandelbrot/src/fractals/MainWindow.java | 58 | 
6 files changed, 62 insertions, 149 deletions
| diff --git a/Week11 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotController.java b/Week11 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotView.java index f072805..4cb489a 100644 --- a/Week11 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotController.java +++ b/Week11 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotView.java @@ -10,12 +10,12 @@ import fractals.Mandelbrot;   *   * @author camilstaps   */ -public class MandelbrotController { +public class MandelbrotView {      private final MandelbrotProvider mandelbrotProvider;      private final Grid grid; -    public MandelbrotController(MandelbrotProvider mp, Grid grid) { +    public MandelbrotView(MandelbrotProvider mp, Grid grid) {          mandelbrotProvider = mp;          this.grid = grid;      } @@ -27,7 +27,7 @@ public class MandelbrotController {          double  min_x = centerX - grid_w / scale / 2,                  max_x = centerX + grid_w / scale / 2; -        return min_x + (((float) x_on_screen) / grid_w) * (max_x - min_x); +        return min_x + ((double) x_on_screen) * (max_x - min_x) / grid_w;      }      public double getY(int y_on_screen) { @@ -37,7 +37,7 @@ public class MandelbrotController {          double  min_y = centerY - grid_h / scale / 2,                  max_y = centerY + grid_h / scale / 2; -        return min_y + (((float) y_on_screen) / grid_h) * (max_y - min_y); +        return min_y + (((float) y_on_screen) * (max_y - min_y) / grid_h);      }      public void redraw() { @@ -49,9 +49,10 @@ public class MandelbrotController {              for (int j = 0; j < grid_h; j++) {                  double mandel = ((double) Mandelbrot.mandelNumber(getX(i), getY(j), repetitions) * Math.PI) / repetitions;                  int[] color = { -                    (int) (255 * Math.sin(mandel)),  -                    (int) (255 * Math.sin(mandel + Math.PI / 3)),  -                    (int) (255 * Math.sin(mandel + 2 * Math.PI / 3))}; +                    (int) (30 + 220 * Math.sin(mandel)),  +                    (int) (30 + 220 * Math.sin(mandel + 2 * Math.PI / 3)),  +                    (int) (30 + 220 * Math.sin(mandel + 4 * Math.PI / 3))}; +                //int[] color = {(int) (255 * mandel), (int) (255 * mandel), (int) (255 * mandel)};                  grid.setPixel(i, j, color);              }                         } diff --git a/Week11 Mandelbrot/src/com/camilstaps/mandelbrot/ZoomFrame.java b/Week11 Mandelbrot/src/com/camilstaps/mandelbrot/ZoomFrame.java index b7b5a68..1dfa2a7 100644 --- a/Week11 Mandelbrot/src/com/camilstaps/mandelbrot/ZoomFrame.java +++ b/Week11 Mandelbrot/src/com/camilstaps/mandelbrot/ZoomFrame.java @@ -17,7 +17,7 @@ import javax.swing.JFrame;   */  public class ZoomFrame extends JFrame implements MouseListener, MouseMotionListener { -    private MandelbrotController mandelbrotController; +    private MandelbrotView mandelbrotView;      private MandelbrotTextFields mandelbrotTextFields;      private Graphics graphics; @@ -31,8 +31,8 @@ public class ZoomFrame extends JFrame implements MouseListener, MouseMotionListe          addMouseMotionListener(this);      } -    public void setMandelbrotController(MandelbrotController mc) { -        mandelbrotController = mc; +    public void setMandelbrotView(MandelbrotView mv) { +        mandelbrotView = mv;      }      public void setMandelbrotTextFields(MandelbrotTextFields mtf) { @@ -52,11 +52,11 @@ public class ZoomFrame extends JFrame implements MouseListener, MouseMotionListe      @Override      public void mouseReleased(MouseEvent me) {          if (me.getX() == start_x && me.getY() == start_y) { -            if (mandelbrotController == null || mandelbrotTextFields == null) +            if (mandelbrotView == null || mandelbrotTextFields == null)                  return; -            mandelbrotTextFields.setCenterX(mandelbrotController.getX(me.getX())); -            mandelbrotTextFields.setCenterY(mandelbrotController.getY(me.getY())); +            mandelbrotTextFields.setCenterX(mandelbrotView.getX(me.getX())); +            mandelbrotTextFields.setCenterY(mandelbrotView.getY(me.getY()));              if ((me.getModifiers() & InputEvent.SHIFT_MASK) != 0) {                  mandelbrotTextFields.setScale(mandelbrotTextFields.getScale() / 2); @@ -64,12 +64,12 @@ public class ZoomFrame extends JFrame implements MouseListener, MouseMotionListe                  mandelbrotTextFields.setScale(mandelbrotTextFields.getScale() * 2);              }          } else { -            double center_x = (mandelbrotController.getX(me.getX()) -                    - mandelbrotController.getX(start_x)) / 2 -                    + mandelbrotController.getX(start_x); -            double center_y = (mandelbrotController.getY(me.getY()) -                    - mandelbrotController.getY(start_y)) / 2 -                    + mandelbrotController.getY(start_y); +            double center_x = (mandelbrotView.getX(me.getX()) +                    - mandelbrotView.getX(start_x)) / 2 +                    + mandelbrotView.getX(start_x); +            double center_y = (mandelbrotView.getY(me.getY()) +                    - mandelbrotView.getY(start_y)) / 2 +                    + mandelbrotView.getY(start_y);              mandelbrotTextFields.setCenterX(center_x);              mandelbrotTextFields.setCenterY(center_y); @@ -85,7 +85,7 @@ public class ZoomFrame extends JFrame implements MouseListener, MouseMotionListe              mandelbrotTextFields.setScale(scale);          } -        mandelbrotController.redraw(); +        mandelbrotView.redraw();          dragging = false;      } @@ -137,7 +137,7 @@ public class ZoomFrame extends JFrame implements MouseListener, MouseMotionListe          public void setCenterY(double y);          public double getScale();          public void setScale(double scale); -        public void setRepetitions(double repetitions); +        public void setRepetitions(int repetitions);      }  } diff --git a/Week11 Mandelbrot/src/fractals/ColorTable.java b/Week11 Mandelbrot/src/fractals/ColorTable.java deleted file mode 100644 index 064bd15..0000000 --- a/Week11 Mandelbrot/src/fractals/ColorTable.java +++ /dev/null @@ -1,69 +0,0 @@ -package fractals;
 -
 -import java.awt.Color;
 -
 -/**
 - *
 - * @author Sjaak Smetsers
 - * @version 1.0. 14-03-2014
 - */
 -/**
 - * Converting indexes (ranging from 0 to tableSize) to RGB colors
 - *
 - * @author Sjaak
 - */
 -public class ColorTable {
 -
 -    // a two dimensional conversion array 
 -    private int[][] rgbColors;
 -    private int tableSize;
 -
 -    private static final int MAXRGB = 256;
 -
 -    public static final int[] BLACK = new int[3];
 -
 -    /**
 -     * converts specified color to an rgb array
 -     *
 -     * @param color the color to be converted
 -     * @return the corresponding array of rgb values
 -     */
 -    private static int[] color2RGB(Color color) {
 -        int[] rgb = {color.getRed(), color.getGreen(), color.getBlue()};
 -        return rgb;
 -    }
 -
 -    /**
 -     * creates and fills the table with the specified size
 -     *
 -     * @param tableSize the size of the table
 -     */
 -    public ColorTable(int tableSize) {
 -        this.tableSize = tableSize;
 -        this.rgbColors = new int[tableSize][3];
 -
 -        randomColorSet();
 -    }
 -
 -    /**
 -     * fills the table randomly
 -     */
 -    private void randomColorSet() {
 -        for (int[] color : rgbColors) {
 -            for (int c = 0; c < 3; c++) {
 -                color[c] = (int) (Math.random() * 256);
 -            }
 -        }
 -    }
 -
 -    /**
 -     * converts an index into an rgb value
 -     *
 -     * @param color_index to be converted
 -     * @return the resulting rgb value
 -     */
 -    public int[] getColor(int color_index) {
 -        return rgbColors[color_index % tableSize];
 -    }
 -
 -}
 diff --git a/Week11 Mandelbrot/src/fractals/GridFiller.java b/Week11 Mandelbrot/src/fractals/GridFiller.java deleted file mode 100644 index 73b422e..0000000 --- a/Week11 Mandelbrot/src/fractals/GridFiller.java +++ /dev/null @@ -1,40 +0,0 @@ -package fractals;
 -
 -/**
 - *
 - * @author Sjaak Smetsers
 -** @version 1.0, 13-03-2013
 - */
 -
 -/**
 - * A skeleton class illustrating the use of the grid interface
 - * 
 - */
 -public class GridFiller {
 -    private Grid grid;              // the grid to be filled
 -    private ColorTable colorTable;  // a table for converting indexes to
 -                                    // rgb values
 -    
 -    /**
 -     * The constructor
 -     * @param grid to be filled
 -     */
 -    public GridFiller (Grid grid) {
 -    	colorTable = new ColorTable (30); // some random value, needs to be adjusted
 -        this.grid = grid;
 -    }
 -
 -    /**
 -     * fills the whole grid with some arbitrarily chosen color
 -     * 
 -     */
 -    public void fill () {
 -        int grid_w = grid.getWidth(), grid_h = grid.getHeight();
 -        for (int i = 0; i < grid_w; i++) {
 -            for (int j = 0; j < grid_h; j++) {
 -                int color_index = i/5 * grid_w/5 + j/5;
 -                grid.setPixel(i, j, colorTable.getColor(color_index));
 -            }               
 -        }
 -    }
 -}
 diff --git a/Week11 Mandelbrot/src/fractals/GridView.java b/Week11 Mandelbrot/src/fractals/GridView.java index 4a51114..d85dc6e 100644 --- a/Week11 Mandelbrot/src/fractals/GridView.java +++ b/Week11 Mandelbrot/src/fractals/GridView.java @@ -5,7 +5,6 @@ import java.awt.Graphics;  import java.awt.image.BufferedImage;
  import java.awt.image.WritableRaster;
 -import javax.swing.JComponent;
  import javax.swing.JPanel;
  /**
 diff --git a/Week11 Mandelbrot/src/fractals/MainWindow.java b/Week11 Mandelbrot/src/fractals/MainWindow.java index 7a7a94f..b6276af 100644 --- a/Week11 Mandelbrot/src/fractals/MainWindow.java +++ b/Week11 Mandelbrot/src/fractals/MainWindow.java @@ -2,10 +2,10 @@ package fractals; -import com.camilstaps.mandelbrot.MandelbrotController;
 +import com.camilstaps.mandelbrot.MandelbrotView;
  import com.camilstaps.mandelbrot.ZoomFrame;
  import java.awt.BorderLayout;
 -import java.awt.FlowLayout;
 +import java.awt.GridLayout;
  import java.awt.Insets;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
 @@ -26,20 +26,25 @@ import javax.swing.JTextField;   * creates a window to which a GridView panel is added
   * 
   */
 -public class MainWindow implements MandelbrotController.MandelbrotProvider, ZoomFrame.MandelbrotTextFields {
 +public class MainWindow implements MandelbrotView.MandelbrotProvider, ZoomFrame.MandelbrotTextFields {
      // the size of the window
      public static final int WIDTH = 650, HEIGHT = 650;
 +    private final String INITIAL_CENTER_X = "0",
 +            INITIAL_CENTER_Y = "0",
 +            INITIAL_SCALE = "100",
 +            INITIAL_REPETITIONS = "100";
 +    
      // The grip panel
      private final GridView grid;
 -    private final JTextField field_centerX = new JTextField("0", 6);
 -    private final JTextField field_centerY = new JTextField("0", 6);
 -    private final JTextField field_scale = new JTextField("100", 6);
 -    private final JTextField field_repetitions = new JTextField("100", 6);
 +    private final JTextField field_centerX = new JTextField(INITIAL_CENTER_X, 6);
 +    private final JTextField field_centerY = new JTextField(INITIAL_CENTER_Y, 6);
 +    private final JTextField field_scale = new JTextField(INITIAL_SCALE, 6);
 +    private final JTextField field_repetitions = new JTextField(INITIAL_REPETITIONS, 6);
      private final JButton button_redraw = new JButton("Redraw");
 -    private final MandelbrotController mandelbrotController;
 +    private final MandelbrotView mandelbrotController;
      public MainWindow () {
          ZoomFrame mainFrame = new ZoomFrame ("Mandelbrot");
 @@ -55,13 +60,15 @@ public class MainWindow implements MandelbrotController.MandelbrotProvider, Zoom          grid = new GridView(WIDTH - insets.left - insets.right, HEIGHT - insets.top - insets.bottom);
          mainFrame.add(grid, BorderLayout.CENTER);
 -        mandelbrotController = new MandelbrotController(this, grid);
 +        mandelbrotController = new MandelbrotView(this, grid);
          mandelbrotController.redraw();
 -        mainFrame.setMandelbrotController(mandelbrotController);
 +        mainFrame.setMandelbrotView(mandelbrotController);
          mainFrame.setMandelbrotTextFields(this);
 -        JPanel panel = new JPanel(new FlowLayout());
 +        JPanel left = new JPanel(new BorderLayout());
 +        
 +        JPanel panel = new JPanel(new GridLayout(10,1));
          button_redraw.addActionListener(new ActionListener() {
              @Override
              public void actionPerformed(ActionEvent ae) {
 @@ -72,15 +79,30 @@ public class MainWindow implements MandelbrotController.MandelbrotProvider, Zoom          });
          panel.add(new JLabel("Center x:"));
          panel.add(field_centerX);
 -        panel.add(new JLabel("y:"));
 +        panel.add(new JLabel("Center y:"));
          panel.add(field_centerY);
          panel.add(new JLabel("Scale:"));
          panel.add(field_scale);
          panel.add(new JLabel("Repetitions:"));
          panel.add(field_repetitions);
          panel.add(button_redraw);
 +        JButton button_reset = new JButton("Reset");
 +        button_reset.addActionListener(new ActionListener() {
 +            @Override
 +            public void actionPerformed(ActionEvent ae) {
 +                field_centerX.setText(INITIAL_CENTER_X);
 +                field_centerY.setText(INITIAL_CENTER_Y);
 +                field_scale.setText(INITIAL_SCALE);
 +                field_repetitions.setText(INITIAL_REPETITIONS);
 +                mandelbrotController.redraw();
 +            }
 +        });
 +        panel.add(button_reset);
 +        
 +        left.add(panel, BorderLayout.NORTH);
 +        left.add(new JPanel(), BorderLayout.CENTER);
 -        mainFrame.add(panel, BorderLayout.PAGE_END);
 +        mainFrame.add(left, BorderLayout.EAST);
          mainFrame.pack();
      }
 @@ -115,22 +137,22 @@ public class MainWindow implements MandelbrotController.MandelbrotProvider, Zoom      @Override
      public void setCenterX(double x) {
 -        field_centerX.setText(Double.toString(x));
 +        field_centerX.setText(String.format("%.5f", x));
      }
      @Override
      public void setCenterY(double y) {
 -        field_centerY.setText(Double.toString(y));
 +        field_centerY.setText(String.format("%.5f", y));
      }
      @Override
      public void setScale(double scale) {
 -        field_scale.setText(Double.toString(scale));
 +        field_scale.setText(String.format("%.5f", scale));
      }
      @Override
 -    public void setRepetitions(double repetitions) {
 -        field_repetitions.setText(Double.toString(repetitions));
 +    public void setRepetitions(int repetitions) {
 +        field_repetitions.setText(Integer.toString(repetitions));
      }
  }
 | 
