开发者

Android Rotate Matrix

I have matrix. This matrix represents array x and y coordinates. For example

fl开发者_如何学Pythonoat[] src = {7,1,7,2,7,3,7,4};

I need to rotate this coordinates to 90 degrees. I use android.graphics.Matrix like this:

    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);

after operation rotate I have array with next values

-1.0    7.0     -2.0    7.0     -3.0    7.0     -4.0    7.0

Its is good for area with 360 degrees. And how do rotate in area from 0 to 90? I need set up center of circle in this area but how ?

Thanks.


Use setRotate, not preRotate:

  • setRotate initializes the matrix as a rotation matrix.
  • preRotate multiplies the current matrix by a rotation matrix M' = M x R

Since you called the default constructor your starting with the identity matrix.

Remember matrix multiplication is not commutative.


I'm not familiar with android, but if you translate after you rotate you can get a rotation around a specific point. Find where your center point would be rotated to, then translate it back to it's original position.


Use the Matrix preRotate(float degrees, float px, float py) method (preRotate documenation)

This preRoate(degrees) is equivalent to preRotate(degrees, 0, 0).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