我有矩阵。该矩阵表示阵列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范围内旋转?我需要在这个区域设置圆心,但是怎么样? 感谢。
答案 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)