プログラムdeタマゴ

nodamushiの著作物は、文章、画像、プログラムにかかわらず全てUnlicenseです

AffinTransform

いっつも分からなくなるのでメモ。



A = A×Bにしたいとき
A.concatenate(B)



A = B ×Aにしたいとき
A.preConcatenate(B)



Rθをθ(rad)の回転行列とする


A = A×Rθとしたい場合
A.rotate(θ)



A=Rθ×Aが欲しいとき

手段無し。
A.preConcatenate(AffineTransform.getRotateInstance(θ))とするしかない)




平行移動Tとする。
A = A×Tとしたい場合
A.translate(x,y)



A=T×Aが欲しいとき

手段無し。
A.preConcatenate(AffineTransform.getTranslateInstance(x,y))とするしかない)



拡大変換Sとする。
A = A×Sとしたい場合
A.scale(x,y)



A=S×Aが欲しいとき

手段無し。
A.preConcatenate(AffineTransform.getScaleInstance(x,y))とするしかない)





こうやってみると、preConcatenate(=B×A)に対応する回転、移動、拡大変換がないのが微妙に不便ですな。