diff options
| author | student <student@localhost> | 2018-04-11 17:06:20 -0400 |
|---|---|---|
| committer | student <student@localhost> | 2018-04-11 17:06:20 -0400 |
| commit | 5fdb8554aa59432924c6cf2cf4e8c178c5856deb (patch) | |
| tree | 9fb86d7ed82887c883ba0bd9c462619a6f96499e /CSMath/src | |
| parent | dcb6c2159446135a142cad41eec185bb24c45bfb (diff) | |
Update
Diffstat (limited to 'CSMath/src')
24 files changed, 117 insertions, 55 deletions
diff --git a/CSMath/src/bezier/BezierPanel.java b/CSMath/src/bezier/BezierPanel.java index 86b4dd9..dfde4c8 100644 --- a/CSMath/src/bezier/BezierPanel.java +++ b/CSMath/src/bezier/BezierPanel.java @@ -9,6 +9,9 @@ import javax.swing.BorderFactory; import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
+import bezier.geom.Bezier;
+import bezier.geom.TDHPoint;
+import bezier.geom.TDPoint;
import bezier.transforms.TDHCombination;
import bezier.transforms.TDHTransform;
import bezier.transforms.TDHTranslate;
diff --git a/CSMath/src/bezier/CulkinAsssignmentNine.java b/CSMath/src/bezier/CulkinAsssignmentNine.java index f566d0f..120b507 100644 --- a/CSMath/src/bezier/CulkinAsssignmentNine.java +++ b/CSMath/src/bezier/CulkinAsssignmentNine.java @@ -17,6 +17,9 @@ import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.BevelBorder;
+import bezier.geom.Bezier;
+import bezier.geom.TDPoint;
+
/**
* Main class for Bezier graphing.
*
diff --git a/CSMath/src/bezier/CurveEditor.java b/CSMath/src/bezier/CurveEditor.java index 27a10d4..70f1352 100644 --- a/CSMath/src/bezier/CurveEditor.java +++ b/CSMath/src/bezier/CurveEditor.java @@ -14,6 +14,8 @@ import javax.swing.JTabbedPane; import javax.swing.border.BevelBorder;
import javax.swing.border.TitledBorder;
+import bezier.geom.Bezier;
+
/*
* Do editing of curve properties.
*/
diff --git a/CSMath/src/bezier/PointAdder.java b/CSMath/src/bezier/PointAdder.java index 269ec7b..2e421b5 100644 --- a/CSMath/src/bezier/PointAdder.java +++ b/CSMath/src/bezier/PointAdder.java @@ -13,6 +13,8 @@ import javax.swing.JFrame; import javax.swing.JPanel;
import bezier.PointAdder.AddListener;
+import bezier.geom.Bezier;
+import bezier.geom.TDPoint;
/**
* Listener for adding points to a bezier curve.
diff --git a/CSMath/src/bezier/PointRemover.java b/CSMath/src/bezier/PointRemover.java index 98cf8c0..1803e23 100644 --- a/CSMath/src/bezier/PointRemover.java +++ b/CSMath/src/bezier/PointRemover.java @@ -8,6 +8,9 @@ import javax.swing.JFrame; import javax.swing.JList;
import javax.swing.JOptionPane;
+import bezier.geom.Bezier;
+import bezier.geom.TDPoint;
+
/**
* Listener to remove points from a bezier curve.
*
diff --git a/CSMath/src/bezier/TDPointRenderer.java b/CSMath/src/bezier/TDPointRenderer.java index 7e38889..a3413bf 100644 --- a/CSMath/src/bezier/TDPointRenderer.java +++ b/CSMath/src/bezier/TDPointRenderer.java @@ -6,6 +6,8 @@ import javax.swing.JLabel; import javax.swing.JList;
import javax.swing.ListCellRenderer;
+import bezier.geom.TDPoint;
+
/**
* Renderer for TDPoints in JLists.
*
diff --git a/CSMath/src/bezier/Bezier.java b/CSMath/src/bezier/geom/Bezier.java index fcc191c..46f1476 100644 --- a/CSMath/src/bezier/Bezier.java +++ b/CSMath/src/bezier/geom/Bezier.java @@ -1,4 +1,4 @@ -package bezier;
+package bezier.geom;
import java.util.ArrayList;
import java.util.List;
diff --git a/CSMath/src/bezier/BezierProperties.java b/CSMath/src/bezier/geom/BezierProperties.java index 40e49fa..1b5443d 100644 --- a/CSMath/src/bezier/BezierProperties.java +++ b/CSMath/src/bezier/geom/BezierProperties.java @@ -1,4 +1,4 @@ -package bezier;
+package bezier.geom;
import java.awt.Color;
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); + } +} diff --git a/CSMath/src/bezier/TDHPoint.java b/CSMath/src/bezier/geom/TDHPoint.java index f2a02a8..40553a9 100644 --- a/CSMath/src/bezier/TDHPoint.java +++ b/CSMath/src/bezier/geom/TDHPoint.java @@ -1,4 +1,4 @@ -package bezier;
+package bezier.geom;
/**
* A two-dimensional homogeneous point.
diff --git a/CSMath/src/bezier/TDPoint.java b/CSMath/src/bezier/geom/TDPoint.java index 79f95df..8074461 100644 --- a/CSMath/src/bezier/TDPoint.java +++ b/CSMath/src/bezier/geom/TDPoint.java @@ -1,4 +1,4 @@ -package bezier;
+package bezier.geom;
/**
* Represents a two-dimensional point.
diff --git a/CSMath/src/bezier/transforms/TDHCombination.java b/CSMath/src/bezier/transforms/TDHCombination.java index 4f9fe10..83b3858 100644 --- a/CSMath/src/bezier/transforms/TDHCombination.java +++ b/CSMath/src/bezier/transforms/TDHCombination.java @@ -3,7 +3,7 @@ package bezier.transforms; import java.util.ArrayList;
import java.util.List;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
public class TDHCombination implements TDHTransform {
public final List<TDHTransform> forms;
diff --git a/CSMath/src/bezier/transforms/TDHIdentity.java b/CSMath/src/bezier/transforms/TDHIdentity.java index c0ae7c2..d1b55d0 100644 --- a/CSMath/src/bezier/transforms/TDHIdentity.java +++ b/CSMath/src/bezier/transforms/TDHIdentity.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
/**
* A transform that does nothing.
diff --git a/CSMath/src/bezier/transforms/TDHLineReflection.java b/CSMath/src/bezier/transforms/TDHLineReflection.java index 1cf4a48..db50fd5 100644 --- a/CSMath/src/bezier/transforms/TDHLineReflection.java +++ b/CSMath/src/bezier/transforms/TDHLineReflection.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
public class TDHLineReflection implements TDHTransform {
public final double a;
diff --git a/CSMath/src/bezier/transforms/TDHMatrix.java b/CSMath/src/bezier/transforms/TDHMatrix.java deleted file mode 100644 index b4e5bb0..0000000 --- a/CSMath/src/bezier/transforms/TDHMatrix.java +++ /dev/null @@ -1,40 +0,0 @@ -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 diff --git a/CSMath/src/bezier/transforms/TDHMatrixTransform.java b/CSMath/src/bezier/transforms/TDHMatrixTransform.java new file mode 100644 index 0000000..6cfc3cc --- /dev/null +++ b/CSMath/src/bezier/transforms/TDHMatrixTransform.java @@ -0,0 +1,32 @@ +package bezier.transforms;
+
+import bezier.geom.Matrix;
+import bezier.geom.TDHPoint;
+
+public class TDHMatrixTransform implements TDHTransform {
+ public final Matrix mat;
+
+ public TDHMatrixTransform(Matrix mat) {
+ this.mat = mat;
+ }
+
+ public TDHMatrixTransform(double[][] mat) {
+ this.mat = new Matrix(mat);
+ }
+
+ @Override
+ public TDHTransformType type() {
+ return TDHTransformType.MATRIX;
+ }
+
+ @Override
+ public TDHPoint transform(TDHPoint punkt) {
+ double[] mult = mat.scalarMultiply(new double[] { punkt.x, punkt.y, punkt.z });
+
+ return new TDHPoint(mult[0], mult[1], mult[2]);
+ }
+
+ public TDHTransform then(TDHMatrixTransform trans) {
+ return new TDHMatrixTransform(mat.multiply(trans.mat));
+ }
+}
\ No newline at end of file diff --git a/CSMath/src/bezier/transforms/TDHPointRotation.java b/CSMath/src/bezier/transforms/TDHPointRotation.java index 30f1854..5b8736c 100644 --- a/CSMath/src/bezier/transforms/TDHPointRotation.java +++ b/CSMath/src/bezier/transforms/TDHPointRotation.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
public class TDHPointRotation extends TDHRotation {
public final double x0;
diff --git a/CSMath/src/bezier/transforms/TDHRotation.java b/CSMath/src/bezier/transforms/TDHRotation.java index b2255d4..64a6c2c 100644 --- a/CSMath/src/bezier/transforms/TDHRotation.java +++ b/CSMath/src/bezier/transforms/TDHRotation.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
public class TDHRotation implements TDHTransform {
public final double theta;
diff --git a/CSMath/src/bezier/transforms/TDHScale.java b/CSMath/src/bezier/transforms/TDHScale.java index 09ab237..5cfd300 100644 --- a/CSMath/src/bezier/transforms/TDHScale.java +++ b/CSMath/src/bezier/transforms/TDHScale.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
/**
* Transform that does coordinate scaling.
diff --git a/CSMath/src/bezier/transforms/TDHShear.java b/CSMath/src/bezier/transforms/TDHShear.java index 40b3814..7dbb4c5 100644 --- a/CSMath/src/bezier/transforms/TDHShear.java +++ b/CSMath/src/bezier/transforms/TDHShear.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
public class TDHShear implements TDHTransform {
public final double shx;
diff --git a/CSMath/src/bezier/transforms/TDHTransform.java b/CSMath/src/bezier/transforms/TDHTransform.java index 48f60a5..3b8c52e 100644 --- a/CSMath/src/bezier/transforms/TDHTransform.java +++ b/CSMath/src/bezier/transforms/TDHTransform.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
/**
* Transformation applicable to TDHPoints.
diff --git a/CSMath/src/bezier/transforms/TDHTranslate.java b/CSMath/src/bezier/transforms/TDHTranslate.java index eb5cfa9..3d2afe9 100644 --- a/CSMath/src/bezier/transforms/TDHTranslate.java +++ b/CSMath/src/bezier/transforms/TDHTranslate.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
/**
* A transform that does coordinate translation.
diff --git a/CSMath/src/bezier/transforms/TDHXAxisReflection.java b/CSMath/src/bezier/transforms/TDHXAxisReflection.java index 5eea8cd..1969b9c 100644 --- a/CSMath/src/bezier/transforms/TDHXAxisReflection.java +++ b/CSMath/src/bezier/transforms/TDHXAxisReflection.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
public class TDHXAxisReflection implements TDHTransform {
@Override
diff --git a/CSMath/src/bezier/transforms/TDHYAxisReflection.java b/CSMath/src/bezier/transforms/TDHYAxisReflection.java index f302fe4..eb462ba 100644 --- a/CSMath/src/bezier/transforms/TDHYAxisReflection.java +++ b/CSMath/src/bezier/transforms/TDHYAxisReflection.java @@ -1,6 +1,6 @@ package bezier.transforms;
-import bezier.TDHPoint;
+import bezier.geom.TDHPoint;
public class TDHYAxisReflection implements TDHTransform {
@Override
|
