2016-04-08 17 views
0

私はビューの変換を検出する方法を知りたがっていますか?CGAffineTransformの検出方法が反転していますか?

私はthis questionを読んだことがありますが、私は期待した答えがありません。

また、CGAffineTransformの3行3列の行列を使用して検出しようとしました。 しかし、私は数学とマトリックスのこの種のが得意ではないんだ....

だから、クラウド誰でも変換が反転していない...

答えて

0

私を助けてください。ビューが反転されます。これを行うには、変換が適用されます。変換がビューを反転させるので、それ自体が反転することはありません。

これで、フリップ変換であるかどうか、ビューの変換を読み取って確認することができます。 (x軸の場合は倍率1、y軸の場合は-1のスケール変換)しかし、多くの変換がビューに適用される可能性があります。だから、あなたは "純粋な"フリップ変換を取得していない可能性があります。そして、その日の終わりには、あなたが「フリップ」したものに依存します。フリップフロップ180°の回転ですか? (実際の問​​題は何ですか?)

しかし、最も確かな方法は、変換を取得してポイントを変換するように見えることです。結果はあなたにヒントを与え、何が行われたのかを示します。 y座標の符号が変化するが、x座標の値が一定のままであれば、それはフリップのように見える。 scale X

aTransformObj.b表す:私は言うと同様

aTransformObj.a

0

CGAffineTransformがそれを検出するための特性を有する(最初のビューで)skew Y

aTransformObj.cを表します。 skew X

aTransformObj.dscale 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の場合、それは垂直に反転されます。

+0

これは正しくありません。 「d」成分は単に行列の[2,2]である。これは-180度の回転でも-1です。さらに、フリップとズームがある場合、.dは-1ではなく、別の負の値です。私の答えで言及したように、あなたがそれ以上の変換をしなければ、この仮定は正しいだけです。 –

+0

でも負の値で確認できます!値が負の場合は反転します。あなたには正しいと思われませんか? – amorbytes

+0

これは回転やパンなので、私はそうは思わない。私は、変換の連鎖の中で単一の変換を確認できるとは思わない。これは、1回のフリップ変換がある場合にのみ機能します。 –

関連する問題