I find the following code inside PAffineTransform
:
/**
* Scales the transform about the given point by the given scale.
*
* @param scale to transform the transform by
* @param x x coordinate around which the scale should take place
* @param y y coordinate around which the scale should take place
*/
public void scaleAboutPoint(final double scale, final double x, final double y) {
//TODO strange order
translate(x, y);
scale(scale, scale);
translate(-x, -y);
}
Wouldn't it correct to do reverse:
translate(-x, -y);
scale(scale, scale);
translate(x, y);
All used methods are the same as in AffineTransform
.
UPDATE
My mistake.
Sequential transform modification means matrix multiplication from the right. So, the last applied modification works first while transforming, because transforming is matrix multiplication from the left.