Geo*_*rge 12 geometry coordinate-transformation
如果我有一个点(x,y,z)如何将它投影到球体(x0,y0,z0,半径)(在其表面上).我的输入将是点和球体的坐标.输出应该是球体上投影点的坐标.
只需从笛卡尔坐标转换为球坐标?
Ste*_*non 25
对于最简单的投影(沿着连接点到球体中心的直线):
将点写在以球体中心为中心的坐标系中(x0,y0,z0):
P =(x',y',z')=(x - x0,y - y0,z - z0)
计算此向量的长度:
| P | = sqrt(x'^ 2 + y'^ 2 + z'^ 2)
缩放矢量,使其长度等于球体的半径:
Q =(radius/| P |)*P.
并更改回原始坐标系以获得投影:
R = Q +(x0,y0,z0)
基本上你想要构建一条穿过球体中心和点的线。然后将这条线与球体相交,就得到了投影点。
更详细地说:
设p
为该点,s
球体的中心和r
半径,那么您要寻找的点在x = s + r*(p-s)/(norm(p-s))
哪里。x
实施由您负责。
我同意球坐标方法也可以工作,但计算要求更高。在上面的公式中,唯一重要的运算是范数的平方根。