13

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

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

4

3 回答 3

31

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

  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 = (半径/|P|)*P

  4. 并更改回原始坐标系以获取投影:

    R = Q + (x0,y0,z0)

于 2012-03-07T15:28:05.857 回答
4

基本上你想构建一条穿过球体中心和点的线。然后你将这条线与球体相交,你就有了你的投影点。

更详细地说:

让我们p成为点,s球体的中心和r半径,那么您正在寻找的点x = s + r*(p-s)/(norm(p-s))在哪里。x实施留给您。

我同意球坐标方法也可以,但计算要求更高。在上面的公式中,唯一不平凡的操作是范数的平方根。

于 2012-03-07T15:23:34.933 回答
0

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

于 2012-03-07T15:24:57.780 回答