2014-01-20 1 views
0

나는 한 점을 3D로 움직이고있다. "방위각과 고도는 라디안 단위의 각 변위이고, 방위각은 양의 x 축에서 측정 된 xy 평면에서 반 시계 방향의 각도이고, 고도는 xy 평면에서의 앙각입니다. r은 원점에서 점까지의 거리입니다. " 방위각을 쎄타 (Theta), 고도 각을 파이 (Phi)라고 부릅니다. 자, 나는 Theta와 Phi가 적절한 범위 (라디안)로 있는지 확인하고 싶습니다. "그래픽 및 게임 개발을위한 3 차원 수학 뇌관"이 책에 따르면 다음 상태구면 좌표계의 Theta & Phi 각도 범위는 무엇입니까?

  1. 페이지 < -90은 다음 페이지 ≥ -90까지 페이지에 360를 추가하는 경우.
  2. p> 270 인 경우 p에서 270을 뺄 때까지 p에서 360을 뺍니다.
  3. p> 90이면 h를 180에 추가하고 p = 180 - p로 설정합니다.
  4. h ≤ -180이면 h> -180이 될 때까지 360에 h를 더하십시오.
  5. H> 180, p는 다음 피이고 h는 제 경우 세타 인 시간 (180) ≤

까지 시간 내지 360 빼면. 이 책은 왼손 법칙을 사용합니다. 매트랩 내 구현 코드는

if Theta > pi 
    Theta = Theta - 2*pi; 
end 
if Theta <= -pi 
    Theta = Theta + 2*pi; 
end 

if Phi < -pi/2 
    Phi = Phi + 2*pi; 
end 
if Phi > (3*pi)/2 
    Phi = Phi - 2*pi; 
end 

if Phi > pi/2 <-------- here the problem 
    Theta = Theta + pi; 
    Phi = pi - Phi; 
end 

내 문제는 피가 (라디안) 1.6 = 일단 내 지점이 앞뒤로 한 단계 스텝으로 자신의 위치에서 더 멀리 스틱 갈 수 있다는 것입니다.

+0

을 다음과 같이 코드를 수정하여 문제를 해결했습니다. 나는 당신이 일종의 고리에서 돌아 다니고 있다고 생각합니다 - 어떻게 설정 했습니까? "앞뒤로 움직이는 것"이란 무엇을 의미합니까? – nkjt

+0

@nkjt, 두 각도는 1 라디안 씩 증가합니다. 피가 1.6에 도달하면 모든 것이 잘못됩니다. 제 질문은 내 코드가 각도 Phi에 맞습니까? 저는 2D에서 테스트했기 때문에 Theta에 대해 확신합니다. – CroCo

답변

0

나는 문제가 지금까지 제공 한 코드에서 어디 그것은 분명 아니다

if Phi > pi 
    Phi = 0; 
end 
if Phi < 0 
    Phi = pi; 
end 
관련 문제