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;
    }
相关推荐
绿豆人17 小时前
Go设计模式学习
学习·设计模式·golang
Fanfanaas17 小时前
Linux 系统编程 进程篇(一)
linux·运维·服务器·c语言·开发语言·网络·学习
qq_1728055917 小时前
Xinference介绍与学习
学习·xinference
-To be number.wan18 小时前
重新认识一下“私有继承”
c++·学习
格鸰爱童话18 小时前
向AI学习项目技能(七)
学习·springboot
lonelyhiker18 小时前
cas学习笔记
数据库·笔记·学习
VelinX18 小时前
【个人学习||数据库】
学习
知识分享小能手18 小时前
MongoDB入门学习教程,从入门到精通,MongoDB备份完全指南(23)
数据库·学习·mongodb
VelinX19 小时前
【个人学习||vue】
前端·vue.js·学习
一个天蝎座 白勺 程序猿19 小时前
AI入门系列:AI入门者的困惑:常见术语解释与误区澄清
人工智能·学习·ai