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;
    }
相关推荐
心中有国也有家15 小时前
AtomGit Flutter 鸿蒙客户端: ChangeNotifier 模式
学习·flutter·华为·harmonyos
取地址符15 小时前
C++学习笔记(基于learn-cxx)(1)
c++·经验分享·笔记·学习
恣逍信点16 小时前
主观是客观的聚焦
人工智能·学习·程序人生·生活·业界资讯·交友·哲学
打球她不香吗17 小时前
本周ALLegro学习内容的总结
学习·allegro
其实防守也摸鱼18 小时前
蓝队相关知识学习(1)---常用堡垒机和服务器
服务器·功能测试·学习·网络安全·网络攻击模型·攻防对抗·蓝队
冰可乐配18 小时前
fmpeg音频编码组件aac(Advanced Audio Coding (AAC) encoder)学习
学习·音视频·aac
憧憬成为java架构高手的小白19 小时前
MySQl学习
学习
三品吉他手会点灯19 小时前
嵌入式机器学习 - 学习笔记1.1.1 - 什么是机器学习?
c语言·人工智能·笔记·嵌入式硬件·学习·机器学习
程序猿小泓19 小时前
从 Claude Code 学 Agent Harness:一个前端工程师的 AI Agent 学习笔记
前端·人工智能·学习
minglie120 小时前
Axi4Full转SMMR突发读写和单次读写对比
学习