I punti di rotazione intorno a un punto centrale nello spazio 2D. I punti sono il punto centrale, la vecchia posizione del mouse e la nuova posizione del mouse. La mia funzione di rotazione funziona bene e posso calcolare perfettamente l'angolo. Ma voglio calcolare un angolo negativo se l'utente sta muovendo il mouse in una direzione che dovrebbe essere interpretata in senso antiorario.Recupera un angolo positivo o negativo da 3 punti
Ad esempio, spostando il mouse verso destra (asse x positivo) dovrebbe ruotare in senso orario se si è sopra (meno del) valore y del punto centrale, ma dovrebbe ruotare in senso antiorario se si è effettivamente al di sotto (maggiore di) il valore y del punto centrale.
Ecco quello che ho:
PointF centerPoint;
PointF oldPoint;
PointF newPoint;
double Xc = centerPoint.X;
double Yc = centerPoint.Y;
double Xb = oldPoint.X;
double Yb = oldPoint.Y;
double Xa = newPoint.X;
double Ya = newPoint.Y;
double c2 = (Math.Pow(Xb - Xa, 2) + Math.Pow(Yb - Ya, 2));
double a2 = (Math.Pow(Xb - Xc, 2) + Math.Pow(Yb - Yc, 2));
double b2 = (Math.Pow(Xa - Xc, 2) + Math.Pow(Ya - Yc, 2));
double a = Math.Sqrt(a2);
double b = Math.Sqrt(b2);
double val = (a2 + b2 - c2)/(2 * a * b);
double angle = Math.Acos(val);
Così ho bisogno di un modo per rendere angolo negativo, quando ha bisogno di essere, in modo che i punti di ruotare in senso orario o antiorario per seguire la posizione del mouse.
Sembra funzionare. Va in senso antiorario quando è previsto. –