Android 从RotationMatrix.getValues()获取奇异变量或角度旋转

Android 从RotationMatrix.getValues()获取奇异变量或角度旋转,android,graphics,matrix,rotation,rotational-matrices,Android,Graphics,Matrix,Rotation,Rotational Matrices,我正在使用这个教程:它给了我一个基于图像视图的旋转拨号器。然而,我试图通过添加功能来扩展它。但是,为了添加此功能,我需要获取当前单击的位置。但是,由于它使用旋转矩阵来旋转imageview,因此我无法获得单个位置来分析用户单击的位置。有没有办法将旋转矩阵中的9个值压缩成一个变量来指示用户触摸的位置 这与其说是安卓系统的问题,不如说是计算机图形学的问题。使用,围绕原点的顺时针旋转将表示为(我在这里使用倍频程/MATLAB表示法来表示): 假设矩阵只是围绕原点旋转,您可以调用java.lang.Ma

我正在使用这个教程:它给了我一个基于图像视图的旋转拨号器。然而,我试图通过添加功能来扩展它。但是,为了添加此功能,我需要获取当前单击的位置。但是,由于它使用旋转矩阵来旋转imageview,因此我无法获得单个位置来分析用户单击的位置。有没有办法将旋转矩阵中的9个值压缩成一个变量来指示用户触摸的位置

这与其说是安卓系统的问题,不如说是计算机图形学的问题。使用,围绕原点的顺时针旋转将表示为(我在这里使用倍频程/MATLAB表示法来表示):

假设矩阵只是围绕原点旋转,您可以调用
java.lang.Math.acos
并传入由
matrix.getValues
返回的数组中的第一个值以获得θ。该值以弧度为单位,因此如果需要度,则需要使用它

OTOH,根据您所做的操作,您可能只想调用
矩阵。反转
以获得逆坐标,并将包含触摸坐标的点乘以该逆坐标
矩阵
,以“撤消”变换

rotationMatrix = [ cos(theta) sin(theta) 0; -sin(theta) cos(theta) 0; 0 0 1 ]