请问球坐标向量的叉乘怎么计算啊?
考虑单位球(半径为1),O为球心,那么可以用经纬度表示球上的一点。设有球面两点X(经度1,纬度1)Y(经度2,纬度2)
求Z的经纬度。OZ = OX×OY
我现在的想法是最笨的,就是先将球坐标转化为直角坐标系,求出每个点的(x,y,z)。然后用直角坐标系的向量叉乘
x3 = y1*z2 - y2*z1
y3 = z1*x2 - z2*x1
z3 = x1*y2 - x2*y1
然后再把(x3,y3,z3)转回球坐标。感觉这个方法很笨,不知道有没有更简单的算法。 符号运算一下看看,比如经度记为$phi$,纬度记为$theta$,那么一个点的坐标就是
$(sin(theta)cos(phi), sin(theta)sin(phi), cos(theta))$
然后计算一下看看,最好用数学软件帮忙看看:lol
有个问题,叉乘结果可能不在单位球上,是不是这个不管?只管纬度? 感觉没有什么特别的简化方法。还是直接计算吧:lol
回复 2# 的帖子
这不就是转到直角坐标系了吗?按照我写的叉乘公式得到的结果是
$x_1 = sin(theta_1)cos(phi_1)$
$y_1 = sin(theta_1)sin(phi_1)$
$z_1 = cos(theta_1)$
$x_2 = sin(theta_2)cos(phi_2)$
$y_2 = sin(theta_2)sin(phi_2)$
$z_2 = cos(theta_2)$
$x_3 = y_1*z_2 - y_2*z_1 = sin(theta_1)sin(phi_1)cos(theta_2) - sin(theta_2)sin(phi_2)cos(theta_1)$
$y_3 = z_1*x_2 - z_2*x_1 = cos(theta_1)sin(theta_2)cos(phi_2) - cos(theta_2)sin(theta_1)cos(phi_1)$
$z_3 = x_1*y_2 - x_2*y_1 = sin(theta_1)cos(phi_1)sin(theta_2)sin(phi_2) - sin(theta_2)cos(phi_2)sin(theta_1)sin(phi_1)$
$theta_3 = arctan(y_3/x_3)$
$phi_3 = arctan(z_3/sqrt(x_3^2+y_3^2))$
我希望能通过$theta_1$、$phi_1$、$theta_2$、$phi_2$直接用什么解析公式(例如球坐标内的一些定理)算出$theta_3$和$phi_3$,而不经过这个直角坐标系的转化。
回复 3# 的帖子
55555555555555555555555555,好吧。回复 4# 的帖子
$phi_3 = arctan(sqrt(x_3^2+y_3^2)/z_3)$分子分母写反了,更正一下。 还有你$theta$和$phi$弄反了,另外对于
$phi_3$,其实写成
$phi_3=atan2(y_3,x_3)$
更加好,其中$atan2$是计算机里面经常使用的一个函数,就是代表复数$x_3+iy_3$的幅角
回复 7# 的帖子
嗯,我是弄反了。果然是atan2好用,要不我还要考虑除0的问题,谢谢mathe! 根据矢量积的定义,用张量的下标表达式来表示就是
由于是正交坐标系,因此坐标轴单位矢量的矢量积遵守右手法则,故有张量表达式
$$a×b=ε_{i,j,k}a_ib_j$$
所以形式跟直角坐标系一样,尽管用,不用坐标系转换。
页:
[1]