作为一个有Flash背景的人,我对一些简单的2D三角知识有一定了解。在2D中,如果给定一个圆形、一个角度和一个半径,我知道该如何计算并将物品放置在圆边缘上。
x = cos(a) * r;
y = sin(a) * r;
如果我在3D空间中知道一个点的半径、我想把它围绕z轴和y轴定位的角度,那么如何计算这个点的x、y和z坐标(假设原点是0,0,0)?我认为可以借鉴圆形三角函数的数学知识,但我似乎找不到解决方案。
被接受的答案似乎不支持负x值(可能是我做错了什么),但以防万一,使用ISO坐标系约定中定义的符号,如此维基百科条目所示,这组方程应该有效:
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))
s
和t
的单位应为弧度制,而不是角度制。要转换为弧度制:radians = angleInDegrees * Math.PI / 180
。 - Sam4
?如何将其转换为像素? - S.EB