【CV】3D空间中椭球曲面与直线的交点问题

3D空间中的椭球曲面方程与直线方程

首先,在 3D 空间XYZ坐标系中,
椭球曲面的方程为

(xCx)2Rx2+(yCy)2Ry2+(zCz)2Rz2=1
,其中 (Cx,Cy,Cz)为椭球的中心坐标,Rx,Ry,Rz 分别为对应坐标轴上的半径。

直线方程选用一般化的参数方程形式:

{x=x0+kxty=y0+kytz=z0+kzt

参数方程来源于空间方程的两点式 – 设一直线过 M1(x1,y1,z1),M2(x2,y2,z2),则此直线的方程为

xx1x2x1=yy1y2y1=zz1z2z1=t
, 这种两点式直观,但是有一个弊端,就是要求(x2x1)(y2y1)(z2z1)0, 因而写成上面,更一般的参数方程形式。其对应关系是

  • (x0,y0,z0) 对应 (x1,y1,z1)
  • kx=x2x1,ky=y2y1,kz=z2z1
  • t 对应两点式中三个比值中的任意一个底部不为0 的比值

3D空间中椭球曲面与过椭球中心的直线相交模型

【CV】3D空间中椭球曲面与直线的交点问题

图中

  • P 为 直线 MC 和 以C为中心的椭球曲面的下交点(可以想象关于C 对称的上交点P)
  • MN 位于同一平面上,NP 在此平面上的投影, PN MN 所在平面
场景 1: 已知 M 求 N

MC 的直线方程为

{x=Cx+kxty=Cy+kytz=Cz+kzt

, 其中
(kx,ky,kz)=(Mx,My,Mz)(Cx,Cy,Cz)

(x,y,z) 代入到椭球曲面方程,可以得到

(t1)2=1α
, 其中
α=(kxRx)2+(kyRy)2+(kzRz)2
, 从而求得
t=1±1α
, 代回到直线方程,进而求得交点 P 的坐标。再依点PM所在平面坐垂线,最终得到 N的坐标。

场景 2 : 已知 N 求 M

场景 1 的逆过程而已。
假定 M, N位于水平面,则N的坐标 (Nx,Ny,0),向上引垂线,假设与椭球面相交,交点为 P, 则 P 点坐标为 (Px,Py,Pz) 满足 Px=Nx,Py=Ny, 带入椭球面方程,可以得到

(PzCz)2=β
, 其中
β=Rz2(1(NxCx)2Rx2(NyCy)2Ry2)
, 若 β<0, 则方程无解,点N引垂线不和椭球面相交,交点不存在. 若 β0, 则可得
Pz=Cz±β
, 取交点 PC 解直线参数方程,使得 z=0,即可求得 M的坐标。