2013-06-11 2 views
0

3 차원 공간에서 구를 회전시키기 위해 쿼터니언을 사용합니다. 나는 점을 발견 및/또는 카메라에 가장 가까운 얼굴하는 방법 :구형과 가장 가까운 점

구는

질문은 (0, 0, 0) p = 배치된다.

답변

1

이것은 간단합니다. 구는 중심으로부터 거리가있는 모든 점의 집합이 특정 값 (반경)을 갖는 좋은 특성을가집니다.

OpenGL에서 우리는 관찰자가 원점에 있다고 가정합니다. 객체는 선형 변환 (모델 뷰)을 통해 개별 좌표 공간에 배치됩니다. 그래서 우리가해야하는 것은 구의 로컬 좌표계에서 관찰자의 위치를 ​​찾고 단위 길이를 향한 로컬 공간 관찰자 위치로 벡터를 정규화하는 것입니다.

변형은 full modelview 행렬 MV입니다. 귀하의 쿼터니언 q은 행렬 에 매핑 될 수 있습니다. Q, 즉 R 자체 지역 내에 구의 회전을 정의된다고 가정하면,도 공간을 향해 전체 변환 P은 구형의 점의 집합이다

p_view = MV · R · p_local 

된다.

는 따라서 영역의 프레임 참조 로컬 관찰자가

o_local = inv(MV · R) · (0,0,0,1) 

마지막에 있습니다 당신은 구체의 반경 관찰자 대한 로컬 프레임 위치 벡터 조정하도록했습니다

o_direction_on_sphere = radious · o_local/len(o_local) 
관련 문제