1 面的定义
三维空间中的平面由两个量确定:
① 一个法向量(垂直于该平面的向量)
② 一个已知点(位于该平面上的一个点
2 叉乘和点乘的区别
2.1叉乘的计算方式,叉乘用来得到垂直于两条向量的向量。
2.2点乘的计算方式,内积(点乘)的几何意义包括:表征或计算两个向量之间的夹角,b向量在a向量方向上的投影.
叉乘的结果:向量a×向量b(×为向量叉乘),若结果小于0,表示向量b在向量a的顺时针方向;若结果大于0,表示向量b在向量a的逆时针方向。
二维的叉乘,|向量a×向量b|表示物理意义是平行四边形的面积。
- 面和面的交线
**1.*面的方程一般式为:Ax+By+Cz+D=0 (参数,A,B,C,D是描述平面空间特征的常数), 其中(A,B,C)为平面的法向量,D为将已知点带入得到的补偿值。
2.1求取面与面的交线,已知条件:法向量和已知点
2.2公式推导:
平面1:a1x+b1y+c1z+d1=0;平面2:a2x+b2y+c2z+d2=0
平面法向量;n1=(a1,b1,c1),n2=(a2,b2,c2)
交线的方向向量n=n1×n2=(b1c2-c1b2,c1a2-a1c2,a1b2-b1a2)
设直线上任意一点为(x,y,z)
令x=0,得:
b1y+c1z+d1=0,b2y+c2z+d2=0,
即
y=-(c1z+d1)/b1=-(c2z+d2)/b2
解得:
z=-(d1/b1-d2/b2)/(c1/b1-c2/b2)
y=-c1/b1z-d1/b1
=c1(d1/b1-d2/b2)/b1/(c1/b1-c2/b2)-d1/b1
由直线方向向量和一点坐标即可确定该直线。
3 python代码如下
#两个面 Axial 和 Coronal ,两个面的法向量为normalAxial和normalCoronal,两个面上的点为positionAxial和positionCoronal
#对两个面的法向量进行叉乘,得到交线的方向向量
vectorAC = np.cross(normalAxial, normalCoronal)
print(vectorAC)
# axial plane
a1=normalAxial[0]
b1=normalAxial[1]
c1=normalAxial[2]
d1 = -np.dot(positionAxial,normalAxial)
# coronal plane
a2=normalCoronal[0]
b2=normalCoronal[1]
c2=normalCoronal[2]
d2 = -np.dot(positionCoronal,normalCoronal)
if normalCoronal[0]!=0 and normalCoronal[1]!=0:
print("平面旋转计算中")
# tempz = -(d1 / b1 - d2 / b2) / (a1 / b1 - a2 / b2)
tempz = -d1
print("tempz",tempz)
#