在android上实现绕Y轴旋转(转)

原理

a 3×3 affine transformation.

这里我们使用 Android.graphics.Camera 的 rotateY 接口实现绕 Y 轴旋转时矩阵的运算。

实现

基本流程如下所示:

  • Get canvas Matrix m: Matrix m = canvas.getMatrix ();
  • Camera 绕 Y 轴旋转 angle 角度: camera.rotateY (angle);
  • 将 Camera 作用于 m: camera.getMatrix (m);
  • 将矩阵 m 应用于 canvas : canvas.setMatrix (m);
  • 绘制: canvas.drawXXX.

示例代码如下所示:

/* double buffer: mCanvas/mBitmap */
Bitmap mBitmap = Bitmap.createBitmap(50, 50, Bitmap.Config.ARGB_8888);
Canvas mCanvas = new Canvas (mBitmap);

Paint  mPaint = new Paint ();

Camera mCamera = new Camera();

void onDraw(Canvas canvas) {

    mBitmap.eraseColor (0xff000000);
    mCanvas.setBitmap(mBitmap);

    Matrix m = mCanvas.getMatrix ();

    mCamera.save ();
    mCamera.rotateY (angle);
    mCamera.getMatrix (m);
    mCamera.restore ();

    mCanvas.setMatrix (m);

    mCanvas.drawText ("5", x0, y0, mPaint);

    canvas.drawBitmap(mBitmap, x1, y1, mPaint);

}
效果图如下所示:

原文地址:https://www.cnblogs.com/shanzei/p/3131169.html