2012-06-02 4 views
0

카메라가보고있는 지점을 계산하려고합니다. 카메라가 X 축과 Y 축을 중심으로 회전합니다. 내 카메라와 같은 점에서 1cm 떨어진 지점을 계산하고 싶습니다.어떻게 초점을 맞출 수 있습니까?

저는 2D에서 이런 식으로 계산하는 방법을 알고 있지만 3D로되면 문제가 생깁니다.

float c = 1f; 
float a = c * Math.cos(Math.toRadians(rotationY)); 
float b = (Math.sin(Math.toRadians(rotationY)) * c); 
newPosition.z -= a; 
newPosition.x += b; 

하지만 3D와 나는 도움이 필요 :

은 2D (단지 x와 z 축)입니다.

나는 누군가 여기 awnser을 알고 있기를 바랍니다.

+0

를이 (OpenGL을 OpenGL은 문제가되지 않습니다 만 드로잉 작업 다루기), 그러나 3D 기하학 문제. – datenwolf

답변

0

카메라의 뷰 행렬의 역함을 취한 다음이 행렬로 카메라 앞의 1cm 지점을 변환하는 것이 하나의 방법입니다. 카메라가 먼저 y 축 주위에 X 축을 중심으로 X 학위, 및 Y도 회전하는 경우

, 다음 의사에는 다음과 같습니다

Matrix4D camMM = Matrix4D.Identity(); //camera model matrix 
camMM.Rotate(X, 1, 0, 0); 
camMM.Rotate(Y, 0, 1, 0); 
Vector4D focusPoint = camMM * vector4D(-1cm, 0, 0, 1); 
+0

답장을위한 Thyx – user1432679

+0

답장을위한 Thx, 그러나 쉽게 할 수있는 기회가 있습니까? OpenGl과 매트릭스에 대한 큰 지식이 없기 때문입니다. 첫 번째 게시물에서 내 코드처럼 할 수 있습니까? – user1432679

+0

매트릭스 수학을 많은 삼각법으로 대체 할 방법이있을 것이라고 확신합니다. (제 머리 꼭대기에서 답을 찾을 수 없습니다) 3D로 작업 할 계획이라면 강하게 시작하는 것이 좋습니다. 3d 행렬 수학에 익숙하다. OpenGL을 사용하여 할 수있는 모든 것의 기초입니다. 처음에는 이상하고 어려울 수 있지만 매트릭스 수학과 선형 대수는 컴퓨터 그래픽 작업을 할 때 배울 수있는 가장 중요한 것 중 하나 일 것입니다. @ user1432679 – Tim

관련 문제