В настоящее время я работаю с матрицами преобразования для игрового разработчика.Одна особенность, которую мы имеем, - это базовое масштабирование, это делается, когда пользователь зажимает экран.Теперь мы знаем, что для масштабирования / увеличения точки нам нужно использовать среднюю точку между двумя пальцами пользователя, и я реализовал эту точку.
Порядок преобразования:
Matrix.translateM(matrix, 0, xPivot + xTranslate, yPivot + yTranslate, 0f)
Matrix.scaleM(matrix, 0, scale, scale, 1f)
Matrix.translateM(matrix, 0, -xPivot, -yPivot, 0f)
Проблема в том, что пользователь масштабирует в другой части объекта, в то время как недавно выполнил другое масштабирование, или, как говорится в заголовке, масштабируется в другой точке поворота.Моя текущая реализация дрожит и телепортирует объект на определенном расстоянии и выполняет масштабирование в этой области.Итак,
- Как масштабировать во второй точке разворота?
- мне нужно иметь ссылку на предыдущую точку вращения?
- Как две точки вращения связаны друг с другом и как преобразовать их в матричное преобразование.