如何计算光线与物体的交点

图形学算法——点与多边形的关系(交点数判断法) 基本思想:从指定点出发,向无穷远处发出一条射线,计算这条射线和多变的交点个数,若交点数为偶数(包括0),则说明在该点在多边形外;否在该点在多边形内。   此处,为了方便我们叙述,我们假设射线是水平向右发射的。为了计算射线与多边形所有边的交点,我们需要遍历多边形所有的边,判断是否存在交点。这样的计算量非常大,以下给出几种可以减少计算量的方法。 一、构建安全矩形   如图所示,构 阅读详情

序

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

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

射线与球的交点的计算

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

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

射线与平面的交点的计算

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

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

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

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

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

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

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

一些相关的链接

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

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

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

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

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

网页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的博客-优快云博客_光线求交

后记

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

这个应该也属于实践吧。

OpenGL光照追踪 1.光照追踪简介 光线追踪,简单地说,就是从摄影机的位置,通过影像平面上的像素位置(比较正确的说法是取样(sampling)位置),发射一束光线到场景,求光线和几何图形间最近的交点,再求该交点的著色。如果该交点的材质是反射性的,可以在该交点向反射方向继续追踪。光线追踪除了容易支持一些全局光照效果外,亦不局限于三角形作为几何图形的单位。任何几何图形,能与一束光线计算交点(intersection 阅读详情

相关推荐

图形学笔记:光线追踪

光线跟踪是一种经典的渲染方法。概述光线跟踪算法假设光线从眼睛出发,跟踪光线的路径,由此找到对应点的信息。光线生成投影3D场景到2D图像的转变有不同的投影方式,主要有平行投影和透视投影。其中透视投影和人眼的视觉特点一致。光线在透视投影中,光线的原点是人眼位置,方向为从眼睛到每个像素的方向。交点从眼睛发出的光线需要计算和场景中物体的交点。主要有线与球的交点,线和三角形的交点。其中线和三角形的交点比较常用

flyingzhao 2830

1.2.2 射线与材质的交叉点

相机生成一个射线,首要的渲染工作是决定物体的材质,如果有的话,还要确定射线第一次交互和在哪发生交互。这个交互点顺着射线是可见的,且我们希望模仿光线与物体在这个点的交互。为了找到光线交互,必须测试射线与所有物体在这个场景的交互,并且选择出射线第一个交互的点。假如射线为r,我们可以参数化如下形式:r(t) = o + td,o为射线的原点,d是它的方向向量,t是一个(0,正无穷)的参数。这样就可以通过...

计算机图形学的成长之路 382

计算机图形学实验9 RayBounding Valume求交和 BVH查找

像素网格生成:首先,我们需要为最终的图像建立一个二维像素网格。每个像素代表屏幕上的一个点,我们的目标是计算出这个点应该显示为什么颜色。发射光线:对于每个像素,从相机的位置出发,沿着该像素指向场景的方向发射一条光线。这条光线是我们想象中的从观察者的眼睛到屏幕这一段空间中的延续。光线与物体的交点检测:我们计算这条光线是否与场景中的任何物体相交,以及交点的位置。在这个例子中,就是判断光线是否击中了立方体的一个面。这通常涉及到射线与几何体求交的数学运算。

m0_73802120的博客 899

《3D 数学基础》几何检测-相交性检测

以c_m为原点,d为移动的方向向量,t为自变量的射线p(t) = c_m + td。因为移动是相对的,所以可以将左边的球设置为静止的,右边的移动方向就变成d,如下。如果两个都在运动,则换成一个静止,一个做相对运动(如上面的两个圆或者球是否相交)两个球在分别移动d1和d2的过程中是否会相交的,如下,d1和d2是移动向量。静止相交性检测是简单的,需要在每个维度上单独检测他们的相交性即可。其实是求t,知道相交点的t值,利用射线公式就知道相交点坐标。球心运动t时,会与平面相交。交点p,以向量表示(x,y,z)。

一千零一夜的博客 1584

CUDA和OpenGL实现的光线追踪器教程

CUDA Runtime Library(简称CUDART)是NVIDIA提供的CUDA开发工具包的一部分,它是一组用于GPU计算的运行时API,使得开发者能够方便地管理和执行基于GPU的程序。CUDART为开发者抽象了GPU的复杂性,提供了易于使用的接口来完成内存管理、设备管理、线程管理等基础功能。在光线追踪器中,每个物体都用一组数学模型来表示。这些模型是通过数学方程描述的,它们可以准确地定义物体的形状和属性。最常用的数学模型包括球体、平面、圆柱体和三角形等基本几何形状。

weixin_35266799的博客 733

Direct3D物体拾取技术实现详解

Direct3D拾取技术是指在三维空间中精确地选择和定位对象的过程。它广泛应用于游戏开发、虚拟现实和3D模拟中,帮助开发者实现用户与3D环境的有效交互。拾取技术的核心在于准确地将二维屏幕上的用户操作映射到三维世界中,允许用户通过鼠标或触摸屏来“拾起”虚拟空间中的对象。视椎体(View Frustum),也称为视锥体,是计算机图形学中用于确定哪些3D对象在视图范围内并最终渲染到屏幕上的一个概念。

weixin_35826166的博客 1079

OSG 求射线与模型的交点

osg::Node *m_node = _modelNode;//设置模型节点 osg::Vec3 start; osg::Vec3 end; osg::ref_ptr<osgUtil::IntersectionVisitor> iv = new osgUtil::IntersectionVisitor; osg::ref_ptr<osgUtil::LineSegmen

HelloEarth_的博客 4203

soul聊天协议逆向

通过观察上面的CFG发现,该混淆符合以下逻辑,整体思路就是先查找主分发器,一般被引用次数最多的那个块就是主分发器,引用主分发器的块大概率是真实块,再使用unicorn模拟执行,遍历每一个分支,记录每一个块,如果某一个块是上次记录的块则也为真实块,无后继的块则为retn块,剩下的就是无用块。通过Frida Hook libc.so后发现,聊天协议走的是JAVA层的socket,然后Hook JAVA层相关函数得到如下调用堆栈。里面调用的函数不是很多,所以。不行不行,革命要彻底!

2503_90751789的博客 3211

光线跟踪的几种常见求交运算

光线跟踪的几种常见求交运算 我们知道光线跟踪中最昂贵的就是和几何对象的求交运算了。这里就记录几个比较常见的光线和几何对象求交运算。 球 射线与球体相交可能是射线几何相交测试的最简单形式,这就是为什么这么多射线追踪器显示球体图像的原因。 由于其简单性,它还具有非常快的优势。可以使用两种方法实施此测试。 第一个使用几何来解决问题。 第二种技术是我们最常用的方法,我们称它为代数法。这都...

小龙虾的博客 7732

Yolov2 训练时anchor是如何使用的?build_target

0.简略描述 1.将真值检测框变换到特征图尺度上 2.计算以特征图每个网格中心为中心点时所有锚框与真值检测框的交并比 3.取与真值检测框交并比最大的锚框的id,及真值检测框中心所在cell的id,有此,可将真值检测框与预测结果对应起来 4.计算位置回归损失,置信度损失,分类损失 1,网络的输出 图1 yolov2 网络对于检测框位置大小的输出是: 对于1个batch网络的输出的shape为[batch_size, H*W*num_anchors, 5+num_classes], 其中: num_

机器人视觉感知 2818

[UE5蓝图基础二]1.[1d混合空间] 走和跑的动画切换(shift切换)

再双击”run”进去 我们需要给他指定一个动画姿势,这里就需要给他我们前面做的”1d”混合空间,然后可以看到”1d” 上有个speed参数,代表的速度 从前面的逻辑来看需要通过控制速度来切换动画,那么必然不能写死速度,把速度提升为变量传递进来即可,所以就得到以下蓝图节点。混合空间的概念:混合空间就是可以将角色多个动画混合在一起 ,我们创建动画类就是创建个”Animation”文件夹 在文件夹内创建混合空间。我们目前要实现的是一个走和跑的功能 那么创建1d即可。到这一步混合空间已经做完 下一步做”动画蓝图”

qq_30584617的博客 3300

图形学笔记(十一)光线追踪——Shadow Mapping、光线追踪、光线投射、软硬阴影、光线与物体交点、AABB包围盒

文章目录1 Shadow Mapping与光线追踪1.1 Shadow Mapping1.1.1 概览1.1.2 Shadow Mapping步骤1> 从光源渲染2> 从摄像机渲染1.1.3 Shadow Mapping结果1.1.4Shadow Mapping的问题1.2 软阴影和硬阴影1.2.1 概览1.2.2 软阴影的原理1.3 进行光线追踪(Ray Tracing)的原因 1 Shadow Mapping与光线追踪 1.1 Shadow Mapping 1.1.1 概览 Shadow M

weixin_43399489的博客 4516

Ubuntu 24.04 搭建 Squid 代理服务器终极指南:从入门到 HTTPS 缓存AI模型

本文详细指导在Ubuntu 24.04系统部署Squid代理服务器,实现AI大模型文件的高效缓存。重点内容包括:1) 安装squid及必备的squid-openssl扩展包;2) 配置HTTPS拦截(SSL-Bumping)功能,创建CA证书和SSL数据库;3) 优化缓存策略,设置4TB存储空间并强制缓存常见大文件格式;4) 结合华为防火墙实现透明代理。文章特别强调实际部署中的关键注意事项和常见错误解决方案,如证书路径配置、权限设置等问题,帮助用户快速搭建企业级缓存代理服务。

