已经有一个问题而且它有一个答案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
所以,这就是我的世界
但实际上当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)
但是我不能从上面的公式得到那些结果......!我该怎么办?
答案 0 :(得分:3)
使用您的公式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。我不确定您为什么在 OP 中使用混合坐标y,z
而不是x,y
。
<强> [EDIT1] 强>
要匹配您的图片参考框架,请尝试使用以下选项:
x = sin(s) * cos(t)
y = - sin(t)
z = cos(s) * cos(t)
s = <0,360> [deg]
t = <-90,+90> [deg]