2009-04-24 72 views
6

Tôi muốn xoay một gluSphere xung quanh một điểm cố định theo chuyển động tròn, giống như một hành tinh đi xung quanh mặt trời.OpenGL xoay quanh một vị trí

Tốt nhất nên sử dụng glRotatef hoặc glTranslate? Nếu vậy, tôi nên gọi chúng theo thứ tự nào?

Trả lời

4

Bạn sẽ phải làm một chút của cả hai:

  • Hãy chắc chắn rằng gluSphere được "đối mặt với" những điểm cố định, do đó dịch về phía trước đối với các lĩnh vực với đặt bạn gần gũi hơn với trung tâm của quỹ đạo của nó
  • glTranslatef các gluSphere mong được điểm xung quanh mà bạn muốn nó xoay
  • glRotatef hướng bạn muốn lĩnh vực để quay quanh
  • glTranslatef ngược cũng giống như xa như bạn đã đi về phía trước

Bằng cách đó, lĩnh vực của bạn giữ nguyên khoảng cách từ trung lộ nhưng bị dịch "xung quanh" trong một quỹ đạo đẹp .

+0

Chúc mừng, hãy chú ý! – user64392

-2

glRotatef sẽ nhân ma trận hiện tại với ma trận xoay vòng. Điều này có thể (cho đúng véc tơ) làm những gì bạn đang cố gắng.

glTranslatef sẽ nhân ma trận hiện tại với ma trận dịch, có hiệu quả "di chuyển" đối tượng, không xoay nó, vì vậy nó sẽ không phải là thứ bạn muốn.

+0

Vì vậy, đối với chuyển động tròn, tôi nên sử dụng glRotatef nào để xoay quanh một điểm đặt? – user64392

+0

Tôi nghĩ rằng nó đúng khi nói rằng anh ta cần một trong mỗi - dịch đối tượng ra khỏi nguồn gốc, và sau đó xoay về nguồn gốc. (nơi 'nguồn gốc' là trung tâm mà bạn muốn xoay vòng) –

2

Dịch xa trung tâm và sau đó xoay tất cả các cách

Các vấn đề liên quan