码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 《3D 数学基础》几何检测-相交性检测


    目录

    1. 2D直线相交

    2. 3D射线相交点

    3. 射线和平面的交点

    4. 3个平面的交点

    5. 射线和圆或者球交点

    6. 两个圆或者球是否相交

    7. 球和平面的相交性检测

    8. 射线和AABB的相交性(13.17)

    9. 射线和三角形的相交性(13.16)

    10. 两个AABB的相交性(也叫碰撞检测)


    1. 2D直线相交

    直线方程,求交点(x,y)。

    (1)分母不为0,则有唯一一个解;

    (2)分母为0,则平行。

    2. 3D射线相交点

    其实是求t,知道相交点的t值,利用射线公式就知道相交点坐标。

    3. 射线和平面的交点

    把射线方程代入平面方程中,求出自变量t即可。

    4. 3个平面的交点

     

    交点p,以向量表示(x,y,z)。 

    5. 射线和圆或者球交点

    求射线参数t.

    其中a是将e投影到d,这个向量的长度是a, 投影公式是a=e·d;     e=c-p0 

    6. 两个圆或者球是否相交

    (1)静态相交性

    圆心距离d < r1+r2时,不相交;为避免求d是开方,一般使用d^2 < (r1+r2)^2. 

    (2)动态相交性

    两个球在分别移动d1和d2的过程中是否会相交的,如下,d1和d2是移动向量

     因为移动是相对的,所以可以将左边的球设置为静止的,右边的移动方向就变成d,如下。

     以c_m为原点,d为移动的方向向量,t为自变量的射线p(t) = c_m + td。变成了求射线自变量t值。

    其r=r_s + r_m。

     

    7. 球和平面的相交性检测

    (1)静态相交性

    平面公式: p·n = d,n是单位向量; 球:由半径r和球心初始位置c表示。

    计算球心到平面的距离:dis = n·c - d

    • dis >= r,球完全在平面的前面;
    • dis<= -r,在平面的背面;
    • 否则,球横跨平面(即相交)。

     (2)动态相交性

    如果两个都在运动,则换成一个静止,一个做相对运动(如上面的两个圆或者球是否相交)

    单位向量d指明方向,使用射线方程c+td记录球心运动轨迹。平面公式是p·n=d,n是单位向量。球心运动t时,会与平面相交。

    交点是c - r n

    后面几个较为复杂

    8. 射线和AABB的相交性(13.17)

    附录有实现

    9. 射线和三角形的相交性(13.16)

    书上有实现。

    10. 两个AABB的相交性(也叫碰撞检测)

    静止相交性检测是简单的,需要在每个维度上单独检测他们的相交性即可。

    动态的很复杂。且实际情况中,很少有轴对齐于同一个坐标系空间中的。

    参考:37.几何检测_哔哩哔哩_bilibili 

  • 相关阅读:
    【Python】Django Web 框架
    关于五度圈
    契约锁助力服装全产业链8大核心业务、20+文件电子签
    平时健身买什么耳机好、分享五款最好的运动耳机推荐
    vue补充继上一篇
    如何实现随时随地可靠的无线通信?
    微信小程序学习(二):常用样式和组件
    移动设备管理(MDM)有哪些关键功能?
    Oracle数据库
    如何做代码评审(code review)
  • 原文地址:https://blog.csdn.net/jizhidexiaoming/article/details/133789566
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号