第二章 几何和变换几乎所有图形软件都以几何类(geometric classes, 这里指c++类)为基础.这些类表示了诸如点,向量,光线等等的数学构件. 由于我们在系统中会到处用到这些类, 良好的抽象和有效的实现至关重要. 本章会讲解pbrt的几何基础的接口和实现.几何类见文件 core/geometry.h 和core/geometry.cpp.变换矩阵见文件 core/transform.h 和core/transform.cpp.2.1 坐标系统pbrt用三个浮点数坐标值x,y,z来表示三维点,向量和法向量. 当然,这些值只有在一个给定的坐标系下才有意义: 给定一个原点和三个定义x,y,z轴的向量,就定义了这个坐标系(frame).在n维空间中, 坐标系的原点P0和其n个线性无关的基向量定义了n维仿射空间(affine space).所有空间中的向量V可以被表达成为基向量(V1,V2, ..., Vn)的线性组合:? ???V = s1V1 + s2V2 + ... + snVn? ?? ???(s1, s2, ... sn是唯一存在的一组纯量, 被称为V关于基(V1,V2...Vn)的表达).同样地, 对与点P而言, 它可用原点P0和基向量(V1,V2, ..., Vn)表达:? ???P = P0 +??s1V1 + s2V2 + ...
原创力文档

文档评论(0)