java - 安卓旋转矩阵

标签 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?我需要在此区域设置圆心,但如何设置?
谢谢。

最佳答案

使用setRotate,而不是preRotate:

  • setRotate 将矩阵初始化为旋转矩阵。
  • preRotate 将当前矩阵乘以一个旋转矩阵 M' = M×R

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

记住矩阵乘法不可交换。

关于java - 安卓旋转矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2767407/

相关文章:

android - 将 C++ 静态库与 android ndk 链接时出错(错误 : file format not recognized)

android - 改造@Url 不会覆盖 BaseUrl

java - 为什么对于大多数基于散列的结构,除了像 ThreadLocal 之类的结构,Java 的语言设计者更喜欢链接而不是开放寻址?

android - 无法以编程方式在android中发送带有多个附件的电子邮件

android - 在 Android Studio 中安装 ActionBarSherlock 4.4

java - 如何在java中重新创建单例类

java - Android 添加操作按钮

java - 使用 Android Maps API V2 的 Android 应用程序拒绝启动

Java 8 LocalDateTime - 如何在字符串转换中保持 .000 毫秒

java - 我的 Java 应用程序的这个对象模型可以改进吗?