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

相关内容

热门资讯

第9分钟妙计!掌中乐游戏中心破... 第9分钟妙计!掌中乐游戏中心破解版,财神十三章辅助(辅助)真是是有下载(哔哩哔哩)一、掌中乐游戏中心...
九分钟诀窍!雀姬手游辅助脚本,... 九分钟诀窍!雀姬手游辅助脚本,小程序财神十三张脚本小游戏(辅助)果然真的是有脚本(哔哩哔哩)1、小程...
4分钟秘籍!免费辅助神器app... 4分钟秘籍!免费辅助神器app,超凡辅助软件(辅助)好像真的有脚本(哔哩哔哩)1、很好的工具软件,可...
第3分钟指南!哈糖菠萝怎么挂,... 第3分钟指南!哈糖菠萝怎么挂,海贝之城辅助(辅助)其实真的有安装(哔哩哔哩)1、哈糖菠萝怎么挂脚本辅...
8分钟指南!新金龙辅助工具,葫... 8分钟指南!新金龙辅助工具,葫芦娃辅助软件(辅助)果然是有下载(哔哩哔哩)葫芦娃辅助软件透视方法中分...
三分钟攻略!微信小程序财神十三... 三分钟攻略!微信小程序财神十三脚本app,三哥玩辅助器免费下载(辅助)确实真的有辅助(哔哩哔哩)1、...
第8分钟绝活儿!免费雀神挂件怎... 第8分钟绝活儿!免费雀神挂件怎么安装,三哥玩辅助器免费下载(辅助)都是有挂辅助(哔哩哔哩)1、玩家可...
第5分钟经验!新道游正版辅助,... 第5分钟经验!新道游正版辅助,财神破解版全自动脚本(辅助)竟然有挂工具(哔哩哔哩)1、起透看视 财神...
第七分钟机巧!威信茶馆有挂的吗... 第七分钟机巧!威信茶馆有挂的吗,新518互游辅助(辅助)原来真的有辅助(哔哩哔哩)1、进入游戏-大厅...
4分钟大纲!决战十水三修改器,... 4分钟大纲!决战十水三修改器,新天道怎么看底牌(辅助)切实是有app(哔哩哔哩)1、实时新天道怎么看...