码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 如何计算光线与物体的交点


    序

    作为一个小白,之前一边自我感动一边看了点网课。看会了吗?不存在的。看会了就不叫小白了。

    但是,事物总是不断发展不断前进的,现在大概前进到左下角那里了吧。

    射线与球的交点的计算

    怎么算?根据看热闹时留下的印象,好像是联立,解二次方程。

    那末,具体怎么算?不知道呐……

    射线与平面的交点的计算

    怎么算?根据看热闹时留下的印象,平面方程是法线叉乘=0的形式,好像是联立射线与平面的方程,解一次方程。

    那末,具体怎么算?不知道呐……

    射线与三角形的交点的计算

    怎么算?根据看热闹时留下的印象:

    GAMES101说的好像是直接联立的射线与三角形的方程,然后用”克拉默法则“解方程。

    Taichi说的好像是在平面相交的基础上改的,先判断射线是否与三角形所在的平面相交,再判断交点是否在三角形上。

    那末,具体怎么算?不知道呐……

    一些相关的链接

    网页1——射线三角形求交公式推导

    这个链接里,给出了用克拉默法则解方程计算射线与三角形交点的完整过程

    但是,什么是克拉默法则?好像是利用平行四边形等面积法,推导出来的一个长*高=长*高的什么公式。具体的……忘了。。不忘就不是小白啦!很正常……

    (102条消息) 光线追踪(RayTracing)算法理论与实践(二)平面、材质、联合光线与物体求交_沈土豆的博客-CSDN博客

    那末,克拉默法则,到底,具体是什么? 

    网页2——克拉默法则

    这种就是所谓的递归式的学习……

    矩阵形式的线性方程组

     在数学上,存在着这么一类的方程:

    为了便于说明,这里拿一个小的来举例子

    这个可以写成矩阵的形式

    矩阵形式的线性方程组的图像解释 

     可以按基变换来理解这个方程

     这个【-4,-2】,是初始的单位正交基下的

     基变换

     这个【x,y】,也是初始的单位正交基下的

    克莱姆法则的图像解释

    以这个线性方程组为例。

    这里,只讨论det不为0的情况

    平行四边形的面积=底*高

    底是绿色的单位向量i,长度是1,高是未知数y,所以基变换之前的 

    S=w*h=|i|*y=1*y=y

     基变换以后,根据行列式与基变换的关系,可得:

    S'=det(A)* y

     然后,把【2,0】和【4,2】看作是相对于【i,j】的一组新基,老基【i,j】对应网眼的面积为1

    因为行列式的值代表面积伸缩比例

    所以变换后的四边形的面积=老基网眼面积(1*1=1)*伸缩比例(det的值)

     解x也是同理

     

     

     三维的同理,把平行四边形的面积推广成平行六面体的体积就可以了。

    总结

    • 这个不叫按平行四边形等面积法列方程,应该叫按平行四边形面积公式列方程,然后联立,解出的未知数的值
    •  计算复杂度是按阶数的阶乘增长的,是一个漂亮的理论公式,却不适合实际计算
    • 大概是这个意思吧……

    引用自:

    【官方双语】克莱姆法则,几何解释_哔哩哔哩_bilibili

    行列式的介绍:

    -UP主汉语配音-【线性代数的本质】合集-转载于3Blue1Brown官方双语】_哔哩哔哩_bilibili

    网页3——有数学推导还有代码实现

    这个网页里,有数学推导,还给出了代码。

    覆盖了射线与球,射线与平面,射线与box,射线与三角形。

    挺全面的。

    大概就是这种感觉:

    引用自:

    (154条消息) 光线跟踪的几种常见求交运算_0小龙虾0的博客-CSDN博客_光线求交

    后记

    实践,也不一定就是写代码的那种实践。

    这个应该也属于实践吧。

  • 相关阅读:
    VM虚拟机三种网络配置详解(桥接、NAT、仅主机)
    JSTL标准标签库 EL表达式
    基于C语言 --- 自己写一个通讯录
    C/C++实现的MD5哈希校验
    SQL SELECT 子查询与正则表达式
    Matlab图像处理-迭代式阈值选择法
    新能源汽车行业出口ERP管理解决方案
    火炬之光无限-萌新记录
    21.1 stm32使用LTDC驱动LCD--配置说明
    微信h5纸条交友盲盒项目完整版可上线运营|新版springboot+vue前后端分离项目源码授权
  • 原文地址:https://blog.csdn.net/averagePerson/article/details/125881498
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号