在 android 上实现绕 Y 轴旋转
作者: 刘鹏
日期: 2010-03-12
本文介绍了实现绕 Y 轴旋转的方法。

简介

在做很多 3-D-like 效果时需要用到绕 Y 轴旋转。

原理

a 3x3 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);


}


效果图如下所示:

绕Y轴旋转
绕Y轴旋转