Как повернуть холст в определенной точке с помощью android.graphics.Camera.rotateX (угол)

я пытаюсь использовать камеру (android.graphics.Camera, а не аппаратную камеру), чтобы повернуть холст видов вокруг определенной точки, в данном случае середины холста.

В dispatchDraw (холст холста) - для краткости я опускаю все неважные части.

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

 canvas.concat( cameraMatrix );

Холст вращается, но всегда из верхнего левого угла.

ПРИМЕЧАНИЕ:Поскольку холст был сконструирован таким образом, чтобы он был больше, чем область отображения, мне также нужно преобразовать конечный результат так, чтобы он был центрирован на дисплее, я могу сделать это либо с помощью

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

, либо

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

Оба правильно центрируют холст в display, но я не могу заставить точку вращения быть центром для вызова camera.rotateZ (angle), пробовал использовать методы в образце 3D Android, но, хотя они, похоже, работают для оси X / Y, они не Кажется, что t влияет на ось Z

Любая помощь приветствуется, документы не совсем подробные.

6
задан Idistic 7 July 2011 в 01:56
поделиться