zlt315的博客 1921

计算机图形学十二:Whitted-Style光线追踪原理详解及实现细节

Whitted风格光线追踪及其加速方法摘要1 Whitted-Style 光线追踪1.1 原理详解 摘要 本篇内容主要分为两部分,第一部分介绍最基础的Whitted-style光线追踪的原理,该方法是业界后来许许多多的光线追踪方法变体的基础,相对重要但是并不难理解,第二部分则会具体介绍一些加速光线追踪的方法,因为众所周知,属于全局光照模型的光线追踪获得了相比局部光照Blinn-Phong模型更好的效果,代价自然是速度很慢,难以做到实时(比如说30FPS以上),所以如何加速光线追踪也是重要的研究问题之一。 1

吃人的博客 8840

Qwen3.6-27B本地部署实战:LM Studio配置、硬件门槛与避坑指南

大语言模型本地部署是当前AI工程落地的核心能力之一,其本质是将高参数量模型(如27B级)在受限硬件环境下实现低延迟、高稳定推理。关键技术原理涵盖量化压缩(如GGUF格式与q4_k_m精度权衡)、GPU显存分配策略(KV Cache管理与Offloading机制)、以及运行时环境兼容性(CUDA驱动、llama.cpp后端版本)。该能力直接决定私有化AI应用的技术可行性与成本边界,广泛应用于企业知识库构建、代码辅助、长文档分析等对数据主权和响应确定性要求高的场景。本文聚焦Qwen3.6-27B这一典型27B模

