最近在学习光线追踪,其中光线反射,折射是重点。

由于这本书是英文的,对于阅读能力是一个大挑战吖。学习过程中发现了一位大佬的学习总结:

https://blog.csdn.net/libing_zeng/article/details/72598060

写得很清楚,比较厉害啦。 但是折射这部分的证明没有写清楚,所以我自己理清了一下,记录一下,嘻嘻(#^.^#)

  • 折射光线的方向向量:

源代码:

bool refract(const vec3& v, const vec3& n,float nt,vec3& refracted){vec3 uv = unit_vector(v);float dt = uv.dot(uv,n);float d = 1.0 - nt*nt*(1-dt*dt);if(d > 0){refracted = nt*(uv-n*dt) - n*sqrt(d);return true;}else{return false;}}

计算过程如下:

  • 漫反射光线的方向向量

源代码

模拟随机方向的向量(起点在原点,长度小于1,方向随机)
vec3 lambertian::randomUnitNormal()const{vec3 p;do{//产生(-1,1)之间的随机数p = 2.0*vec3((rand()%100/(float)(100)),(rand()%100/(float)(100)),(rand()%100/(float)(100)))-vec3(1,1,1);}while(p.squared_length() >= 1.0);return p;
}bool lambertian::scatter(const ray& rIn ,const hit_record& rec,vec3& attenuation,ray& scattered)const{光线起点指向反射后的撞击另一球的撞点的向量vec3 target = rec.p + rec.normal + randomUnitNormal();漫反射光线的方向向量:PM=PS+OE 起点为P点scattered = ray(rec.p,target-rec.p);attenuation = albedo;return true;}

计算过程如下:

镜面反射光线的方向向量

源代码:

//镜面反射光线的方向向量vec3 reflect(const vec3& v, const vec3 &n){vec3 vp;return v - 2*vp.dot(v,n)*n;}

计算过程如下:

光反射与折射向量方向计算详解(基于Ray Tracing in One Weekend这本书)相关推荐

  1. Python计算向量夹角:向量夹角计算方法详解

    Python计算向量夹角:向量夹角计算方法详解 在数值分析和几何学中,我们经常需要计算两个向量之间的夹角.在Python中,我们可以使用numpy库中的函数来计算向量之间的夹角. 首先,我们需要将向量 ...

  2. 【Unity】如何理解Vector3.normalized 归一化向量 以及 向量方向计算

    [Unity]如何理解Vector3.normalized 归一化向量 以及 向量方向计算 normalized的概念 Vector3.normalized : 返回大小为1的向量(只读).规范化时, ...

  3. SVM-支持向量机原理详解与实践之一

    SVM-支持向量机原理详解与实践 前言 去年由于工作项目的需要实际运用到了SVM和ANN算法,也就是支持向量机和人工神经网络算法,主要是实现项目中的实时采集图片(工业高速摄像头采集)的图像识别的这一部 ...

  4. SVM-支持向量机原理详解与实践之四

    SVM-支持向量机原理详解与实践之三 SVM原理分析 核函数与核技巧 什么是核 什么是核,核其实就是一种特殊的函数,更确切的说是核技巧(Kernel trick),清楚的明白这一点很重要. 为什么说是 ...

  5. SVM-支持向量机原理详解与实践之三

    SVM-支持向量机原理详解与实践之二 SVM原理分析 以下内容接上篇. 拉格朗日对偶性(Largrange duality)深入分析 前面提到了支持向量机的凸优化问题中拉格朗日对偶性的重要性. 因为通 ...

  6. 音视频开发(28)---流媒体并发量与宽带、码率计算详解

    流媒体并发量与宽带.码率计算详解 码率计算公式     基本的算法是:[码率](kbps)=[文件大小](字节)X8/[时间](秒)*1000     音频文件专用算法:[比特率](kbps)=[量化 ...

  7. Java stream流式计算详解

    Java stream流式计算详解 1. Stream概述 1.1 Stream简介 1.2 Stream分类 2. Stream操作 2.1 Stream创建 2.2 Stream无状态操作 2.3 ...

  8. 看门狗配置以及计算详解

    独立看门狗配置及计算详解_stand_young的博客-CSDN博客https://blog.csdn.net/weixin_44612435/article/details/113500920

  9. OSPFv2原理详解(基于RFC2328)+配置介绍+RFC2328翻译

    个人认为,理解报文就理解了协议.通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议. 虽然路由器自身可以对协议做一些独特的配置,但是报文仍然是协议的核心.例如,OSPF的完全末节 ...

最新文章

  1. 复仇者联盟与IntelliJ IDEA也很配哦
  2. 如何在命令行模式下升级的你Visual Studio的Solution文件
  3. 【面向过程编程】零钱通项目
  4. Android开发小知识点(二)
  5. 计算机广告制作未来发展还行吗,计算机多媒体设计专业和广告设计制作那个好...
  6. 447. Number of Boomerangs
  7. 数学分析闭区间套定理_【缠论基础】区间套
  8. 差分硬盘的merge(合并差异)实验分析
  9. 【教程】适用于AIDE 2.1.5版的API文档设置
  10. 如何使用dosbox运行程序——步骤详解
  11. 使用PDFObject添加将本地磁盘pdf文件在前端页面展示
  12. 百度网盘机器人软件工具自动发货管理文件好友群补发文件资料 (可用于拼多多淘宝闲鱼虚拟店商品自动发货)
  13. 简述java重载和重写的相同点_方法的重载和重写的异同之处
  14. ANSYS APDL学习(5):ANSYS输入文件input file 的编写和调试方法
  15. android面试题2022
  16. excel切片器_Excel有一对极品组合工具,能快速实现数据多维动态透视
  17. PS如何快速抠头发丝
  18. 工业相机基础知识详述 —— 焦平面,像平面,弥散圆,光圈,分辨率,景深,接口,靶面尺寸
  19. Twitch,斗鱼的“万里知音”
  20. EXCEL常用操作-----自动编号

热门文章

  1. 试题 算法训练 观星 java 题解 624
  2. 智能合约版抢购机器人测试
  3. 2021年高教社杯全国大学生数学建模B题(乙醇偶合制备C4烯烃)
  4. 我的世界修改等级上限服务器,我的世界:容易误导玩家的五个问题,满级之后将迎来新的开始?...
  5. 临泉新汇英高中2021高考成绩查询,衡水一中临泉分校 2020年新汇英中学 高中毕业诗会...
  6. 能力才是女人最极致的性感
  7. 【工具使用】在线使用Matlab
  8. 深入理解Condition实现原理
  9. TCP/IP协议栈初始化 总结
  10. Map案例总结-斗地主案例