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

相关内容

热门资讯

两分钟辅助器!wpk辅助是什么... 两分钟辅助器!wpk辅助是什么(透视辅助)详细辅助软件(确实真的是有挂)1、点击下载安装,wpk辅助...
五分钟提高好牌几率!aapok... 五分钟提高好牌几率!aapoker怎么设置抽水(透视辅助)详细辅助下载(切实真的是有挂)1、不需要A...
八分钟免费玩!we poker... 八分钟免费玩!we poker游戏下(透视底牌)详细辅助工具(确实存在有挂)1、操作简单,无需注册,...
3分钟作弊码!德州局hhpok... 3分钟作弊码!德州局hhpoker(透视脚本)详细辅助程序(都是真的有挂)1、点击下载安装,德州局h...
一分钟作弊!wpk辅助购买,w... 一分钟作弊!wpk辅助购买,wpk安卓下载辅助,详细教程(有挂方法);1、wpk安卓下载辅助ai辅助...
一分钟安全!aapoker怎么... 一分钟安全!aapoker怎么设置提高好牌几率(透视辅助)详细辅助程序(其实真的有挂)1、ai辅助优...
三分钟提高好牌率!淘宝买wep... 三分钟提高好牌率!淘宝买wepoker透视有用吗(透视底牌)详细辅助功能(都是存在有挂)小薇(透视辅...
五分钟可以作弊!hhpoker... 五分钟可以作弊!hhpoker透视脚本,hhpoker透视脚本视频,详细教程(有挂黑科技)1、很好的...
9分钟俱乐部辅助!wpk刷入池... 9分钟俱乐部辅助!wpk刷入池率脚本(透视辅助)详细辅助方法(真是真的是有挂)1、全新机制【wpk刷...
4分钟工具!aapoker辅助... 4分钟工具!aapoker辅助器怎么用,aapoker如何设置胜率,详细教程(有挂内幕)1. ai辅...