计算机动画 1-3

因为大部分内容在计算机图形学已经学习过,所以不再重复写了

二维几何变换

二维基本变换

  • 平移
  • 旋转
  • 缩放

二维复合变换

  • 反射
  • 错切

坐标系间的变换

坐标系变换

把坐标系看作是图形的相对变换
先 平 移 T ( − x 0 , − y 0 ) , 后 旋 转 R ( − θ ) = [ c o s θ s i n θ 0 − s i n θ c o s θ 0 0 0 1 ] 复 合 M x y , x ′ y ′ = R ( − θ ) ⋅ T ( − x 0 , − y 0 ) 先平移T(-x_0,-y_0),后旋转\\ R(-\theta)=\left[ \begin{matrix} cos\theta & sin\theta & 0\\ -sin\theta & cos\theta & 0\\ 0 & 0 & 1 \end{matrix} \right]\\ 复合M_{xy,x'y'}=R(- \theta) \cdot T(-x_0,-y_0) T(x0,y0),R(θ)=cosθsinθ0sinθcosθ0001Mxy,xy=R(θ)T(x0,y0)

二维刚体变换

定义:一个变换矩阵仅包含平移和旋转的参数
一般形式:
二维刚体变换
多重旋转项是正交矩阵,即:
单 位 长 度 : r x x 2 + r x y 2 = r y x 2 + r y y 2 = 1 向 量 间 相 互 垂 直 : r x x r y x + r x y r y y = 0 单位长度:\qquad r_{xx}^2+r_{xy}^2=r_{yx}^2+r_{yy}^2=1\\ 向量间相互垂直: \qquad r_{xx}r_{yx}+r_{xy}r_{yy}=0 :rxx2+rxy2=ryx2+ryy2=1:rxxryx+rxyryy=0
任何旋转矩阵的元素都可以表示为一组正交单位向量的元素(因为旋转对应的三角函数满足正交的要求)

  • 向量 ( r x x , r x y ) (r_{xx},r_{xy}) (rxx,rxy)转变成沿x轴的单位向量
    [ r x x r x y 0 r y x r y y 0 0 0 1 ] ⋅ [ r x x r x y 1 ] = [ 1 0 1 ] \left[ \begin{matrix} r_{xx} & r_{xy} & 0\\ r_{yx} & r_{yy} & 0\\ 0 & 0 & 1 \end{matrix} \right] \cdot \left[ \begin{matrix} r_{xx}\\ r_{xy}\\ 1 \end{matrix} \right] = \left[ \begin{matrix} 1 \\ 0 \\ 1 \end{matrix} \right] rxxryx0rxyryy0001rxxrxy1=101
  • 向量 ( r y x , r y y ) (r_{yx},r_{yy}) (ryx,ryy)转变成沿y轴的单位向量
    [ r x x r x y 0 r y x r y y 0 0 0 1 ] ⋅ [ r y x r y y 1 ] = [ 0 1 1 ] \left[ \begin{matrix} r_{xx} & r_{xy} & 0\\ r_{yx} & r_{yy} & 0\\ 0 & 0 & 1 \end{matrix} \right] \cdot \left[ \begin{matrix} r_{yx}\\ r_{yy}\\ 1 \end{matrix} \right] = \left[ \begin{matrix} 0 \\ 1 \\ 1 \end{matrix} \right] rxxryx0rxyryy0001ryxryy1=011
  • 指定一个表明正y'轴方向的向量v
    v = P 1 − P 0 ∣ P 1 − P 0 ∣ = ( v x , v y ) v=\frac{P_1-P_0}{|P_1-P_0|}=(v_x,v_y) v=P1P0P1P0=(vx,vy)
  • v顺时针旋转90°,得到沿x'轴的单位向量u
    u = ( v y , − v x ) = ( u x , u y ) u=(v_y,-v_x)=(u_x,u_y) u=(vy,vx)=(ux,uy)
    由上述变换可以推导出将x'y'系统旋转到xy重合的矩阵:
    在这里插入图片描述
    R = [ u x u y 0 v x v y 0 0 0 1 ] 其 中 : v = P 1 − P 0 ∣ P 1 − P 0 ∣ = ( v x , v y ) u = ( v y , − v x ) = ( u x , u y ) R= \left[ \begin{matrix} u_x & u_y & 0\\ v_x & v_y & 0\\ 0 & 0 & 1 \end{matrix} \right]\\ 其中: v=\frac{P_1-P_0}{|P_1-P_0|}=(v_x,v_y)\\u=(v_y,-v_x)=(u_x,u_y) R=uxvx0uyvy0001:v=P1P0P1P0=(vx,vy)u=(vy,vx)=(ux,uy)

三维几何变换

旋转(重要)

x->y->z->x 循环交替,实现绕不同坐标轴的旋转

方法一

方法二

旋转轴定义一个局部坐标系,该坐标系中坐标轴单位向量构成旋转矩阵
局部坐标系
根据上图,定义三个相互正交的单位向量,用于构成局部坐标系和旋转矩阵
在这里插入图片描述

坐标系变换

三维坐标系
构造旋转矩阵,类比二维矩阵变换
旋转矩阵

三维观察

概念

流水线流程(每个过程要做什么)

在这里插入图片描述

投影变换

三维对象表示

边界表示法

