/fractal-drawer

This project is realized for university purpose.

Primary LanguageJavaThe UnlicenseUnlicense

Fractal Drawer (visualizer)

JavaFx GUI application for drawing fractal shapes
GitHub repo size GitHub

Fractal_Drawer image

Fractal Drawer image

Table of Contents generated with DocToc

Reqirements

Reqirement
Git https://img.shields.io/badge/git-blue
Maven https://img.shields.io/badge/maven-3%2B-blue
Java https://img.shields.io/badge/java-11-blue
JavaFx https://img.shields.io/badge/javafx-13-blue

What is this repository for?

  • This JavaFx gui application for visualizing fractal images was written as my final graduation work, it's purpose is to demonstrate how fractal shapes are formed. User interface allows user to choose fractal shape and to observe vizualization step by step for famous fractal shapes.

Installation and usage

Once you install Git, Maven and JDK 11 proceed with following steps:

Clone git repository:

git clone git@github.com:milanbojovic/fractal-drawer.git

Run the app:

mvn javafx:run

How use this app?

  • This application is platform independent, it should run on Windows, Mac, Linux and other systems if Java is installed)
  • Select fractal shape from FRACTAL SHAPES LIST
  • Click on button: Level ++ to view next iteration in fractal construction
  • Click on button: Level -- to view previous iteration in fractal construction
  • Fractal dimension is displayed in bottom split pane

Shapes visualized

Fractal shape Visualization
Horizontal Circles Horizontal Circles
Horizontal and Vertical Circles Horizontal and Vertical Circles
Sierpinski Triangle Sierpinski Carpet
Sierpinski Carpet Sierpinski Carpet
Cantor Set Cantor Set
Koch Curve Koch Curve
Koch Curve (Quadratic 1) Koch Curve Quadratic 1
Koch Curve (Quadratic 2) Koch Curve Quadratic 2
Dragon Curve Dragon Curve
Dragon Curve (double) Dragon Curve Double
Levy C curve Levy Curve
Koch Snowflake Koch Snowflake
Koch Anti Snowflake Koch Anti Snowflake
Koch Costline Koch Coastline
Mandelbrot Set Mandelbrot Set
Tree Tree
Tree 60 degree Tree 60 degree
Tree 90 degree Tree 90 degree
Pythagoras tree Pythagoras Tree
Hilbert Curve Hilbert Curve
TSquare TSquare
Hexaflake Hexaflake

Implementation details

Application was written in Java using JavaFX framework, application's graphical interface is completely described in "MainWindow.fxml" file which can be easily modified using JavaFX Scene builder. Resoucre folder contains .fxml used in presentation layer (JavaFx). Package "tk.milanbojovic.shape" holds source code for all fractal shapes - it mainly consists of FractalShape class which is base class and individual derived shape classes eg. PythagorasTree, Koch Curve and others which just implementing drawing method for particular shape. All shapes in this application are calculating and drawing states using recursive methods with mechanism to stop recursion at desired level. New shapes could be added easily by deriving base class and redefining draw method. Fractal dimension is displayed using lightweight HTML 5 browser embedded in bottom split pane of the application - this browser displays math formulas which are generated using MathML language when new shape is displayed on graphical canvas. MathML syntax could be found here.

Full pdf report can be found here (it is written in Serbian language).

Who do I talk to?

MILAN BOJOVIC

Contact: Email: milanbojovic@gmail.com LinkedIn: https://rs.linkedin.com/in/mbojovic Skype: milanbojovic