Geometry 如何将点投影到球体上

Geometry 如何将点投影到球体上,geometry,coordinate-transformation,Geometry,Coordinate Transformation,如果我有一个点(x,y,z),如何把它投射到一个球体上(x0,y0,z0,半径)(在它的表面上)。 我的输入将是点和球体的坐标。 输出应该是球体上投影点的坐标 只需将笛卡尔坐标转换为球坐标?基本上,您需要构造一条穿过球体中心和点的线。然后将这条线与球体相交,得到投影点 更详细地说: 让p作为点,s球体的中心和r半径,然后x=s+r*(p-s)/(norm(p-s))其中x是您要寻找的点。实现留给您 我同意球坐标法也适用,但计算要求更高。在上面的公式中,唯一的非平凡运算是范数的平方根。如果将球体中

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


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

基本上,您需要构造一条穿过球体中心和点的线。然后将这条线与球体相交,得到投影点

更详细地说:

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


我同意球坐标法也适用,但计算要求更高。在上面的公式中,唯一的非平凡运算是范数的平方根。

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

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

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

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

  • 计算此向量的长度:

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

  • 缩放向量,使其长度等于球体的半径:

    Q=(半径/| p |)*p

  • 并更改回原始坐标系以获得投影:

    R=Q+(x0,y0,z0)


  • 如何投影点?连接点和球体中心?平行于某个轴?其他投影?还有(x,y,z)点和球体中心的值相同,或者只是使用相同的变量名?@George将点直接放置在球体表面上,大小等于半径