[Unity3D]Shader学习笔记之点和矢量
来源:互联网 发布:淘宝是网站吗 编辑:程序博客网 时间:2024/05/16 19:00
简介
- 点(point)是n维空间(游戏中主要使用二维和三维空间)中的一个位置,它没有大小、宽度这类概念。
- 矢量(vector,也被称为向量)是指n维空间中一种包含了模(magnitude)和方向(direction)的有向线段。速度(velocity)就是一种典型的矢量。
- 矢量的模指的是这个矢量的长度。一个矢量的长度可以是任意的非负数。
- 矢量的方向则描述了这个矢量在空间中指向。
- 矢量的头(head)指的是它的箭头所在的端点出,而尾(tail)指的是另一个端点。
- 只要矢量的模和方向保持不变,无论在哪里,都是同一个矢量。
标量(scalar)只有模没有方向。例如距离(distance)就是一种标量。
任何一个点都可以表示成一个从原点出发的矢量。
矢量的运算
矢量和标量的乘法/除法
只需要把矢量的每个分量和标量相乘即可。
一个矢量也可以被一个非零的标量除。这等同于和这个标量的倒数相乘。
对于乘法来说,矢量和标量的位置可以互换的。但对于除法,只能是矢量被标量除,而不能是标量被矢量除,这是没有意义的。
当
矢量的加法和减法
两个矢量进行相加或相减,其结果是一个相同维度的新矢量。
二维矢量的加法和减法,如图:
在图形学中,矢量通常用于描述位置偏移(即位移)。因此可以用矢量的加法或减法来计算一点相对于另一点的位移。
如果想计算b点相对于a点的位移,就可以通过把b和a相减得到。
矢量的模
三维矢量计算公式如下:
其他维度同理可得,对每个分量的平方相加后再开根号得到。
单位矢量
单位矢量指的是模为1的矢量,也称为被归一化的矢量(normalized vector)。
对任何非零矢量转换成单位矢量的过程被称为归一化(normalized)。
对矢量的归一化,可以使用该矢量除以该矢量的模得到,如下:
零矢量
零矢量即矢量的每个分量值都是0,如
矢量的点积
点积(dot product)也称为内积(inner product)。
点积的名称来源于这个运算符号:
公式一:两个三维矢量的点积是把两个矢量对应的分量相乘后再取和,最后是一个标量。
矢量的点积满足交换律:
点积的几何意义很重要,其中一个就是投影(projection)。
有一个单位矢量
当投影的值小于0时,夹角大于
性质一:点积可结合标量乘法。
性质二:点积可结合矢量加法和减法。
性质三:一个矢量和本身进行点积的结果,是该矢量的模的平方。
公式二:
推理得:两个单位矢量的点积等于它们之间的夹角的余弦值。当夹角小于
利用这两个公式,还可以求得两个向量之间的夹角(在0~180°)
矢量的叉积
叉积(cross product),也被称为外积(outer product)。矢量叉积的结果仍然是一个矢量。
和点积类型,叉积的名称来源于它的符号:
叉积不满足交换律,即
叉积满足反交换律,即
叉积不满足结合律,即
用a和b构建一个平行四边形,其面积可以使用
如果a和b平行(方向可能相同可能相反),可以认为构建出来的平行四边形的面积为0,那么
根据左右手坐标系的不同,叉积求得的垂线的方向也不同,如下:
- [Unity3D]Shader学习笔记之点和矢量
- [Unity3D]Shader学习笔记之渲染流水线
- [Unity3D]Shader学习笔记之ShaderLab基础
- unity3d shader 学习笔记
- Unity3d shader 学习笔记
- [Unity3D]Shader学习笔记之Shader与DrawCall
- 第4章 学习Shader所需的数学基础(上)(坐标系、点和矢量)
- unity3d shader 学习笔记1
- 【Unity Shader入门精要】数学基础 — 点和矢量
- Unity3D基础篇----Shader学习笔记系列
- Unity3d之Shader学习资料整理
- Unity3d之Shader学习资料整理
- Shader学习笔录--Unity3D教程宝典之Shader篇 基本知识
- Unity3D shader体系分析和学习总结
- Unity3D Shader之路 Shader错误、解决方法和重要内容汇总
- Unity3D之Shader:Shader介绍
- [Unity3D]Shader学习笔记之图像编程接口与着色语言
- GIS学习笔记之矢量化
- KERMIT,XMODEM,YMODEM,ZMODEM传输协议小结【转】
- calendar 类
- dreamweaver cs6
- C++组合问题的简单实现
- iOS读取二维码
- [Unity3D]Shader学习笔记之点和矢量
- JS 面向对象之神奇的prototype
- React/React Native 的ES5 ES6写法对照表
- nefu003模拟
- Makefile基础——函数
- Oracle 删除用户时出现异常ora-01922: CASCADE
- JAVA多线程(2)
- Maven仓库管理:Artifactory
- <设计模式11>桥接模式