方法一:当参数 v x a v^a_x vxa, v y a v^a_y vya, v z a v^a_z vza, v x b v^b_x vxb, v y b v^b_y vyb, v z b v^b_z vzb, n x n_x nx, n y n_y ny, n z n_z nz均非零时,将方程组化为如下形式
{ 1 v x a a x − 1 v y a a y = x a v x a − y a v y a 1 v y a a y − 1 v z a a z = y a v y a − z a v z a 1 v x b b x − 1 v y b b y = x b v x b − y b v y b 1 v y b b y − 1 v z b b z = y b v y b − z b v z b 1 n x a x − 1 n y a y − 1 n x b x + 1 n y b y = 0 1 n y a y − 1 n z a z − 1 n y b y + 1 n z b z = 0 {1vaxax−1vayay=xavax−yavay1vayay−1vazaz=yavay−zavaz1vbxbx−1vbyby=xbvbx−ybvby1vbyby−1vbzbz=ybvby−zbvbz1nxax−1nyay−1nxbx+1nyby=01nyay−1nzaz−1nyby+1nzbz=0
⎩
⎨
⎧vxa1ax−vya1ayvya1ay−vza1azvxb1bx−vyb1byvyb1by−vzb1bznx1ax−ny1ay−nx1bx+ny1byny1ay−nz1az−ny1by+nz1bz=vxaxa−vyaya=vyaya−vzaza=vxbxb−vybyb=vybyb−vzbzb=0=0
将以上方程组化为矩阵形式
[ 1 v x a − 1 v y a 0 0 0 0 0 1 v y a − 1 v z a 0 0 0 0 0 0 1 v x b − 1 v y b 0 0 0 0 0 1 v y b − 1 v z b 1 n x − 1 n y 0 − 1 n x 1 n y 0 0 1 n y − 1 n z 0 − 1 n y 1 n z ] ∗ [ a x a y a z b x b y b z ] = [ x a v x a − y a v y a y a v y a − z a v z a x b v x b − y b v y b y b v y b − z b v z b 0 0 ] [1vax−1vay000001vay−1vaz0000001vbx−1vby000001vby−1vbz1nx−1ny0−1nx1ny001ny−1nz0−1ny1nz]
* [axayazbxbybz]
= [xavax−yavayyavay−zavazxbvbx−ybvbyybvby−zbvbz00]
vxa1000nx10−vya1vya100−ny1ny10−vza1000−nz100vxb10−nx1000−vyb1vyb1ny1−ny1000−vzb10nz1
∗
axayazbxbybz
=
vxaxa−vyayavyaya−vzazavxbxb−vybybvybyb−vzbzb00
可得
[ a x a y a z b x b y b z ] = [ 1 v x a − 1 v y a 0 0 0 0 0 1 v y a − 1 v z a 0 0 0 0 0 0 1 v x b − 1 v y b 0 0 0 0 0 1 v y b − 1 v z b 1 n x − 1 n y 0 − 1 n x 1 n y 0 0 1 n y − 1 n z 0 − 1 n y 1 n z ] − 1 ∗ [ x a v x a − y a v y a y a v y a − z a v z a x b v x b − y b v y b y b v y b − z b v z b 0 0 ] [axayazbxbybz]
= [1vax−1vay000001vay−1vaz0000001vbx−1vby000001vby−1vbz1nx−1ny0−1nx1ny001ny−1nz0−1ny1nz]
^{-1}* [xavax−yavayyavay−zavazxbvbx−ybvbyybvby−zbvbz00]
axayazbxbybz
=
vxa1000nx10−vya1vya100−ny1ny10−vza1000−nz100vxb10−nx1000−vyb1vyb1ny1−ny1000−vzb10nz1
−1∗
vxaxa−vyayavyaya−vzazavxbxb−vybybvybyb−vzbzb00
当 v x a v^a_x vxa, v y a v^a_y vya, v z a v^a_z vza, v x b v^b_x vxb, v y b v^b_y vyb, v z b v^b_z vzb, n x n_x nx, n y n_y ny, n z n_z nz中存在值为零的参数时,可直接将式(1)-(3)中对应项分子部分赋值零,得到新的等式,联立其余等式,即可得到新得方程组,求解即可。如,当 v x a = 0 v^a_x=0 vxa=0时,方程组可以化为如下形式
{ a x = x a 1 v y a a y − 1 v z a a z = y a v y a − z a v z a 1 v x b b x − 1 v y b b y = x b v x b − y b v y b 1 v y b b y − 1 v z b b z = y b v y b − z b v z b 1 n x a x − 1 n y a y − 1 n x b x + 1 n y b y = 0 1 n y a y − 1 n z a z − 1 n y b y + 1 n z b z = 0 {ax=xa1vayay−1vazaz=yavay−zavaz1vbxbx−1vbyby=xbvbx−ybvby1vbyby−1vbzbz=ybvby−zbvbz1nxax−1nyay−1nxbx+1nyby=01nyay−1nzaz−1nyby+1nzbz=0
⎩
⎨
⎧axvya1ay−vza1azvxb1bx−vyb1byvyb1by−vzb1bznx1ax−ny1ay−nx1bx+ny1byny1ay−nz1az−ny1by+nz1bz=xa=vyaya−vzaza=vxbxb−vybyb=vybyb−vzbzb=0=0
方法二:可使用 MATLAB 中的
solve
函数对以上多项式进行求解,分别得到交点A,B的坐标关于直线
l
a
l_a
la,
l
b
l_b
lb参数的表达式。具体可参考后续 程序示例 章节。