工作时正好碰到了这个老生常谈的问题,但百度出来都看起来复杂,不易于理解。
其实是很简单的问题,这里重新推导,并记录一下公式。

核心:

几何意义,使用dot,避免空间平面,直线方程。

已知:

平面一点c,平面法线N,射线起点o,射线方向dir。

推导:

设交点为o+k*dir
因为法线与平面上向量垂直
N·(o+k*dir-c)=0
为简化记T=o-c
则k=-(T·N)/(dir·N)

这里还有个除0问题。也就是射线方向完全与法线平行:要么射线本身就在平面上,我们认为相交距离为0;不在平面上,就认为是负无穷(我用正负判定是否相交)

代码:

//https://blog.csdn.net/qq_41524721/article/details/103490144
float RayCastPlane(float3 rayPos, float3 rayDir, float3 planeP, float3 planeN)
{float dd = dot(rayDir, planeN);if (NearZero(dd)){//dir is perpendicular to normalif (NearZero(dot(rayPos - planeP, planeN))){//rayPos is in plane,consider ray dis is 0return 0;}else{//not cast,infinite intersectionreturn -12345;//当作负无穷}}return -dot(rayPos - planeP, planeN) / dd;
}

最简理解空间射线与平面交点相关推荐

  1. 最简理解空间三角形中线与边的交点

    接之前最简理解空间射线与平面交点的场景. 获得射线打在三角形上的交点(之后称为"打点")后,假设三角形为p1,p2,p3,打点为c,想求直线p1c和p2p3的交点. 转化为射线与p ...

  2. 求射线与平面的交点,向量点乘和叉乘

    /*** 几何点*/public static class Point {public final float x,y,z;public Point(float x,float y,float z){ ...

  3. ICDE-2020 论文简析:空间众包中的预测任务分配 : 一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing

    ICDE-2020 论文简析:空间众包中的预测任务分配:一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing: A Data-dr ...

  4. 空间射线与三角形相交算法的两种实现

    文章目录 1. 概述 2. 常规算法 2.1. 理论推导 2.2. 具体实现 3. 优化算法 3.1. 理论推导 3.2. 具体实现 4. 参考 1. 概述 任何复杂的三维模型都可以视作空间三角面片的 ...

  5. matlab求支线与平面交点,直线和平面的交点

    &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 预备知识 高中解析立体几何,几何矢量 若平面上任意一点为 $ ...

  6. 深入理解空间搜索算法 ——数百万数据中的瞬时搜索

    转自 干货|深入理解空间搜索算法 --数百万数据中的瞬时搜索 全球人工智能:专注为AI开发者提供全球最新AI技术动态和社群交流.用户来源包括:北大.清华.中科院.复旦.麻省理工.卡内基梅隆.斯坦福.哈 ...

  7. c语言封闭曲线分割平面_餐饮空间设计之平面合理布局

    无论何种类型的品牌连锁餐饮空间,大致可根据其使用功能的不同将其划分为公共活动功能.用餐功能以及制作功能这三种.但因餐饮品牌经营特色的不同,其功能细分上会有所差异.例如,肯德基.麦当劳这类经营快餐的行业 ...

  8. 深刻理解空间(线性空间,度量空间,赋范空间,线性赋范空间,内积空间,巴拿赫空间以及希尔伯特空间)

    在我们学习矩阵理论和统计理论的时候,总是会出现"**空间".在之前的时候对于空间理解的过程中,总是试图拿出一个具体的例子来加深自己的理解.但是这样做是不对的,因为如果说对于类似&q ...

  9. 三维空间直线与平面交点

    三维空间直线与平面交点 已知 公式推导 最后一个等式 已知 平面描述: 平面的法向 VP(x,y,z)V_{P}(x,y,z)VP​(x,y,z), 平面上的一个点 PP(x,y,z)P_{P}(x, ...

  10. 3D的深入理解:空间几何的平面方程 Ax+By+Cz+D=0

    直线方程 在搜索 Ax+By+Cz+D=0的时候,看了半天没明白ABCD到底是什么,看到有些人又说了Ax+By+C=0,说这是直线方程,但还是没搞明白ABC到底是什么,没有找到明确的答案.有的话大多数 ...

最新文章

  1. Nginx配置使用积累[不断更新]
  2. window/linux composer安装/卸载
  3. 数字语音信号处理学习笔记——语音信号的同态处理(3)
  4. PHP面试题:实现中文字串截取无乱码的方法
  5. struts 模块化开发学习
  6. JavaFX图表(五)之气泡图
  7. java 导出es数据_elasticseach 数据的导出与导出工具elasticdump使用
  8. Appium+Python之PO模型(Page object Model)
  9. html扩展名用于保存清单文件,html5 – HTML 5缓存清单是否也适用于ajax请求?
  10. 凤凰系统中禁用触摸屏
  11. CVPR 2020评审结果放出,魏秀参博士教你如何rebuttal!!!
  12. NBIOT BC26 opencpu物联网应用案例详细解析
  13. bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化方法
  14. 【BLE】蓝牙数据速率
  15. HTML5 1.4 列表
  16. 负整数补码的三种方法
  17. python ValueError: No JSON object could be decoded
  18. win10服务器修改远程密码,技术员解惑win10系统远程桌面保存密码后无法修改的设置方法...
  19. C++实现单链表的基本操作
  20. ACM-ICPC 数论部分总结

热门文章

  1. PowerBuilder9.0连接ORACLE数据库
  2. Unix/Linux编程:Unix文件系统回顾
  3. 安装杀毒软件后计算机运行速度慢,我计算机安装杀毒软件后开机启动很慢
  4. 电脑版微信发消息转圈圈
  5. 数据挖掘概念与技术(第三版)课后答案——第三章
  6. jquery的ajax方法实例,jquery的ajax方法实例教程
  7. 视屏教程、电子书、技术文档
  8. 13我无所不能——无线网络里面的秘密
  9. nike tiempo ylak raoh fmtp
  10. fluent瞬态_瞬态环境