Android Rotate Matrix - PullRequest
       7

Android Rotate Matrix

5 голосов
/ 04 мая 2010

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

Ответы [ 3 ]

6 голосов
/ 04 мая 2010

использовать setRotate, а не preRotate

setRotate инициализирует матрицу как матрицу вращения

preRotate умножает текущую матрицу на матрицу вращения M` = M x R

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

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

0 голосов
/ 27 декабря 2010

Используйте метод Matrix preRotate (градусы с плавающей запятой, float px, float py) (документирование preRotate)

Этот идентификатор preRoate (градусы) эквивалентен preRotate (градусы 0, 0)

0 голосов
/ 04 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...