CG01:Model Transformation In Computer Graphics

This is a summary blog around "GAMES101: Introduction to Modern Computer Graphics", taught by Lingqi Yan. The knowledge and images involved are quoted from the instructor Lingqi Yan's lecture notes and book "Fundamentals of Computer Graphics 4th".


Catalog

Why Transfromation ?

What are Transformation marices ?

1. 2D Linear transformations

1.1 Scale

1.2 Reflection

 1.3 Shear

 1.4 Rotation

2. Homogenous Coordinates

2.1 Why Homogenous Coordinates ?

2.2 Solution: Homogenous Coordinates !

2.3 Affine Transformations

2.4 2D Transformations in Homogenous Coordinates

3. Inverse Transform

4. Composing and Decomposing Transforms

5. 3D Transformations

5.1 Basic 3D Transformations

5.2 3D Rotations

Reference 


Why Transfromation ?

  • We need to characterize the movement of the model

  •  We need to characterize views and projections in different dimensions and from different angles

What are Transformation marices ?

From a mathematical point of view, we can represent the transformations as marices. The importance of transformation marices in graphics needs no introduction. The scaling, rotation, and displacement of all objects can be obtained by transformation marices. There are also many applications in projection transformations, and this article will introduce some brief transformation matrices.


1. 2D Linear transformations

We define the simple matrix(of the same dimension) multiplication shown below as a linear transformation of the vector \left ( x,y \right )^{T}.

\large \left[\begin{array}{ll} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right]=\left[\begin{array}{l} a_{11} x+a_{12} y \\ a_{21} x+a_{22} y \end{array}\right]

1.1 Scale

The scaling transformation is a transformation that acts along the coordinate axes and is defined as follows,

\LARGE \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} s_{x} & 0 \\ 0 & s_{y} \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right]

1.2 Reflection

Reflection transformation with a certain coordinate axis as the symmetry axis is defined as follows,

\LARGE \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} -1 & 0 \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right]

 1.3 Shear

The shear causes a distortion in the image, which is produced in only one direction, i.e., the horizontal shear transformation and the vertical shear transformation, respectively. Horizontal shear transformation is defined as follows,

\LARGE \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} 1 & a \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right]

 1.4 Rotation

Rotation is another very important transformation matrix. We start with the rotation matrix around the origin. In the figure below, we want to represent the rotation of the vector \LARGE a to the vector \LARGE b with a transformation matrix.

Given that the angle between vector \LARGE a and the \LARGE x-axis is \LARGE \alpha, then the length of vector \LARGE a is \mathrm{r}=\sqrt{\mathrm{x}_{\alpha}^{2}+\mathrm{y}_{\alpha}^{2}}, and the coordinate can be calculated as follows,

\LARGE \left\{\begin{array}{l} \mathrm{x}_{\alpha}=\mathrm{r} \cos \alpha \\ \mathrm{y}_{\alpha}=\mathrm{r} \sin \alpha \end{array}\right.

Since the vector b is obtained by rotating the vector a, its length is also r, and the angle between the vector b and the \LARGE x-axis is \left ( \alpha+\phi \right ). It can be obtained using triangle conversion,

\LARGE \begin{array}{l} \mathrm{x}_{\mathrm{b}}=\mathrm{r} \cos (\alpha+\phi)=\mathrm{r} \cos \alpha \cos \phi-\mathrm{r} \sin \alpha \sin \phi \\ \mathrm{y}_{\mathrm{b}}=\mathrm{r} \sin (\alpha+\phi)=\mathrm{r} \sin \alpha \cos \phi+\mathrm{r} \cos \alpha \sin \phi \end{array}

Known that \large \begin{array}{l} \mathrm{x}_{\alpha}=\mathrm{r} \cos \alpha \end{array} and \large \begin{array}{l} \mathrm{y}_{\alpha}=\mathrm{r} \sin \alpha \end{array}, the vector b can be rewritten as,

\LARGE \begin{array}{l} \mathrm{x}_{\mathrm{b}}=\mathrm{x}_{\mathrm{a}} \cos \phi-\mathrm{y}_{\mathrm{a}} \sin \phi \\ \mathrm{y}_{\mathrm{b}}=\mathrm{x}_{\mathrm{a}} \sin \phi+\mathrm{y}_{\mathrm{a}} \cos \phi \end{array}

The rotational transformation is defined as follows,

\large \left[\begin{array}{l} \mathrm{x}_{\mathrm{b}} \\ \mathrm{y}_{\mathrm{b}} \end{array}\right]=\left[\begin{array}{cc} \cos \phi & -\sin \phi \\ \sin \phi & \cos \phi \end{array}\right]\left[\begin{array}{l} \mathrm{x}_{\mathrm{a}} \\ \mathrm{y}_{\mathrm{a}} \end{array}\right]


2. Homogenous Coordinates

2.1 Why Homogenous Coordinates ?

When it comes to translation transformation...

\large \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{ll} a & b \\ c & d \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right]+\left[\begin{array}{l} t_{x} \\ t_{y} \end{array}\right]

  • Translation cannot be represented in matrix form.
  • But we don’t want translation to be a special case. Is there a unified way to represent all transformations? (and what’s the cost?)

