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