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 に答える