射线和平面求交
创始人
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);  // 返回一个表示无穷远的向量 } 

相关内容

热门资讯

6分钟辅助!德州之星软件(德州... 6分钟辅助!德州之星软件(德州)外挂辅助神器软件(AI辅助)(2026已更新)-哔哩哔哩1、德州之星...
透视app!aapoker为什... 透视app!aapoker为什么一直输(AAPoker)外挂辅助工具ai(发牌机制)(2026已更新...
透视线上!wpk微扑克真的(w... 透视线上!wpk微扑克真的(wpK)最新ai辅助黑科技(智能ai辅助)(2025已更新)-哔哩哔哩1...
第1分钟辅助!德州ai辅助软件... 第1分钟辅助!德州ai辅助软件推荐(德州ai)外挂辅助神器软件(AI辅助)(2024已更新)-哔哩哔...
透视安装!aapoker脚本透... 透视安装!aapoker脚本透明(AAPOkER)外挂辅助工具ai(发牌机制)(2025已更新)-哔...
透视科技!wpk数据统计软件会... 透视科技!wpk数据统计软件会不会被封号(Wpk)最新ai辅助黑科技(智能ai辅助)(2021已更新...
第二分钟辅助!德州辅助软件线上... 第二分钟辅助!德州辅助软件线上(德州)外挂辅助神器软件(AI辅助)(2023已更新)-哔哩哔哩1、任...
透视好友!aapoker俱乐部... 透视好友!aapoker俱乐部后台可以操作吗(AAPOker)外挂辅助工具ai(发牌机制)(2023...
辅助透视!wpk德州ai辅助神... 辅助透视!wpk德州ai辅助神器(wPk)最新ai辅助黑科技(智能ai辅助)(2026已更新)-哔哩...
第7分钟辅助!德州之星辅助器怎... 第7分钟辅助!德州之星辅助器怎么用(德州ai)外挂辅助神器软件(AI辅助)(2020已更新)-哔哩哔...