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 planea1=normalAxial[0]b1=normalAxial[1]c1=normalAxial[2]d1 = -np.dot(positionAxial,normalAxial)# coronal planea2=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 = -d1print("tempz",tempz)# tempz = (-a1 / b1) * tempz - d1 / b1tempy = -(d2)/b2print("tempy,",tempy)centerPointACOne= [0,tempy,tempz]print("平面旋转计算中01,centerPointACOne",centerPointACOne)#由此得到交线的一点,再加上交线的方向向量,可以得到平面的交线方程了。
  • 面和线的交点
    我们假设它们的交点为P,
    既然我们有一个平面,那么平面上面的一个点planePoint和平面的planeNormal(垂直于平面的向量)已知。根据3D数学知识,
    (P−planePoint)⋅planeNormal=0(公式一)(P-planePoint) · planeNormal= 0(公式一)(P−planePoint)⋅planeNormal=0(公式一)
    既然垂直,那么它们点乘肯定为
    对于这条直线,我们肯定知道直线上面的某一点linePoint和直线的方向lineVector,那么
    P=linePoint+d∗lineVector(公式二)P = linePoint+ d*lineVector(公式二)P=linePoint+d∗lineVector(公式二)
    d是距离。把公式二代入公式一,
    我们可以得到如下:
    (linePoint+d∗lineVector−planePoint)∗planeNormal=0(linePoint+ d*lineVector-planePoint)*planeNormal= 0 (linePoint+d∗lineVector−planePoint)∗planeNormal=0
    由此得到
    d∗lineVector∗planeNormal+(linePoint−planePoint)∗planeNormal=0d*lineVector*planeNormal+ (linePoint- planePoint)*planeNormal= 0 d∗lineVector∗planeNormal+(linePoint−planePoint)∗planeNormal=0
    这样我们可以求出d值,然后我们就可以通过公式二求出P啦!

3维空间中点、线、面之间的数学关系(python代码)相关推荐

  1. 基于 t 维空间中点的确定的(t, n)门限秘密共享

    基于 t 维空间中点的确定的(t, n)门限秘密共享 其原理基于三维空间中,两个互不平行的面相交于一条直线,三个互不平行的面相交于一个唯一确定的点. 那么,(t, n)门限秘密共享就可以看作将秘密信息 ...

  2. 维吉尼亚密码的破解算法及python代码实现

    目录 1. 密文描述 1.1 密文1 1.2 密文2 2. 破解原理 2.1 重合指数法确定密钥长度 2.2 互重合指数确定子串间相对偏移 2.3 密钥字的确定 2.4 密文破解 3. 破解代码 参考 ...

  3. 阵列天线方向图合成(线阵、面阵)-附Python代码

    阵列天线波束赋形 导向矢量 ULA线阵: a = 1 N [ 1 , e − j 2 π λ d cos ⁡ θ , ⋯ , e − j 2 π λ ( N − 1 ) d cos ⁡ θ ] T \ ...

  4. 学术-物理-维空间:五维空间

    ylbtech-学术-物理-维空间:五维空间 五维空间 时间一维.层次一维.传统三维空间统一的空间.五维空间是宇宙任何事物存在的基本属性. 五维空间是一个包含五个维度的空间. 以物理学的角度来说,五维 ...

  5. 原来可以这样简单的说明10维空间的奥秘

    用一支笔几张纸来为同学们展开从零维空间到十维空间之旅吧! 零维 让我们从一个点开始,和我们几何意义上的点一样,它没有大小.没有维度.它只是被想象出来的.作为标志一个位置的点.它什么也没有,空间.时间通 ...

  6. 学术-物理-维空间:四维空间(标准欧几里得空间)

    ylbtech-学术-物理-维空间:四维空间(标准欧几里得空间) 四维空间不同于三维空间,四维空间指的是标准欧几里得空间,可以拓展到n维:四维时空指的是闵可夫斯基空间概念的一种误解.人类作为三维物体可 ...

  7. 第四维、第五维空间狂想

    前言 避免拷贝,声明下,作者我的英文名叫wavky.wand,本博文原始地址是http://www.cnblogs.com/wavky/p/hyperspace.html 这篇随笔叫狂想,原因是这里写 ...

  8. 学术-物理-维空间:一维空间

    ylbtech-学术-物理-维空间:一维空间 一维空间是指只由一条线内的点所组成的空间,它只有长度,没有宽度和高度,只能向两边无限延展.一维实际是指的是一条线,在理解上即为左-右一个方向(如:时间). ...

  9. 学术-物理-维空间:维空间

    ylbtech-学术-物理-维空间:维空间 根据90年代提出的M理论(超弦理论的一种),宇宙是11维的,由震动的平面构成的.在爱因斯坦那里,宇宙只是4维的(3维空间和1维时间),现代物理学则认为还有7 ...

最新文章

  1. 在Ubuntu 14.04 64bit上搭建Scala开发环境
  2. Java 随心笔记10
  3. MessageBox、::MessageBox 、AfxMessageBox三者的区别
  4. 安装ubuntu20.04(安装vim、gcc、VMtools、中文输入法、汉化、修改IP地址)
  5. 将py文件打包成exe可执行文件
  6. C#获得计算机名,当前登录用户名,Ip地址 .
  7. 熬,是人生最深的滋味
  8. 几种深度学习框架的使用和对比
  9. 浅谈Redis基本数据类型底层编码(含C源码)
  10. Html学习手册(W3CSchool.chm)
  11. 戴尔计算机软件的安装,买的新戴尔电脑怎么安装软件
  12. 财务人员懂计算机语言,评论:用电算化促财务管理的现代化
  13. NPDP考试地点在哪?
  14. python求零点极点增益_传递函数的零点、极点怎么解释,有什么用?
  15. STM32绝对地址赋值
  16. Feign - Error while extracting response for type [class java.lang.String]
  17. Spark核心开发者:性能超Hadoop百倍,算法实现仅有其1/10或1/100
  18. Spring,SpringMVC,Mybatis(第二节)
  19. 网络安全问题打七寸,BlackBerry以安全软件面向企业话安全
  20. WEB网站与HTML

热门文章

  1. vue实现组件自定义布局及拖拽
  2. DL4J中文文档/调优与训练/可视化
  3. vue + threejs 给3D模型添加label标签(dom的方式)
  4. Docker版本分为CE和EE了
  5. JS本地存储加载渲染页面信息、动态更新本地存储数据
  6. 超详细的张飞硬件第五部读书笔记01
  7. C# PDF添加骑缝章
  8. python连接mysql,并读取文件写入mysql
  9. 三进金蝶软件园,记我的面试之旅
  10. VR 科普-位置跟踪器,鼠标定位原理