3D数学基础(六)

本系列文章系学习 唐福幸《Unity ShaderLab 新手宝典》的笔记

1.5使用矩阵进行变换

1.6.1 缩放矩阵

使向量v1沿着x,y,z轴分别缩放k1,k2,k3得到v2:(k1* x,k2* y,k3* z)
试着用矩阵来解决:

  1. 先把v1变成矩阵[x y z]
  2. v1在x轴上进行缩放k1倍
    在这里插入图片描述
  3. v1在y轴上进行缩放k2倍
    在这里插入图片描述
  4. v1在z轴上进行缩放k3倍
    在这里插入图片描述
  5. 根据上一章的公式合并一下,变换后的矩阵就可以这么表示
    在这里插入图片描述

1.6.2 旋转矩阵

  1. 二维
    假设在平面坐标系中,逆时针旋转表示正方向, 原坐标是V=(1,0), 绕原点旋转B度得到V’如图所示
    在这里插入图片描述
    在这里插入图片描述
    展开x`和y`得到
    在这里插入图片描述
    把x和y代入得到
    在这里插入图片描述
    由此可以得到二维旋转矩阵
    在这里插入图片描述
    因此, 二维变换只需要将需要变换的向量(x, y)和角度B代入上式, 就可以得到转换后的向量(x`, y`)
  2. 三维
    让我们想一想: 当空间坐标系绕某一个轴旋转的时候, 那个轴的坐标对应的坐标分量是不变的
    1. 绕x轴旋转
      在这里插入图片描述
      如图所示,当绕x轴旋转的时候,从x轴正方向往负方向看,向量V从y向z轴方向旋转,得到以下式子:
      在这里插入图片描述
      化简式子得到
      在这里插入图片描述
      补充一下:
      在这里插入图片描述
      最终得到绕x轴的旋转矩阵
      在这里插入图片描述

    2. 绕z轴旋转
      同理可得:
      在这里插入图片描述
      在这里插入图片描述

    3. 绕y轴旋转
      y轴有些不同: 当从y轴正方向往负方向看时, 正好z轴在x轴下方,得到结果如下在这里插入图片描述
      在这里插入图片描述

1.6.3 平移矩阵

假设向量V先向x方向移动d1, 再想y方向移动d2, 再向z方向移动d3, 那么得到下列式子:
V` = V +(d1, d2, d3) = (x + d1, y + d2, z + d3)

由于3x3矩阵无法实现平移变换, 需要添加一维, 变成4x4齐次矩阵, 如下:
在这里插入图片描述
顶点和向量还有一个区别: 顶点有位置属性, 而向量没有

  1. 顶点的最后一个分量补1, 如下
    在这里插入图片描述
  2. 向量的最后一个分量补0(因为向量不管如何平移,自身是不变的), 如下
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值