射线和平面求交
创始人
2024-12-27 07:05:36
0

射线和平面求交

在这里插入图片描述

1、平面方程

如果已知平面的高度(即沿法向量方向的距离)为 height,平面方程可以表示为:

n ^ ⋅ p = h e i g h t \bold{\hat{n}} \cdot p = height n^⋅p=height

p p p 是平面上的任意一点
height 的正负取决于法向量的方向。

2、射线参数方程

r ( t ) = p 0 + t ⋅ d i r \bold{r}(t) = p_0 + t \cdot \bold{dir} r(t)=p0​+t⋅dir

p 0 p_0 p0​: 是射线的起点
d i r dir dir: 是射线的方向向量
t t t: 表示沿着方向向量走的距离

3、计算交点

n ^ ⋅ ( p 0 + t ⋅ d i r ) = h e i g h t \bold{\hat{n}} \cdot (p_0 + t \cdot \bold{dir}) = height n^⋅(p0​+t⋅dir)=height

展开后:
n ^ ⋅ p 0 + t ⋅ ( n ^ ⋅ d i r ) = h e i g h t \bold{\hat{n}} \cdot p_0 + t \cdot (\bold{\hat{n}} \cdot \bold{dir}) = height n^⋅p0​+t⋅(n^⋅dir)=height

解这个方程,求出 t t t:
t = h e i g h t − n ^ ⋅ p 0 n ^ ⋅ d i r t = \frac{height - \bold{\hat{n}} \cdot p_0}{\bold{\hat{n}} \cdot \bold{dir}} t=n^⋅dirheight−n^⋅p0​​

4、代码实现
/**  * 计算射线和平面的交点  * @param source 射线起点  * @param dir 射线方向  * @param normal  平面法向量  * @param height  平面高度  */ vec3 interceptPlane(in vec3 source, in vec3 dir, in vec3 normal, float height) {     float distance = (-height - dot(normal, source)) / dot(normal, dir);      if (distance > 0.0)         return source + dir * distance;     else         return vec3(infinity);  // 返回一个表示无穷远的向量 } 

相关内容

热门资讯

黑科技辅助“丫丫辅助”外挂透视... 黑科技辅助“丫丫辅助”外挂透视辅助系统(竟然是有挂)1、不需要AI权限,帮助你快速的进行丫丫辅助计算...
第三分钟透视!三七互娱辅助器透... 第三分钟透视!三七互娱辅助器透视开挂(辅助挂)科技教程(原本存在有挂)1、三七互娱辅助器透视开挂ai...
第九分钟辅助器!微友三代辅助(... 第九分钟辅助器!微友三代辅助(辅助挂)都是是真的有挂(详细辅助曝光教程)1、第九分钟辅助器!微友三代...
黑科技辅助挂“指尖辅助”外挂透... 黑科技辅助挂“指尖辅助”外挂透视辅助软件(总是有挂)1、下载好指尖辅助辅助软件之后点击打开,先需要设...
第6分钟辅助!福建兄弟十三水有... 第6分钟辅助!福建兄弟十三水有没有挂(辅助挂)黑科技教程(好像是有挂)1、这是跨平台的福建兄弟十三水...
两分钟了解!微信边锋辅助(辅助... 两分钟了解!微信边锋辅助(辅助挂)其实是真的有挂(详细辅助靠谱教程)微信边锋辅助软件透明挂微扑克wp...
黑科技辅助挂“边锋干瞪眼开挂”... 黑科技辅助挂“边锋干瞪眼开挂”外挂透视辅助脚本(原来存在有挂)1、边锋干瞪眼开挂ai辅助优化,边锋干...
1分钟有挂!聚财app辅助(辅... 1分钟有挂!聚财app辅助(辅助挂)教你攻略(一直是有挂)1、超多福利:超高返利,海量正版游戏,聚财...
6分钟辅助!hhpoker辅助... 6分钟辅助!hhpoker辅助器(辅助挂)总是存在有挂(详细辅助普及教程)运hhpoker辅助器辅助...
五分钟辅助!激k辅助器如何下载... 一、激k辅助器如何下载简介了解软件请加微:136704302激k辅助器如何下载是一款在线扑克游戏平台...