3 차원 공간에서 구를 회전시키기 위해 쿼터니언을 사용합니다. 나는 점을 발견 및/또는 카메라에 가장 가까운 얼굴하는 방법 :구형과 가장 가까운 점
구는
질문은 (0, 0, 0) p = 배치된다.
3 차원 공간에서 구를 회전시키기 위해 쿼터니언을 사용합니다. 나는 점을 발견 및/또는 카메라에 가장 가까운 얼굴하는 방법 :구형과 가장 가까운 점
구는
질문은 (0, 0, 0) p = 배치된다.
이것은 간단합니다. 구는 중심으로부터 거리가있는 모든 점의 집합이 특정 값 (반경)을 갖는 좋은 특성을가집니다.
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)