mirror of
https://github.com/processing/processing4.git
synced 2026-02-14 10:55:38 +01:00
cleaning up the rest of the matrix api and implementations
This commit is contained in:
@@ -81,12 +81,16 @@ public final class PMatrix2D implements PMatrix {
|
||||
}
|
||||
|
||||
|
||||
public void set(PMatrix matrix) {
|
||||
PMatrix2D src = (PMatrix2D) matrix;
|
||||
|
||||
public void set(PMatrix2D src) {
|
||||
set(src.m00, src.m01, src.m02,
|
||||
src.m10, src.m11, src.m12);
|
||||
}
|
||||
|
||||
|
||||
public void set(PMatrix3D src) {
|
||||
//PGraphics.showError("Cannot use set(PMatrix3D) on a PMatrix2D.");
|
||||
throw new IllegalArgumentException("Cannot use set(PMatrix3D) on a PMatrix2D.");
|
||||
}
|
||||
|
||||
|
||||
public void set(float[] source) {
|
||||
@@ -119,6 +123,11 @@ public final class PMatrix2D implements PMatrix {
|
||||
m02 = tx*m00 + ty*m01 + m02;
|
||||
m12 = tx*m10 + ty*m11 + m12;
|
||||
}
|
||||
|
||||
|
||||
public void translate(float x, float y, float z) {
|
||||
throw new IllegalArgumentException("Cannot use translate(x, y, z) on a PMatrix2D.");
|
||||
}
|
||||
|
||||
|
||||
// Implementation roughly based on AffineTransform.
|
||||
@@ -171,14 +180,14 @@ public final class PMatrix2D implements PMatrix {
|
||||
/**
|
||||
* Multiply this matrix by another.
|
||||
*/
|
||||
public void apply(PMatrix m) {
|
||||
if (m instanceof PMatrix2D) {
|
||||
PMatrix2D source = (PMatrix2D) m;
|
||||
apply(source.m00, source.m01, source.m02,
|
||||
source.m10, source.m11, source.m12);
|
||||
} else if (m instanceof PMatrix3D) {
|
||||
PGraphics.showError("Cannot use apply(PMatrix3D) on a PMatrix2D.");
|
||||
}
|
||||
public void apply(PMatrix2D source) {
|
||||
apply(source.m00, source.m01, source.m02,
|
||||
source.m10, source.m11, source.m12);
|
||||
}
|
||||
|
||||
|
||||
public void apply(PMatrix3D source) {
|
||||
throw new IllegalArgumentException("Cannot use apply(PMatrix3D) on a PMatrix2D.");
|
||||
}
|
||||
|
||||
|
||||
@@ -202,7 +211,7 @@ public final class PMatrix2D implements PMatrix {
|
||||
float n10, float n11, float n12, float n13,
|
||||
float n20, float n21, float n22, float n23,
|
||||
float n30, float n31, float n32, float n33) {
|
||||
|
||||
throw new IllegalArgumentException("Cannot use this version of apply() on a PMatrix2D.");
|
||||
}
|
||||
|
||||
|
||||
@@ -213,6 +222,11 @@ public final class PMatrix2D implements PMatrix {
|
||||
preApply(left.m00, left.m01, left.m02,
|
||||
left.m10, left.m11, left.m12);
|
||||
}
|
||||
|
||||
|
||||
public void preApply(PMatrix3D left) {
|
||||
throw new IllegalArgumentException("Cannot use preApply(PMatrix3D) on a PMatrix2D.");
|
||||
}
|
||||
|
||||
|
||||
public void preApply(float n00, float n01, float n02,
|
||||
@@ -237,6 +251,14 @@ public final class PMatrix2D implements PMatrix {
|
||||
}
|
||||
|
||||
|
||||
public void preApply(float n00, float n01, float n02, float n03,
|
||||
float n10, float n11, float n12, float n13,
|
||||
float n20, float n21, float n22, float n23,
|
||||
float n30, float n31, float n32, float n33) {
|
||||
throw new IllegalArgumentException("Cannot use this version of preApply() on a PMatrix2D.");
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
@@ -114,6 +114,14 @@ public final class PMatrix3D implements PMatrix /*, PConstants*/ {
|
||||
}
|
||||
|
||||
|
||||
public void set(PMatrix2D src) {
|
||||
set(src.m00, src.m01, 0, src.m02,
|
||||
src.m10, src.m11, 0, src.m12,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
public void set(PMatrix3D src) {
|
||||
set(src.m00, src.m01, src.m02, src.m03,
|
||||
src.m10, src.m11, src.m12, src.m13,
|
||||
@@ -123,28 +131,43 @@ public final class PMatrix3D implements PMatrix /*, PConstants*/ {
|
||||
|
||||
|
||||
public void set(float[] source) {
|
||||
m00 = source[0];
|
||||
m01 = source[1];
|
||||
m02 = source[2];
|
||||
m03 = source[3];
|
||||
if (source.length == 6) {
|
||||
set(source[0], source[1], source[2],
|
||||
source[3], source[4], source[5]);
|
||||
|
||||
m10 = source[4];
|
||||
m11 = source[5];
|
||||
m12 = source[6];
|
||||
m13 = source[7];
|
||||
} else if (source.length == 16) {
|
||||
m00 = source[0];
|
||||
m01 = source[1];
|
||||
m02 = source[2];
|
||||
m03 = source[3];
|
||||
|
||||
m20 = source[8];
|
||||
m21 = source[9];
|
||||
m22 = source[10];
|
||||
m23 = source[11];
|
||||
m10 = source[4];
|
||||
m11 = source[5];
|
||||
m12 = source[6];
|
||||
m13 = source[7];
|
||||
|
||||
m30 = source[12];
|
||||
m31 = source[13];
|
||||
m32 = source[14];
|
||||
m33 = source[15];
|
||||
m20 = source[8];
|
||||
m21 = source[9];
|
||||
m22 = source[10];
|
||||
m23 = source[11];
|
||||
|
||||
m30 = source[12];
|
||||
m31 = source[13];
|
||||
m32 = source[14];
|
||||
m33 = source[15];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void set(float m00, float m01, float m02,
|
||||
float m10, float m11, float m12) {
|
||||
set(m00, m01, 0, m02,
|
||||
m10, m11, 0, m12,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
public void set(float m00, float m01, float m02, float m03,
|
||||
float m10, float m11, float m12, float m13,
|
||||
float m20, float m21, float m22, float m23,
|
||||
@@ -234,24 +257,19 @@ public final class PMatrix3D implements PMatrix /*, PConstants*/ {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Multiply this matrix by another.
|
||||
*/
|
||||
public void apply(PMatrix matrix) {
|
||||
if (matrix instanceof PMatrix2D) {
|
||||
PMatrix2D source = (PMatrix2D) matrix;
|
||||
apply(source.m00, source.m01, 0, source.m02,
|
||||
source.m10, source.m11, 0, source.m12,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
|
||||
} else if (matrix instanceof PMatrix3D) {
|
||||
PMatrix3D source = (PMatrix3D) matrix;
|
||||
apply(source.m00, source.m01, source.m02, source.m03,
|
||||
source.m10, source.m11, source.m12, source.m13,
|
||||
source.m20, source.m21, source.m22, source.m23,
|
||||
source.m30, source.m31, source.m32, source.m33);
|
||||
}
|
||||
public void apply(PMatrix2D source) {
|
||||
apply(source.m00, source.m01, 0, source.m02,
|
||||
source.m10, source.m11, 0, source.m12,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
public void apply(PMatrix3D source) {
|
||||
apply(source.m00, source.m01, source.m02, source.m03,
|
||||
source.m10, source.m11, source.m12, source.m13,
|
||||
source.m20, source.m21, source.m22, source.m23,
|
||||
source.m30, source.m31, source.m32, source.m33);
|
||||
}
|
||||
|
||||
|
||||
@@ -296,6 +314,14 @@ public final class PMatrix3D implements PMatrix /*, PConstants*/ {
|
||||
}
|
||||
|
||||
|
||||
public void preApply(PMatrix2D left) {
|
||||
preApply(left.m00, left.m01, 0, left.m02,
|
||||
left.m10, left.m11, 0, left.m12,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Apply another matrix to the left of this one.
|
||||
*/
|
||||
@@ -306,7 +332,16 @@ public final class PMatrix3D implements PMatrix /*, PConstants*/ {
|
||||
left.m30, left.m31, left.m32, left.m33);
|
||||
}
|
||||
|
||||
|
||||
public void preApply(float n00, float n01, float n02,
|
||||
float n10, float n11, float n12) {
|
||||
preApply(n00, n01, 0, n02,
|
||||
n10, n11, 0, n12,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
public void preApply(float n00, float n01, float n02, float n03,
|
||||
float n10, float n11, float n12, float n13,
|
||||
float n20, float n21, float n22, float n23,
|
||||
|
||||
Reference in New Issue
Block a user