Android旋转矩阵

时间:2010-05-04 17:15:29

标签: java android

我有矩阵。该矩阵表示阵列x和y坐标。例如

float[] src = {7,1,7,2,7,3,7,4};

我需要将此坐标旋转到90度。 我像这样使用android.graphics.Matrix

    float[] src = {7,1,7,2,7,3,7,4};
    float[] dist = new float[8];
    Matrix matrix = new Matrix();
    matrix.preRotate(90.0f);
    matrix.mapPoints(dist,src);

操作后旋转我有下一个值的数组

-1.0    7.0     -2.0    7.0     -3.0    7.0     -4.0    7.0

适用于360度的区域。 如何在0到90范围内旋转?我需要在这个区域设置圆心,但是怎么样? 感谢。

3 个答案:

答案 0 :(得分:6)

使用setRotate而不是preRotate

setRotate将矩阵初始化为旋转矩阵

preRotate将当前矩阵乘以旋转矩阵M` = M x R

由于您使用单位矩阵调用默认构造函数。

记住矩阵乘法不是可交换的。

答案 1 :(得分:0)

我不熟悉android,但是如果你在旋转后进行翻译,你可以围绕特定点进行旋转。找到中心点旋转到的位置,然后将其转换回原始位置。

答案 2 :(得分:0)

使用Matrix preRotate(float degrees,float px,float py)方法(preRotate documenation)

此preRoate(度)id等同于preRotate(度,0,0)