GitHub repository: Dacaspex/Fractal
Description: A program that can generate images and videos of fractals. It will include an API to include user created fractals. Choose between a variety of colour schemes to create beautiful images/videos  
Topics: fractal, image-generator, java

v1.0.1: tag_name: v1.0.1
body: Small bug-fix patch solving issue #11. 

- Program no longer crashes when the settings.xml file is missing, or incomplete
v1.0.0: tag_name: v1.0.0
body: This marks the first official release of the Fractal program. The software has matured into a state that I declare as 'concept proven' and therefore it will be released as the first version. At the moment, the program has the planned features from a few months back. More features are already in development. The version scheme will have the following format v[global version] . [update version] . [minor bug fixes]. The global version denotes big features, or a significant difference in comparison with previous versions. The update version denotes smaller update for the program. 

### List of features
- Generate fractal images
- Choose between two different fractals from the top menu
    - Julia Set
    - Mandelbrot Set
- Alter the scale of the current fractal
    - Left click: Zoom in
    - Right click: Zoom out
    - Middle mouse button/Scroll wheel: Translate
- Edit the fractal settings via the settings panel
    - Julia Set:
        - Number of iterations
        - Escape value
        - Constant (Complex value)
    - Mandelbrot Set:
        - Number of iterations
        - Escape value
- Choose the desired colour scheme. <em>Currently only available for the Julia Set fractal. Will be heavily enhanced later</em>
- See the current settings, including the scale, in the information panel

### Features under the hood
- Load standard settings from settings.xml file
- Multi-threading enabled to speed up calculating the pixel values
- Work on custom API to easily add new fractals, complete with colour schemes and settings managers
- <strong>Not yet implemented.</strong> Video encoder to generate animations
- Beginning of animation structure
- <strong>Not yet implemented.</strong> Add a custom axis (lines) to the current fractal

### Future development
I'll be working on new features to further enhance the program. I'll try to bundle a bunch of updates and releease it as a new version. Suggestions are always welcome.

### Preview images
![image 1](https://puu.sh/vCrSO/f862f49f56.png)
![image 2](https://puu.sh/vCscg/69b53d01cd.png)
![image 3](https://puu.sh/vCrIy/3f1e755915.png)
![image 4](https://puu.sh/vCrP2/a6903b9c13.png)
POC - Advancing Infrastructure: tag_name: Alpha-2.0
body: Nothing much has changed since last release visually, but there have been numerous changes in the underlying infrastructure of the code with an eye to the future.

# Summary
- Created "Zoom out" functionality by pressing the right mouse button
- Created "Translate" functionality by pressing the middle mouse button
- Enhanced the Scale class and made it standard for all fractals to have
- Created a FractalManager that keeps track of all fractals. Also add easier support for changing between fractals via the menu
- Enhanced the menu with a couple of more features such as switching between fractals and an about button
- Created a way of editing settings via a settings.xml file
- Created a class for retrieving the settings in the settings.xml file
- Added more documentation to various parts of the code

## 

The program can now be run easily by running the jar file in the rar package. By chaning the contents of the settings file, the behaviour of the program can be changed. 

You can also add your own fractal. A more precise explanation on how to do this will be added later in the read me and/or wiki

### Adding your own fractal

> The methods for generating an image have changed slightly due to the implementation of threading. 

Create the fractal class with your desired name and implement the required methods to work.

``` java
public class MyFractal extends AbstractFractal {

    public MyFractal() {...}

    public BufferedImage getImage(int imageWidth, int imageHeight) {...}

}
```

**Note:** You can use the Scale property for defining a mathematical scale for you fractal to live in. See the JuliaFractal or MandelBrotFractal for examples

After that, you need to register your newly created fractal in the FractalManager by either setting it directly in the function loadDefaultFractals()

``` java
public void loadDefaultFractals() {

    fractalList.put("Julia Set", new JuliaFractal());
    fractalList.put("Mandelbrot Set", new MandelBrotFractal());
    fractalList.put("MyFractal", new MyFractal()); // Add this line

}
```

or in the Display class

``` java
fractalManager.addFractal("MyFractal", new MyFractal());
```

_Casper_

Proof of Concept: tag_name: Alpha-1.0
body: # Summary

This release is a proof of concept for the Fractal project. It covers some key features the program will have and how it can be extended. Many more things have to be done or updated. Below you can find some pictures what the program can produce.

## Contents

### A broad overview
- Can draw the Julia Set fractal and the Mandlebrot fractal
- Options for the Julia and Mandlebrot set can be changed
- Colour schemes for fractals (with multiple different kinds)
- A simple display showing the fractal
- A zoom function which operates on the point clicked on the screen
- A video encoder which can generate an animation of the fractal
- Special animators can be implemented to animate the settings of a fractal

## Future development

Future development will be done by improving on all these features. I am planning on keep working on the project to enhance current features and extend, all done with a view of creating sort of a framework to create your own fractals pictures/animations. 

Contribution to the project is always welcome. Feel free to contact me if you have any questions or suggestions. Bugs can be reported in the bug-tracker. 

_Casper_

## Images

Mandelbrot, zoomed in
![Mandelbrot 1](https://puu.sh/tIFXM/502023847e.png)
Mandelbrot, zoomed in even further
![Mandelbrot 2Text](https://puu.sh/tIG3m/13a5e16d4d.png)
Julia set (c = 0.285 + 0.01i)
![Julia Set 1](https://puu.sh/tIG5o/095727c25d.png)
Julia set (c = -0.7269 + 0.1889i)
![Julia Set 2](https://puu.sh/tIGnI/020439b76f.png)