原理

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

}
效果图如下所示:

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

 

相关文章:

  • 2021-10-29
  • 2021-06-22
  • 2022-02-12
  • 2021-12-24
  • 2021-12-11
  • 2021-11-18
  • 2021-12-03
猜你喜欢
  • 2022-12-23
  • 2021-10-14
  • 2021-07-13
  • 2021-09-18
  • 2022-01-31
  • 2022-01-25
  • 2021-12-28
相关资源
相似解决方案