diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/controllers/GameController.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/controllers/GameController.java index 7960db7a152d0df5738b385d686d080e06c1be5a..c3f7c3896047ccda616ca26d7c0651762bb7842f 100644 --- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/controllers/GameController.java +++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/controllers/GameController.java @@ -7,6 +7,7 @@ import edu.ntnu.idatt2003.mappevurderingprog2.models.Transform2D; import edu.ntnu.idatt2003.mappevurderingprog2.models.Vector2D; import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGame; import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameDescription; +import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameFileHandler; import java.util.ArrayList; import java.util.List; @@ -80,4 +81,21 @@ public class GameController { if (transforms.isEmpty()) return false; return transforms.get(0) instanceof JuliaTransform; } + + public void saveFractalToFile(String name) throws Exception { + ChaosGameFileHandler.writeTransformationsToFile(ChaosGame.getInstance().getDescription(), name); + } + + public void readFractalFromFile(String name) throws Exception { + ChaosGameDescription description = ChaosGameFileHandler.readTransformationsFromFile(name); + ChaosGame.getInstance().setDescription(description); + } + + public boolean doesFileExist(String name) { + return ChaosGameFileHandler.checkFileExists(name); + } + + public List<String> listTransformationFileNames() { + return ChaosGameFileHandler.listTransformationFileNames(); + } } \ No newline at end of file diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGameFileHandler.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGameFileHandler.java index 748a73a560f96e1f4f49f14d899676c4f976df7b..2bdbf863862033fefe806850d443508ab693a964 100644 --- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGameFileHandler.java +++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGameFileHandler.java @@ -15,8 +15,8 @@ import java.util.Locale; import java.util.Scanner; public class ChaosGameFileHandler { - public static ChaosGameDescription readTransformationsFromFile(String path) throws FileNotFoundException { - File file = new File(path); + public static ChaosGameDescription readTransformationsFromFile(String name) throws FileNotFoundException { + File file = new File("src/main/resources/transformations/" + name); Scanner scanner = new Scanner(file).useLocale(Locale.ENGLISH); String transformType = scanner.nextLine().trim(); @@ -43,8 +43,8 @@ public class ChaosGameFileHandler { return ChaosGameDescription.createWithTransforms(transforms, minCoords, maxCoords); } - public static void writeTransformationsToFile(ChaosGameDescription description, String path) throws Exception{ - try (FileWriter writer = new FileWriter(new File(path))) { + public static void writeTransformationsToFile(ChaosGameDescription description, String name) throws Exception{ + try (FileWriter writer = new FileWriter("src/main/resources/transformations/" + name)) { if (description.getTransforms().isEmpty()) return; Transform2D firstTransform = description.getTransforms().get(0); @@ -69,6 +69,29 @@ public class ChaosGameFileHandler { } } + public static List<String> listTransformationFileNames() { + List<String> fileNames = new ArrayList<>(); + File directory = new File("src/main/resources/transformations/"); + + if (directory.exists() && directory.isDirectory()) { + File[] files = directory.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile()) { + fileNames.add(file.getName()); + } + } + } + } + + return fileNames; + } + + public static boolean checkFileExists(String name) { + File file = new File("src/main/resources/transformations/" + name); + return file.exists(); + } + private static String formatVector2D(Vector2D vector) { return String.format(Locale.ENGLISH, "%s, %s", vector.getX0(), vector.getX1()); } diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/AffineDialog.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/AffineDialog.java index 600db42c196d94f8b725d1ba84cce678c0e84b0f..1e80791d07c9c344e285cb39c329f818fc0af76f 100644 --- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/AffineDialog.java +++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/AffineDialog.java @@ -92,57 +92,9 @@ public class AffineDialog { HBox editBox = new HBox(10); editBox.setAlignment(Pos.CENTER_LEFT); - Button editButton = new Button(isEditMode ? "Edit Fractal" : "Create Fractal"); + Button editButton = new Button(isEditMode ? "Edit Fractal" : "Display Fractal"); editButton.setOnAction(event -> { - if (stepsField.getText().isEmpty() || minCoordsFieldX.getText().isEmpty() || - minCoordsFieldY.getText().isEmpty() || maxCoordsFieldX.getText().isEmpty() || - maxCoordsFieldY.getText().isEmpty()) { - UserFeedback.showErrorPopup("Input Error", "All primary transformation fields must be filled out."); - return; - } - - for (Node[] fields : transformationFields) { - TextField matrixField = (TextField) fields[0]; - TextField vectorField = (TextField) fields[1]; - if (matrixField.getText().isEmpty() || vectorField.getText().isEmpty()) { - UserFeedback.showErrorPopup("Input Error", "All matrix and vector fields must be filled out. Use the add and remove transformation buttons if necessary."); - return; - } - } - try { - int steps = Integer.parseInt(stepsField.getText()); - if (steps <= 0) { - UserFeedback.showErrorPopup("Input Error", "Number of steps must be above zero."); - return; - } - double minX = Double.parseDouble(minCoordsFieldX.getText()); - double minY = Double.parseDouble(minCoordsFieldY.getText()); - double maxX = Double.parseDouble(maxCoordsFieldX.getText()); - double maxY = Double.parseDouble(maxCoordsFieldY.getText()); - - gameController.setChaosGameSteps(steps); - - List<Transform2D> transforms = new ArrayList<>(); - for (Node[] fields : transformationFields) { - TextField matrixField = (TextField) fields[0]; - TextField vectorField = (TextField) fields[1]; - - double[][] matrixValues = parseMatrix(matrixField.getText()); - double[] vectorValues = parseVector(vectorField.getText()); - - Matrix2x2 matrix = new Matrix2x2(matrixValues[0][0], matrixValues[0][1], matrixValues[1][0], matrixValues[1][1]); - Vector2D vector = new Vector2D(vectorValues[0], vectorValues[1]); - - transforms.add(new AffineTransform2D(matrix, vector)); - } - - gameController.setAffineTransformation(transforms, new Vector2D(minX, minY), new Vector2D(maxX, maxY)); - gameController.setChaosCanvasSize(200, 200); - gameController.runTransformation(); - dialog.close(); - } catch (NumberFormatException e) { - UserFeedback.showErrorPopup("Input Error", "Please enter valid numbers for all fields."); - } + displayFractal(stepsField, minCoordsFieldX, minCoordsFieldY, maxCoordsFieldX, maxCoordsFieldY, transformationFields); }); HBox buttonBox = new HBox(10); @@ -171,6 +123,58 @@ public class AffineDialog { dialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE); } + private void displayFractal(TextField stepsField, TextField minCoordsFieldX, TextField minCoordsFieldY, TextField maxCoordsFieldX, TextField maxCoordsFieldY, List<Node[]> transformationFields) { + if (stepsField.getText().isEmpty() || minCoordsFieldX.getText().isEmpty() || + minCoordsFieldY.getText().isEmpty() || maxCoordsFieldX.getText().isEmpty() || + maxCoordsFieldY.getText().isEmpty()) { + UserFeedback.showErrorPopup("Input Error", "All primary transformation fields must be filled out."); + return; + } + + for (Node[] fields : transformationFields) { + TextField matrixField = (TextField) fields[0]; + TextField vectorField = (TextField) fields[1]; + if (matrixField.getText().isEmpty() || vectorField.getText().isEmpty()) { + UserFeedback.showErrorPopup("Input Error", "All matrix and vector fields must be filled out. Use the add and remove transformation buttons if necessary."); + return; + } + } + try { + int steps = Integer.parseInt(stepsField.getText()); + if (steps <= 0) { + UserFeedback.showErrorPopup("Input Error", "Number of steps must be above zero."); + return; + } + double minX = Double.parseDouble(minCoordsFieldX.getText()); + double minY = Double.parseDouble(minCoordsFieldY.getText()); + double maxX = Double.parseDouble(maxCoordsFieldX.getText()); + double maxY = Double.parseDouble(maxCoordsFieldY.getText()); + + gameController.setChaosGameSteps(steps); + + List<Transform2D> transforms = new ArrayList<>(); + for (Node[] fields : transformationFields) { + TextField matrixField = (TextField) fields[0]; + TextField vectorField = (TextField) fields[1]; + + double[][] matrixValues = parseMatrix(matrixField.getText()); + double[] vectorValues = parseVector(vectorField.getText()); + + Matrix2x2 matrix = new Matrix2x2(matrixValues[0][0], matrixValues[0][1], matrixValues[1][0], matrixValues[1][1]); + Vector2D vector = new Vector2D(vectorValues[0], vectorValues[1]); + + transforms.add(new AffineTransform2D(matrix, vector)); + } + + gameController.setAffineTransformation(transforms, new Vector2D(minX, minY), new Vector2D(maxX, maxY)); + gameController.setChaosCanvasSize(200, 200); + gameController.runTransformation(); + dialog.close(); + } catch (NumberFormatException e) { + UserFeedback.showErrorPopup("Input Error", "Please enter valid numbers for all fields."); + } + } + private void addTransformationFields(GridPane grid, AffineTransform2D transform, int rowIndex, List<Node[]> fieldList) { TextField matrixField = new TextField("[" + transform.getMatrix().getA00() + ", " + transform.getMatrix().getA01() + "; " + transform.getMatrix().getA10() + ", " + transform.getMatrix().getA11() + "]"); TextField vectorField = new TextField("[" + transform.getVector().getX0() + ", " + transform.getVector().getX1() + "]"); diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/CreateFractalMenu.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/CreateFractalMenu.java index 7c8249826670bba891e813e2af4cc143fa8e8453..907ae0fab282e15e0deee260317dcf762f78a7b4 100644 --- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/CreateFractalMenu.java +++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/CreateFractalMenu.java @@ -4,6 +4,7 @@ import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController; import edu.ntnu.idatt2003.mappevurderingprog2.views.View; import javafx.scene.control.Button; import javafx.scene.control.Label; +import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.geometry.Pos; @@ -25,7 +26,11 @@ public class CreateFractalMenu extends VBox { juliaDialog.showDialog(); }); - getChildren().addAll(headline, affineButton, juliaButton); + HBox buttonBox = new HBox(affineButton, juliaButton); + buttonBox.setAlignment(Pos.CENTER); + buttonBox.setSpacing(10); + + getChildren().addAll(headline, buttonBox); setAlignment(Pos.TOP_CENTER); setSpacing(10); } diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/CurrentFractalMenu.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/CurrentFractalMenu.java new file mode 100644 index 0000000000000000000000000000000000000000..fba75070160a7793d7775a1ecdcc03e80d69e8ec --- /dev/null +++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/CurrentFractalMenu.java @@ -0,0 +1,67 @@ +package edu.ntnu.idatt2003.mappevurderingprog2.views.Components; + +import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController; +import edu.ntnu.idatt2003.mappevurderingprog2.views.View; +import java.util.Optional; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextInputDialog; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.geometry.Pos; + +public class CurrentFractalMenu extends VBox { + private GameController gameController; + public CurrentFractalMenu(View view, GameController gameController) { + this.gameController = gameController; + Label editLabel = new Label("Current fractal"); + editLabel.setStyle("-fx-font-size: 16px; -fx-font-weight: bold;"); + + Button editButton = new Button("Edit"); + editButton.setOnAction(event -> { + if (gameController.isChaosGameEmpty()) { + UserFeedback.showErrorPopup("Error", "There is no fractal to edit"); + } else if (gameController.isJuliaTransformation()) { + JuliaDialog juliaDialog = new JuliaDialog(gameController, true); + juliaDialog.showDialog(); + } else if (gameController.isAffineTransformation()) { + AffineDialog affineDialog = new AffineDialog(gameController, true); + affineDialog.showDialog(); + } + }); + + Button saveButton = new Button("Save"); + saveButton.setOnAction(event -> { + if (gameController.isChaosGameEmpty()) { + UserFeedback.showErrorPopup("Error", "There is no fractal to save"); + } else { + TextInputDialog dialog = new TextInputDialog(); + dialog.setTitle("Save fractal"); + dialog.setHeaderText("Enter a name for the fractal"); + dialog.setContentText("Name:"); + + Optional<String> result = dialog.showAndWait(); + result.ifPresent(name -> { + if (gameController.doesFileExist(name)) { + UserFeedback.showErrorPopup("Error", "A fractal with that name already exists"); + } else { + try { + gameController.saveFractalToFile(name); + UserFeedback.showConfirmationPopup("Success", "Fractal saved successfully"); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + }); + } + }); + + HBox buttonBox = new HBox(editButton, saveButton); + buttonBox.setAlignment(Pos.CENTER); + buttonBox.setSpacing(10); + + getChildren().addAll(editLabel, buttonBox); + setAlignment(Pos.TOP_CENTER); + setSpacing(10); + } +} diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/EditFractalMenu.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/EditFractalMenu.java deleted file mode 100644 index 77ae424ebbf2d3140e31059b61be613102271c5b..0000000000000000000000000000000000000000 --- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/EditFractalMenu.java +++ /dev/null @@ -1,34 +0,0 @@ -package edu.ntnu.idatt2003.mappevurderingprog2.views.Components; - -import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController; -import edu.ntnu.idatt2003.mappevurderingprog2.views.View; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.layout.VBox; -import javafx.geometry.Pos; - -public class EditFractalMenu extends VBox { - private GameController gameController; - public EditFractalMenu(View view, GameController gameController) { - this.gameController = gameController; - Label editLabel = new Label("Edit current fractal"); - editLabel.setStyle("-fx-font-size: 16px; -fx-font-weight: bold;"); - - Button editButton = new Button("Edit"); - editButton.setOnAction(event -> { - if (gameController.isChaosGameEmpty()) { - UserFeedback.showErrorPopup("Error", "There is no fractal to edit"); - } else if (gameController.isJuliaTransformation()) { - JuliaDialog juliaDialog = new JuliaDialog(gameController, true); - juliaDialog.showDialog(); - } else if (gameController.isAffineTransformation()) { - AffineDialog affineDialog = new AffineDialog(gameController, true); - affineDialog.showDialog(); - } - }); - - getChildren().addAll(editLabel, editButton); - setAlignment(Pos.TOP_CENTER); - setSpacing(10); - } -} diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExistingFractalsMenu.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExistingFractalsMenu.java index 52f0c7e7b333788d9ae4785cd3fe5f8f9975472c..9f5b74c2311d8d6a361eee54bcdddf6046def6b1 100644 --- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExistingFractalsMenu.java +++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExistingFractalsMenu.java @@ -2,9 +2,15 @@ package edu.ntnu.idatt2003.mappevurderingprog2.views.Components; import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController; import edu.ntnu.idatt2003.mappevurderingprog2.views.View; +import java.util.List; +import javafx.collections.FXCollections; import javafx.geometry.Pos; import javafx.scene.control.Button; +import javafx.scene.control.ButtonBar; +import javafx.scene.control.ButtonType; +import javafx.scene.control.Dialog; import javafx.scene.control.Label; +import javafx.scene.control.ListView; import javafx.scene.layout.VBox; public class ExistingFractalsMenu extends VBox { @@ -15,8 +21,48 @@ public class ExistingFractalsMenu extends VBox { BarnsleyFernButton barnsleyButton = new BarnsleyFernButton(view, view.getMainCanvas(), gameController); JuliaTransformationButton juliaButton = new JuliaTransformationButton(view, view.getMainCanvas(), gameController); - getChildren().addAll(headline, sierpinskiButton, barnsleyButton, juliaButton); + Button savedFractalsButton = new Button("Saved Fractals"); + savedFractalsButton.setOnAction(event -> showSavedFractalsDialog(gameController)); + + getChildren().addAll(headline, sierpinskiButton, barnsleyButton, juliaButton, savedFractalsButton); setAlignment(Pos.TOP_CENTER); setSpacing(10); } + + private void showSavedFractalsDialog(GameController gameController) { + if (gameController.listTransformationFileNames().isEmpty()) { + UserFeedback.showErrorPopup("Error", "There are no saved fractals"); + return; + } + Dialog<String> dialog = new Dialog<>(); + dialog.setTitle("Select a Fractal"); + dialog.setHeaderText("Choose a fractal to display:"); + + ButtonType loadButtonType = new ButtonType("Display", ButtonBar.ButtonData.OK_DONE); + dialog.getDialogPane().getButtonTypes().addAll(loadButtonType, ButtonType.CANCEL); + + ListView<String> listView = new ListView<>(); + List<String> savedFractals = gameController.listTransformationFileNames(); + listView.setItems(FXCollections.observableArrayList(savedFractals)); + listView.setPrefHeight(180); + dialog.getDialogPane().setContent(listView); + + dialog.setResultConverter(dialogButton -> { + if (dialogButton == loadButtonType && !listView.getSelectionModel().isEmpty()) { + return listView.getSelectionModel().getSelectedItem(); + } + return null; + }); + + dialog.showAndWait().ifPresent(fractalName -> { + try { + gameController.readFractalFromFile(fractalName); + gameController.setChaosGameSteps(1000000); + gameController.setChaosCanvasSize(200, 200); + gameController.runTransformation(); + } catch (Exception e) { + UserFeedback.showErrorPopup("Error", "Failed to load fractal: " + e.getMessage()); + } + }); + } } \ No newline at end of file diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/JuliaDialog.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/JuliaDialog.java index 315f6c50466f1f9e33e1cc5e6f91570f724780ef..2c4cbd869957aa46e51b0f9bc81e29ad1271b665 100644 --- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/JuliaDialog.java +++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/JuliaDialog.java @@ -3,6 +3,7 @@ package edu.ntnu.idatt2003.mappevurderingprog2.views.Components; import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController; import edu.ntnu.idatt2003.mappevurderingprog2.models.Complex; import edu.ntnu.idatt2003.mappevurderingprog2.models.Vector2D; +import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameFileHandler; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; import javafx.scene.control.Dialog; @@ -57,15 +58,15 @@ public class JuliaDialog { grid.add(new Label("Imaginary Part:"), 0, 4); grid.add(imagField, 1, 4); - Button editButton = new Button(isEditMode ? "Edit Fractal" : "Create Fractal"); - editButton.setOnAction(event -> handleAction(stepsField, minCoordsFieldX, minCoordsFieldY, maxCoordsFieldX, maxCoordsFieldY, realField, imagField)); + Button editButton = new Button("Display Fractal"); + editButton.setOnAction(event -> displayFractal(stepsField, minCoordsFieldX, minCoordsFieldY, maxCoordsFieldX, maxCoordsFieldY, realField, imagField)); grid.add(editButton, 1, 5); dialog.getDialogPane().setContent(grid); dialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE); } - private void handleAction(TextField stepsField, TextField minCoordsFieldX, TextField minCoordsFieldY, TextField maxCoordsFieldX, TextField maxCoordsFieldY, TextField realField, TextField imagField) { + private void displayFractal(TextField stepsField, TextField minCoordsFieldX, TextField minCoordsFieldY, TextField maxCoordsFieldX, TextField maxCoordsFieldY, TextField realField, TextField imagField) { if (stepsField.getText().isEmpty() || minCoordsFieldX.getText().isEmpty() || minCoordsFieldY.getText().isEmpty() || maxCoordsFieldX.getText().isEmpty() || maxCoordsFieldY.getText().isEmpty() || realField.getText().isEmpty() || diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Menu.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Menu.java index 98f63f30943ea39bbeeab7e26a498b89b2f3f8f6..7dd26d23e9987740bd3f38e94d3bc9b02847f149 100644 --- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Menu.java +++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Menu.java @@ -10,13 +10,13 @@ import javafx.scene.layout.VBox; public class Menu extends VBox { private ExistingFractalsMenu existingFractalsMenu; private CreateFractalMenu createFractalMenu; - private EditFractalMenu editFractalMenu; + private CurrentFractalMenu editFractalMenu; private ExtraUserOptions extraUserOptions; public Menu(View view, GameController gameController) { existingFractalsMenu = new ExistingFractalsMenu(view, gameController); createFractalMenu = new CreateFractalMenu(view, gameController); - editFractalMenu = new EditFractalMenu(view, gameController); + editFractalMenu = new CurrentFractalMenu(view, gameController); extraUserOptions = new ExtraUserOptions(view.getMainCanvas()); initializeMenu(); } diff --git a/src/main/resources/transformations/BarnsleyFern.txt b/src/main/resources/transformations/BarnsleyFern.txt deleted file mode 100644 index 647a7a0b44406f0aacef5788d039dcc120639504..0000000000000000000000000000000000000000 --- a/src/main/resources/transformations/BarnsleyFern.txt +++ /dev/null @@ -1,7 +0,0 @@ -Affine2D -0.0, 0.0 -1.0, 1.0 -0.000000, 0.000000, 0.000000, 0.160000, 0.0, 0.0 -0.850000, 0.040000, -0.040000, 0.850000, 0.0, 1.6 -0.200000, -0.260000, 0.230000, 0.220000, 0.0, 1.6 --0.150000, 0.280000, 0.260000, 0.240000, 0.0, 0.44 \ No newline at end of file diff --git a/src/main/resources/transformations/JuliaTransformation.txt b/src/main/resources/transformations/JuliaTransformation.txt deleted file mode 100644 index d5b7598f3c808e59c78b2252a371ad5792858589..0000000000000000000000000000000000000000 --- a/src/main/resources/transformations/JuliaTransformation.txt +++ /dev/null @@ -1,4 +0,0 @@ -Julia --1.6, -1.0 -1.6, 1.0 --0.74543, 0.11301, -1 diff --git a/src/main/resources/transformations/SierpinskiTriangle.txt b/src/main/resources/transformations/SierpinskiTriangle.txt deleted file mode 100644 index ad501cb8dcaceb9a3af075d54be5903e416beaed..0000000000000000000000000000000000000000 --- a/src/main/resources/transformations/SierpinskiTriangle.txt +++ /dev/null @@ -1,6 +0,0 @@ -Affine2D -0.0, 0.0 -1.0, 1.0 -0.500000, 0.000000, 0.000000, 0.500000, 0.0, 0.0 -0.500000, 0.000000, 0.000000, 0.500000, 0.5, 0.0 -0.500000, 0.000000, 0.000000, 0.500000, 0.25, 0.5