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

2023-05-16

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)
            # tempz = (-a1 / b1) * tempz - d1 / b1
            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(公式一) PplanePoint)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+dlineVector
    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+dlineVectorplanePointplaneNormal=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 dlineVectorplaneNormal+(linePointplanePoint)planeNormal=0
    这样我们可以求出d值,然后我们就可以通过公式二求出P啦!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • OpenMV色块寻找

    OpenMV入门 xff0c 从入门到入坟 gt lt 此文章大部分内容取自OpenMV官方中文参考文档 详情看OpenMV官方中文参考文档 文章目录 一 sensor snapshot 拍一张照片二 image find blogs 查找
  • 四轴 PID 调试

    四轴 PID 用到了串级 PID xff0c 即两个闭环 xff0c 分别为 角速度环 xff08 内环 xff09 和角度环 xff08 外环 xff09 调试时 xff0c 先整定内环PID xff0c 再整定外环 P 内环 P xff
  • bind:address already in use的深刻教训以及解决办法

    今天在linux下 xff0c 编写了一个简单的回射客户 服务器 xff08 就是客户机从控制台标准输入并发送数据 xff0c 服务端接受数据 xff0c 但是不对数据进行处理 xff0c 然后将数据返回 xff0c 交由客户机标准输出 x
  • stm32简说步进电机(有代码)!!!

    步进电机 xff08 也称脉冲电机 xff09 xff08 将电脉冲转换为相应的角位移或线位移的电磁机械装置 xff0c 具有快速启动 xff0c 停能力 xff0c 在电机的负荷不超过它能提供的动态转矩时 xff0c 可以通过输入脉冲来控
  • 阿里云Linux Ubentu16.04 安装 Nginx 并配置 https,后续升级openssl和Nginx

    一 准备工作 进入安装目录 cd usr local 下载nginx xff08 官网选择版本稳定版即可 xff1a http nginx org en download html xff09 wget http nginx org dow
  • C++多线程面向对象封装

    相信很多人都读过 C 43 43 沉思录 这本经典著作 xff0c 在我艰难地读完整本书后 xff0c 留给我印象最深的只有一句话 xff1a 用类表示概念 xff0c 用类解决问题 关 于多线程编程 xff0c 如果不是特别需要 xff0
  • stm32(寄存器)超声波程序

    我们是基于stm32f103系列 xff0c 超声波模块用的是 xff1a HC SR04 寄存器版的代码 编译器用的是 xff1a keil5 在此 xff1a 输入捕获用的是TIM2 CH1 用的是PA0 xff0c 可以从开发板原理图
  • 127.0.0.1和localhost和本机IP三者的区别!!!

    1 xff0c 什么是环回地址 xff1f xff1f 与127 0 0 1的区别呢 xff1f xff1f 环回地址是主机用于向自身发送通信的一个特殊地址 xff08 也就是一个特殊的目的地址 xff09 可以这么说 xff1a 同一台主
  • malloc函数,大大的详解

    很多学过C的人对malloc都不是很了解 xff0c 知道使用malloc要加头文件 知道malloc是分配一块连续的内存 xff0c 知道和free函数是一起用的 但是但是 xff1a 一部分人还是将 xff1a malloc当作系统所提
  • Windows程序内部运行原理

    本文大部分内容都是摘自孙鑫老师 xff0c 在下就是一个简单的总结 xff0c 归纳 xff0c 希望对大家有用 xff01 xff01 xff01 xff01 Windows操作系统是一种完全不同于传统的dos方式的程序设计方法 xff0
  • the english of the simple view

    自述 xff1a 我的英语很差 xff0c 四级至今没有过 xff0c 在新东方报班学的一些东西 xff0c 只是想着简单的记录下来 xff0c 权当做新一次的整理笔记 xff0c 归纳 xff0c 希望也能帮助大家 1 200个核心词汇
  • 小小鉴赏(闹着玩)

    when you believe xff1a 作曲 Stephen Schwartz 作词 Stephen Schwartz Many xff08 span class hljs attribute 39 meni span xff09 n
  • 技术分享 | GPS无人机集群

    随着人工智能的发展 xff0c 机器人行业也进入了高速发展的阶段 xff0c 在今年春晚 xff0c 也出现了无人机的身影 xff0c 在高速发展的同时 xff0c 也让人们逐渐体会到单机器人能做的事情是有限的 xff0c 多机器人 编队
  • 技术分享 | 开源不稳?试试DJI N3飞控呢

    原创阿木实验室 1 DJI N3飞控简介 N3内置双IMU冗余设置 xff0c 结合在线故障检测算法 xff0c 可实现双IMU数据实时互为备份 xff0c 极大地提高了飞行器可靠性 集成8GB工业级SD卡的 黑匣子 数据记录系统 xff0
  • 技术分享 | P450-详解室内外指点飞行来啦

    原理说明 PX4飞控控制系统图 定点飞行就是由传感器 xff08 T265 GPS xff09 获得当前位置数据 xff0c 并且把当前位置作为期望位置 xff0c 即可实现定点飞行 xff0c 此时飞控处于position模式 指点飞行为
  • 技术分享 | P450-圆框跟踪的干货分享

    圆检测流程 xff1a 1 xff0c 利用高斯滤波做预处理 2 xff0c 边界检测部分用到了自适应Canny检测 3 xff0c 将边界分为凹弧和凸弧 xff0c 根据输入参数筛选弧段 4 xff0c 利用弧段来估计椭圆参数 xff0c
  • Linux Xampp 下安装PHP Redis扩展

    cd usr local wget http pecl php net get redis 4 0 1 tgz tar zxvf redis 4 0 1 tgz cd usr local wget http mirrors kernel o
  • 技术分享 | Prometheus(P450)-室内外避障

    原理说明 Astar进行全局路径规划 全局路径规划 1 全局算法和局部算法 全局路径规划是在已知的环境中 xff0c 给机器人规划一条路径 xff0c 路径规划的精度取决于环境获取的准确度 xff0c 全局路径规划可以找到最优解 xff0c
  • PX4官方动态 | 基于FPGA和px4的精准自主降落

    近期Ramon Roche在Twitter上发布了关于使用FPGA实现无人机在目标物体上能够进行精准自主着陆的推文 这次的功能实现是一个在读博士的学生所做的项目 xff0c 希望能在开源社区中得到推广并吸引其余有意向的开发者能一起进行研究
  • 技术分享 | 带你具体部署VINS_FUSION_GPU版本

    前期准备工作已经完成 xff0c 接下来我们就准备VINS在NX的落地 1 下载源码编译 首先VINS gpu版本需要引入OpenCV CUDA版本的加速 xff0c 由于我们的NX镜像已经安装好CUDA xff0c 这里就不在赘叙 xff

