所以来自flash背景我对一些简单的2D trig有一个很好的理解。在Id圈的2d中,我知道在给定角度和半径的情况下将项目放置在边缘上的算法。
x = cos(a) * r;
y = sin(a) * r;
现在如果我在3d空间中有一个点,我知道我的球体的半径,我知道我想要围绕z轴定位的角度和我想要将其定位在y轴周围的角度。在我的3d空间中找到x,y和z坐标的数学是什么(假设我的原点是0,0,0)?我想我可以从圆圈中借用数学但我似乎无法找到解决方案。
答案 0 :(得分:65)
你在3d中的位置由两个角度给出(+半径,在你的情况下是恒定的)
x = r * cos(s) * sin(t)
y = r * sin(s) * sin(t)
z = r * cos(t)
这里, s 是围绕z轴的角度, t 是高度角度,从z测量'向下'轴。
下图显示角度表示的内容,s = theta 在xy平面的0到2 * PI范围内,t = phi 在范围内0到PI。
答案 1 :(得分:0)
接受的答案似乎不支持负x值(可能是我做错了),但为了以防万一,使用ISO约定在this Wikipedia entry中定义的坐标系上的符号,这个方程组应该起作用:
import math
x = radius * sin(theta) * cos(phi)
y = radius * sin(theta) * sin(phi)
z = radius * cos(theta)
radius = math.sqrt(math.pow(x, 2) + math.pow(y, 2) + math.pow(z, 2))
phi = math.atan2(y, x)
theta = math.acos((z / radius))