如果我有一个点(x,y,z),如何将其投影到一个球体(x0,y0,z0,半径)上(在其表面上)。
我的输入将是点和球的坐标。
输出应该是投影点在球面上的坐标。
只需将它从笛卡尔坐标系转换为球坐标系吗?
只需将它从笛卡尔坐标系转换为球坐标系吗?
对于最简单的投影(沿连接点与球心的直线):
将该点写成以球心为中心的坐标系(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
是您要寻找的点。具体实现由您完成。如果您将球体中心的坐标设置为系统的原点(x0,y0,z0),则它可以工作。因此,您将拥有相对于该原点的点的坐标(Xp',Yp',Zp'),并将坐标转换为极坐标,您会丢弃半径(球体中心和点之间的距离),角度将定义投影。