WebGL Matrix4(4*4矩阵库)
Matrix4是由<<WebGL编程指南>>作者写的提供WebGL的4*4矩阵操作的方法库,简化我们编写的代码。源代码共享地址,点击链接:Matrix4源代码。
下面罗列了Matrix4库的所有方法:
1.setIdentity()
将Matrix4实例初始化为单位阵
2.setTranslate(x, y, z)
将Matrix4实例设置为平移变换矩阵,在x轴上平移的距离为x,在y轴上平移的距离为y,在z轴上平移的距离为z
3.setRotate(angle, x, y, z)
将Matrix4实例设置为旋转变换矩阵,旋转角度为angle,旋转轴为(x, y, z)。旋转轴(x,y,z)无需归一化
4.setScale(x, y, z)
将Matrix4实例设置为缩放变换矩阵,在三个轴上的缩放因子分别为x、y、z
5.translate(x, y, z)
将Matrix4实例生意一个平移变换矩阵(该平移矩阵在x轴上的平移距离为x,在y轴上的平移距离为y,在z轴上的平移距离为z),所得到的结果存储在Matrix4中
6.rotate(angle, x, y, z)
将Matrix4实例乘以一个旋转变换矩阵(该旋转矩阵旋转的角度为angle,旋转轴为(x、y、z)。旋转轴(x、y、z)无须归一化),所得的记过还存储在Matrix4中
7.scale(x, y, z)
将Matrix4实例乘以一个缩放变换矩阵(该缩放矩阵在三个轴上的缩放因子分别为x、y、z。),所得结果还存储在Matrix4中
8.set( m )
将Matrix4实例设置为m,m必须也是一个Matrix4实例
9.elements
类型化数组(Float32Array)包含了Matrix4实例的矩阵元素
说明:单位阵在矩阵乘法中的行为,就像数字1在乘法中的行为一样。将一个矩阵生意单位阵,得到的结果和原矩阵完全相同。在单位阵中,对角线的元素为1.0,其余的元素为0.0。
10. multiply(matrix)
两个矩阵相乘,返回的结果为一个新的matrix4对象,并且值为两个矩阵相乘的结果。例如:
var modelViewMatrix = viewMatrix.multiply(modelMatrix);
11.setOrtho(left, right, bottom, top, near, far)
通过各参数计算正射投影矩阵,将其存储在Matrix4中。注意,left不一定与right相等,bottom不一定与top相等,near与far不相等。参数:
left、right:指定近裁剪面的左边界和右边界
bottom、top:指定近裁剪面的上边界和下边界
near、far:指定近裁剪面和远裁剪面的位置,即可视空间的近边界和远边界
12.setPerspective(fov, aspect, near, far)
通过各参数计算透视投影矩阵,将其存储在Matrix4中。注意,near的值必须小于far。参数:
fov:指定垂直视角,即可视空间顶面和底面键的夹角,必须大于0
aspect:指定近裁剪面的高宽比(宽度/高度)
near、far:指定近裁剪面和远裁剪面的位置,即可视空间的近边界和远边界(near和far必须都大于0)
注意,第二个参数aspect是近裁剪面的宽高比,而不是水平视角(第一个参数是垂直视角)。比如说,如果近裁剪面的高度100和宽度200,那么宽高比为2。
13.setInverseOf (m)
使自身称为矩阵m的逆矩阵。
14.transpose()
对自身进行转置操作,并将自身设为转置后的结果。
WebGL Matrix4(4*4矩阵库)的更多相关文章
- Numpy 矩阵库(Matrix)
Numpy 中包含了一个矩阵库 numpy.matlib, 该模块中的函数返回的是一个矩阵, 而不是 ndarray 对象. 一个 m * n de 矩阵是一个 有 m 行(row) n 列(colu ...
- NumPy 矩阵库(Matrix)
NumPy 矩阵库(Matrix) NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象. 一个 的矩阵是一个由行(row)列(col ...
- C++ 矩阵库 eigen
找了好久才发现了一个这么方便的C++矩阵库. 官网 http://eigen.tuxfamily.org/index.php?title=Main_Page 参考文章 http://blog.csdn ...
- python之numpy矩阵库的使用(续)
本文是对我原先写的python常用序列list.tuples及矩阵库numpy的使用中的numpy矩阵库的使用的补充.结合我个人现在对线性代数的复习进度来不断更博. Section 1:行列式的计算 ...
- python常用序列list、tuples及矩阵库numpy的使用
近期开始学习python机器学习的相关知识,为了使后续学习中避免编程遇到的基础问题,对python数组以及矩阵库numpy的使用进行总结,以此来加深和巩固自己以前所学的知识. Section One: ...
- NumPy矩阵库
NumPy - 矩阵库 NumPy 包包含一个 Matrix库numpy.matlib.此模块的函数返回矩阵而不是返回ndarray对象. matlib.empty() matlib.empty()函 ...
- Eigen 矩阵库学习笔记
最近为了在C++中使用矩阵运算,简单学习了一下Eigen矩阵库.Eigen比Armadillo相对底层一点,但是只需要添加头文库即可使用,不使用额外的编译和安装过程. 基本定义 Matrix3f是3* ...
- 18、NumPy——矩阵库(Matrix)
NumPy 矩阵库(Matrix) NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象. 一个 的矩阵是一个由行(row)列(col ...
- C++矩阵库 Eigen 快速入门
最近需要用 C++ 做一些数值计算,之前一直采用Matlab 混合编程的方式处理矩阵运算,非常麻烦,直到发现了 Eigen 库,简直相见恨晚,好用哭了. Eigen 是一个基于C++模板的线性代数库, ...
随机推荐
- C#使用双缓存减少界面闪烁
场景:一个panel中动态加载多个自定义控件item,类似QQ聊天窗口 问题:加载panel时界面会卡顿,先显示阴影再显示界面:移动滚动条时item会闪烁 解决方法: panel 添加方法,减少界面闪 ...
- MyBatis拦截器的执行顺序引发的MyBatis源码分析
你猜一下哪个先执行?反正不要按常规来. <plugins> <plugin interceptor="com.Interceptor1"></plug ...
- C语言 · 排列数 · 排列式
蓝桥练习场上不断碰到类似的题,都是一个递归搜索的套路. 算法提高 排列数 时间限制:1.0s 内存限制:256.0MB 问题描述 0.1.2三个数字的全排列有六种,按照字母序排列如下 ...
- IBatis批量插入数据
IBatis插入注意,数据量比较多的花,需要分批插入,策略是dao里面控制插入批次,mapper里面批量插入即可 @Override public Long insertBatch(List<W ...
- if语句和switch语句
1.基本写法 if if(逻辑表达式){语句:}else if{语句:else{语句:} switch switch(变量){case 常量值:语句:break:default:语句:} 2.举例 i ...
- Jenkins+git
https://www.cnblogs.com/Csir/category/1100433.html
- Graph-DFS-Map-图的深度优先遍历-城市地图问题
#include <iostream> using namespace std; /* 5 8 1 2 2 1 5 10 2 3 3 2 5 7 3 1 4 3 4 4 4 5 5 5 3 ...
- Python 引用
python引用python中的数值类型变量也是引用,例如: a = 100b=a那么a和b指向同一块内存但是当修改a或者b的值得时候,Python会新分配一块内存来存储新的值 python中不可变类 ...
- 关于Unity中的光照(五)
Mobile Diffuse Unity自带的一种shader,用的比较多,性能还可以.我们默认创建的unit shader基本和它一致,但是没有参与光照计算,看起来和Mobile Diffuse有区 ...
- Lucene系列一:搜索引擎核心理论
一.为什么需要搜索引擎 问题1:数据库索引的原理是怎样的? 索引原理:对列值创建排序存储,数据结构={列值.行地址}.在有序数据列表中就可以利用二分查找快速找到要查找的行的地址,再根据地址直接取行数据 ...