Math 以给定(s,t)角度在球体上绘制点

Math 以给定(s,t)角度在球体上绘制点,math,unity3d,mapping,virtual-reality,Math,Unity3d,Mapping,Virtual Reality,已经有一个问题,它有一个答案,但它没有工作的方式,我期待它 # Assume my radius is 1 for simplicity x = cos(s) * sin(t) y = sin(s) * sin(t) z = cos(t) 当t=0时,不管我的s (x,y,z)=(0,0,1) # Since sin 0 = 0 on x # and y and z is independent of s 这就是我的世界 但实际上,当s增大时,球体上的点会发生变化,不会保持在(0

已经有一个问题,它有一个答案,但它没有工作的方式,我期待它

# Assume my radius is 1 for simplicity

x = cos(s) * sin(t)
y = sin(s) * sin(t)
z = cos(t)
当t=0时,不管我的s

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

# Since sin 0 = 0 on x 
# and y and z is independent of s
这就是我的世界

但实际上,当s增大时,球体上的点会发生变化,不会保持在(0,0,1)。例如,如果我的s=(-45)度,t=0,球体上的点应该是(0,0.707,0.707),对吗

更新:以下是我需要的:

(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)

但是我没有从上面的方程中得到这些结果。。。!我该怎么办?

用你的公式
t=0
表示你在极点,所以半径为零。无论
s
是什么,输出应始终
(x,y,z)=(0,0,1)
。如果需要标准球坐标,请使用以下选项:

x=cos(s)*cos(t)
y=正弦*cos(t)
z=sin(t)
s=[deg]
t=[deg]
对于
(s=45度,t=0度)
它应该返回
(x,y,z)=(0.707,0.707,0.000)

PS.我不知道为什么在OP中使用混合坐标
y,z
,而不是
x,y

[Edit1]

要匹配图像参考帧,请尝试使用以下选项:

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

用公式
t=0
表示你在极点,所以半径为零。无论
s
是什么,输出应始终
(x,y,z)=(0,0,1)
。如果需要标准球坐标,请使用以下选项:

x=cos(s)*cos(t)
y=正弦*cos(t)
z=sin(t)
s=[deg]
t=[deg]
对于
(s=45度,t=0度)
它应该返回
(x,y,z)=(0.707,0.707,0.000)

PS.我不知道为什么在OP中使用混合坐标
y,z
,而不是
x,y

[Edit1]

要匹配图像参考帧,请尝试使用以下选项:

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

我在这个问题上写的方程式直接来自于此,它们对我不起作用,因此我提出了这个问题。那么这个答案有缺陷吗?@ZekeDran没有,他们只是对
t
使用了不同的参考坐标,角度从两极开始,而不是从赤道开始。。。所以这里有
t=[deg]
…啊,我现在明白了,谢谢你的解释。。。从前面看(前视图),我的x轴水平向右,y轴垂直,z轴测量深度。这样,当我有角度(0,0)时,我视线中球体上的点将是(x,y,z)=(0,0,1),所以当我向上看45度时,角度是(45,0),球体上的点应该是(0,0.707,0.707),这很像浏览器屏幕像往常一样映射到x,y轴,而第三个维度是z轴,用于标记屏幕上每个元素的深度或高程。它的
z-index
在css中。@ZekeDran我只是用你的
my(x,y,z)=你的(z,x,-y)
替换了我参考框架的轴<代码>x轴是展位角度为零的位置。。。而
z
轴是极性奇点,
t=+/-90
y
s
方向上旋转
x
90度
我在这个问题上写的方程就是直接从这个方向来的,它们对我不起作用,因此这个问题。那么这个答案有缺陷吗?@ZekeDran没有,他们只是对
t
使用了不同的参考坐标,角度从两极开始,而不是从赤道开始。。。所以这里有
t=[deg]
…啊,我现在明白了,谢谢你的解释。。。从前面看(前视图),我的x轴水平向右,y轴垂直,z轴测量深度。这样,当我有角度(0,0)时,我视线中球体上的点将是(x,y,z)=(0,0,1),所以当我向上看45度时,角度是(45,0),球体上的点应该是(0,0.707,0.707),这很像浏览器屏幕像往常一样映射到x,y轴,而第三个维度是z轴,用于标记屏幕上每个元素的深度或高程。它的
z-index
在css中。@ZekeDran我只是用你的
my(x,y,z)=你的(z,x,-y)
替换了我参考框架的轴<代码>x轴是展位角度为零的位置。。。和
z
轴是极性奇点,其中
t=+/-90
y
s
方向上旋转
90度
,unity用户注意事项:s=
transform.euleragles.y
和t=
transform.euleragles.x
unity用户注意事项:s=
transform.euleragles.y
和t=
transform.eulerAngles.x