(Trong ba chiều) Tôi đang tìm cách tính toán góc đã ký giữa hai véc tơ, không có thông tin nào khác ngoài các vectơ đó. Như được trả lời trong this question, nó đủ đơn giản để tính toán góc đã ký cho bình thường của mặt phẳng mà các vectơ vuông góc với nhau. Nhưng tôi không thể tìm ra cách để làm điều này nếu không có giá trị đó. Rõ ràng rằng sản phẩm chéo của hai vectơ tạo ra một bình thường như vậy, nhưng tôi đã chạy vào mâu thuẫn sau đây bằng cách sử dụng câu trả lời ở trên:Góc được ký giữa hai véc-tơ không có mặt phẳng tham chiếu
signed_angle(x_dir, y_dir) == 90
signed_angle(y_dir, x_dir) == 90
điều tôi chờ đợi kết quả thứ hai là âm tính. Điều này là do thực tế là sản phẩm chéo cross(x_dir, y_dir)
là theo hướng ngược lại của cross(y_dir, x_dir)
, do psuedocode sau với đầu vào bình thường:
signed_angle(Va, Vb)
magnitude = acos(dot(Va, Vb))
axis = cross(Va, Vb)
dir = dot(Vb, cross(axis, Va))
if dir < 0 then
magnitude = -magnitude
endif
return magnitude
Tôi không tin dir bao giờ sẽ là tiêu cực trên.
Tôi đã gặp sự cố tương tự với giải pháp atan2 được đề xuất.
Tôi đang tìm kiếm một cách để thực hiện:
signed_angle(a, b) == -signed_angle(b, a)
không phải là điều này: http://www.jtaylor1142001.net/calcjat/Solutions/VDotProduct/VDPTheta3D.htm những gì bạn đang tìm kiếm? – Jack
Liên kết trong nhận xét trên không hoạt động – ephere