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;
    }
相关推荐
铁匠匠匠1 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
架构文摘JGWZ3 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
小齿轮lsl3 小时前
PFC理论基础与Matlab仿真模型学习笔记(1)--PFC电路概述
笔记·学习·matlab
Aic山鱼3 小时前
【如何高效学习数据结构:构建编程的坚实基石】
数据结构·学习·算法
qq11561487073 小时前
Java学习第八天
学习
天玑y4 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
2301_789985944 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
橄榄熊4 小时前
Windows电脑A远程连接电脑B
学习·kind
web_learning_3215 小时前
source insight学习笔记
笔记·学习
Lossya5 小时前
【机器学习】参数学习的基本概念以及贝叶斯网络的参数学习和马尔可夫随机场的参数学习
人工智能·学习·机器学习·贝叶斯网络·马尔科夫随机场·参数学习