Получить значение поворота от матрицы в android?



Как получить значение поворота из переведенной / масштабированной / повернутой матрицы?

Matrix matrix = new Matrix();
matrix.postScale(...);
matrix.postTranslate(...);
matrix.postRotate(...);
...

Теперь я не знаю, что rotate это было, но мне нужно сделать это. Как это сделать?

110   2  

2 ответов:

К сожалению, нет определенного способа извлечь информацию о вращении (я предположу, что вы ищете число градусов). Лучшее, что вы можете сделать, это извлечь значения матрицы с помощью getValues и использовать формулу преобразования (что-то вроде обсуждается в нижней части этой страницы), чтобы попытаться вычислить угол.

float[] v = new float[9];
matrix.getValues(v);
// translation is simple
float tx = v[Matrix.MTRANS_X];
float ty = v[Matrix.MTRANS_Y];

// calculate real scale
float scalex = values[Matrix.MSCALE_X];
float skewy = values[Matrix.MSKEW_Y];
float rScale = (float) Math.sqrt(scalex * scalex + skewy * skewy);

// calculate the degree of rotation
float rAngle = Math.round(Math.atan2(v[Matrix.MSKEW_X], v[Matrix.MSCALE_X]) * (180 / Math.PI));

Отсюда http://judepereira.com/blog/calculate-the-real-scale-factor-and-the-angle-of-rotation-from-an-android-matrix/

    Ничего не найдено.

Добавить ответ:
Отменить.