2017-05-03 4 views
0

이미 질문이 있습니다. 답변은 here입니다. 그러나 기대했던대로 작동하지 않습니다. 나의 세계는주어진 (s, t) 각도로 구의 점을 그리시오

enter image description here

이다 그러나 어떻게 그래서 여기

# Assume my radius is 1 for simplicity 

x = cos(s) * sin(t) 
y = sin(s) * sin(t) 
z = cos(t) 

t에 관계없이 내의의, 0 =,

(x,y,z)=(0,0,1) 

# Since sin 0 = 0 on x 
# and y and z is independent of s 

입니다 실제로의 증가, 온 점 구가 변하고, (0, 0, 1)에 남지 않습니다. 예를 들면. 내 s = (- 45) deg 및 t = 0 인 경우 구의 점은 (0,0.707,0.707)이어야합니다.

UPDATE는 :

(s,t) | (x,y,z) 
--------------- 
(0,0) | (0,0,1) 
(45,0) | (.707,0,0.707) 
(90,0) | (1,0,0) 
(180,0) | (0,0,-1) 
(270,0) | (-1,0,0) 
(0,-45) | (0,0.707,0.707) 
(0,45) | (0,-0.707,0.707) 

하지만 위의 방정식에서 그 결과를 얻을하지 않습니다 ... : 여기에 내가 필요한거야! 나는 무엇을해야합니까?

+0

메모 : S ='transform.eulerAngles.y'와 t ='변환 .eulerAngles.x' –

답변

2

수식이 t=0이면 반경이 0이므로 반경이 0임을 의미합니다. 어떤 s이든 출력은 항상 (x,y,z)=(0,0,1)이어야합니다. 당신은 표준 구형 좌표가 필요한 경우이 대신 사용

x = cos(s) * cos(t) 
y = sin(s) * cos(t) 
z =   sin(t) 

s = <0,360> [deg] 
t = <-90,+90> [deg] 

(s=45deg,t=0deg) 것이 (x,y,z)=(0.707,0.707,0.000)

PS를 반환해야합니다.x,y 대신 y,z 좌표가 OP에 왜 혼합되어 있는지 확실하지 않습니다.

[EDIT1]

는 이미지 참조 프레임이 사용하려고 일치 시키려면 : 단일 사용자를위한

x = sin(s) * cos(t) 
y =  - sin(t) 
z = cos(s) * cos(t) 

s = <0,360> [deg] 
t = <-90,+90> [deg] 
+0

내가 질문에 쓴 방정식은이 [answer] (http://stackoverflow.com/a/969880/3125070)에서 직접 나온 것이므로 나에게 도움이되지 않았다. 그 답은 결함이 있습니까? –

+0

@ZekeDran 아니오 그들은 단지 't'에 대한 다른 참조 프레임을 사용합니다. 각도가 적도가 아닌 극점에서 시작합니다 ... 그래서 't = <0,180> [deg]'... – Spektre

+0

아, 설명을위한 감사합니다. ... 정면 (Front View)에서 보았을 때 x 축은 수평 오른쪽으로, y 축은 수직으로, z 축은 깊이를 측정합니다. 그렇게하면 각도 (0,0)를 가질 때 내 시야에서 구의 점은 (x, y, z) = (0,0,1)이되므로 위의 각도가 45 도일 때 각도 구의 점은 (0,0.707,0.707)이어야합니다. –

관련 문제