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代码如下
vectorAC = np.cross(normalAxial, normalCoronal)
print(vectorAC)
a1=normalAxial[0]
b1=normalAxial[1]
c1=normalAxial[2]
d1 = -np.dot(positionAxial,normalAxial)
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
print("tempz",tempz)
tempy = -(d2)/b2
print("tempy,",tempy)
centerPointACOne= [0,tempy,tempz]
print("平面旋转计算中01,centerPointACOne",centerPointACOne)
- 面和线的交点
我们假设它们的交点为P,
既然我们有一个平面,那么平面上面的一个点planePoint和平面的planeNormal(垂直于平面的向量)已知。根据3D数学知识,
(
P
−
p
l
a
n
e
P
o
i
n
t
)
⋅
p
l
a
n
e
N
o
r
m
a
l
=
0
(
公
式
一
)
(P-planePoint) · planeNormal= 0(公式一)
(P−planePoint)⋅planeNormal=0(公式一)
既然垂直,那么它们点乘肯定为
对于这条直线,我们肯定知道直线上面的某一点linePoint和直线的方向lineVector,那么
P
=
l
i
n
e
P
o
i
n
t
+
d
∗
l
i
n
e
V
e
c
t
o
r
(
公
式
二
)
P = linePoint+ d*lineVector(公式二)
P=linePoint+d∗lineVector(公式二)
d是距离。把公式二代入公式一,
我们可以得到如下:
(
l
i
n
e
P
o
i
n
t
+
d
∗
l
i
n
e
V
e
c
t
o
r
−
p
l
a
n
e
P
o
i
n
t
)
∗
p
l
a
n
e
N
o
r
m
a
l
=
0
(linePoint+ d*lineVector-planePoint)*planeNormal= 0
(linePoint+d∗lineVector−planePoint)∗planeNormal=0
由此得到
d
∗
l
i
n
e
V
e
c
t
o
r
∗
p
l
a
n
e
N
o
r
m
a
l
+
(
l
i
n
e
P
o
i
n
t
−
p
l
a
n
e
P
o
i
n
t
)
∗
p
l
a
n
e
N
o
r
m
a
l
=
0
d*lineVector*planeNormal+ (linePoint- planePoint)*planeNormal= 0
d∗lineVector∗planeNormal+(linePoint−planePoint)∗planeNormal=0
这样我们可以求出d值,然后我们就可以通过公式二求出P啦!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)