计算机图形学 - 基本二维几何变换

基本二维几何变换

二维平移

二维平移图像

P = [ x y ] \begin{bmatrix} x \\ y \\ \end{bmatrix} [xy], P’ = [ x ′ y ′ ] \begin{bmatrix} x' \\ y' \\ \end{bmatrix} [xy], T = [ t x t y ] \begin{bmatrix} t_x \\ t_y \\ \end{bmatrix} [txty]

P ′ P' P = P P P + T T T

二维旋转

二维旋转图像

P = [ x y ] \begin{bmatrix} x \\ y \\ \end{bmatrix} [xy], P’ = [ x ′ y ′ ] \begin{bmatrix} x' \\ y' \\ \end{bmatrix} [xy]

x x x = r r r * cos(φ)
y y y = r r r * sin(φ)

P’ 是通过 P 旋转 φ 角的变换而来

x ′ x' x = x x x * cos(φ) - y y y * sin(φ)`

y ′ y' y = x x x * sin(φ) + y y y * cos(φ)`

P ′ P' P = R R R · P P P

R = [ c o s ( φ ) − s i n ( φ ) s i n ( φ ) c o s ( φ ) ] \begin{bmatrix} cos(φ) & -sin(φ) \\ sin(φ) & cos(φ) \\ \end{bmatrix} [cos(φ)sin(φ)sin(φ)cos(φ)],

任意点为圆心_二维旋转图像

相对旋转点( x r x_r xr, y r y_r yr)将点从位置( x x x, y y y)旋转到位置( x ′ x' x, y ′ y' y)

x ′ x' x = x r x_r xr + ( x x x - x r x_r xr) * cos(φ) - ( y y y - y r y_r yr) * sin(φ)
y ′ y' y = y r y_r yr + ( x x x - x r x_r xr) * sin(φ) + ( y y y - y r y_r yr) * cos(φ)

二维缩放

二维缩放图像

x ′ x' x = x x x * s x s_x sx
y ′ y' y = y y y * s y s_y sy

缩放系数 s x s_x sx x x x 方向对对象进行缩放, s y s_y sy y y y 方向对对象进行缩放

[ x ′ y ′ ] \begin{bmatrix} x' \\ y' \\ \end{bmatrix} [xy] = [ s x 0 0 s y ] \begin{bmatrix} s_x & 0 \\ 0 & s_y \\ \end{bmatrix} [sx00sy] · [ x y ] \begin{bmatrix} x \\ y \\ \end{bmatrix} [xy]

P ′ P' P = S S S · P P P

矩阵表示和齐次坐标

在设计和图形构造的应用中, 通过完成平移、旋转和搜房, 将图形组成部分安排到合适的位置。

每个基本变换(平移、旋转和缩放)都可以表示为普通矩阵形式:
P ′ P' P = M 1 M_1 M1 · P P P + M 2 M_2 M2

P ′ P' P, P P P: 列向量
M 1 M_1 M1: 2X2 矩阵
M 2 M_2 M2: 包含平移项的两元素列矩阵

二维平移矩阵

[ x ′ y ′ 1 ] \begin{bmatrix} x' \\ y' \\ 1 \\ \end{bmatrix} xy1 =
[ 1 0 t x 0 1 t y 0 0 1 ] \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \\ \end{bmatrix} 100010txty1 ·
[ x y 1 ] \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} xy1

P ′ P' P = T T T( t x t_x tx, t y t_y ty) · P P P

二维旋转矩阵

[ x ′ y ′ 1 ] \begin{bmatrix} x' \\ y' \\ 1 \\ \end{bmatrix} xy1 =
[ c o s ( θ ) − s i n ( θ ) 0 s i n ( θ ) c o s ( θ ) 0 0 0 1 ] \begin{bmatrix} cos(θ) & -sin(θ) & 0 \\ sin(θ) & cos(θ) & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} cos(θ)sin(θ)0sin(θ)cos(θ)0001 ·
[ x y 1 ] \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} xy1

P ′ P' P = R R R( θ θ θ) · P P P

二维缩放矩阵

[ x ′ y ′ 1 ] \begin{bmatrix} x' \\ y' \\ 1 \\ \end{bmatrix} xy1 =
[ s x 0 0 0 s y 0 0 0 1 ] \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} sx000sy0001 ·
[ x y 1 ] \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} xy1

P ′ P' P = R R R( s x s_x sx, s y s_y sy) · P P P

其他二维变换

反射

相对_x_轴的对象反射

[ 1 0 0 0 − 1 0 0 0 1 ] \begin{bmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} 100010001

相对_y_轴的对象反射

[ − 1 0 0 0 1 0 0 0 1 ] \begin{bmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} 100010001

错切

错切是一种使对象形状发生变化的变换, 经过错切的对象好像是由已经相互滑动的内部夹层组成的。
相对于 x x x轴的 x x x方向错写由下列变换矩阵产生

[ 1 s h x 0 0 1 0 0 0 1 ] \begin{bmatrix} 1 & sh_x & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} 100shx10001

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值