图形学概述,线代入门,变换

发布于:2022-11-09 ⋅ 阅读:(834) ⋅ 点赞:(0)


在这里插入图片描述

1 图形学概述 overview of computer graphics

本系列学习链接

  • 游戏的画面好不好,看它的画面亮不亮,越亮越好.

计算机图形学应用于游戏,电影(特效),动画(毛发,粒子),设计 CAD computer aided design (汽车,房子),可视化 visualization (医学成像), 虚拟现实 virtual reality (SwordArt Online), 数字画图 Digital illustration(Photoshop), 模拟 Simulation(沙尘暴, 黑洞), 用户界面 Graphical User Interfaces GUI, 字体 Typography (矢量图)

  • CG is awesome!
    CG包括:
  1. 光栅化 Rasterization
  2. 曲线,网格 Curves and Meshes
  3. 光线追踪 Ray Tracing
  4. 动画/仿真 Animation / Simulation
  • CG与计算机视觉 computer vision 的区别:CV需要从图像猜
  • 参考书: Fundamentals of Computer Graphics (虎书和其参考章节)
  • IDE Integrated Development Envirnment 使用VS,别做一个Geek,只要genius,不要freak.

2 线性代数 Linear Algabra

简单粗暴的线代入门, A Swift and Brutal Introduction to Linear Algebra.

2.1向量

向量课件
注意一点:

  • 向量默认是列column向量,加T是行row向量
    在这里插入图片描述
  • 单位向量用hat表示
    在这里插入图片描述

2.1.1 点乘 dot product

向量在另一向量的投影与其乘积. 结果的正负判断两向量是否同方向.

2.1.2 叉乘 cross product

  • 叉乘:右手定则判定方向.
  • 用处:判断左右,内外

定义图中右下角坐标系,a叉乘b向外,b叉乘a向内
在这里插入图片描述
AB叉乘AP,BC叉乘BP,CA叉乘CP都向外;或者说:‘点P在三条边的左边’

在这里插入图片描述

2.2 矩阵 MatriX

m×n表示m行n列!
3行2列

2.2.1 矩阵乘法 Matrix-matrix multiplication

类似GR和微分几何的的张量缩并.
M×N的写法很重要,M表示M行,N表示N列,不能写反了!.比如M×1表示一个长M的列向量!
在这里插入图片描述
比如右边C的0行0列就是A的0行点乘B的0列,等于9.
在这里插入图片描述
Mathematica的计算,用dot表示乘
在这里插入图片描述

  • 矩阵乘法不满足交换律(不对易,AB不等于BA)

2.2.2 矩阵乘向量 Matrix-vector multiplication

在这里插入图片描述
Mathematica复现:
在这里插入图片描述

  • 其他例子
    在这里插入图片描述

2.2.3 转置 transpose 和逆 inverse

  • 转置
    在这里插入图片描述

  • 在这里插入图片描述

2.2.4 向量乘法的矩阵形式 Vector multiplication in Matrix form

  • 向量a点乘b可以写为a的转置乘b
    在这里插入图片描述

  • 向量a叉乘b可以写为a的对偶矩阵乘b.(怎么算A*呢?)
    在这里插入图片描述

3 变换 transformation

学习目的:这是旋转 rotation,缩放 scaling,投影 projection的基础.

3.1 二维变换

  • 缩放 Scale
    在这里插入图片描述

  • 不完全缩放 Non-uniform scale
    在这里插入图片描述

  • 反射 reflection
    在这里插入图片描述

  • 切变 shear(剪切)
    在这里插入图片描述
    y不变,x向右平移ay, x’ = x + ay. y’ = y.

  • 旋转 rotation
    在这里插入图片描述
    上面的旋转矩阵记忆:第一列就是(1,0)变换后坐标,第二列就是(0,1)变换后坐标.
    在这里插入图片描述

  • 总结,以上的变换都写为线性变换:

在这里插入图片描述

M是线性变换矩阵.

3.2 齐次坐标 Homogeneous coordianates

  • 引入齐次坐标原因,线性变换无法处理平移,如
    在这里插入图片描述

  • 仿射affine变换
    在这里插入图片描述
    这里加了一项,不再是线性变换.

  • 怎么把上面的变换写为线性的呢? 现在引入齐次坐标
    在这里插入图片描述
    点加个1,向量加个0.(trade off),原因是考虑到点和向量的特性:
    点加点还是点(1+1=2, 除以2等于1还是点),但点减点等于向量(1-1=0).
    在这里插入图片描述
    现在可以把缩放,旋转和平移重新写为
    在这里插入图片描述
    注意这里的变换矩阵(仿射affine变换)最后一行都是001,但其他情况时不一定是这样的.

3.3 逆变换 Inverse transform

逆变换的操作通过乘逆矩阵实现
在这里插入图片描述
这也是逆矩阵的几何意义.所以也能理解为何矩阵乘逆矩阵等于单位矩阵,也就是对一个图像先操作然后逆操作等于没有操作.

3.4 组合变换 composing transforms

要做矩阵操作达到下面目的:
在这里插入图片描述
可以先旋转,再平移
在这里插入图片描述
不能交换矩阵的顺序,不然对应的几何操作变为
在这里插入图片描述
这也是矩阵不满足交换律的原因.所以正确的矩阵是:
在这里插入图片描述
注意矩阵的作用顺序是从右到左和向量结合.

  • 虽然矩阵不满足交换律,但满足结合律.也就是向量前的矩阵们可以写为一个大的矩阵,表示所有的变换:
    在这里插入图片描述
    上面矩阵的组合可写为红色圈内
    在这里插入图片描述

3.4.1 组合变换的分解应用—如何绕C点旋转?

Decomposng complex transforms
要绕C点旋转,先矩阵变换C点到原点,绕原点旋转,再矩阵变换回去.
在这里插入图片描述

3.5 三维变换

在这里插入图片描述
在这里插入图片描述
注意上面矩阵对应的效果先线性变换,再平移.

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到