diff --git a/src/main/java/edu/ntnu/idatt2003/model/ChaosGameDescription.java b/src/main/java/edu/ntnu/idatt2003/model/ChaosGameDescription.java index a03a51314f934c7d44f1096b3f86c7b485553b51..3bc144bf719efb08eeb0086a6bda013441f6b59a 100644 --- a/src/main/java/edu/ntnu/idatt2003/model/ChaosGameDescription.java +++ b/src/main/java/edu/ntnu/idatt2003/model/ChaosGameDescription.java @@ -1,6 +1,7 @@ package edu.ntnu.idatt2003.model; import java.util.List; +import java.util.Objects; public class ChaosGameDescription { private Vector2D minCoords; @@ -25,4 +26,20 @@ public class ChaosGameDescription { return maxCoords; } + @Override + public String toString() { + StringBuilder result = new StringBuilder(transforms.getFirst().getTransformType() + " # Type of transform" + "\n" + + minCoords.getX0() + ", " + minCoords.getX1() + " # Lower left" + "\n" + + maxCoords.getX0() + ", " + maxCoords.getX1() + " # Upper right"); + + if (Objects.equals(transforms.getFirst().getTransformType(), "Julia")) { + result.append("\n").append(transforms.getFirst().toFormattedString()); + } else if (Objects.equals(transforms.getFirst().getTransformType(), "Affine2D")) { + for (Transform2D transform : transforms) { + result.append("\n").append(transform.toFormattedString()); + } + } + return result.toString(); + } } + diff --git a/src/main/java/edu/ntnu/idatt2003/model/ChaosGameDescriptionFactory.java b/src/main/java/edu/ntnu/idatt2003/model/ChaosGameDescriptionFactory.java index 8b58cc1e5de827d3849b9e223a433094b09f225e..34e4cd7f291f37a017146b9cf1930d57a3268451 100644 --- a/src/main/java/edu/ntnu/idatt2003/model/ChaosGameDescriptionFactory.java +++ b/src/main/java/edu/ntnu/idatt2003/model/ChaosGameDescriptionFactory.java @@ -46,8 +46,9 @@ public class ChaosGameDescriptionFactory { * @return a ChaosGameDescription for the Julia set */ public static ChaosGameDescription createJuliaSet(Complex c, int sign) { - JuliaTransform[] transforms = new JuliaTransform[1]; + JuliaTransform[] transforms = new JuliaTransform[2]; transforms[0] = new JuliaTransform(c, sign); + transforms[1] = new JuliaTransform(c, -sign); Vector2D lowerLeft = new Vector2D(-1.6, -1.0); Vector2D upperRight = new Vector2D(1.6, 1.0); diff --git a/src/main/java/edu/ntnu/idatt2003/model/ChaosGameFileHandler.java b/src/main/java/edu/ntnu/idatt2003/model/ChaosGameFileHandler.java index 6ac917ef96026917d02cac91e8d01254af953fc3..3dd33e2ea72f52377fb31bfb0332726b062af652 100644 --- a/src/main/java/edu/ntnu/idatt2003/model/ChaosGameFileHandler.java +++ b/src/main/java/edu/ntnu/idatt2003/model/ChaosGameFileHandler.java @@ -40,11 +40,11 @@ public class ChaosGameFileHandler { Transform2D transform = null; assert type != null; if (type.equals("Julia")) { - transform = parseJulia(line.split("#")[0].trim()); + transforms = parseJulia(line.split("#")[0].trim()); } else { transform = parseAffineTransform(line.split("#")[0].trim()); - } transforms.add(transform); + } } catch (IllegalArgumentException e) { System.err.println("Error parsing transform from line: " + line); @@ -98,32 +98,29 @@ public class ChaosGameFileHandler { } } - private JuliaTransform parseJulia(String line) { +// private JuliaTransform parseJulia(String line) { +// String[] parts = line.split(","); +// return new JuliaTransform( +// new Complex(Double.parseDouble(parts[0].trim()), Double.parseDouble(parts[1].trim())), +// 1); +// } + + private List<Transform2D> parseJulia(String line) { String[] parts = line.split(","); - return new JuliaTransform( + List<Transform2D> juliaTransforms = new ArrayList<>(); + juliaTransforms.add(new JuliaTransform( + new Complex(Double.parseDouble(parts[0].trim()), Double.parseDouble(parts[1].trim())), + 1)); + juliaTransforms.add(new JuliaTransform( new Complex(Double.parseDouble(parts[0].trim()), Double.parseDouble(parts[1].trim())), - 1); + -1)); + return juliaTransforms; } public void writeToFile(String filePath, ChaosGameDescription description) throws IOException { try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) { - writer.write(description.getTransforms().getFirst().getTransformType() + " # Type of transform"); - writer.newLine(); - Vector2D minCoords = description.getMinCoords(); - Vector2D maxCoords = description.getMaxCoords(); - List<Transform2D> transforms = description.getTransforms(); - - writer.write(minCoords.getX0() + ", " + minCoords.getX1() + " # Lower left"); - writer.newLine(); - - writer.write(maxCoords.getX0() + ", " + maxCoords.getX1() + " # Upper right"); - writer.newLine(); - - for (Transform2D transform : transforms) { - writer.write(transform.toFormattedString() ); - writer.newLine(); - } + writer.write(description.toString()); } catch (IOException e) { System.out.println("An error occurred: " + e.getMessage()); } diff --git a/src/test/java/edu/ntnu/idatt2003/model/ChaosGameDescriptionFactoryTest.java b/src/test/java/edu/ntnu/idatt2003/model/ChaosGameDescriptionFactoryTest.java index a4fc4cdb4bb83a71954772777eca71e411778931..8f0b7a655a2cecad71e7f2446d065f2fcd3e4c52 100644 --- a/src/test/java/edu/ntnu/idatt2003/model/ChaosGameDescriptionFactoryTest.java +++ b/src/test/java/edu/ntnu/idatt2003/model/ChaosGameDescriptionFactoryTest.java @@ -26,7 +26,7 @@ public class ChaosGameDescriptionFactoryTest { Complex c = new Complex(0.285, 0.01); ChaosGameDescription description = ChaosGameDescriptionFactory.createJuliaSet(c, 1); assertNotNull(description); - assertEquals(1, description.getTransforms().size()); + assertEquals(2, description.getTransforms().size()); assertInstanceOf(JuliaTransform.class, description.getTransforms().getFirst()); } } \ No newline at end of file