From 8539c4ad1229e7939d6d34fbc6dda8cb74b42bcf Mon Sep 17 00:00:00 2001
From: Edvard <edvardee@stud.ntnu.no>
Date: Wed, 21 Feb 2024 14:52:46 +0100
Subject: [PATCH] Implementation of variables and methods in transformations
 classes

---
 .../transformations/AffineTransform2D.java     | 15 +++++++++++++++
 .../transformations/JuliaTransform.java        | 18 ++++++++++++++++++
 .../chaosgame/transformations/Transform2D.java |  4 ++++
 3 files changed, 37 insertions(+)

diff --git a/src/main/java/org/example/chaosgame/transformations/AffineTransform2D.java b/src/main/java/org/example/chaosgame/transformations/AffineTransform2D.java
index 19a91ca..b1b46b2 100644
--- a/src/main/java/org/example/chaosgame/transformations/AffineTransform2D.java
+++ b/src/main/java/org/example/chaosgame/transformations/AffineTransform2D.java
@@ -1,4 +1,19 @@
 package org.example.chaosgame.transformations;
 
+import org.example.chaosgame.linalg.Matrix2x2;
+import org.example.chaosgame.linalg.Vector2D;
+
 public class AffineTransform2D implements Transform2D{
+  private final Matrix2x2 matrix;
+  private final Vector2D vector;
+
+  public AffineTransform2D(Matrix2x2 matrix, Vector2D vector) {
+    this.matrix = matrix;
+    this.vector = vector;
+  }
+
+  @Override
+  public Vector2D transform(Vector2D point) {
+    return matrix.multiply(point).add(vector);
+  }
 }
diff --git a/src/main/java/org/example/chaosgame/transformations/JuliaTransform.java b/src/main/java/org/example/chaosgame/transformations/JuliaTransform.java
index 3a2be60..e52b726 100644
--- a/src/main/java/org/example/chaosgame/transformations/JuliaTransform.java
+++ b/src/main/java/org/example/chaosgame/transformations/JuliaTransform.java
@@ -1,4 +1,22 @@
 package org.example.chaosgame.transformations;
 
+import org.example.chaosgame.linalg.Complex;
+import org.example.chaosgame.linalg.Vector2D;
+
 public class JuliaTransform implements Transform2D{
+  private final Complex point;
+  private final int sign;
+
+  public JuliaTransform(Complex point, int sign) {
+    this.point = point;
+    this.sign = sign;
+  }
+
+  @Override
+  public Vector2D transform(Vector2D point) {
+    Vector2D result = this.point.sqrt(point.getX(), point.getY());
+    double a = sign * result.getX();
+    double b = sign * result.getY();
+    return new Vector2D(a, b);
+  }
 }
diff --git a/src/main/java/org/example/chaosgame/transformations/Transform2D.java b/src/main/java/org/example/chaosgame/transformations/Transform2D.java
index ba92e3e..5aab734 100644
--- a/src/main/java/org/example/chaosgame/transformations/Transform2D.java
+++ b/src/main/java/org/example/chaosgame/transformations/Transform2D.java
@@ -1,4 +1,8 @@
 package org.example.chaosgame.transformations;
 
+import org.example.chaosgame.linalg.Vector2D;
+
 public interface Transform2D{
+  public Vector2D transform(Vector2D point);
+
 }
-- 
GitLab