如何将 point3d 数组从笛卡尔坐标转换为球坐标系(假设其几何中心在球坐标系中为 0,0,0)?
问问题
1919 次
2 回答
5
从Wikipedia复制公式,将其应用于数组中的每个条目:
r = Math.Sqrt(p.X*p.X + p.Y*p.Y + p.Z*p.Z);
if (r == 0) {
theta = 0;
phi = 0;
} else {
theta = Math.Acos(p.Z/r);
phi = Math.Atan2(p.Y, p.X);
}
于 2012-04-23T19:59:01.157 回答
4
是的,这是完全可能的。所以看这里的球坐标和这里的 C# 中的球坐标。您可以通过阅读这些文章来实现您想要的。我没有发现任何问题。所以,如果有什么你不明白的评论。
这是一些代码:
public Point3 Spherical(float r, float theta, float phi)
{
Point3 pt = new Point3();
float snt = (float)Math.Sin(theta * Math.PI / 180);
float cnt = (float)Math.Cos(theta * Math.PI / 180);
float snp = (float)Math.Sin(phi * Math.PI / 180);
float cnp = (float)Math.Cos(phi * Math.PI / 180);
pt.X = r * snt * cnp;
pt.Y = r * cnt;
pt.Z = -r * snt * snp;
pt.W = 1;
return pt;
}
于 2012-04-23T20:02:37.173 回答