weixin_33272631的博客 468

嵌入式开源项目哪里找

对比产生的伤害是经验思考积累下的差距,知道自己不知道什么然后前进去追寻。

quanquanxiaobu的博客 3949

光线追踪RayTracing,基本原理,判断物体与光线相交

初识光线的传播和表现

KamikazePilot的博客 1369

基于YOLO-world训练模型的完整教程:从数据准备到微调训练

本文提供了YOLO-world模型训练的完整教程,涵盖从环境配置到微调训练的全流程。首先介绍了YOLO-world项目的安装与配置步骤,包括依赖安装和CUDA环境设置;接着详细说明了数据集的准备方法,包括COCO格式数据集的组织结构和自定义数据集的类别定义;然后阐述了配置文件的修改要点,包括超参数调整和数据集路径设置;最后讲解了训练命令的使用方法及常见问题的解决方案。本教程旨在帮助读者快速掌握YOLO-world模型的训练技能,适用于计算机视觉领域的研究人员和开发者。

FJN110的博客 1108

14、计算机图形学——whited-style光线追踪

一、为啥需要光线追踪 以往的Blinn-Phong光照模型在渲染场景时,对于光的漫反射和镜面反射都只会计算一次,但是实际上在一个场景里面,光有可能既存在反射也存在折射,而且,反射次数和折射次数并不只是一次 因此,Blinn-Phong在精确计算光照强度的时候是不太准确的,而光线追踪渲染方式,就是为了解决Blinn-Phong光照模型存在的问题 二、光线追踪的三个假设 在光线追踪渲染模型中,光是沿着直线传播,光线和光线之间不会产生碰撞,所有的光路都是可逆的 三、光线追踪的过程 首先

