Tôi hiện đang cố gắng sử dụng OpenGL (Với SDL) để vẽ hình lập phương đến vị trí mà tôi nhấp chuột trái vào màn hình và sau đó chuyển đến chỉ vào vị trí trên màn hình nơi tôi nhấp chuột phải.Tìm các góc cho trục X, Y và Z trong chế độ 3D - OpenGL/C++
Tôi có thể vẽ thành công khối lập phương tại vị trí mong muốn của mình bằng cách sử dụng gluUnproject - Có nghĩa là tôi đã biết tọa độ của khối lập phương của tôi.
Tuy nhiên, tôi không biết cách tính tất cả các góc cần thiết để tạo điểm lập phương của tôi tại vị trí mới.
Tất nhiên tôi vẫn đang sử dụng gluUnproject để tìm tọa độ của nhấp chuột phải, nhưng tôi chỉ biết cách xoay quanh trục Z khi sử dụng đồ họa 2D.
Ví dụ trước, nếu tôi muốn xoay một góc xoay quanh trục Z (Tất nhiên, đây sẽ là chế độ xem từ trên xuống khi trục Z vẫn "đi qua" màn hình) trong 2D, tôi sẽ làm một cái gì đó như :
angle = atan2(mouseCoordsY - quadPosY, mouseCoordsX - quadPosX);
glRotatef(angle*180/PI, 0, 0, 1);
Câu hỏi của tôi là, tôi sẽ thực hiện điều này bằng 3D như thế nào?
- Tôi có cần tính toán các góc cho mỗi trục như tôi đã làm ở trên không?
- Nếu vậy, làm cách nào để tính góc quay xung quanh trục X và trục Y?
- Nếu không, tôi nên sử dụng phương pháp nào để đạt được kết quả mong muốn?
Bất kỳ trợ giúp nào được đánh giá cao.
Làm thế nào để bạn xác định z-tọa đại diện bởi mỗi click chuột? Nếu bạn chỉ cần đặt cả 0, thì hình học 2D đủ, và tôi đoán đó không phải là ý định của bạn. –
Một cú nhấp chuột trong không gian 3d sẽ xác định một tia, không phải là một điểm. Tôi tò mò muốn biết làm thế nào bạn đạt được vị trí khối lập phương ở nơi đầu tiên. – tafa
@Marcelo Cantos: Tha thứ cho tôi nếu tôi hiểu sai câu hỏi của bạn, nhưng tôi mới làm quen với điều này và vì vậy mặc dù tôi nghĩ rằng tôi biết những gì bạn đang yêu cầu, tôi vẫn có thể có ý tưởng sai.Về cơ bản nếu khối lập phương của tôi là (100, 200, 300) và tôi nhấp vào (400, 500, 600), tôi cần phải tìm các góc mà tại đó tôi cần phải xoay khối lập phương, để làm cho nó nhìn vào tập thứ hai của tọa độ. –