2.2 Solution: Homogenous Coordinates !

In order to define the translation transformations as transformation matrices, we add a third coordinate (w-coordinate),

2D point    =  \large (x,y,1)^{T}

2D vector  =  \large (x,y,0)^{T}

Matrix representation of translations,

\LARGE \left(\begin{array}{c} x^{\prime} \\ y^{\prime} \\ w^{\prime} \end{array}\right)=\left(\begin{array}{ccc} 1 & 0 & t_{x} \\ 0 & 1 & t_{y} \\ 0 & 0 & 1 \end{array}\right) \cdot\left(\begin{array}{l} x \\ y \\ 1 \end{array}\right)=\left(\begin{array}{c} x+t_{x} \\ y+t_{y} \\ 1 \end{array}\right)

Valid operation if w-coordinate of result is 1 or 0

\large vector+vector=vector

\large point-point=vector

\large point+vector=vector

In homogeneous coordinates, \large (x,y,w)^{T} is the 2D point \large (x/w,y/w,1)^{T}, w\neq 0.

2.3 Affine Transformations

Affine map = linear map + translation

 \large \left(\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right)=\left(\begin{array}{ll} a & b \\ c & d \end{array}\right) \cdot\left(\begin{array}{l} x \\ y \end{array}\right)+\left(\begin{array}{l} t_{x} \\ t_{y} \end{array}\right)

Using homogenous coordinates, it can be defined as follows,

\large \left(\begin{array}{c} x^{\prime} \\ y^{\prime} \\ 1 \end{array}\right)=\left(\begin{array}{lll} a & b & t_{x} \\ c & d & t_{y} \\ 0 & 0 & 1 \end{array}\right) \cdot\left(\begin{array}{l} x \\ y \\ 1 \end{array}\right)

Note: "Affine map = linear map + translation" means it perform linear transformation first and then translation transformation

2.4 2D Transformations in Homogenous Coordinates

  • Scale

\large \mathbf{S}\left(s_{x}, s_{y}\right)=\left(\begin{array}{ccc} s_{x} & 0 & 0 \\ 0 & s_{y} & 0 \\ 0 & 0 & 1 \end{array}\right)

  • Rotation by angle α around the origin

\large \mathbf{R}(\alpha)=\left(\begin{array}{ccc} \cos \alpha & -\sin \alpha & 0 \\ \sin \alpha & \cos \alpha & 0 \\ 0 & 0 & 1 \end{array}\right)

  • Translation

\large \mathbf{T}\left(t_{x}, t_{y}\right)=\left(\begin{array}{ccc} 1 & 0 & t_{x} \\ 0 & 1 & t_{y} \\ 0 & 0 & 1 \end{array}\right)


3. Inverse Transform

M^{-1} is the inverse of M transform in both a matrix and geometric sense

 

The transformation matrix of the rotation is an orthogonal matrix, so the inverse matrix can be obtained by transposing. In other words, we can transpose a rotation transformation matrix to get its inverse transformation matrix.


4. Composing and Decomposing Transforms

A sequence of affine transforms can be composed to one transformation matrix by matrix multiplication. Note that matrices are applied right to left.

A complex transformation can also be split into multiple simple transformations. For example, when we need to rotate around a given point c,

\large R_{(c,\alpha)}=T(c )\cdot R(\alpha )\cdot T(-c )


5. 3D Transformations

Use homogeneous coordinates again,

3D point    =  \large (x,y,z,1)^T

3D vector  =  \large (x,y,z,0)^T

Use 4×4 matrices for affine transformations,

