美文网首页
OpenGL中的向量、矩阵

OpenGL中的向量、矩阵

作者: 逃避不面对 | 来源:发表于2020-07-17 17:55 被阅读0次

一、向量

1.概念

在3D笛卡尔坐标系,基本上一个顶点就是XYZ坐标空间上的一个位置,而在空间中给定的一个位置,恰恰是由一个单独的XYZ定义的,而这样的XYZ就是向量;

在X轴上的向量(1,0,0),向量长度为1,我们称为长度为1的向量为单位向量。

如果⼀个向量不是单位向量, ⽽我们把它缩放到1,这个过程叫做标准化。将⼀个向量进⾏标准化就是将它的缩为1; 也叫做单位化向量;

2.向量的点乘

向量的点乘在开发当中的作用非常大,它只能发生在两个向量之间。它的作用是将两个(三维向量)单元向量之间进行点乘,得到一个标量(不是三维向量,只有大小,没有方向),表示两个向量之间的夹角。

必要条件:2个向量必须为单元向量。计算的是两个三维向量之间进行点乘,得到的结果在[-1,1]之间,夹角的余弦值。

3.向量的叉乘

这个叉乘得到的结果其实就是两个向量的法线向量,它不需要为单位向量

二、矩阵

1.概念

假设, 在空间有⼀个点.使⽤ xyz 描述它的位置. 此时让其围绕任意位置旋转⼀定⻆度

. 我们需要知道这个点的新的位置. 此时需要通过矩阵进⾏计算;

为什么?

因为新的位置的x 不单纯与原来的x还和旋转的参数有关. 甚⾄于yz坐标有关;

矩阵只有⼀⾏或者⼀列都是合理的. 只有⼀⾏或者⼀列数字可以称为向量. 也可以称为矩阵;

那么在OpenGL中,在定义矩阵时,我们通常使用一维数组来定义,原因是OpenGL使用的是Column-Major(以列为主)矩阵排序的约定。在数学中叫做转置矩阵。

2.代码参考

//三维矩阵/四维矩阵的声明

typedef float M3DMatrix33f[9];

typedef float M3DMatrix44f[16];

3.单元矩阵

将⼀个向量 ✖ 单元矩阵 ,就相当于⼀个向量✖1. 不会发⽣任何改变;

3.1初始化单元矩阵

//单元矩阵初始化⽅式①

GLFloat m[] = {

1,0,0,0, //X Column

0,1,0,0, //Y Column

0,0,1,0, //Z Column

0,0,0,1 // Translation

}

// 单元矩阵初始化⽅式 ②

M3DMatrix44f m = {

1,0,0,0, //X Column

0,1,0,0, //Y Column

0,0,1,0, //Z Column

0,0,0,1 // Translation

}

//单元矩阵初始化⽅式③

void m3dLoadIdentity44f(M3DMatrix44f m);

3.2单元矩阵(线性代数角度)

在线性代数数学的维度,为了便于书写. 所以坐标计算. 都是从左往右顺序,进⾏计算. 如下

列公式:

变换后顶点向量 = V_local * M_model * M_view * M_pro

变换后顶点向量 = 顶点 ✖ 模型矩阵 ✖ 观察矩阵 ✖ 投影矩阵;

3.3单元矩阵(OpenGL角度)

OpenGL 的维度. 如下列公式:

变换顶点向量 = M_pro * M_view * M_model * V_local

变换顶点向量 = 投影矩阵 ✖ 视图变换矩阵 ✖ 模型矩阵 ✖ 顶点

3.4矩阵左乘

1. 从栈顶获取栈顶矩阵 复制到 mTemp

2. 将栈顶矩阵 mTemp 左乘 mMatrix

3. 将结果放回栈顶空间⾥;

3.5代码段

相关文章

  • OpenGL--向量和矩阵

    在我们OpenGL中涉及到图形变换的时候经常会运用到向量/矩阵的运算。今天我们就来了解下OpenGL中的向量、矩阵...

  • OpenGL中的向量、矩阵

    一、向量 1.概念 在3D笛卡尔坐标系,基本上一个顶点就是XYZ坐标空间上的一个位置,而在空间中给定的一个位置,恰...

  • OpenGL中的向量,矩阵

    一.向量 如图: 在3D笛卡尔坐标系中,A点在XYZ轴上对应的位置分别为OC,OD,OB,在X轴上,我们用X(蓝色...

  • OpenGL中的向量、矩阵

    向量 了解向量之前,先了解什么是标量 标量:只有大小,例如:1,12,13等 向量是有方向的标量,即不仅有大小,还...

  • OpenGL 向量、矩阵

    向量 在坐标系上,一个顶点就是X,Y,Z坐标空间的一个位置。由一个单独的XYZ定义的这样就是向量。 单位向量 向量...

  • OpenGL向量、矩阵

    向量 在 3D 笛卡尔坐标系, 基本上一个顶点就是XYZ 坐标空间上的⼀个位置。而在空间中给定的一个位置恰是由一个...

  • OpenGL 向量/矩阵

    向量 什么是向量 在3D笛卡坐标系中,基本上,一个顶点就是XYZ坐标空间上的一个位置。而在空间中给定的一个位置,恰...

  • OpenGL中的向量和矩阵

    OpenGL坐标变化时经常用到矩阵来计算变化后点的位置,为了更好的理解3D数学在OpenGL中的作用,本文将简单地...

  • OpenGL 中的向量与矩阵

    向量 在 3D 笛卡尔坐标系,一个顶点,就是 XYZ 坐标空间上的一个位置。而这个位置是由一个唯一的 XYZ 定义...

  • OpenGL 中向量,矩阵的理解

    什么是向量? 定义: 在 3D 笛卡尔坐标系, 基本上. 一个顶点就是XYZ 坐标空间上的一个位置. ⽽在空间中给...

网友评论

      本文标题:OpenGL中的向量、矩阵

      本文链接:https://www.haomeiwen.com/subject/vuxnhktx.html