在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/archive/2013/06/10/3131169.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值