2017-05-03 8 views
0

すでに質問があり、答えはhereですが、期待通りの動作をしません。与えられた(s、t)の角度で球上の点をプロットする

# Assume my radius is 1 for simplicity 

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

トンは関係なく、私のSの、= 0、

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

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

だからここに私の世界は

enter image description here

しかし、実際に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とすると、極座標になり半径がゼロになります。どんなに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の座標がに混在している理由がわかりません。

[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

ああ、私は今、 ...前面(正面図)から見ると、x軸は右に水平に、y軸は垂直に、z軸では深さを測定します。そのようにして、私は角度(0,0)があるとき、私の視線内の球上の点は(x、y、z)=(0,0,1)になります。 (45,0)、球面上の点は(0,0.707,0.707) –

関連する問題