0

我正在使用本教程: http: //mobile.tutsplus.com/tutorials/android/android-sdk-creating-a-rotating-dialer/它为我提供了一个基于图像视图的旋转拨号器。但是我试图通过添加功能来扩展它。但是,为了添加此功能,我需要获取当前单击的位置。但是,由于它使用旋转矩阵来旋转图像视图,所以我无法获得一个单一的位置来分析用户点击的位置。有没有办法将旋转矩阵中的 9 个值压缩成一个变量来指示用户触摸的位置?

4

1 回答 1

0

这更像是一个计算机图形问题,而不是一个 Android 问题。使用齐次坐标,围绕原点的顺时针旋转将表示为(我在这里使用 Octave / MATLAB 表示法来表达这一点):

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

假设矩阵只是围绕原点进行旋转,您可以调用java.lang.Math.acos并传入返回的数组中的第一个值Matrix.getValues以获取您的 theta。该值以弧度为单位,因此如果您需要度数,则需要对其进行转换

OTOH,根据您在做什么,您可能只想调用Matrix.invert以获得逆并将包含触摸坐标的点与该逆相乘Matrix以“撤消”转换。

于 2012-06-22T15:39:03.757 回答