【问题标题】:Translate and rotate matrix via old matrix values通过旧矩阵值平移和旋转矩阵
【发布时间】:2014-08-24 13:45:00
【问题描述】:

我正在尝试使用以下代码旋转和翻译我的位图(我尝试将其设为纯英文):

playerX = playerValues[Matrix.MTRANS_X];
playerY = playerValues[Matrix.MTRANS_Y];

if (fingerx1 > playerX) {
    xspeed = 1;

}
if (fingerx1 < playerX) {
    xspeed = -1;
}
if (fingery1 < playerY) {
    yspeed = -1;
}
if (fingery1 > playerY) {
    yspeed = 1;
}

//playerX and playerY are checked in Log.d, returns correct values

playerMatrix.setRotate(rotation, bitmap.getWidth()/2, bitmap.getHeight()/2);
playerX += xspeed;
playerY += yspeed;
playerValues[Matrix.MTRANS_X] = playerX;
playerValues[Matrix.MTRANS_Y] = playerY;
playerMatrix.setValues(playerValues);

这不起作用 :P 它在开始和当前 x 和 y 值之间来回闪烁。谁能告诉我做这个翻译的正确方法是什么?

(单独旋转也可以)

【问题讨论】:

  • 我认为它与旋转时移动的点以及手动翻译的点有关......或者我完全关闭了。我很想听到答案:)

标签: java android matrix rotation translate-animation


【解决方案1】:

使用 Matrix.setXXX() 将替换之前的矩阵变换。代替 setValues,您可以使用:

playerMatrix.postRotate(rotation, bitmap.getWidth()/2, bitmap.getHeight()/2);
playerX += xspeed;
playerY += yspeed;
playerValues[Matrix.MTRANS_X] = playerX;
playerValues[Matrix.MTRANS_Y] = playerY;
playerMatrix.postTranslate(playerX, playerY);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2011-10-14
    • 2019-02-08
    相关资源
    最近更新 更多