OpenGL空间坐标变换

首先需要了解矩阵,程序里经常用矩阵做坐标变换
常见的矩阵有:

1.缩放矩阵
在这里插入图片描述


2.位移矩阵
在这里插入图片描述
多一维坐标:齐次坐标(Homogeneous Coordinates)
用途:
1.允许我们在3D向量上进行位移(如果没有w分量我们是不能位移向量的)
2.把x、y和z坐标分别除以w坐标,用w值创建3D视觉效果

如果一个向量的齐次坐标是0,这个坐标就是方向向量(Direction Vector)


3.旋转矩阵

不同轴向的旋转矩阵
在这里插入图片描述
任意轴旋转的复合矩阵
在这里插入图片描述

.

注意:不同的矩阵可以组合,比如:缩放+旋转,但是要注意顺序
在这里插入图片描述


OpenGL如何使用矩阵呢?
使用库: OpenGL Mathematics (GLM)
传送门

矩阵的用法:
详情见代码注释

//引入相关头文件
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>

//矩阵定义,默认里面的数据都是非法数据,需要初始化
glm::mat4 trans;

//初始化方式1
// trans = mat4(1.0f);

//mat4中4行4列的元素是按照列的方式排列的
//	主要是因为opengl在显存中是按列存储的,所以在准备好数据后可以直接将mat4复制到显存中
//可以使用[]操作符来访问mat4的第几列,并使用二级[]来访问某一列的第几个元素,

//初始化方式2,熟悉内存分布
trans[0][0] = 1.0f; trans[1][0] = 0.0f; trans[2][0] = 0.0f; trans[3][0] = 0.0f;
trans[0][1] = 0.0f; trans[1][1] = 1.0f; trans[2][1] = 0.0f; trans[3][1] = 0.0f;
trans[0][2] = 0.0f; trans[1][2] = 0.0f; trans[2][2] = 1.0f; trans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值