У меня есть матрица. Эта матрица представляет координаты X и Y массива. Например,
float[] src = {7,1,7,2,7,3,7,4};
Я должен вращаться, это координирует до 90 градусов. Я использую android.graphics.Matrix
как это:
float[] src = {7,1,7,2,7,3,7,4};
float[] dist = new float[8];
Matrix matrix = new Matrix();
matrix.preRotate(90.0f);
matrix.mapPoints(dist,src);
после операции вращаются, у меня есть массив со следующими значениями
-1.0 7.0 -2.0 7.0 -3.0 7.0 -4.0 7.0
Хорошо для области с 360 градусами. И как действительно вращаются в области от 0 до 90? Я должен создать центр круга в этой области, но как?
Спасибо.
Используйте setRotate
, а не preRotate
:
setRotate
инициализирует матрицу как матрица вращения. preRotate
умножает текущую матрицу на матрицу вращения M '=
M x R
Поскольку вы вызвали конструктор по умолчанию, вы начинаете с единичной матрицы.
Помните, что умножение матриц не коммутативно.
Я не знаком с android, но если вы переводите после поворота, вы можете получить вращение вокруг определенной точки. Найдите, куда будет повернута ваша центральная точка, затем переведите ее в исходное положение.