随机推荐

  • PX4官方动态 | 带你走进官方教学(二)

    本期是我们第二期官方教学 xff0c 不知道大家有没有跟着我们一起学习第一期的教学呢 xff0c 如果没有看过的同学可以点击链接进行第一期的学习后再来看我们第二期内容 在第一期我们告诉了大家学习方法 xff0c 以及如果从零开始使用PX4自
  • 吊舱追踪 | 车机协同作战小实验

    大家好 xff0c 我是阿木实验室的梓衡 xff0c 今天为大家带来的是我们最新研发的智能吊舱的测试 首先 xff0c 我们会把小吊舱挂载在P450无人机上 xff0c 我们所选择的地面追踪目标是我们的R300无人车 这个吊舱搭载了200W
  • 工实小报 | P450室外首飞教学

    本文将给大家介绍我们P450无人机在进行室外首次飞行时 xff0c 一些常见的注意事项及正确的使用方法 我们在使用这种PX4开源无人机时 xff0c 一定要有一个清楚的认识 它和大疆那种消费级无人机在使用和操作上 xff0c 是有非常大的不
  • 5G时代,将为无人机通讯传输带来哪些新变化?

    众所周知 xff0c 我们正在大步迈向5G时代 xff0c 在近几年的各类媒体关于5G的报道也络绎不绝 与此同时 xff0c 无人机作为空中人工智能领域的 智慧眼 xff0c 其行业应用迅速发展 xff0c 应用需求不断增加 xff0c 对
  • 超小型吊舱它来了,轻松适配多种移动机器人使用场景

    一 设计理念 在无人机 无人车 机器狗等移动机器人场景中 xff0c 往往需要一款小巧 重量轻 成本可控的三轴云台吊舱来实现无人机的航拍 机器人搜寻以及图像识别等功能 而市面上的云台吊舱体积都比较大 xff0c 一些小型增稳云台也不支持角度
  • P600旗舰视觉款正式发布,重新定义视觉追踪与精准定位!

    P600旗舰视觉款无人机是一款准行业级无人机 xff0c 搭载RTK定位系统 xff0c 定位精度可达厘米级 xff0c 飞行路径更精准 姿态更稳定 xff1b 机身搭载Allspark机载计算机 xff0c 算力可达21TOPS xff0
  • [STM32学习笔记1]GPIO初始化,点亮LED

    一 使用STM32cubeMX新建工程并初始化 1 打开STM32cubeMX并新建工程 xff0c 芯片输入STM32F103C8T6 双击芯片进入配置界面 xff0c 首先选择调试方式SYS gt debug gt serial wir
  • 开发人员调试IE9默认IE7模式打开

    IE9的默认就是IE9标准模式啊 xff0c 你可能是启用了组策略里的 打开Internet Explorer 7标准模式 功能 禁用就行 开始菜单 运行 输入gpedit msc后确定 用户设置 管理模板 Windows组件 Intern
  • visual studio屏蔽掉一段代码的组合键

    注释 xff1a Ctrl 43 k 43 c 取消注释 xff1a Ctrl 43 k 43 u
  • 如何在VS Code中运行C或C++程序

    前言 众所周知 xff0c VS Code源代码编辑器 xff0c 是目前最为流行的代码开发工具之一 xff0c 特别受到Web前端开发者的青睐 xff0c 当然还有大名鼎鼎的HBuilder X也是非常给力的 xff0c 我们可以根据自己
  • C语言指针作为形参的一些问题

    C语言中指针是个非常麻烦的事件 xff0c 本人大学学了几年指针 xff0c 用起来还是丈二和尚 xff0c 摸不着头脑 xff0c 特别是在函数中作为参数传递 xff0c 申请空间什么的 xff0c 一头雾水 xff0c 看到这篇文件写的
  • visual studio的cpp文件添加c文件的extern变量出错原因解析

    比如extern这个变量报这个错 xff1a 说这个来自c文件的extern变量为无法解析的外部符号 可以考虑将cpp文件后缀名改成c文件 xff0c 或者加个extern 34 C 34 就可以解决了 xff01 xff01
  • 一文带你全面解析postman工具的使用(效率篇)

    说明 xff1a 由于前面的一文篇幅太大 xff0c 导致无法放在一文发布 xff0c 故这篇文章只是postman工具介绍的第二部分 xff0c 接下来介绍的内容是基于上文的基础往下进行的 三 postman快捷功能 在这一个部分中 xf
  • stm32cube生成串口代码纪要

    这里只讲思路 xff0c 不讲具体代码 第一步 xff1a static void MX USART1 UART Init void xff1b 函数为stm32cube 自动生成 xff0c 只是用于配置串口传输格式 xff0c 波特率等
  • (完整版)Python读取CANalyst-II分析仪(创芯科技)接口函数

    根据需求 xff0c 需要读取CAN总线的信息 目前市面上主流的做法是 xff0c 通过ZLG周立功的CAN设备来进行读取 由此 xff0c 派生出很多小品牌 xff0c 其设备的基本用法和ZLG非常相似 xff0c 本文以创芯科技的CAN
  • rostopic pub的一些问题汇总解决

    1使用rostopic pub给 cmd vel topic指定了速度 xff0c 但是gazebo中的模拟机器人并未发生运动 介绍 xff1a 打开模拟器 模拟器打开 记录位置 执行命令 xff0c 就是手动控制小车运动的 查看节点 xf
  • ROS中显示inf问题(激光雷达laserscan rviz)

    需要改动两处代码 xff1a robot sim demo urdf sick tim urdf xacro 文件 xff1a 将带有 xff02 gpu xff02 的那一行注释掉 xff0c 使用非 xff02 gpu xff02 那一
  • 阿里云 开通 https CDN 客户端和服务器不支持常用的 SSL 协议版本或加密套件

    需要在CDN管理配置上添加https证书 HTTPS设置
  • 1e-7

    1e 7 就是10的负7次方
  • 3维空间中点、线、面之间的数学关系(python代码)

    1 面的定义 三维空间中的平面由两个量确定 xff1a 一个法向量 xff08 垂直于该平面的向量 xff09 一个已知点 xff08 位于该平面上的一个点 2 叉乘和点乘的区别 2 1叉乘的计算方式 xff0c 叉乘用来得到垂直于两条向量