使用平面或曲面来描述

  • 多面体
    • 如顶点表、边表、面表等
  • 曲面
    • 常见的用方程来描述
    • 超二次曲面通过将额外参数插入二次方程而形成,便于调整对象的形状
      超椭圆
      超椭圆
    • 样条–一组特定点集而生成平滑曲线的柔性带

样条

  • 样条曲线:由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续性条件
  • 样条曲面 :

凸壳: 包含一组控制点的凸多边形的边界
作用:1、给出了曲线或曲面的坐标范围;2、样条以凸壳为界,保证了对象形态平滑地沿控制点前进
凸壳

分类
  • 插值样条
    插值样条
  • 逼近样条
    • 贝塞尔曲线
    • B样条
    • Beta样条
    • 有理样条
      逼近样条

插值样条

参数连续性

连续性条件 – 保证参数曲线平滑过渡
条件:

  • 0阶参数连续性——曲线相连
  • 1阶参数连续性——交点处有相同的切线(在相交点处有相同的一阶导数
  • 2阶参数连续性——交点处的切向量变换率相同(在相交点处有相同的一阶和二阶导数
三次样条插值方法

给出一组控制点,利用三次多项式拟合每对控制点之间的曲线,通过设置两条曲线段交点处平滑条件求解得到所有系数
作用:多用于建立对象运动路径提供实体表示和绘画,也可用于设计物体形状

方法
自然三次样条

要求: 二阶连续性

  • n+1个控制点,n跳曲线段和4n个多项式系数
  • 内部控制点:n-1个,每个控制点有4个边界条件
    • 控制点两侧的曲线段在该点处有相同的一阶和二阶导数(控制点处二阶连续)
    • 两条曲线段通过控制点
  • 缺点:
    • 如果控制点中的任意一个发生了变化,整条曲线都受到影响(牵一发而动全身)
    • 不允许**“局部控制”**
Hermite插值

一个分段三次多项式并在每个控制点具有给定的切线

  • 控制点 p k p_k pk p k + 1 p_{k+1} pk+1之间的曲线段是参数三次函数P(u),Hermite曲线段的边界条件
    • P ( 0 ) = p k P(0)=p_k P(0)=pk
    • P ( 1 ) = p k + 1 P(1)=p_{k+1} P(1)=pk+1
    • P ′ ( 0 ) = D p k P'(0)=Dp_{k} P(0)=Dpk
    • P ′ ( 1 ) = D p k + 1 P'(1)=Dp_{k+1} P(1)=Dpk+1
      在这里插入图片描述
      Hermite插值(看看就好,不会考的)
      向量方程: P ( u ) = a u 3 + b u 2 + c u + d , 0 ≤ u ≤ 1 P(u)=au^3+bu^2+cu+d, 0 \leq u \leq 1 P(u)=au3+bu2+cu+d,0u1
      在这里插入图片描述
      在这里插入图片描述
Cardinal样条
Kochanek-Bartels样条

逼近样条

重点: Bezier曲线

贝塞尔曲线
构造方法

二次贝塞尔曲线
在这里插入图片描述
在这里插入图片描述
三次贝塞尔曲线
在这里插入图片描述
高次贝塞尔曲线以此类推

递归定义方式

n个控制点
在这里插入图片描述

显式定义方式

n个控制点,定义 P ( u ) = ∑ k = 0 n p k B E Z k , n ( u ) P(u)=\sum^n_{k=0}p_k BEZ_{k,n}(u) P(u)=k=0npkBEZk,n(u)
混合函数 ∑ k = 0 n B E Z k , n ( u ) \sum^n_{k=0}BEZ_{k,n}(u) k=0nBEZk,n(u)是Bernstein多项式: ∑ k = 0 n B E Z k , n ( u ) = C n k u k ( 1 − u ) n − k \sum^n_{k=0}BEZ_{k,n}(u)=C^k_n u^k (1-u)^{n-k} k=0nBEZk,n(u)=Cnkuk(1u)nk

性质
  • Bézier曲线总是落在控制点的凸壳内
  • 混合函数值为正且其总和为1: ∑ k = 0 n B E Z k , n ( u ) = 1 \sum^n_{k=0}BEZ_{k,n}(u)=1 k=0nBEZk,n(u)=1
贝塞尔曲面

由两组正交的贝塞尔曲线设计而成
在这里插入图片描述
在这里插入图片描述

  • 控制点由虚线连接
  • 实线表示常数u和常数v的曲线
  • 常数u的曲线是通过u取单位区间内的一定值并将v从0变到1而绘制出的
  • 常数v 的曲线是通过v 取单位区间内的一定值并将u从0变到1而绘制出的

实体构造法

简单物体构造复杂物体

扫描表示法

通过平移旋转及其他对称变换来构造三维对象

  • 平移扫
  • 旋转扫
  • 广义扫:沿空间曲线的集合扫过

结构实体几何法

空间分区表示

描述内部性质,将包含一个对象的空间区域划分为一组较小、非重叠连续实体

八叉树(用二叉树类推)

  • 用于现实对象内部结构
  • 每次使用与笛卡尔坐标平面对齐的三个相互垂直的平面对场景进行分割
  • 构造出树形结构后,要求每一个结点对应于一个三维空间区域
    在这里插入图片描述

BSP树(二叉空间分割树,Binary space partitioning)

  • 优点:
    • 减少场景树的表示深度
    • 减少了搜索树的时间

基于物理的建模方法

典型——水面
对象形状表面特征随着对象运动或受到邻近物体影响而改变

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值