From dcb6c2159446135a142cad41eec185bb24c45bfb Mon Sep 17 00:00:00 2001 From: bjculkin Date: Wed, 11 Apr 2018 15:29:25 -0400 Subject: Split #9 into one class/file --- CSMath/src/bezier/transforms/TDHMatrix.java | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 CSMath/src/bezier/transforms/TDHMatrix.java (limited to 'CSMath/src/bezier/transforms/TDHMatrix.java') diff --git a/CSMath/src/bezier/transforms/TDHMatrix.java b/CSMath/src/bezier/transforms/TDHMatrix.java new file mode 100644 index 0000000..b4e5bb0 --- /dev/null +++ b/CSMath/src/bezier/transforms/TDHMatrix.java @@ -0,0 +1,40 @@ +package bezier.transforms; + +import bezier.TDHPoint; + +public class TDHMatrix implements TDHTransform { + public final double[][] mat; + + public TDHMatrix(double[][] mat) { + super(); + this.mat = mat; + } + + @Override + public TDHTransformType type() { + return TDHTransformType.MATRIX; + } + + @Override + public TDHPoint transform(TDHPoint punkt) { + double x = (punkt.x * mat[0][0]) + (punkt.y * mat[1][0]) + (punkt.z * mat[2][0]); + double y = (punkt.x * mat[0][1]) + (punkt.y * mat[1][1]) + (punkt.z * mat[2][1]); + double z = (punkt.x * mat[0][2]) + (punkt.y * mat[1][2]) + (punkt.z * mat[2][2]); + + return new TDHPoint(x, y, z); + } + + public TDHTransform then(double[][] matr) { + double[][] ret = new double[3][3]; + + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + for (int k = 0; k < 3; k++) { + ret[i][j] += mat[i][k] * matr[k][j]; + } + } + } + + return new TDHMatrix(ret); + } +} \ No newline at end of file -- cgit v1.2.3