Skip to content

Commit 128abfe

Browse files
committed
more matrix work, and adding pvector
1 parent 1c7b357 commit 128abfe

File tree

4 files changed

+33
-101
lines changed

4 files changed

+33
-101
lines changed

core/src/processing/core/PConstants.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -213,16 +213,21 @@ public interface PConstants {
213213
// shape drawing modes
214214

215215
/** Draw mode convention to use (x, y) to (width, height) */
216-
static final int CORNER = 0;
216+
static final int CORNER = 0;
217217
/** Draw mode convention to use (x1, y1) to (x2, y2) coordinates */
218-
static final int CORNERS = 1;
219-
/** @deprecated Use RADIUS instead (as of 0125) */
220-
static final int CENTER_RADIUS = 2;
218+
static final int CORNERS = 1;
221219
/** Draw mode from the center, and using the radius */
222-
static final int RADIUS = 2;
223-
/** Draw from the center, using second pair of values as the diameter.
224-
Formerly called CENTER_DIAMETER in alpha releases */
225-
static final int CENTER = 3;
220+
static final int RADIUS = 2;
221+
/**
222+
* Draw from the center, using second pair of values as the diameter.
223+
* Formerly called CENTER_DIAMETER in alpha releases.
224+
*/
225+
static final int CENTER = 3;
226+
/**
227+
* Synonym for the CENTER constant. Draw from the center,
228+
* using second pair of values as the diameter.
229+
*/
230+
static final int DIAMETER = 3;
226231

227232

228233
// vertically alignment modes for text

core/src/processing/core/PGraphics.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -740,9 +740,7 @@ protected void defaultSettings() { // ignore
740740
matrixStackDepth = 0;
741741

742742
rectMode(CORNER);
743-
ellipseMode(CENTER);
744-
//arcMode(CENTER);
745-
//angleMode(RADIANS);
743+
ellipseMode(DIAMETER);
746744

747745
// no current font
748746
textFont = null;

core/src/processing/core/PMatrix2D.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626

2727
/**
28-
* 4x4 matrix implementation.
28+
* 3x2 affine matrix implementation.
2929
*/
3030
public final class PMatrix2D implements PConstants {
3131

@@ -110,9 +110,20 @@ public void translate(float tx, float ty) {
110110
m12 = tx*m10 + ty*m11 + m12;
111111
}
112112

113-
113+
114+
// Implementation roughly based on AffineTransform.
114115
public void rotate(float angle) {
115-
// TODO fixme
116+
float s = sin(angle);
117+
float c = cos(angle);
118+
119+
float temp1 = m00;
120+
float temp2 = m01;
121+
m00 = c * temp1 + s * temp2;
122+
m01 = -s * temp1 + c * temp2;
123+
temp1 = m10;
124+
temp2 = m11;
125+
m10 = c * temp1 + s * temp2;
126+
m11 = -s * temp1 + c * temp2;
116127
}
117128

118129

@@ -199,14 +210,15 @@ public void preApply(float n00, float n01, float n02,
199210
t0 = m01;
200211
t1 = m11;
201212
m01 = t0 * n00 + t1 * n01;
202-
m11 = t0 * n10 + t1 * n11; }
213+
m11 = t0 * n10 + t1 * n11;
214+
}
203215

204216

205217
//////////////////////////////////////////////////////////////
206218

207219

208220
/**
209-
* Multiply a four element vector against this matrix.
221+
* Multiply a two element vector against this matrix.
210222
* If out is null or not length four, a new float array will be returned.
211223
* The values for vec and out can be the same (though that's less efficient).
212224
*/

core/src/processing/core/PMatrix3D.java

Lines changed: 2 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@ public final class PMatrix3D implements PConstants {
3434
public float m20, m21, m22, m23;
3535
public float m30, m31, m32, m33;
3636

37-
// final static int DEFAULT_STACK_DEPTH = 0;
38-
// int maxStackDepth;
39-
// int stackPointer = 0;
40-
// float stack[][];
41-
4237

4338
// locally allocated version to avoid creating new memory
4439
protected PMatrix3D inverseCopy;
@@ -49,20 +44,12 @@ public PMatrix3D() {
4944
}
5045

5146

52-
// public PMatrix(int stackDepth) {
53-
// set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
54-
// stack = new float[stackDepth][16];
55-
// maxStackDepth = stackDepth;
56-
// }
57-
58-
5947
public PMatrix3D(float m00, float m01, float m02,
6048
float m10, float m11, float m12) {
6149
set(m00, m01, m02, 0,
6250
m10, m11, m12, 0,
6351
0, 0, 1, 0,
6452
0, 0, 0, 1);
65-
// maxStackDepth = DEFAULT_STACK_DEPTH;
6653
}
6754

6855

@@ -74,87 +61,17 @@ public PMatrix3D(float m00, float m01, float m02, float m03,
7461
m10, m11, m12, m13,
7562
m20, m21, m22, m23,
7663
m30, m31, m32, m33);
77-
// maxStackDepth = DEFAULT_STACK_DEPTH;
7864
}
7965

8066

81-
// Make a copy of a matrix. We copy the stack depth,
82-
// but we don't make a copy of the stack or the stack pointer.
83-
// public PMatrix(PMatrix src) {
84-
// set(src);
85-
//// maxStackDepth = src.maxStackDepth;
86-
//// stack = new float[maxStackDepth][16];
87-
// }
88-
89-
9067
public void reset() {
9168
set(1, 0, 0, 0,
9269
0, 1, 0, 0,
9370
0, 0, 1, 0,
9471
0, 0, 0, 1);
9572
}
96-
97-
98-
// public void clearStack() {
99-
// stackPointer = 0;
100-
// }
101-
102-
103-
// public boolean push() {
104-
// if (stackPointer == maxStackDepth) return false;
105-
//
106-
// stack[stackPointer][0] = m00;
107-
// stack[stackPointer][1] = m01;
108-
// stack[stackPointer][2] = m02;
109-
// stack[stackPointer][3] = m03;
110-
//
111-
// stack[stackPointer][4] = m10;
112-
// stack[stackPointer][5] = m11;
113-
// stack[stackPointer][6] = m12;
114-
// stack[stackPointer][7] = m13;
115-
//
116-
// stack[stackPointer][8] = m20;
117-
// stack[stackPointer][9] = m21;
118-
// stack[stackPointer][10] = m22;
119-
// stack[stackPointer][11] = m23;
120-
//
121-
// stack[stackPointer][12] = m30;
122-
// stack[stackPointer][13] = m31;
123-
// stack[stackPointer][14] = m32;
124-
// stack[stackPointer][15] = m33;
125-
//
126-
// stackPointer++;
127-
// return true;
128-
// }
129-
130-
131-
// public boolean pop() {
132-
// if (stackPointer == 0) return false;
133-
// stackPointer--;
134-
//
135-
// m00 = stack[stackPointer][0];
136-
// m01 = stack[stackPointer][1];
137-
// m02 = stack[stackPointer][2];
138-
// m03 = stack[stackPointer][3];
139-
//
140-
// m10 = stack[stackPointer][4];
141-
// m11 = stack[stackPointer][5];
142-
// m12 = stack[stackPointer][6];
143-
// m13 = stack[stackPointer][7];
144-
//
145-
// m20 = stack[stackPointer][8];
146-
// m21 = stack[stackPointer][9];
147-
// m22 = stack[stackPointer][10];
148-
// m23 = stack[stackPointer][11];
149-
//
150-
// m30 = stack[stackPointer][12];
151-
// m31 = stack[stackPointer][13];
152-
// m32 = stack[stackPointer][14];
153-
// m33 = stack[stackPointer][15];
154-
//
155-
// return true;
156-
// }
157-
73+
74+
15875
/**
15976
* Returns a copy of this PMatrix.
16077
*/

0 commit comments

Comments
 (0)