上方向または下方向にパンジェスチャを使用して正または負に回転している次のビューがあります。
疑問に思っているのですが、回転する量にパンされた量を正確に変換して、回転中にユーザーがビューに指を置いたままになるタイミングが正しいようにするための数式はありますか?たとえば、パンの移動が1に戻った場合、回転させるのに適切な量はどれくらいですか。
上方向または下方向にパンジェスチャを使用して正または負に回転している次のビューがあります。
疑問に思っているのですが、回転する量にパンされた量を正確に変換して、回転中にユーザーがビューに指を置いたままになるタイミングが正しいようにするための数式はありますか?たとえば、パンの移動が1に戻った場合、回転させるのに適切な量はどれくらいですか。
意味のある答えを出すために提供する必要のある詳細がいくつかあります。
わかりやすくするために、ビューが中心を中心に回転していると仮定します。例として、ビューの右側から開始し、回転が±90°を超えないパンを使用します。2つのオプションがあります。
上下の動きは回転角に直線的に変換されます。つまり、特定の距離のパンは、パンの開始位置に関係なく、ビューを同じ量だけ回転させます。その場合、鍋の上限と下限を決める必要があります。それらはスーパービューの境界である可能性があります。とにかく、Y方向に移動した距離を-1から1の間の値に変換する必要があります。ここで、-1は下限を表し、1は上限を表します。2 *(dy / superview.bounds.size.height-0.5)のようなもの。これにπ/2(math.hのM_PI_2)を掛けて、範囲[-1、1]から範囲[-π/ 2、π/ 2]までスケーリングすると、加算/減算する角度が得られます。ジェスチャの開始時のビューの回転。
ビューはタッチを追跡するため、その右端は常にタッチに「向けられ」ます。この場合、移動距離ではなく、スーパービュー内のタッチの位置のみが必要なため、パンはそれほど便利ではありません。ビューの中心からタッチ位置までのx座標とy座標の差としてdxとdyを計算します。次に、atan2(dy、dx)を計算すると、ビューの絶対回転角が得られます。
これがあなたを正しい軌道に乗せることを願っています。
答えは、角度がpanAmount.y/rectangleWidthになるということです。
ここに証拠があります:https ://math.stackexchange.com/questions/322694/angle-of-rotated-line-segment