diff options
| author | bjculkin <bjculkin@BECK-DZ9BJB2.wvu-ad.wvu.edu> | 2018-04-11 15:29:25 -0400 |
|---|---|---|
| committer | bjculkin <bjculkin@BECK-DZ9BJB2.wvu-ad.wvu.edu> | 2018-04-11 15:29:25 -0400 |
| commit | dcb6c2159446135a142cad41eec185bb24c45bfb (patch) | |
| tree | 965dcc07fc0256a9a8254d5f968e316a1e928617 /CSMath/src/bezier/transforms/TDHMatrix.java | |
| parent | 8ecf52b6c5821e5c3de8a0f5c9e7ed3e357cb282 (diff) | |
Split #9 into one class/file
Diffstat (limited to 'CSMath/src/bezier/transforms/TDHMatrix.java')
| -rw-r--r-- | CSMath/src/bezier/transforms/TDHMatrix.java | 40 |
1 files changed, 40 insertions, 0 deletions
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 |
