我正在使用本教程:http://mobile.tutsplus.com/tutorials/android/android-sdk-creating-a-rotating-dialer/这为我提供了一个基于图像视图的旋转拨号器。但是我试图通过添加功能来扩展它。但是,为了添加此功能,我需要获取当前点击的位置。但是,由于它使用rotationMatrix旋转图像视图,因此无法获得单一位置来分析用户点击的位置。有没有办法将旋转矩阵中的9个值压缩成一个变量,指示用户触摸的位置?
答案 0 :(得分:0)
这是一个计算机图形问题,而不是Android问题。使用homogeneous coordinates,关于原点的顺时针旋转将表示为(我在这里使用Octave / MATLAB表示法来表达这一点):
rotationMatrix = [ cos(theta) sin(theta) 0; -sin(theta) cos(theta) 0; 0 0 1 ]
假设矩阵只是围绕原点进行旋转,您可以调用java.lang.Math.acos
并传入Matrix.getValues
返回的数组中的第一个值来获取你的θ。该值以弧度为单位,因此如果您需要度数,则需要convert它。
OTOH,根据您正在做的事情,您可能只想调用Matrix.invert
来获得反转并将包含触摸坐标的点与反Matrix
相乘以“撤消”变换。< / p>