Tôi đang xoay các điểm quanh điểm trung tâm trong không gian 2D. Các điểm là điểm trung tâm, vị trí chuột cũ và vị trí chuột mới. Chức năng xoay của tôi hoạt động tốt và tôi có thể tính toán góc một cách hoàn hảo. Nhưng tôi muốn tính toán góc âm nếu người dùng di chuyển chuột theo hướng mà nên được hiểu là ngược chiều kim đồng hồ. Ví dụ, di chuyển chuột về phía bên phải (trục x dương) nên xoay theo chiều kim đồng hồ nếu bạn ở trên (nhỏ hơn) giá trị y của điểm giữa, nhưng nó sẽ xoay ngược chiều kim đồng hồ nếu bạn thực sự dưới đây (lớn hơn) giá trị y của điểm trung tâm.Lấy một góc dương hoặc âm từ 3 điểm
Dưới đây là những gì tôi có:
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);
Vì vậy, tôi cần một cách để làm cho góc tiêu cực khi nó cần phải được, vì vậy những điểm xoay chiều kim đồng hồ hoặc ngược chiều kim đồng hồ để theo dõi vị trí chuột.
Điều này dường như hoạt động. Nó đi ngược chiều kim đồng hồ khi nó được cho là. –