Получить значение поворота от матрицы в android?
Как получить значение поворота из переведенной / масштабированной / повернутой матрицы?
Matrix matrix = new Matrix();
matrix.postScale(...);
matrix.postTranslate(...);
matrix.postRotate(...);
...
Теперь я не знаю, что rotate это было, но мне нужно сделать это. Как это сделать?
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));
Comments