Avatar
今更ですが、iOSDCの発表でアフィン変換についていろいろ調べてるけど、訳わからなくなったのでちょっと質問したいです まずアフィン変換を複数合成した変換をビューに適用すると、合成した順番とは逆の描画順番になるのが現状の動きです(図1) ちょっと変ですが、私は長い間ずっとこれUIKitの仕様だと思ってきました;そしてそうなってる理由は、恐らく行列の掛け算の順番を本来実行順の逆順にしないといけないところ(つまりA変換→B変換の順番なら、掛け算はB×Aの順番にしないといけない)、UIKitが実行順通りに掛け算(つまりA×B)をしてしまったと考えていました ところが、今実際ドキュメント読んでると、UIKitは確かにB×Aの順番で掛けてるようです;そして実際CGAffineTransformを出力してみても、確かにB×Aの順番の計算結果になっているのがわかりました。つまり、アフィン変換の計算自体は合っているはずです(図2) アフィン変換が合っているのに、描画が逆の順番の計算結果になっているってことは、つまり恐らく描画する時、CGAffineTransformのbとcを逆に使ってしまったバグになるのでは?と思いますが、皆さんはどう思いますでしょうか?
12:10 PM