Cómo rotar un lienzo en un punto específico usando android.graphics.Camera.rotateX (ángulo)

stoy tratando de usar la cámara (android.graphics.Camera, no la cámara de hardware) para rotar un lienzo de vistas alrededor de un punto específico, en este caso, en el medio del lienzo.

In dispatchDraw (Canvas Canvas): por brevedad, estoy dejando de lado todas las partes no importantes.

camera.save();
   camera.rotateX(0);
   camera.rotateY(0);
   camera.rotateZ(angle);
   camera.getMatrix(cameraMatrix);
 camera.restore(); 

 canvas.concat( cameraMatrix );

El lienzo gira, pero siempre desde la esquina superior izquierda.

NOTA: Debido a que el lienzo se ha construido para que sea más grande que el área de visualización, también necesito traducir el resultado final para que esté centrado en la pantalla, puedo hacer esto con

canvas.translate(xOffset,yOffset) PRIOR to calling the camera methods

cameraMatrix.preTranslate(xOffset,yOffset) AFTER the camera methods

Ambos centran correctamente el lienzo en la pantalla, pero parece que no puedo lograr que el punto de rotación sea el centro de la llamada de camera.rotateZ (ángulo), intenté usar los métodos en la muestra de Android 3D, pero parece que funcionan los ejes X / Y no parecen afectar el eje Z

ualquier ayuda sería apreciada, los documentos no son exactamente detallado

Respuestas a la pregunta(4)

Su respuesta a la pregunta