Trong OpenGL, tôi đang cố xoay máy ảnh quanh một điểm, với máy ảnh là khoảng cách r từ điểm và quay về điểm khi nó quay. Nói cách khác, tôi muốn máy ảnh di chuyển dọc theo chu vi của một vòng tròn tại bán kính r từ tâm, với camera hướng về phía trung tâm tại bất kỳ điểm nào dọc theo chu vi.OpenGL xoay máy ảnh quanh một điểm
Cho phép nói rằng trong không gian 3d, tâm của vòng tròn là (3, 0, 3);
Tôi đã thử:
// move to center of circle
glTranslatef(-3, 0, -3)
// move a distance away from the circle
glTranslatef(0, 0, r);
// rotate along the y "up" axis
glRotatef(CameraAngle, 0, 1, 0);
nơi CameraAngle là độ được chuyển xung quanh vòng tròn.
Kết quả cuối cùng của tôi là máy ảnh vẫn đang quay dọc theo nguồn gốc, chứ không phải tâm của vòng tròn. Bất cứ ai có thể giúp tôi khắc phục vấn đề này? Cảm ơn!
Tôi đã thực hiện điều đó bằng cách sử dụng "nguyên mẫu quaternions" (phương pháp đơn giản trong lớp Vector của tôi xoay vòng một vector khác). trông linh hoạt hơn =) – shybovycha