LoginSignup
2
2

More than 5 years have passed since last update.

CGAffineTransformの適用順に関して

Last updated at Posted at 2016-02-08

CGAffineTransformは、逆順に適用される。
例えば、アンカーを指定して拡縮する処理をきちんと考えてみた。

アンカーを指定して拡縮するCGAffineTransformは以下で作れる。

CGAffineTransformMakeWithAnchor
var transform = CGAffineTransformMakeTranslation(anchor.x, anchor.y) //1: anchor分移動
transform = CGAffineTransformScale(transform, scaleWidth, scaleHeight) //2: 拡縮
transform = CGAffineTransformTranslate(transform, -anchor.x, -anchor.y) //3: anchorの逆分移動

追っていくと、3→2→1の順で実行しないと正しくアンカーを指定して拡縮にならないことが分かる。
結果を見てみると、行列としても以下の様な3→2→1の順でかけたものができている。

chart.png

何か理由がありそうだけど、分からない。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2