Master Cui的博客 764

基于Matlab的深度学习OFDM系统信号检测

在接收端,我们首先去除循环前缀,然后对接收到的信号进行FFT变换和QAM解调。在通信系统中,正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)是一种常用的调制技术,它可以将高速数据流分成若干个低速子载波进行传输,提高了信道利用率和抗干扰性能。接下来,我们使用训练好的神经网络对QAM调制后的数据进行检测,得到估计的FFT变换结果。深度学习方法可以通过大量的训练数据来学习信号的特征,并具有一定的适应能力,在某些情况下可能能够获得更好的检测性能。

2301_79325657的博客 296

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

光线跟踪算法描述—计算机图形学

光线跟踪算法原理: 步骤一:从视点出发通过该像素中心向场景发出一条光线R,并求出R与场景中物体的全部交点;获得离视点最近交点P;并依据局部光照明模型计算P处颜色值Ic (光线投射)。 步骤二:在P处沿着R镜面反射方向和透射方向各衍生一条光线 (注:若点P所在表面非镜面或不透明体,则无需衍生出相应光线) 步骤三:分别对衍生出的光线递归地执行前面步骤,计算来自镜面反射和透射方向上周围环境

yangyongUestc的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

百行代码手写光线追踪

如果我们将交点作为新射线的原点,那么我们可能会将我们现在所在的球体检测为交点和光线之间的物体(intersection在某个objects的表面上,min_distance直接等于0)。到目前为止,我们知道是否存在一条从摄像机/眼睛到物体的直线,我们也知道这是哪个物体,以及我们正在观察的物体的确切部分。在现实中,光从光源发出,向所有方向扩散,反射在物体上,然后进入你的眼睛。这是因为解方程的 t 可以是负值,但这意味着与球面相交的射线的方向向量不是 d,而是 -d(例如,如果球面位于摄像机和屏幕的后面)。

weixin_41914570的博客 1654

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

[Raytracing]光线追踪算法

转自:http://www.cnblogs.com/daniagger/archive/2012/05/27/2520254.html 实际上叫反向光线追踪(backward raytracing),因为计算是从camera开始发射光线,而不是从光源发射光线。 反向光线追踪步骤: 1、camera的胶片被分成离散的网格(即像素点),我们的目标是确定每一个像素点的颜色值。 2、对于每一个

FlyingRoc0209的博客 3472

Raymarching(光线步进)基础

Raymarching光线步进

weixin_46525412的博客 1756

计算机图形学----光线追踪(Ray Tracing)

1.为什么使用光线追踪 a.光栅化局限:(以下三点支撑不好) 软阴影:阴影分界线是渐变的 ![在这里插入图片描述](https://img-blog.csdnimg.cn/29494c15389a472ab3e44c7b70104793.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ZJUENDSg==,size_16,

VIPCCJ的博客 1060
上一篇: 路径追踪相关的一些内容
下一篇: ICP——最近点迭代算法
averagePerson
博客等级 码龄5年 381粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值