private void drawFace(final Canvas canvas,final Bitmap view,final int top,final int left,final int centerX,final int centerY,final float scale,final float rotation){
  if (mCamera == null) {
    mCamera=new Camera();
  }
  mCamera.save();
  mCamera.translate(0,0,centerY);
  mCamera.rotateX(rotation);
  mCamera.translate(0,0,-centerY);
  if (mMatrix == null) {
    mMatrix=new Matrix();
  }
  mCamera.getMatrix(mMatrix);
  mCamera.restore();
  mMatrix.preTranslate(-centerX,-centerY);
  mMatrix.postScale(scale,scale);
  mMatrix.postTranslate(left + centerX,top + centerY);
  if (mPaint == null) {
    mPaint=new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setFilterBitmap(true);
  }
  if (mLightEnabled) {
    mPaint.setColorFilter(calculateLight(rotation));
  }
 else {
    mPaint.setAlpha(0xFF - (int)(2 * Math.abs(rotation)));
  }
  canvas.drawBitmap(view,mMatrix,mPaint);
}

private void drawFace ( final Canvas canvas , final Bitmap view , final int top , final int left , final int centerX , final int centerY , final float scale , final float rotation ) { if ( mCamera == null ) { mCamera = new Camera ( ) ; } mCamera . save ( ) ; mCamera . translate ( 0 , 0 , centerY ) ; mCamera . rotateX ( rotation ) ; mCamera . translate ( 0 , 0 , - centerY ) ; if ( mMatrix == null ) { mMatrix = new Matrix ( ) ; } mCamera . getMatrix ( mMatrix ) ; mCamera . restore ( ) ; mMatrix . preTranslate ( - centerX , - centerY ) ; mMatrix . postScale ( scale , scale ) ; mMatrix . postTranslate ( left + centerX , top + centerY ) ; if ( mPaint == null ) { mPaint = new Paint ( ) ; mPaint . setAntiAlias ( true ) ; mPaint . setFilterBitmap ( true ) ; } if ( mLightEnabled ) { mPaint . setColorFilter ( calculateLight ( rotation ) ) ; } else { mPaint . setAlpha ( 0xFF - ( int ) ( 2 * Math . abs ( rotation ) ) ) ; } canvas . drawBitmap ( view , mMatrix , mPaint ) ; }
draws a face of the 3d block
