на сенсорном экране есть жест pinch - ставим два пальца и сводим их вместе/разводим в стороны. Можем вычислить координаты этих пальцев.
Для жеста начало координат в левом верхнем углу
Изображение нарисовано через opengl, координаты в нижнем левом углу (вроде удалось перенастроить на левый верхний угол).
Задача - масштабировать относительно центральной точки для pinch. Пока получается только относительно начала координат.
Как я понимаю алгоритм:
1)в качестве целевой точки берем центральную точку pinch, но в координатах opengl - получим точку
2)от точки1 отнимаем центральную точку pinch в координатах экрана (точка2) - точка3 (смещаем изображение в начало координат)
3)масштабируем изображение
4)к точке3 прибавляем точку2 (возвращаем масштабированное изображение на место)
В итоге наилучший результат, которого достиг - изображение масштабируется относительно нужной точки, но таким образом, как будто эта точка была взята на немасштабированном изображении.Добавлено (05.08.2013, 16:51)
---------------------------------------------
В итоге выяснилось, что при перерисовке перемножаю матрицы преобразования изображения и получаю результирующую матрицу каждый раз заново. Поэтому когда устанавливаю новую точку для масштабирования, то и все предыдущие преобразования сбиваются.
Соответственно проблема в том, как учитывать очередное действие масштабирования относительно уже сделанный преобразований
Добавлено (08.08.2013, 17:11)
---------------------------------------------
решил. Проблема была в неправильном порядке пермножения матриц