Я делаю поддержку мультитач, которая позволяет вращать фотографии двумя пальцами. Есть четыре точки: 2 для предыдущих пальцев и 2 для текущих позиций пальцев.
Я вычислил новую точку, вычитая 2 предыдущих пальца, а вторую новую точку вычислил, вычитая 2 других текущих пальца.
Затем я вычисляю угол следующим образом:
радиан1 = атан ( p1.y / p1.x ); радиан2 = атан ( p2.y / p2.x );
Я вычитаю радиан2 и радиан1, чтобы получить окончательный угол.
Проблема в том, что я могу красиво повернуть изображение, но иногда, если я поворачиваю его в определенное положение, фотография переворачивается, например. фотография предполагалась в 270, но она перевернулась и появилась в 90 градусах.
Это javascript, который я написал в соответствии с ответом ниже:
var x1 = this.previousMousePoint.x * this.previousMousePoint2.x + this.previousMousePoint.y * this.previousMousePoint2.y;
var y1 = this.previousMousePoint.x * this.previousMousePoint2.y - this.previousMousePoint.y * this.previousMousePoint2.x;
var x2 = center.x * point.x + center.y * point.y;
var y2 = center.x * point.y - center.y * point.x;
var radian1 = Math.atan(y1 / x1);
var radian2 = Math.atan(y2 / x2);
this.anchor.matrix = this.anchor.matrix.rotate(radian2-radian1, pivot);
Выглядит нормально. но это немного медленно, когда я пытаюсь повернуть изображение