PBR Step by Step(一)立体角
转载请注明出处:http://www.cnblogs.com/jerrycg/p/4924761.html
本系列从零起步,作为学习笔记与大家分享,从基础的数学和图形理论,一步一步实现基于物理的渲染。
Reference:《PBRT》、《Ray Tracing from the Ground Up》
由于光源是三维空间中的辐射光能,对于其传播范围通常使用立体角来描述,先来看一下什么是立体角。
立体角Solid Angles
立体角表示一个锥面所围成的空间部分,用符号\(\omega \)表示。
立体角是以圆锥体的顶点为心,半径为r的球面被锥面所截得的面积来度量的,度量单位为“球面度”(steradian,符号∶sr)。球面度表示为三维弧度。
在球坐标系中,球面的极小面积\({dA}_{2}\)为:
\({dA}_{2}=({r}\,\sin\theta\, {d}\varphi )({r\,d\theta })={r}^{2}(\sin\theta\,{d\theta }\,{d}\varphi)\)
整个球面面积为\({dA}\)的积分:
\({A}=\int {dA}_{2}=\int_{0}^{2\pi}\int_{0}^{\pi}({r}\,\sin\theta\, {d}\varphi*{r\,d\theta })={r}^{2}\int_{0}^{2\pi}{d}\varphi\int_{0}^{\pi}\sin\theta\,{d}\theta\)
极小立体角定义为球面面积与球半径平方的比值,即:
\({d\omega} = \frac{dA}{{r}^{2}}=\sin\theta\,{d}\theta\,{d}\varphi\)
对上式积分:
\({\omega} = \int_{0}^{2\pi }{d\varphi }\int_{0}^{\pi } \sin \theta\, {d\theta }={4\pi }\)
可知,最大立体角就是单位球体的表面积。
半球积分
半球积分方程表示为:\({I} = \int_{\omega}{f(\theta, \phi)\cos \theta \, d\omega}\)
其中,\({(\theta, \phi)} \in {[0, \frac{\pi}{2}] [0, 2\pi]}\),\({\omega \in [0, 2\pi]}\),\(\cos\theta \, d\omega\)表示立体角在水平面\({(x, y)}\)上的投影,又称为投影立体角。
当函数\({f(\theta, \phi)} = \cos^{n-1} \theta \)时,
\({I} = \int_{2\pi} \cos^{n} \theta \, {d\omega}\)
\(= \int_{0}^{2\pi} \int_{0}^{\frac{\pi}{2}}{\cos^{n}\theta \sin\theta \, d\phi}\)
\(= \int_{0}^{2\pi} d\phi \int_{0}^{2\pi} {\cos^{n}\theta \sin\theta \, d\theta} \)
\(= {2\pi \int_{0}^{\frac{\pi}{2}} \cos^{n}\theta \, \sin\theta \, d\theta}\)
\(= {2\pi \left[\frac{{\cos\theta}^{n+1}}{n+1} \right]_{0}^{\frac{\pi}{2}}} = \frac{2\pi}{n+1}\)
最终得出当\({f(\theta, \phi)} = \cos^{n-1} \theta \)时,半球积分为:\({I} = \frac{2\pi}{n+1}\)
PBR Step by Step(一)立体角的更多相关文章
- Step by step Dynamics CRM 2011升级到Dynamics CRM 2013
原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...
- Step by Step 创建一个新的Dynamics CRM Organization
原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by st ...
- Step by step Install a Local Report Server and Remote Report Server Database
原创地址:http://www.cnblogs.com/jfzhu/p/4012097.html 转载请注明出处 前面的文章<Step by step SQL Server 2012的安装 &g ...
- Step by step Dynamics CRM 2013安装
原创地址:http://www.cnblogs.com/jfzhu/p/4008391.html 转载请注明出处 SQL Server可以与CRM装在同一台计算机上,也可安装在不同的计算机上.演示 ...
- Step by step 活动目录中添加一个子域
原创地址:http://www.cnblogs.com/jfzhu/p/4006545.html 转载请注明出处 前面介绍过如何创建一个域,下面再介绍一下如何在该父域中添加一个子域. 活动目录中的森林 ...
- SQL Server 维护计划实现数据库备份(Step by Step)(转)
SQL Server 维护计划实现数据库备份(Step by Step) 一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server ...
- 转:eclipse以及step into step over step return的区别
首先来讲一下step into step over step return的区别: step into就是单步执行,遇到子函数就进入并且继续单步执行:(F5) step over是在单步执行时,在函数 ...
- [转]Bootstrap 3.0.0 with ASP.NET Web Forms – Step by Step – Without NuGet Package
本文转自:http://www.mytecbits.com/microsoft/dot-net/bootstrap-3-0-0-with-asp-net-web-forms In my earlier ...
- EF框架step by step(7)—Code First DataAnnotations(2)
上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体 ...
- EF框架step by step(6)—处理实体complex属性
上一篇的中介绍过了对于EF4.1框架中,实体的简单属性的处理 这一篇介绍一下Code First方法中,实体Complex属性的处理.Complex属性是将一个对象做为另一个对象的属性.映射到数据库中 ...
随机推荐
- 洛谷 U3357 C2-走楼梯
https://www.luogu.org/problem/show?pid=U3357 题目背景 在你成功地解决了上一个问题之后,方方方不禁有些气恼,于是他在楼梯上跳来跳去,想要你求出他跳的方案数. ...
- Linux网络知识
在思科上面模拟一下数据包的传递过程:一般上网使用的协议是tcp 交换机是一个2层的设备,它和Ip地址是没有关系的. 交换机上主要处理的是硬件地址(MAC),它只能分析到硬件地址,再到IP地址它就不管了 ...
- 强制换行CSS样式
语法: word-wrap : normal | break-word 取值: normal :? 默认值.允许内容顶开指定的容器边界 break-word :? 内容将在边界内换行.如果需要,词内换 ...
- 51nod1149 Pi的递推式
基准时间限制:1 秒 空间限制:131072 KB 分值: 640 F(x) = 1 (0 <= x < 4) F(x) = F(x - 1) + F(x - pi) (4 <= x ...
- 浅谈桶排思想及[USACO08DEC]Patting Heads 题解
一.桶排思想 1.通过构建n个空桶再将待排各个元素分配到每个桶.而此时有可能每个桶的元素数量不一样,可能会出现这样的情况:有的桶没有放任何元素,有的桶只有一个元素,有的桶不止一个元素可能会是2+: 2 ...
- centos6.5 导入matplotlib报错 No module named '_tkinter
1.解决方案 在centos系统下,导入matplotlib时,出现ImportError: No module named ‘_tkinter’的错误,首先 yum list installed | ...
- 大图片上传(ImageIO,注意有的图片不能上传时因为他是tiff格式)
一下是必要的: 1.enctype="multipart/form-data" 2. //不要使用myeclipse自动生成的get.set方法(struts2中的用法) publ ...
- 大美西安writeup
http://202.112.51.184:10080/ admin/admin 弱口令登入 发现注入 但是这个注入实在是不知道怎么利用.很蛋疼.后来get了一个姿势. 先-1让前面的不被下载然后后面 ...
- LDA线性判别分析
LDA线性判别分析 给定训练集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能的近,异类样例点尽可能的远,对新样本进行分类的时候,将新样本同样的投影,再根据投影得到的位置进行判断,这个新样本的 ...
- koa中间层 文件下载的请求转发
背景: 前端用a标签发起下载文档的get请求 node中间层接到get请求后将请求转发到java后端 java后端返回文档流传递给node中间层 好处: 后端的java业务逻辑层接口.数据库不向外部暴 ...