【发布时间】:2014-07-09 22:59:24
【问题描述】:
我认为这更像是一个逻辑问题而不是 Java 问题,抱歉。
我的意图很简单,我希望船用矩阵移动和旋转,位图 ship1 是旋转的中心轴。代码工作得很好,只是枢轴偏离了一个奇怪的偏移量。 (底部链接的难题图片)
0 的默认值旋转有效,但所有其他值似乎都从中心滑开,180 是离中心最远的地方。
centerX = playerValues[Matrix.MTRANS_X] + ship1.getWidth()/2;
centerY = playerValues[Matrix.MTRANS_Y] + ship1.getHeight()/2;
newRotation = ((float) Math.toDegrees(Math.atan2(fingery1 - centerY, fingerx1 - centerX)));
matrix.postRotate((newRotation - prevRotation), centerX, centerY);
prevRotation = newRotation;
if (fingerx1 > playerX) {
xspeed = 1;
} else
if (fingerx1 < playerX) {
xspeed = 0;
} else
if (fingery1 > playerY) {
yspeed = 1;
} else
if (fingery1 < playerY) {
yspeed = 0;
}
matrix.postTranslate(xspeed, yspeed);
matrix.getValues(playerValues);
我试图画出位图在不同角度的关系。 (蓝点是我打算旋转位图的地方,指向右边的箭头是唯一正确的)。
http://i.stack.imgur.com/2Yw76.png
如果您发现任何错误或任何反馈有帮助,请告诉我!我只需要第二双眼睛看看这个,因为我的很快就会爆炸。
【问题讨论】:
标签: java android matrix bitmap rotation