文章目录
因为大部分内容在计算机图形学已经学习过,所以不再重复写了
二维几何变换
二维基本变换
- 平移
- 旋转
- 缩放
二维复合变换
- 反射
- 错切
坐标系间的变换
把坐标系看作是图形的相对变换
先
平
移
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θ0001⎦⎤复合Mxy,x′y′=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] ⎣⎡rxxryx0rxyryy0001⎦⎤⋅⎣⎡rxxrxy1⎦⎤=⎣⎡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] ⎣⎡rxxryx0rxyryy0001⎦⎤⋅⎣⎡ryxryy1⎦⎤=⎣⎡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=∣P1−P0∣P1−P0=(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=∣P1−P0∣P1−P0=(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,0≤u≤1
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(1−u)n−k
性质
- 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)
- 优点:
- 减少场景树的表示深度
- 减少了搜索树的时间
基于物理的建模方法
典型——水面
对象形状和表面特征随着对象运动或受到邻近物体影响而改变