3D空间中的椭球曲面方程与直线方程
首先,在 3D 空间XYZ坐标系中,
椭球曲面的方程为
(x−Cx)2R2x+(y−Cy)2R2y+(z−Cz)2R2z=1
,其中
(Cx,Cy,Cz)为椭球的中心坐标,
Rx,Ry,Rz 分别为对应坐标轴上的半径。
直线方程选用一般化的参数方程形式:
⎧⎩⎨⎪⎪x=x0+kxty=y0+kytz=z0+kzt
参数方程来源于空间方程的两点式 – 设一直线过 M1(x1,y1,z1),M2(x2,y2,z2),则此直线的方程为
x−x1x2−x1=y−y1y2−y1=z−z1z2−z1=t
, 这种两点式直观,但是有一个弊端,就是要求
(x2−x1)⋅(y2−y1)⋅(z2−z1)≠0, 因而写成上面,更一般的参数方程形式。其对应关系是
-
(x0,y0,z0) 对应 (x1,y1,z1)
-
kx=x2−x1,ky=y2−y1,kz=z2−z1
-
t 对应两点式中三个比值中的任意一个底部不为0 的比值
3D空间中椭球曲面与过椭球中心的直线相交模型

图中
- 点 P 为 直线 MC 和 以C为中心的椭球曲面的下交点(可以想象关于C 对称的上交点P′)
- 点 M、N 位于同一平面上,N 为 P 在此平面上的投影, PN⊥ M、N 所在平面
场景 1: 已知 M 求 N
MC 的直线方程为
⎧⎩⎨⎪⎪x=Cx+kxty=Cy+kytz=Cz+kzt
, 其中
(kx,ky,kz)=(Mx,My,Mz)−(Cx,Cy,Cz)
将(x,y,z) 代入到椭球曲面方程,可以得到
(t−1)2=1α
, 其中
α=(kxRx)2+(kyRy)2+(kzRz)2
, 从而求得
t=1±1α−−√
, 代回到直线方程,进而求得交点
P 的坐标。再依点
P 向
M所在平面坐垂线,最终得到
N的坐标。
场景 2 : 已知 N 求 M
场景 1 的逆过程而已。
假定 M, N位于水平面,则N的坐标 (Nx,Ny,0),向上引垂线,假设与椭球面相交,交点为 P, 则 P 点坐标为 (Px,Py,Pz) 满足 Px=Nx,Py=Ny, 带入椭球面方程,可以得到
(Pz−Cz)2=β
, 其中
β=R2z(1−(Nx−Cx)2R2x−(Ny−Cy)2R2y)
, 若
β<0, 则方程无解,点
N引垂线不和椭球面相交,交点不存在. 若
β≥0, 则可得
Pz=Cz±β−−√
, 取交点
P 与
C 解直线参数方程,使得
z=0,即可求得
M的坐标。