summaryrefslogtreecommitdiff
path: root/CSMath/src/bezier/geom/Matrix.java
diff options
context:
space:
mode:
Diffstat (limited to 'CSMath/src/bezier/geom/Matrix.java')
-rw-r--r--CSMath/src/bezier/geom/Matrix.java55
1 files changed, 55 insertions, 0 deletions
diff --git a/CSMath/src/bezier/geom/Matrix.java b/CSMath/src/bezier/geom/Matrix.java
new file mode 100644
index 0000000..a728a02
--- /dev/null
+++ b/CSMath/src/bezier/geom/Matrix.java
@@ -0,0 +1,55 @@
+package bezier.geom;
+
+public class Matrix {
+ public final double[][] mat;
+
+ public Matrix(double[][] mat) {
+ this.mat = mat;
+ }
+
+ public Matrix add(Matrix m) {
+ return add(m.mat);
+ }
+
+ public double[] scalarMultiply(double[] vec) {
+ double[] ret = new double[vec.length];
+
+ for(int i = 0; i < mat[0].length; i++) {
+ for(int j = 0; j < mat.length; j++) {
+ ret[i] += mat[i][j] * vec[j];
+ }
+ }
+
+ return ret;
+ }
+
+ public Matrix add(double[][] matr) {
+ double[][] ret = new double[mat.length][mat[0].length];
+
+ for(int i = 0; i < mat.length; i++) {
+ for(int j = 0; j < mat[0].length; j++) {
+ ret[i][j] = mat[i][j] + matr[i][j];
+ }
+ }
+
+ return new Matrix(ret);
+ }
+
+ public Matrix multiply(Matrix m) {
+ return multiply(m.mat);
+ }
+
+ public Matrix multiply(double[][] matr) {
+ double[][] ret = new double[mat.length][matr[0].length];
+
+ for (int i = 0; i < mat.length; i++) {
+ for (int j = 0; j < matr[0].length; j++) {
+ for (int k = 0; k < matr.length; k++) {
+ ret[i][j] += mat[i][k] * matr[k][j];
+ }
+ }
+ }
+
+ return new Matrix(ret);
+ }
+}