其他分享
首页 > 其他分享> > OpenGL学习随笔(三)——2022.1.24

OpenGL学习随笔(三)——2022.1.24

作者:互联网

        通过上两回的学习,通过两个简单的程序已经对C++/OpenGL程序有了基本的了解,本次要学习了解一些与OpenGL相关的数学基础。

一、3D坐标系统

        3D空间通常用3个坐标轴X、Y、Z来表示,这三个轴可以用两种方式来布置:左手系和右手系。(大拇指指向X轴,食指指向Y轴,中指指向Z轴)。在OpenGL中,大体使用右手系。

(图源自《计算机图形学编程(使用OpenGL和C++)》作者:V.斯科特.戈登 约翰.克莱维吉 (人民邮电出版社)168页)

二、点

        3D空间中点可用(x, y, z)来表示,不过,用齐次坐标会使图形学计算得更加高效。每个点的齐次坐标有四个值,前三个值表示x, y, z,第四个值w总是非零值,通常为1。

用来存储齐次3D坐标的GLSL数据类型使vec4("vec"代表向量,同时也可以用来表示点)。GLM库包含适合在C++/OpenGL应用中创建和存储3元和4元(齐次)点的类,分别叫做vec3和vec4。

三、矩阵

        矩阵是矩形的值阵列,它的元素通常使用下标访问。第一个下标表示行号,第二个下标表示列号,下标从0开始。在3D图形计算中要用到的矩阵大多数为4阶矩阵。

        GLSL语言中的mat4数据类型用来存储4阶矩阵。同样,GLM中有mat4类用以实例化并存储4阶矩阵。

        矩阵的相关运算:

四、变换矩阵

        在图形学中,矩阵通常用来进行物体的变换。如矩阵可以用来将物体从一点移动到另一点。接下来接受五个常用的变换矩阵。变换矩阵都是4阶矩阵

 (上图源自《计算机图形学编程(使用OpenGL和C++)》作者:V.斯科特.戈登 约翰.克莱维吉 (人民邮电出版社)177页)

 (上图源自《计算机图形学编程(使用OpenGL和C++)》作者:V.斯科特.戈登 约翰.克莱维吉 (人民邮电出版社)179页)

 (上图源自《计算机图形学编程(使用OpenGL和C++)》作者:V.斯科特.戈登 约翰.克莱维吉 (人民邮电出版社)179页)

 这两个矩阵还需要其他的一些内容,将在下篇中进行介绍。

五、向量

        向量表示大小和方向。向量没有特定的位置。移动向量并不改变它所代表的意义。在3D图形学中,向量一般用空间中的单个点表示,向量的大小是原点到该点的距离,方向则是原点到该点的方向。在我们的应用中,我们简单的将向量V表示为(x,y,z),即向量的起点是原点,终点是点(x,y,z)。在GLSL和GLM中并不区分点和向量,它们所提供了vec3/vec4既能表示点又能表示向量。在GLM和GLSL中的向量操作如下:

        假设向量A(u,v,w)和B(x,y,z)

标签:24,GLSL,GLM,OpenGL,矩阵,图形学,vec3,向量,2022.1
来源: https://blog.csdn.net/weixin_59876363/article/details/122672785