2
我發現下面的代碼中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);
}
那不是正確的反向操作:
translate(-x, -y);
scale(scale, scale);
translate(x, y);
所有使用的方法都一樣AffineTransform
。
UPDATE
我的錯。
順序變換修改意味着從右邊開始的矩陣乘法。所以,最後應用的修改在變換時首先工作,因爲變換是從左邊的矩陣乘法。