Skip to content
Snippets Groups Projects
Commit f1e095bb authored by Edvard Granheim Harbo's avatar Edvard Granheim Harbo
Browse files

Merge branch 'main' into 'dev'

# Conflicts:
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/AffineTransform2D.java
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/Complex.java
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/JuliaTransform.java
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/Matrix2x2.java
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/Transform2D.java
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/Vector2D.java
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosCanvas.java
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGame.java
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGameDescription.java
#   src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGameFileHandler.java
#   src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/AffineTransform2DNegativeTest.java
#   src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/AffineTransform2DPositiveTest.java
#   src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/ComplexNegativeTest.java
#   src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/ComplexPositiveTest.java
#   src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/JuliaTransformPositiveTest.java
#   src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/Matrix2x2NegativeTest.java
#   src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/Matrix2x2PositiveTest.java
#   src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/Vector2DNegativeTest.java
#   src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/Vector2DPositiveTest.java
parents aca4f817 78b9eab2
No related branches found
No related tags found
1 merge request!54Final release
package edu.ntnu.idatt2003.mappevurderingprog2.models;
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.Scanner;
public class UserInterface {
private ChaosGameDescription description;
private ChaosGame game;
private final ChaosGameFileHandler fileHandler = new ChaosGameFileHandler();
private final Scanner scanner = new Scanner(System.in);
public void start() {
System.out.println("CLI Application for Chaos Game");
while (true) {
System.out.println("\n1. Read description from file");
System.out.println("2. Write description to file");
System.out.println("3. Run a number of iterations");
System.out.println("4. Print ASCII fractal to console");
System.out.println("5. Exit");
System.out.print("Enter choice: ");
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
readDescriptionFromFile();
break;
case 2:
writeDescriptionToFile();
break;
case 3:
runIterations();
break;
case 4:
printFractal();
break;
case 5:
System.out.println("Exiting...");
return;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}
private void readDescriptionFromFile() {
System.out.print("Enter the name of the text file (e.g., JuliaTransformation.txt): ");
String fileName = scanner.nextLine();
String filePath = "src/main/resources/transformations/" + fileName;
try {
description = fileHandler.readTransformationsFromFile(filePath);
System.out.println("Description read successfully from: " + filePath);
} catch (Exception e) {
System.out.println("Error reading file: " + e.getMessage());
}
}
private void writeDescriptionToFile() {
if (description == null) {
System.out.println("No description to write. Please read a description first.");
return;
}
System.out.print("Enter the name of the text file to write to (e.g., JuliaTransformation.txt): ");
String fileName = scanner.nextLine();
String filePath = "src/main/resources/transformations/" + fileName;
try {
fileHandler.writeTransformationsToFile(description, filePath);
System.out.println("Description written successfully to: " + filePath);
} catch (Exception e) {
System.out.println("Error writing to file: " + e.getMessage());
}
}
private void runIterations() {
if (description == null) {
System.out.println("No description loaded. Please read a description first.");
return;
}
System.out.print("Enter the number of iterations to run: ");
int iterations = scanner.nextInt();
game = new ChaosGame(description, 50, 50);
game.runSteps(iterations);
System.out.println("Iterations completed.");
}
private void printFractal() {
if (game == null || game.getCanvas() == null) {
System.out.println("No game to print. Please run iterations first.");
return;
}
game.getCanvas().printCanvas();
}
}
\ No newline at end of file
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
Julia
-1.6, -1.0
1.6, 1.0
-0.74543, 0.11301, -1
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
package edu.ntnu.idatt2003.mappevurderingprog2;
import edu.ntnu.idatt2003.mappevurderingprog2.models.Complex;
import edu.ntnu.idatt2003.mappevurderingprog2.models.JuliaTransform;
import edu.ntnu.idatt2003.mappevurderingprog2.models.Vector2D;
import org.junit.jupiter.api.Test;
public class JuliaTranformNegativeTest {
@Test
public void juliaTransformConstructorNegativeTest() {
int i = 1;
try {
JuliaTransform juliaTransform = new JuliaTransform(null, i);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
@Test
public void getPointNegativeTest() {
Complex complex = new Complex(1, 1);
int i = 1;
JuliaTransform juliaTransform = new JuliaTransform(complex, i);
assert juliaTransform.getPoint().getRealPart() != 2;
assert juliaTransform.getPoint().getImaginaryPart() != 2;
}
@Test
public void getSignNegativeTest() {
Complex complex = new Complex(1, 1);
int i = 1;
JuliaTransform juliaTransform = new JuliaTransform(complex, i);
assert juliaTransform.getSign() != 2;
}
@Test
public void transformNegativeTest1() {
Complex juliaPoint = new Complex(0.5, -0.5);
int sign = 1;
JuliaTransform juliaTransform = new JuliaTransform(juliaPoint, sign);
try {
Vector2D result = juliaTransform.transform(null);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
@Test
public void transformNegativeTest2() {
Vector2D complexToTransform = new Vector2D(1, 1);
Complex juliaPoint = new Complex(0.5, -0.5);
int sign = 1;
JuliaTransform juliaTransform = new JuliaTransform(juliaPoint, sign);
try {
Vector2D result = juliaTransform.transform(complexToTransform);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment