如何将点投射到球体上

时间:2012-03-07 15:19:19

标签: geometry coordinate-transformation

如果我有一个点(x,y,z),如何将它投影到球体(x0,y0,z0,半径)(在其表面上)。 我的输入将是点和球体的坐标。 输出应该是球体上投影点的坐标。

只需从笛卡儿坐标转换为球坐标?

3 个答案:

答案 0 :(得分:23)

对于最简单的投影(沿着连接点到球体中心的直线):

  1. 将点写在以球体中心为中心的坐标系中(x0,y0,z0):

    P =(x',y',z')=(x - x0,y - y0,z - z0)

  2. 计算此向量的长度:

    | P | = sqrt(x'^ 2 + y'^ 2 + z'^ 2)

  3. 缩放矢量,使其长度等于球体的半径:

    Q =(radius / | P |)* P

  4. 然后更改回原始坐标系以获得投影:

    R = Q +(x0,y0,z0)

答案 1 :(得分:4)

基本上你想构建一条穿过球体中心和点的线。然后,您将此线与球体相交,并获得投影点。

更详细:

p成为点,s球体的中心和r半径然后x = s + r*(p-s)/(norm(p-s)),其中x是您要寻找的点。实现由您自己完成。

我同意球面坐标方法也会起作用,但计算要求更高。在上面的公式中,唯一的非平凡操作是标准的平方根。

答案 2 :(得分:0)

如果将球体中心的坐标设置为系统的原点(x0,y0,z0),则此方法有效。因此,您将获得该原点的坐标(Xp',Yp',Zp'),并将坐标转换为极坐标,您将丢弃半径(球体中心与点之间的距离)和角度将定义投影。