摘要: 一、动机 一个渲染器应用程序中存在着多种不同的相机(如透视相机、鱼眼相机等)。通过应用程序的图形界面,用户可以选择使用不同的相机来生成光线,对场景进行渲染。渲染程序如代码列表1所示。在代码中,我们使用字符串来表示相机类型,并使用if-else语句(6~10行代码)来实例化相应的Camera子类对象。 阅读全文
posted @ 2017-09-21 19:51 Leptus 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 1. 粒子系统 粒子系统是用来模拟微小粒子的物理学模型,一般用于火焰、爆炸等由微小粒子组成的物理现象的模拟。一般而言,粒子系统由大量具有颜色、位置、速度等特征的粒子组成。通常用于游戏中的特效或者雨雪、火焰等模拟。 2.粒子的属性: 位置 速度 颜色 声明周期 重力 一般而言粒子具有以上的属性,但是可 阅读全文
posted @ 2016-05-29 14:35 Leptus 阅读(3475) 评论(0) 推荐(0) 编辑
摘要: 1. 纹理的概念 由于一个物体表面的不同位置上通常有含有不同的颜色或者其他属性(如发射率、法线等),所以需要一种方法来表示物体每个位置上的不同的属性。在CG中,通常通过使用纹理映射技术来表示物体不同位置上不同的属性。 由于物体可以是一维、二维或者三维的,所有纹理技术可以适用于1D、2D与3D空间。通 阅读全文
posted @ 2016-05-26 19:50 Leptus 阅读(946) 评论(0) 推荐(0) 编辑
摘要: 适配器模式通常用于将一个类的接口转换为客户需要的另外一个接口,通过使用Adapter模式能够使得原本接口不兼容而不能一起工作的类可以一起工作。 这里将通过分析c++的标准模板库(STL)中的适配器来学习adapter模式。由于STL中的适配器过多,不可能全部都具体介绍,所有这里将简单介绍STL中存在 阅读全文
posted @ 2016-05-12 18:25 Leptus 阅读(833) 评论(0) 推荐(0) 编辑
摘要: 1. 过程纹理的概念 过程纹理通过编写代码来生成相应的颜色值,而不是从图像中获取颜色值。相比较从图像中获取颜色而言,过程纹理的优点是可以对空间中的任意一点定义纹理,并且不需要额外的存储空间来存储图像。通常某些具有数学表达式的图像可以很好地通过过程纹理来实现。过程纹理计算空间中某个点的纹理时可能需要花 阅读全文
posted @ 2016-05-08 00:15 Leptus 阅读(720) 评论(0) 推荐(0) 编辑
摘要: 1.镜面 镜面光线传输计算 只涉及主光线计算而渲染出来的图像无法真实表现现实中的光线照射,通过增加能够反射光线的材质,进行空间中具有反射材质的对象之间的反射光线的追踪,可以更好地体现真实感。 2.光线镜面反射的计算 当光线与包含反射材质的物体进行碰撞后,计算反射方向,追踪计算得到的反射光线即可,因为 阅读全文
posted @ 2016-04-30 22:45 Leptus 阅读(2946) 评论(0) 推荐(0) 编辑
摘要: 1.阴影的作用 阴影效果在真实感图像生成中提供给图像更多的真实感,并且能够为场景提供某些定性分析,如光照的位置、光照的范围等信息。 阴影可以看为光源看不到的地方,即从光源往各个方向发送光线,则光线无法照射到的区域则为阴影。 在光线追踪中,从观察光线与物体的碰撞点向光源引一条光线,光线方向指向光源,若 阅读全文
posted @ 2016-04-28 23:27 Leptus 阅读(1561) 评论(0) 推荐(0) 编辑
摘要: 本文给出三个实区域填充算法的c++实现。三个填充算法分别为边界填充算法、泛洪填充算法、扫描线种子填充算法,相关的理论与算法描述这里不涉及。 边界填充算法 c++ st int direction[] = { 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1 阅读全文
posted @ 2016-04-19 15:22 Leptus 阅读(2062) 评论(0) 推荐(1) 编辑
摘要: 题目链接:https://leetcode.com/problems/word-pattern/ 思路分析:题目要求判断在pattern中的字符与str中的非空word之间是否存在双射,解法如代码所示。 循环不变量:当 I = k 时,并进行迭代时,pattern[0..i-1]与strings[0 阅读全文
posted @ 2016-03-24 00:12 Leptus 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://leetcode.com/problems/odd-even-linked-list/ 思路分析:题目为链表操作题,比较容易。需要特别注意的是对于特殊情况的处理,如当链表为空或者链表的长度为1时,不存在第偶数个结点组成的链表。 代码如下: 阅读全文
posted @ 2016-03-23 22:46 Leptus 阅读(232) 评论(0) 推荐(0) 编辑