OpenGL-16-向量

是这样的,想请教一下,OpenGL-16-向量
最新回答
山城夏秋

2025-02-25 03:56:07

标量 :例如1、2、3等一个具体的数值。

向量 :在3D笛卡尔坐标中,一个顶点(x,y,z)代表了在空间中的一个位置,在数学思维中,这个顶点就是一个向量。相比标量它不仅有大小,还有方向。

列向量、横向量: 当然,向量也分为列向量、横向量。OpenGL中用的是列向量。

零向量:

负向量 :相当于一个向量 * -1 得到一个大小一样,方向相反的向量。主要就是用于拿到一个反方向的向量,例如回弹效果。

单位向量 :长度为1的向量就是单位向量。例如:[1,0,0]、[0,1,0]、[0,0,1]

标准化向量 :如果一个向量不是单位向量,那我们把它缩放到1的过程就是标准化。

向量的长度也叫向量的摸,计算公式:

注意

如何单位化向量?
(x / ||xyz||, y / ||xyz||, z / ||xyz||); (注:||xyz||就是这个向量的长度)
使⽤⼀个⾮零向量除以它的模, 就可以得到⽅向相同的单位向量;

注意

点乘:求两个向量直接的夹角,两个向量点乘的结果是一个标量。

在OpenGL中,GLTools 库中有⼀个组件叫Math3d,其中包含了⼤量好⽤的OpenGL ⼀致的3D数学
和数据类型。

math3d库,有2个数据类型,能够表示⼀个三维或者四维向量。
M3DVector3f 可以表示⼀个三维向量(x,y,z)
M3DVector4f 则可以表示⼀个四维向量(x,y,z,w)
在典型情况下,w坐标设为1.0。x,y,z值通过除以w,来进⾏缩放。

在OpenGL中,其实不需要我们进行计算,只需要调用对应的API即可拿到结果:

同样,我们只需要调用API即可: