Android поворачивает матрицу

У меня есть матрица. Эта матрица представляет координаты 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? Я должен создать центр круга в этой области, но как?
Спасибо.

5
задан jitm 4 May 2010 в 17:15
поделиться

2 ответа

Используйте setRotate , а не preRotate :

  • setRotate инициализирует матрицу как матрица вращения.
  • preRotate умножает текущую матрицу на матрицу вращения M '= M x R

Поскольку вы вызвали конструктор по умолчанию, вы начинаете с единичной матрицы.

Помните, что умножение матриц не коммутативно.

6
ответ дан 14 December 2019 в 13:29
поделиться

Я не знаком с android, но если вы переводите после поворота, вы можете получить вращение вокруг определенной точки. Найдите, куда будет повернута ваша центральная точка, затем переведите ее в исходное положение.

0
ответ дан 14 December 2019 в 13:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: