Unity求向量和平面的交点

已知条件:平面P的法向量,平面上的一点P0,直线L的方向向量,直线上的一点L0

公式推导:

主要是两点:

1.目标点T在直线上:T=L0+D*(D未知)

2.目标点T在平面上,则TP0垂直:(T-P0)*=0

将1式代入2式,求得D, **D=(P0-L0)*

最终再带回1式就能求出交点T

代码:

cs 复制代码
    /// <summary>
    /// 求直线L和平面的交点
    /// </summary>
    /// <param name="lineUnitVector">直线的方向向量</param>
    /// <param name="linePos">直线上的一点</param>
    /// <param name="panelUnitVector">平面的法向量</param>
    /// <param name="panelPos">平面上的一点</param>
    /// <returns></returns>
    private Vector3 GetPosToPanelProjection(Vector3 lineUnitVector,Vector3 linePos,Vector3 panelUnitVector,Vector3 panelPos)
    {
        float d = Vector3.Dot(panelPos - linePos, panelUnitVector) / Vector3.Dot(lineUnitVector, panelUnitVector);
        return linePos + lineUnitVector * d;
    }
相关推荐
●VON3 分钟前
从模型到价值:MLOps 工程体系全景解析
人工智能·学习·制造·von
好奇龙猫3 分钟前
【人工智能学习-AI-MIT公开课第 18. 表示:分類、軌跡、過渡】
学习
hhcccchh1 小时前
学习vue第八天 Vue3 模板语法和内置指令 - 简单入门
前端·vue.js·学习
浩瀚地学1 小时前
【Java】异常
java·开发语言·经验分享·笔记·学习
Nan_Shu_6142 小时前
学习: Threejs (3)& Threejs (4)
学习
IT=>小脑虎3 小时前
2026版 Python零基础小白学习知识点【基础版详解】
开发语言·python·学习
李泽辉_4 小时前
深度学习算法学习(五):手动实现梯度计算、反向传播、优化器Adam
深度学习·学习·算法
星火开发设计4 小时前
C++ set 全面解析与实战指南
开发语言·c++·学习·青少年编程·编程·set·知识
坚持就完事了4 小时前
Linux的学习03:时间没有更新怎么解决
学习
李泽辉_4 小时前
深度学习算法学习(一):梯度下降法和最简单的深度学习核心原理代码
深度学习·学习·算法