私はビューの変換を検出する方法を知りたがっていますか?CGAffineTransformの検出方法が反転していますか?
私はthis questionを読んだことがありますが、私は期待した答えがありません。
また、CGAffineTransformの3行3列の行列を使用して検出しようとしました。 しかし、私は数学とマトリックスのこの種のが得意ではないんだ....
だから、クラウド誰でも変換が反転していない...
私はビューの変換を検出する方法を知りたがっていますか?CGAffineTransformの検出方法が反転していますか?
私はthis questionを読んだことがありますが、私は期待した答えがありません。
また、CGAffineTransformの3行3列の行列を使用して検出しようとしました。 しかし、私は数学とマトリックスのこの種のが得意ではないんだ....
だから、クラウド誰でも変換が反転していない...
私を助けてください。ビューが反転されます。これを行うには、変換が適用されます。変換がビューを反転させるので、それ自体が反転することはありません。
これで、フリップ変換であるかどうか、ビューの変換を読み取って確認することができます。 (x軸の場合は倍率1、y軸の場合は-1のスケール変換)しかし、多くの変換がビューに適用される可能性があります。だから、あなたは "純粋な"フリップ変換を取得していない可能性があります。そして、その日の終わりには、あなたが「フリップ」したものに依存します。フリップフロップ180°の回転ですか? (実際の問題は何ですか?)
しかし、最も確かな方法は、変換を取得してポイントを変換するように見えることです。結果はあなたにヒントを与え、何が行われたのかを示します。 y座標の符号が変化するが、x座標の値が一定のままであれば、それはフリップのように見える。 scale X
aTransformObj.b
表す:私は言うと同様
、
aTransformObj.a
、
CGAffineTransformがそれを検出するための特性を有する(最初のビューで)skew Y
aTransformObj.c
を表します。 skew X
aTransformObj.d
:scale Y
aTransformObj.tx
を表し:translate x
aTransformObj.ty
を表します。それは、その後more then 0 to any negative value
であれば、それらの値が負であるか、ない場合は、して確認することができtranslate Y
、 1).a
プロパティ値を表し、それは水平に反転されます。 2).d
プロパティ値がmore then 0 to any negative value
の場合、それは垂直に反転されます。
これは正しくありません。 「d」成分は単に行列の[2,2]である。これは-180度の回転でも-1です。さらに、フリップとズームがある場合、.dは-1ではなく、別の負の値です。私の答えで言及したように、あなたがそれ以上の変換をしなければ、この仮定は正しいだけです。 –
でも負の値で確認できます!値が負の場合は反転します。あなたには正しいと思われませんか? – amorbytes
これは回転やパンなので、私はそうは思わない。私は、変換の連鎖の中で単一の変換を確認できるとは思わない。これは、1回のフリップ変換がある場合にのみ機能します。 –