diff --git a/src/main/java/pythagoras/f/AffineTransform.java b/src/main/java/pythagoras/f/AffineTransform.java index f329357..ff525a5 100644 --- a/src/main/java/pythagoras/f/AffineTransform.java +++ b/src/main/java/pythagoras/f/AffineTransform.java @@ -9,9 +9,9 @@ import pythagoras.util.NoninvertibleTransformException; /** * Implements an affine (3x2 matrix) transform. The transformation matrix has the form: *
{@code
- * [ m00, m10, 0 ]
- * [ m01, m11, 0 ]
- * [ tx, ty, 1 ]
+ * [ m00, m10, tx ]
+ * [ m01, m11, ty ]
+ * [ 0, 0, 1 ]
* }
*/
public class AffineTransform extends AbstractTransform
@@ -38,9 +38,9 @@ public class AffineTransform extends AbstractTransform
/** Creates an affine transform from the supplied scale, rotation and translation. */
public AffineTransform (float scaleX, float scaleY, float angle, float tx, float ty) {
float sina = FloatMath.sin(angle), cosa = FloatMath.cos(angle);
- this.m00 = cosa * scaleX; this.m01 = -sina * scaleX;
- this.m10 = sina * scaleY; this.m11 = cosa * scaleY;
- this.tx = tx; this.ty = ty;
+ this.m00 = cosa * scaleX; this.m01 = sina * scaleY;
+ this.m10 = -sina * scaleX; this.m11 = cosa * scaleY;
+ this.tx = tx; this.ty = ty;
}
/** Creates an affine transform with the specified transform matrix. */
@@ -142,8 +142,8 @@ public class AffineTransform extends AbstractTransform
// extract the scale, then reapply rotation and scale together
float sx = getScaleX(), sy = getScaleY();
float sina = FloatMath.sin(angle), cosa = FloatMath.cos(angle);
- m00 = cosa * sx; m01 = -sina * sx;
- m10 = sina * sy; m11 = cosa * sy;
+ m00 = cosa * sx; m01 = sina * sx;
+ m10 = -sina * sy; m11 = cosa * sy;
return this;
}
@@ -201,7 +201,7 @@ public class AffineTransform extends AbstractTransform
@Override // from Transform
public Transform rotate (float angle) {
float sina = FloatMath.sin(angle), cosa = FloatMath.cos(angle);
- return Transforms.multiply(cosa, -sina, sina, cosa, 0, 0, this, this);
+ return Transforms.multiply(cosa, sina, -sina, cosa, 0, 0, this, this);
}
@Override // from Transform
@@ -226,9 +226,9 @@ public class AffineTransform extends AbstractTransform
}
float rdet = 1f / det;
return new AffineTransform(
- +m11 * rdet, -m01 * rdet,
- -m10 * rdet, +m00 * rdet,
- (m01*ty - m11*tx) * rdet, (m10*tx - m00*ty) * rdet);
+ +m11 * rdet, -m10 * rdet,
+ -m01 * rdet, +m00 * rdet,
+ (m10*ty - m11*tx) * rdet, (m01*tx - m00*ty) * rdet);
}
@Override // from Transform
@@ -274,7 +274,7 @@ public class AffineTransform extends AbstractTransform
@Override // from Transform
public Point transform (IPoint p, Point into) {
float x = p.getX(), y = p.getY();
- return into.set(m00*x + m01*y + tx, m10*x + m11*y + ty);
+ return into.set(m00*x + m10*y + tx, m01*x + m11*y + ty);
}
@Override // from Transform
@@ -288,8 +288,8 @@ public class AffineTransform extends AbstractTransform
public void transform (float[] src, int srcOff, float[] dst, int dstOff, int count) {
for (int ii = 0; ii < count; ii++) {
float x = src[srcOff++], y = src[srcOff++];
- dst[dstOff++] = m00*x + m01*y + tx;
- dst[dstOff++] = m10*x + m11*y + ty;
+ dst[dstOff++] = m00*x + m10*y + tx;
+ dst[dstOff++] = m01*x + m11*y + ty;
}
}
@@ -302,14 +302,14 @@ public class AffineTransform extends AbstractTransform
throw new NoninvertibleTransformException(this.toString());
}
float rdet = 1 / det;
- return into.set((x * m11 - y * m01) * rdet,
- (y * m00 - x * m10) * rdet);
+ return into.set((x * m11 - y * m10) * rdet,
+ (y * m00 - x * m01) * rdet);
}
@Override // from Transform
public Vector transform (IVector v, Vector into) {
float x = v.getX(), y = v.getY();
- return into.set(m00*x + m01*y, m10*x + m11*y);
+ return into.set(m00*x + m10*y, m01*x + m11*y);
}
@Override // from Transform
@@ -321,8 +321,8 @@ public class AffineTransform extends AbstractTransform
throw new NoninvertibleTransformException(this.toString());
}
float rdet = 1 / det;
- return into.set((x * m11 - y * m01) * rdet,
- (y * m00 - x * m10) * rdet);
+ return into.set((x * m11 - y * m10) * rdet,
+ (y * m00 - x * m01) * rdet);
}
@Override // from Transform
diff --git a/src/main/java/pythagoras/f/Transforms.java b/src/main/java/pythagoras/f/Transforms.java
index 485d19c..9c7b21d 100644
--- a/src/main/java/pythagoras/f/Transforms.java
+++ b/src/main/java/pythagoras/f/Transforms.java
@@ -69,12 +69,12 @@ public class Transforms
float am00, float am01, float am10, float am11, float atx, float aty,
float bm00, float bm01, float bm10, float bm11, float btx, float bty,
AffineTransform into) {
- into.m00 = am00 * bm00 + am01 * bm10;
- into.m01 = am00 * bm01 + am01 * bm11;
- into.m10 = am10 * bm00 + am11 * bm10;
- into.m11 = am10 * bm01 + am11 * bm11;
- into.tx = am00 * btx + am01 * bty + atx;
- into.ty = am10 * btx + am11 * bty + aty;
+ into.m00 = am00 * bm00 + am10 * bm01;
+ into.m01 = am01 * bm00 + am11 * bm01;
+ into.m10 = am00 * bm10 + am10 * bm11;
+ into.m11 = am01 * bm10 + am11 * bm11;
+ into.tx = am00 * btx + am10 * bty + atx;
+ into.ty = am01 * btx + am11 * bty + aty;
return into;
}
}