Ich mache einige Multitouch-Unterstützung, die 2 Finger erlauben, Fotos zu drehen. Es gibt vier Punkte: 2 für vorherige Finger und 2 für aktuelle Fingerpositionen.Wie finde ich den Winkel zwischen 2 Punktpaaren?
Ich berechnete einen neuen Punkt durch Subtraktion der 2 vorherigen Finger, und der zweite neue Punkt wurde berechnet, indem die anderen 2 aktuellen Finger subtrahiert wurden.
Dann berechne ich die Winkel wie folgt aus:
radian1 = atan (p1.y/P1.x); radian2 = atan (p2.y/p2.x);
Ich subtrahiere radian2 und radian1, um den endgültigen Winkel zu erhalten.
Das Problem ist, dass ich das Bild schön drehen kann, aber irgendwann, wenn ich zu einer bestimmten Position rotiere, wurde das Foto z. ein Foto in 270 angenommen, aber es drehte und erschien in 90 Grad.
Dies ist Javascript ich nach der Antwort unten geschrieben haben:
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);
Sucht ok
. aber es ist irgendwie langsam, wenn ich versuche, ein Bild zu drehen
Werfen Sie einen Blick auf diesen Wikipedia-Link, der Ihnen auf jeden Fall helfen wird. http://en.wikipedia.org/wiki/Rotation_(mathematik) – Surya