点的线性三角化
- 输入一堆的点
[ R w c , t w c , p u c ] [R_{wc},t_{wc},p_{uc}] [Rwc,twc,puc] - 转化成空间的一系列射线
[ P w i , t w i ] , P w i = t w c , t w i = R w c × p u c [P_{wi},t_{wi}],P_{wi}=t_{wc},t_{wi}=R_{wc}\times p_{uc} [Pwi,twi],Pwi=twc,twi=Rwc×puc - 点和射线之间的关系是
P = P i + d i × t i P=P_i+d_i\times t_i P=Pi+di×ti - 方程改写为
[ t i ] × P = t i × P i [t_i]^{\times}P=ti\times P_i [ti]×P=ti×Pi - 方程的表达式为
A = [ [ t 1 ] × . . . [ t n ] × ] A= \begin{bmatrix} [t_1]^{\times} \\ ... \\ [t_n]^{\times} \end{bmatrix} A= [t1]×...[tn]×
b = [ t 1 × P 1 . . . t n × P n ] b= \begin{bmatrix} t_1\times P_1 \\ ... \\ t_n\times P_n \end{bmatrix} b= t1×P1...tn×Pn
A x = b Ax = b Ax=b
直线的线性三角化
- 输入一堆检测的线段
[ R c w , t c w , p u c 1 , p u c 2 ] [R_{cw},t_{cw},p_{uc1},p_{uc2}] [Rcw,tcw,puc1,puc2] - 两条检测射线形成的面的法线
n c ⃗ = p u c 1 × p u c 2 \vec{n_c}=p_{uc1}\times p_{uc2} nc=puc1×puc2 - 直线上点的坐标形成的射线和法线是垂直的
n c ⃗ × P c = 0 n c ⃗ × ( R c w P w + t c w ) = 0 [ n c ⃗ ] × R c w P w = − n c ⃗ × t c w \vec{n_c} \times P_c = 0 \\ \vec{n_c}\times(R_{cw}P_w + t_{cw}) = 0 \\ [\vec{n_c}]^{\times}R_{cw}P_w=-\vec{n_c}\times t_{cw} nc×Pc=0nc×(RcwPw+tcw)=0[nc]×RcwPw=−nc×tcw
A = [ [ n c 1 ⃗ ] × R c w i 1 . . . [ n c n ⃗ ] × R c w n ] A= \begin{bmatrix} [\vec{n_{c1}}]^{\times}R_{cwi1}\\ ... \\ [\vec{n_{cn}}]^{\times}R_{cwn} \end{bmatrix} A= [nc1]×Rcwi1...[ncn]×Rcwn
b = [ − n c 1 ⃗ × t c w 1 . . . − n c n ⃗ × t c w n ] b= \begin{bmatrix} -\vec{n_{c1}}\times t_{cw1} \\ ... \\ -\vec{n_{cn}}\times t_{cwn} \end{bmatrix} b= −nc1×tcw1...−ncn×tcwn
A x = b Ax = b Ax=b