Entscheidung, ob CW oder ACW Drehung von Gestik, 3 geordnete Abtastpunkte
Benutzer beginnt, von A bis C und bewegt sich aber (via) B (Abtastpunkte auf dem Bildschirm) in unity3d. An diesem Punkt habe ich den Winkel (Theta) berechnet, der in beiden Bildern fast 45 Grad (fast) beträgt. Problem ist, ich wollte schließen, dass im linken Bild Benutzer CounterClockWise Bewegung beabsichtigt und im rechten Bild Benutzer im Uhrzeigersinn Rotation. ahh, es ist wirklich kompliziert, als ich mir vorgestellt habe, bitte schlagen Sie vor.
derzeit Einheitscode ist wie
protected void calcAngles(){
v1 = go2.position - go1.position;
v2 = go3.position - go1.position;
v3 = go3.position - go2.position;
float angle = Vector3.Angle (v2, v1);
Debug.Log ("angle:" + angle.ToString());
//float atan = Mathf.Atan2 (Vector3.Dot (v3, Vector3.Cross (v1, v2)), Vector3.Dot (v1, v2)) * Mathf.Rad2Deg;
//Debug.Log ("atan2:" + atan.ToString());
}
irgendwelche Ideen.? Psudo-Code. Vielen Dank im Voraus. Prost, lala
Wenn Sie keinen Crowd-Simulator erstellen wollen (weil das etwas schwer wird), könnten Sie 2 Helfer-Transformationen als Kind von A verwenden Sie sind auf 0,0,0 Position im lokalen Raum. Einer verwendet ** LookAt (B) ** ein anderer verwendet ** LookAt (C) **. Dann könntest du einfach den Unterschied zwischen ihren Y-Euler-Winkeln nehmen. Dies wird Ihnen sagen, wenn Sie im oder gegen den Uhrzeigersinn drehen müssen. –
"Crowd Simulator" Worauf beziehen Sie sich, Nika? – Fattie
, um die Richtung von rot nach grün zu bekommen, ist trivial. es ist einfach rot minus grün. LookAt ist nicht relevant. das wird verwendet, um * eine 'Transformation' zu drehen. Um einfach die Richtung zu erhalten, subtrahieren Sie einfach die Positionen und vielleicht .normalize – Fattie