Tôi biết có rất nhiều câu hỏi về xoay vòng 3D đã được trả lời ở đây nhưng tất cả chúng dường như đối phó với ma trận quay và quaternions trong OpenGL (và tôi không thực sự quan tâm nếu tôi có khóa gimbal)). Tôi cần phải có được tọa độ 3d EX: (x, y, z) của một điểm mà luôn luôn phải là cùng một khoảng cách, tôi sẽ gọi nó là "d" cho bây giờ, từ nguồn gốc. Thông tin duy nhất tôi có làm đầu vào là deltax và deltay của chuột trên màn hình. Cho đến nay đây là những gì tôi đã cố gắng:xoay vòng vòng quanh nguồn gốc
Đầu tiên:
thetaxz+=(omousex-mouseX)/(width);
thetaxy+=(omousey-mouseY)/(height);
(thetaxy là góc theo radian trên x, trục y và thetaxz trên x, z trục) (Tôi hạn chế cả hai góc độ do đó nếu họ là nhỏ hơn hoặc bằng 0 họ bằng 2 * PI)
thứ hai:
pointX=cos(thetaxz)*d;
pointY=sin(thetaxy)*d;
(pointX là của điểm tọa độ x và nhọn là y)
Thứ ba:
if(thetaxz)<PI){
pointZ=sqrt(sq(d)-sq(eyeX/d)-sq(eyeY/d));
}else{
pointZ=-sqrt(abs(sq(d)-sq(eyeX/d)-sq(eyeY/d)));
}
(vuông() là một hàm vuông và abs() là một chức năng giá trị tuyệt đối) (pointZ nên là của điểm z phối hợp và nó là ngoại trừ tại qua giữa z dương bán cầu và bán cầu z âm. Khi nó tiếp cận các cạnh điểm được kéo dài hơn khoảng cách mà nó luôn luôn được cho là ở trong x và y và dường như ngẫu nhiên khoảng 0,1-0,2 radians của thetaxz tọa độ z trở thành NAN hoặc undefined)
Tôi có suy nghĩ về điều này một thời gian, và trung thực tôi gặp khó khăn trong đầu của tôi xung quanh khái niệm quaternions và ma trận quay tuy nhiên nếu bạn có thể chỉ cho tôi cách sử dụng chúng để tạo ra tọa độ thực tế tôi sẽ rất vui khi học. Tôi vẫn thích nếu tôi chỉ có thể sử dụng lượng giác trong một vài trục. Cảm ơn bạn trước cho bất kỳ sự giúp đỡ và nếu bạn cần thêm thông tin xin vui lòng chỉ cần hỏi.
Ý tưởng gợi ý/phút cuối: Tôi nghĩ rằng nó có thể liên quan đến vị trí z ảnh hưởng đến vị trí x và y nhưng tôi không chắc chắn.
EDIT: Tôi vẽ một sơ đồ:
Tôi không phải 100% đây chính là điều bạn muốn, nhưng tôi nghĩ bạn có thể muốn xem [gluUnProject] (http://nehe.gamedev.net/article/using_gluunproject/16013 /) để chuyển đổi tọa độ 2D thành 3D dựa trên ma trận máy ảnh. Làm điều này cho một điểm trên máy bay gần và xa máy bay, và sau đó sử dụng một số trig để tìm điểm dọc theo dòng kết quả của bạn đó là khoảng cách mong muốn từ nguồn gốc. Lưu ý rằng có 0, 1 hoặc 2 giải pháp cho vấn đề này mặc dù, tùy thuộc vào dòng – Hybrid
Bạn có thể nêu rõ vấn đề ban đầu một chút rõ ràng hơn, có lẽ với một hình ảnh? –
Tôi đã thêm một liên kết hình ảnh vì tôi chỉ có 1 đại diện vì tôi mới tham gia trang web này. –