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