Skip to content

Commit e8c394c

Browse files
committed
cleaning up the rest of the matrix api and implementations
1 parent 6608255 commit e8c394c

File tree

2 files changed

+106
-49
lines changed

2 files changed

+106
-49
lines changed

core/src/processing/core/PMatrix2D.java

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,16 @@ public float[] get(float[] target) {
8181
}
8282

8383

84-
public void set(PMatrix matrix) {
85-
PMatrix2D src = (PMatrix2D) matrix;
86-
84+
public void set(PMatrix2D src) {
8785
set(src.m00, src.m01, src.m02,
8886
src.m10, src.m11, src.m12);
8987
}
88+
89+
90+
public void set(PMatrix3D src) {
91+
//PGraphics.showError("Cannot use set(PMatrix3D) on a PMatrix2D.");
92+
throw new IllegalArgumentException("Cannot use set(PMatrix3D) on a PMatrix2D.");
93+
}
9094

9195

9296
public void set(float[] source) {
@@ -119,6 +123,11 @@ public void translate(float tx, float ty) {
119123
m02 = tx*m00 + ty*m01 + m02;
120124
m12 = tx*m10 + ty*m11 + m12;
121125
}
126+
127+
128+
public void translate(float x, float y, float z) {
129+
throw new IllegalArgumentException("Cannot use translate(x, y, z) on a PMatrix2D.");
130+
}
122131

123132

124133
// Implementation roughly based on AffineTransform.
@@ -171,14 +180,14 @@ public void scale(float x, float y, float z) {
171180
/**
172181
* Multiply this matrix by another.
173182
*/
174-
public void apply(PMatrix m) {
175-
if (m instanceof PMatrix2D) {
176-
PMatrix2D source = (PMatrix2D) m;
177-
apply(source.m00, source.m01, source.m02,
178-
source.m10, source.m11, source.m12);
179-
} else if (m instanceof PMatrix3D) {
180-
PGraphics.showError("Cannot use apply(PMatrix3D) on a PMatrix2D.");
181-
}
183+
public void apply(PMatrix2D source) {
184+
apply(source.m00, source.m01, source.m02,
185+
source.m10, source.m11, source.m12);
186+
}
187+
188+
189+
public void apply(PMatrix3D source) {
190+
throw new IllegalArgumentException("Cannot use apply(PMatrix3D) on a PMatrix2D.");
182191
}
183192

184193

@@ -202,7 +211,7 @@ public void apply(float n00, float n01, float n02, float n03,
202211
float n10, float n11, float n12, float n13,
203212
float n20, float n21, float n22, float n23,
204213
float n30, float n31, float n32, float n33) {
205-
214+
throw new IllegalArgumentException("Cannot use this version of apply() on a PMatrix2D.");
206215
}
207216

208217

@@ -213,6 +222,11 @@ public void preApply(PMatrix2D left) {
213222
preApply(left.m00, left.m01, left.m02,
214223
left.m10, left.m11, left.m12);
215224
}
225+
226+
227+
public void preApply(PMatrix3D left) {
228+
throw new IllegalArgumentException("Cannot use preApply(PMatrix3D) on a PMatrix2D.");
229+
}
216230

217231

218232
public void preApply(float n00, float n01, float n02,
@@ -237,6 +251,14 @@ public void preApply(float n00, float n01, float n02,
237251
}
238252

239253

254+
public void preApply(float n00, float n01, float n02, float n03,
255+
float n10, float n11, float n12, float n13,
256+
float n20, float n21, float n22, float n23,
257+
float n30, float n31, float n32, float n33) {
258+
throw new IllegalArgumentException("Cannot use this version of preApply() on a PMatrix2D.");
259+
}
260+
261+
240262
//////////////////////////////////////////////////////////////
241263

242264

core/src/processing/core/PMatrix3D.java

Lines changed: 72 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,14 @@ public float[] get(float[] target) {
114114
}
115115

116116

117+
public void set(PMatrix2D src) {
118+
set(src.m00, src.m01, 0, src.m02,
119+
src.m10, src.m11, 0, src.m12,
120+
0, 0, 1, 0,
121+
0, 0, 0, 1);
122+
}
123+
124+
117125
public void set(PMatrix3D src) {
118126
set(src.m00, src.m01, src.m02, src.m03,
119127
src.m10, src.m11, src.m12, src.m13,
@@ -123,28 +131,43 @@ public void set(PMatrix3D src) {
123131

124132

125133
public void set(float[] source) {
126-
m00 = source[0];
127-
m01 = source[1];
128-
m02 = source[2];
129-
m03 = source[3];
130-
131-
m10 = source[4];
132-
m11 = source[5];
133-
m12 = source[6];
134-
m13 = source[7];
135-
136-
m20 = source[8];
137-
m21 = source[9];
138-
m22 = source[10];
139-
m23 = source[11];
140-
141-
m30 = source[12];
142-
m31 = source[13];
143-
m32 = source[14];
144-
m33 = source[15];
134+
if (source.length == 6) {
135+
set(source[0], source[1], source[2],
136+
source[3], source[4], source[5]);
137+
138+
} else if (source.length == 16) {
139+
m00 = source[0];
140+
m01 = source[1];
141+
m02 = source[2];
142+
m03 = source[3];
143+
144+
m10 = source[4];
145+
m11 = source[5];
146+
m12 = source[6];
147+
m13 = source[7];
148+
149+
m20 = source[8];
150+
m21 = source[9];
151+
m22 = source[10];
152+
m23 = source[11];
153+
154+
m30 = source[12];
155+
m31 = source[13];
156+
m32 = source[14];
157+
m33 = source[15];
158+
}
145159
}
146160

161+
162+
public void set(float m00, float m01, float m02,
163+
float m10, float m11, float m12) {
164+
set(m00, m01, 0, m02,
165+
m10, m11, 0, m12,
166+
0, 0, 1, 0,
167+
0, 0, 0, 1);
168+
}
147169

170+
148171
public void set(float m00, float m01, float m02, float m03,
149172
float m10, float m11, float m12, float m13,
150173
float m20, float m21, float m22, float m23,
@@ -234,24 +257,19 @@ public void scale(float x, float y, float z) {
234257
}
235258

236259

237-
/**
238-
* Multiply this matrix by another.
239-
*/
240-
public void apply(PMatrix matrix) {
241-
if (matrix instanceof PMatrix2D) {
242-
PMatrix2D source = (PMatrix2D) matrix;
243-
apply(source.m00, source.m01, 0, source.m02,
244-
source.m10, source.m11, 0, source.m12,
245-
0, 0, 1, 0,
246-
0, 0, 0, 1);
247-
248-
} else if (matrix instanceof PMatrix3D) {
249-
PMatrix3D source = (PMatrix3D) matrix;
250-
apply(source.m00, source.m01, source.m02, source.m03,
251-
source.m10, source.m11, source.m12, source.m13,
252-
source.m20, source.m21, source.m22, source.m23,
253-
source.m30, source.m31, source.m32, source.m33);
254-
}
260+
public void apply(PMatrix2D source) {
261+
apply(source.m00, source.m01, 0, source.m02,
262+
source.m10, source.m11, 0, source.m12,
263+
0, 0, 1, 0,
264+
0, 0, 0, 1);
265+
}
266+
267+
268+
public void apply(PMatrix3D source) {
269+
apply(source.m00, source.m01, source.m02, source.m03,
270+
source.m10, source.m11, source.m12, source.m13,
271+
source.m20, source.m21, source.m22, source.m23,
272+
source.m30, source.m31, source.m32, source.m33);
255273
}
256274

257275

@@ -296,6 +314,14 @@ public void apply(float n00, float n01, float n02, float n03,
296314
}
297315

298316

317+
public void preApply(PMatrix2D left) {
318+
preApply(left.m00, left.m01, 0, left.m02,
319+
left.m10, left.m11, 0, left.m12,
320+
0, 0, 1, 0,
321+
0, 0, 0, 1);
322+
}
323+
324+
299325
/**
300326
* Apply another matrix to the left of this one.
301327
*/
@@ -306,7 +332,16 @@ public void preApply(PMatrix3D left) {
306332
left.m30, left.m31, left.m32, left.m33);
307333
}
308334

335+
336+
public void preApply(float n00, float n01, float n02,
337+
float n10, float n11, float n12) {
338+
preApply(n00, n01, 0, n02,
339+
n10, n11, 0, n12,
340+
0, 0, 1, 0,
341+
0, 0, 0, 1);
342+
}
309343

344+
310345
public void preApply(float n00, float n01, float n02, float n03,
311346
float n10, float n11, float n12, float n13,
312347
float n20, float n21, float n22, float n23,

0 commit comments

Comments
 (0)