最简理解空间射线与平面交点
工作时正好碰到了这个老生常谈的问题,但百度出来都看起来复杂,不易于理解。
其实是很简单的问题,这里重新推导,并记录一下公式。
核心:
几何意义,使用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;
}
最简理解空间射线与平面交点相关推荐
- 最简理解空间三角形中线与边的交点
接之前最简理解空间射线与平面交点的场景. 获得射线打在三角形上的交点(之后称为"打点")后,假设三角形为p1,p2,p3,打点为c,想求直线p1c和p2p3的交点. 转化为射线与p ...
- 求射线与平面的交点,向量点乘和叉乘
/*** 几何点*/public static class Point {public final float x,y,z;public Point(float x,float y,float z){ ...
- ICDE-2020 论文简析:空间众包中的预测任务分配 : 一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing
ICDE-2020 论文简析:空间众包中的预测任务分配:一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing: A Data-dr ...
- 空间射线与三角形相交算法的两种实现
文章目录 1. 概述 2. 常规算法 2.1. 理论推导 2.2. 具体实现 3. 优化算法 3.1. 理论推导 3.2. 具体实现 4. 参考 1. 概述 任何复杂的三维模型都可以视作空间三角面片的 ...
- matlab求支线与平面交点,直线和平面的交点
              预备知识 高中解析立体几何,几何矢量 若平面上任意一点为 $ ...
- 深入理解空间搜索算法 ——数百万数据中的瞬时搜索
转自 干货|深入理解空间搜索算法 --数百万数据中的瞬时搜索 全球人工智能:专注为AI开发者提供全球最新AI技术动态和社群交流.用户来源包括:北大.清华.中科院.复旦.麻省理工.卡内基梅隆.斯坦福.哈 ...
- c语言封闭曲线分割平面_餐饮空间设计之平面合理布局
无论何种类型的品牌连锁餐饮空间,大致可根据其使用功能的不同将其划分为公共活动功能.用餐功能以及制作功能这三种.但因餐饮品牌经营特色的不同,其功能细分上会有所差异.例如,肯德基.麦当劳这类经营快餐的行业 ...
- 深刻理解空间(线性空间,度量空间,赋范空间,线性赋范空间,内积空间,巴拿赫空间以及希尔伯特空间)
在我们学习矩阵理论和统计理论的时候,总是会出现"**空间".在之前的时候对于空间理解的过程中,总是试图拿出一个具体的例子来加深自己的理解.但是这样做是不对的,因为如果说对于类似&q ...
- 三维空间直线与平面交点
三维空间直线与平面交点 已知 公式推导 最后一个等式 已知 平面描述: 平面的法向 VP(x,y,z)V_{P}(x,y,z)VP(x,y,z), 平面上的一个点 PP(x,y,z)P_{P}(x, ...
- 3D的深入理解:空间几何的平面方程 Ax+By+Cz+D=0
直线方程 在搜索 Ax+By+Cz+D=0的时候,看了半天没明白ABCD到底是什么,看到有些人又说了Ax+By+C=0,说这是直线方程,但还是没搞明白ABC到底是什么,没有找到明确的答案.有的话大多数 ...
最新文章
- Nginx配置使用积累[不断更新]
- window/linux composer安装/卸载
- 数字语音信号处理学习笔记——语音信号的同态处理(3)
- PHP面试题:实现中文字串截取无乱码的方法
- struts 模块化开发学习
- JavaFX图表(五)之气泡图
- java 导出es数据_elasticseach 数据的导出与导出工具elasticdump使用
- Appium+Python之PO模型(Page object Model)
- html扩展名用于保存清单文件,html5 – HTML 5缓存清单是否也适用于ajax请求?
- 凤凰系统中禁用触摸屏
- CVPR 2020评审结果放出,魏秀参博士教你如何rebuttal!!!
- NBIOT BC26 opencpu物联网应用案例详细解析
- bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化方法
- 【BLE】蓝牙数据速率
- HTML5 1.4 列表
- 负整数补码的三种方法
- python ValueError: No JSON object could be decoded
- win10服务器修改远程密码,技术员解惑win10系统远程桌面保存密码后无法修改的设置方法...
- C++实现单链表的基本操作
- ACM-ICPC 数论部分总结