\large \left(\begin{array}{l} x^{\prime} \\ y^{\prime} \\ z^{\prime} \\ 1 \end{array}\right)=\left(\begin{array}{lllc} a & b & c & t_{x} \\ d & e & f & t_{y} \\ g & h & i & t_{z} \\ 0 & 0 & 0 & 1 \end{array}\right) \cdot\left(\begin{array}{c} x \\ y \\ z \\ 1 \end{array}\right)

5.1 Basic 3D Transformations

  • Scale

\large \mathbf{S}\left(s_{x}, s_{y}, s_{z}\right)=\left(\begin{array}{cccc} s_{x} & 0 & 0 & 0 \\ 0 & s_{y} & 0 & 0 \\ 0 & 0 & s_{z} & 0 \\ 0 & 0 & 0 & 1 \end{array}\right)

  • Translation

\large \mathbf{T}\left(t_{x}, t_{y}, t_{z}\right)=\left(\begin{array}{cccc} 1 & 0 & 0 & t_{x} \\ 0 & 1 & 0 & t_{y} \\ 0 & 0 & 1 & t_{z} \\ 0 & 0 & 0 & 1 \end{array}\right)

  • Rotation by angle α around x-, y-, or z-axis

\large \begin{array}{l} \mathbf{R}_{x}(\alpha)=\left(\begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & \cos \alpha & -\sin \alpha & 0 \\ 0 & \sin \alpha & \cos \alpha & 0 \\ 0 & 0 & 0 & 1 \end{array}\right) \end{array}

\large \begin{array}{l} \mathbf{R}_{y}(\alpha)=\left(\begin{array}{cccc} \cos \alpha & 0 & \sin \alpha & 0 \\ 0 & 1 & 0 & 0 \\ -\sin \alpha & 0 & \cos \alpha & 0 \\ 0 & 0 & 0 & 1 \end{array}\right) \end{array}

\large \begin{array}{l} \mathbf{R}_{z}(\alpha)=\left(\begin{array}{cccc} \cos \alpha & -\sin \alpha & 0 & 0 \\ \sin \alpha & \cos \alpha & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right) \end{array}

  • Rotation by angle α around n-axis (Rodrigues’ Rotation Formula)

 \large \vec{n}=(n_{x},n_{y},n_{z})

\large \mathbf{R}(\mathbf{n}, \alpha)=\cos (\alpha) \mathbf{I}+(1-\cos (\alpha)) \mathbf{n} \mathbf{n}^{T}+\sin (\alpha) \underbrace{\left(\begin{array}{ccc} 0 & -n_{z} & n_{y} \\ n_{z} & 0 & -n_{x} \\ -n_{y} & n_{x} & 0 \end{array}\right)}_{\mathbf{N}}

5.2 3D Rotations

Compose any 3D rotation from x-, y-, or z-axis

\large \mathbf{R}_{x y z}(\alpha, \beta, \gamma)=\mathbf{R}_{x}(\alpha) \mathbf{R}_{y}(\beta) \mathbf{R}_{z}(\gamma)

Reference 

[1] Marschner S , Shirley P. Fundamentals of Computer Graphics 4th

[2] Lingqi Yan,  GAMES101: 现代计算机图形学入门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
金属和合金的相变是指它们在特定的温度、压力或其他条件下发生的结晶结构的变化。相变对于金属和合金的性能和特性具有重要影响。相变可以导致材料的硬度、强度、导电性、磁性等方面的变化。 金属和合金的相变可以分为三类:固态相变、液态相变和气态相变。固态相变是指材料在固态下发生的晶体结构的变化,例如晶格参数的改变、相的形成或消失。液态相变是指材料在液态下发生的晶体结构的变化,通常涉及熔化或凝固过程。气态相变是指材料从气态转变为固态或液态的过程,例如凝固或淬火。 相变可以通过不同的方式进行,例如固相变、溶解度限制相变、均一化相变和离散相变等。固相变是指材料在固态下发生的晶体结构的变化,例如从铁素体相变为铁母相。溶解度限制相变是指在合金中,当某个元素的浓度超过其在基体中的溶解度时,会发生相变。均一化相变是指在合金中两种相的浓度变得相等,导致晶体结构的变化。离散相变是指合金中存在两个或多个不同的相,并且相变发生在相界面上。 相变的机制可以通过研究金属和合金的晶体结构、晶体缺陷和原子排列等方面来理解。研究相变的目的是为了了解相变过程中的微观机制,并进一步控制和改善材料的性能。 总之,相变在金属和合金的研究和应用中具有重要意义,对于深入理解和改进金属材料的性能具有重要的影响。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值