【问题标题】:Android: how do I do the opposite of 'Matrix.mapPoints(float[] points)'?Android:我该如何做与'Matrix.mapPoints(float [] points)'相反的事情?
【发布时间】:2014-10-10 21:20:08
【问题描述】:

如果我有一个点和一个矩阵:

float point[] = new float[]{x,y};
Matrix matrix = new Matrix();

然后调用:

matrix.mapPoints(point);

我怎样才能扭转matrix.mapPoints(point)point 的影响?

这不是我将使用答案的实际应用程序,但对此的答案将满足我的需要。

感谢您的帮助。

【问题讨论】:

    标签: android matrix game-engine


    【解决方案1】:

    如果你不希望yourMatrix 改变

     Matrix inverseCopy = new Matrix();
     if(yourMatrix.invert(inverseCopy)){
          inverseCopy.mapPoints(transformedPoint);
          //Now transformedPoint is reverted to original state.
     }
    

    如果你想改变yourMatrix

     if(yourMatrix.invert(yourMatrix)){
          yourMatrix.mapPoints(transformedPoint);
          //Now transformedPoint is reverted to original state.
     }
    

    如果matrix 不能反转,matrix.invert() 返回false。如果您的matrix 无法反转,则无法将您的点恢复为原始状态。

    【讨论】:

    • 答案的第二部分是错误的,yourMatrix.invert(null) 导致NullPointerException。我们需要传递一个矩阵来存储逆矩阵。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多