我有以下视图,其中我使用在向上平移姿势或向下的方向,以正或负旋转它一个矩形:旋转使用UIPanGestureRecognizer
我想知道,是有一个数学公式可以准确地转换旋转的数量,因此时间是正确的,以便让用户在旋转时将手指放在视图上?例如,如果平移翻译回到1,旋转它的适当数量是多少?
我有以下视图,其中我使用在向上平移姿势或向下的方向,以正或负旋转它一个矩形:旋转使用UIPanGestureRecognizer
我想知道,是有一个数学公式可以准确地转换旋转的数量,因此时间是正确的,以便让用户在旋转时将手指放在视图上?例如,如果平移翻译回到1,旋转它的适当数量是多少?
答案是角度是panAmount.y/rectangleWidth。
这里是证明:https://math.stackexchange.com/questions/322694/angle-of-rotated-line-segment
有您需要提供给一个有意义的答案几个细节:
为了简单起见,我将假定视图是围绕其中心旋转的,我将使用从视图右侧开始的平移作为示例,旋转不超过± 90°。这里有两个选项:
运动向上和向下线性地转换为旋转角度,即,一个给定的距离的盘旋转视图相同的量,无论在哪里锅启动。在这种情况下,您需要确定平底锅的顶部和底部极限。他们可能是超级观点的界限。无论如何,您要将沿Y方向行进的距离转换为介于-1和1之间的值,其中-1表示下限,1表示上限。像2 *(dy/superview.bounds.size.height - 0.5)。将其乘以π/ 2(math.h中的M_PI_2)以从[-1,1]范围缩放至[-π/ 2,π/ 2]范围,并且您已经获得了从视图在手势开始处的旋转。
视图追踪触摸,以便其右边始终“指向”触摸。在这种情况下,平移不是非常有用,因为你只需要在超视图中的触摸位置,而不是行驶的距离。计算dx和dy作为从视图中心到触摸位置的x和y坐标的差异。然后计算atan2(dy,dx),并获得视图的绝对旋转角度。
我希望这会让你走上正确的轨道。
谢谢。需要一点时间来消化! – 2013-03-05 02:43:32