diff --git a/src/main/java/org/example/chaosgame/transformations/AffineTransform2D.java b/src/main/java/org/example/chaosgame/transformations/AffineTransform2D.java index 19a91cad6260d0124763afa0c154f7e4c8d29fa8..b1b46b251b30f900f3f64c882ddcc5ff55d2c2b6 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 3a2be6006bb8460a15782f30319c7a4ab8838667..e52b7268d173e5db4b2a6323825a39513a191e28 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 ba92e3e6983170ebda89b1d91b60a36d554f9da0..5aab73454d2121204a9d2f2ba77633d876968975 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); + }