凡科建站怎么收费,做一个app需要投资多少钱,好看的网站链接,wordpress视频外链除了正常的加减乘除以外#xff0c;向量的最常见的三个运算是点积、叉积、正交基。
对于向量的乘法和除法要做一下说明#xff0c;因为除发的效率要远低于乘法#xff0c;因此会将除法尽可能的化为乘法来实现。比如我们要对向量缩放一半#xff0c;则可以除以2#xff0c…除了正常的加减乘除以外向量的最常见的三个运算是点积、叉积、正交基。
对于向量的乘法和除法要做一下说明因为除发的效率要远低于乘法因此会将除法尽可能的化为乘法来实现。比如我们要对向量缩放一半则可以除以2也可以乘以0.5则尽量要以乘以0.5来实行。
【向量定义】
对于维向量来说有个相互垂直的正交基 {}那么一个独立的维标量集{}和此正交基存在一个线性组合则就是一个维向量。
这里面有一点要注意只要有正交基则可以在基上定义向量。比如经常的局部坐标系就是要求其正交基在其上定义局部坐标比如这篇文章就求了相机坐标的局部坐标系的正交基【OptiX】第1个示例 光线生成模块(RayGenerationProgram), 相机操作、添加三角网以及相交丢失模块(Miss Program)
【向量的加减法】
在求解颜色时我们经常使用到加法比如漫反射的结果再加上镜面反射的结果是最终的结果等等。这里要理解的一点是当代表颜色时加法代表两个颜色叠加。比如R(1.0, 0.0, 0.0)G(1.0, 0.0, 0.0)B(1.0, 0.0, 0.0)W(1.0, 1.0, 1.0)结果就是颜色混合的白色。
向量的加法从几何上代表两个向量所围成的平行四边形的对角线 向量的减法代表另一条对角线时叫做被减向量叫做减向量记方向的一个口决是指向被减向量 【向量的点积】
向量点积的定义拿三维向量来说 这里要注意向量的点积结果是一个数值而非一个向量。
下面来推导点积的最重要的几何意义公式其中是两个向量之间的夹角。当和都是单位向量时 这是图形学界使用频率最高的公式之一。仅对二三维有效。
下面来进行推导
设它们的终点分别为,
那么在三角形OAB中使用余弦定理 其中是与的夹角。
将A,B,的值代入后整理即得
【向量的叉积】
先看叉积的性质。两个向量的叉积的结果是垂直于这两个向量和的第三个向量它的方向使用右手螺旋定则长度则为和所围的平行四边形的面积。 其中为和的夹角。
叉乘满足的基本性质如下
自己与自己的夹角0则0所夹的平行四边形的面积也是0。
再看叉乘在数值计算上的定义 (展开式一
先讨论正交基的运算法则 再代入到展开式一 【计算正交基】
向量的经常的一个操作是构造正交基根据一个向量构建正交基往往需要用到叉乘。在给定的单位向量构建一个与之垂直的向量则保证其相互垂直则随手可构造再构造
在pbrt-v2的geometry.h的针对向量的定义中有个内联函数用来根据一个输入的向量计算正交基输入一个v1输出v2, 和v3,都是单位向量
inline void CoordinateSystem(const Vector v1, Vector *v2, Vector *v3) {if (fabsf(v1.x) fabsf(v1.y)) {float invLen 1.f / sqrtf(v1.x*v1.x v1.z*v1.z);*v2 Vector(-v1.z * invLen, 0.f, v1.x * invLen);}else {float invLen 1.f / sqrtf(v1.y*v1.y v1.z*v1.z);*v2 Vector(0.f, v1.z * invLen, -v1.y * invLen);}*v3 Cross(v1, *v2);
}