📜  2D转换

📅  最后修改于: 2021-01-13 09:37:07             🧑  作者: Mango


转换意味着通过应用规则将某些图形更改为其他图形。我们可以有各种类型的变换,例如平移,放大或缩小,旋转,剪切等。当在2D平面上发生变换时,称为2D变换。

转换在计算机图形学中起着重要作用,以重新定位屏幕上的图形并更改其大小或方向。

同质坐标

要执行一系列转换(例如平移,然后旋转和缩放),我们需要遵循一个顺序过程-

  • 翻译坐标,
  • 旋转平移的坐标,然后
  • 缩放旋转的坐标以完成复合变换。

为了缩短此过程,我们必须使用3×3转换矩阵而不是2×2转换矩阵。要将2×2矩阵转换为3×3矩阵,我们必须添加一个额外的虚拟坐标W。

这样,我们可以用3个数字而不是2个数字来表示该点,这称为同质坐标系。在这个系统中,我们可以用矩阵乘法表示所有的变换方程。任何笛卡尔点P(X,Y)都可以通过P’(X h ,Y h ,h)转换为同质坐标。

翻译

平移将对象移动到屏幕上的其他位置。通过将平移坐标(t x ,t y )添加到原始坐标(X,Y)以获得新坐标(X’,Y’),可以在2D中平移一个点。

翻译

从上图,您可以这样写:

X’= X+ x

Y’= Y+ y

该对(t x ,t y )称为平移向量或移位向量。上面的方程式也可以用列向量表示。

$ P = \ frac {[X]} {[Y]} $ p’= $ \ frac {[X’]} {[Y’]} $ T = $ \ frac {[t_ {x}]}} {[ t_ {y}]} $

我们可以写成-

P’= P+ Ť

回转

在旋转中,我们将物体从其原点旋转特定角度θ(θ)。从下图可以看出,点P(X,Y)与水平X坐标成角度φ,距原点的距离为r。

让我们假设您想以角度θ旋转它。将其旋转到新位置后,您将获得一个新点P’(X’,Y’)。

回转

使用标准三角函数,点P(X,Y)的原始坐标可以表示为-

$ X = r \,cos \,\ phi ……(1)$

$ Y = r \,sin \,\ phi ……(2)$

以同样的方式将点P’(X’,Y’)表示为-

$ {x}’= r \:cos \:\ left(\ phi \:+ \:\ theta \ right)= r \:cos \:\ phi \:cos \:\ theta \:− \:r \:sin \:\ phi \:sin \:\ theta …….(3)$

$ {y}’= r \:sin \:\ left(\ phi \:+ \:\ theta \ right)= r \:cos \:\ phi \:sin \:\ theta \:+ \:r \:sin \:\ phi \:cos \:\ theta …….(4)$

分别用等式(1)和(2)代入(3)和(4),我们将得到

$ {x}’= x \:cos \:\ theta − \:y \:sin \:\ theta $

$ {y}’= x \:sin \:\ theta+ \:y \:cos \:\ theta $

以矩阵形式表示上述方程式,

$$ [X’Y’] = [XY] \ begin {bmatrix} cos \ theta&sin \ theta \\ -sin \ theta&cos \ theta \ end {bmatrix} OR $$

P′= P。 [R

其中R是旋转矩阵

$$ R = \ begin {bmatrix} cos \ theta&sin \ theta \\ −sin \ theta&cos \ theta \ end {bmatrix} $$

旋转角度可以为正和负。

对于正旋转角,我们可以使用上面的旋转矩阵。但是,对于负角度旋转,矩阵将如下所示更改-

$$ R = \ begin {bmatrix} cos(− \ theta)&sin(− \ theta)\\ -sin(− \ theta)&cos(− \ theta)\ end {bmatrix} $$

$$ = \ begin {bmatrix} cos \ theta&-sin \ theta \\ sin \ theta&cos \ theta \ end {bmatrix} \ left(\因为cos(-\ theta)= cos \ theta \;和\; sin(− \ theta)= −sin \ theta \ right)$$

缩放比例

要更改对象的大小,请使用缩放转换。在缩放过程中,您可以扩展或压缩对象的尺寸。缩放可以通过将对象的原始坐标与缩放因子相乘以获得所需的结果来实现。

让我们假设原始坐标为(X,Y),缩放因子为(S X ,S Y ),生成的坐标为(X’,Y’)。可以用数学表示,如下所示-

X’= X。 S XY’= Y。 S y

缩放因子S X ,S Y分别在X和Y方向上缩放对象。上面的等式也可以用矩阵形式表示如下-

$$ \ binom {X’} {Y’} = \ binom {X} {Y} \ begin {bmatrix} S_ {x}&0 \\ 0&S_ {y} \ end {bmatrix} $$

要么

P′= P。小号

其中S是缩放矩阵。缩放过程如下图所示。

缩放之前缩放后

如果我们为缩放因子S提供小于1的值,则可以减小对象的大小。如果我们提供的值大于1,则可以增加对象的大小。

反射

反射是原始对象的镜像。换句话说,可以说这是180°的旋转操作。在反射变换中,对象的大小不变。

下图显示了相对于X和Y轴以及原点的反射。

反射反射线

剪力

倾斜对象形状的变换称为剪切变换。有两个剪切转换X-ShearY-Shear 。一个偏移X坐标值,另一个偏移Y坐标值。然而;在这两种情况下,只有一个坐标会更改其坐标,而其他坐标会保留其值。剪切也称为歪斜

X剪

X剪切将保留Y坐标,并对X坐标进行更改,这将导致垂直线向右或向左倾斜,如下图所示。

X剪

X-Shear的转换矩阵可以表示为-

$$ X_ {sh} = \ begin {bmatrix} 1&shx&0 \\ 0&1&0 \\ 0&0&0&1 \ end {bmatrix} $$

Y’= Y+嘘。 X

X’= X

Y型剪

Y-Shear保留X坐标并更改Y坐标,这导致水平线转换为向上或向下倾斜的线,如下图所示。

Y型剪

Y-Shear可以在矩阵中表示为-

$$ Y_ {sh} \ begin {bmatrix} 1&0&0 \\ shy&1&0 \\ 0&0&0-1 1 \ end {bmatrix} $$

X’= X+嘘X。 ÿ

Y’= Y

复合转型

如果在平面T1的变换之后跟随第二平面变换T2,则结果本身可以由单个变换T表示,该变换T是按该顺序获取的T1和T2的组成。写为T = T1∙T2。

可以通过级联变换矩阵以获得组合的变换矩阵来实现复合变换。

组合矩阵-

[T] [X] = [X] [T1] [T2] [T3] [T4]…。 [Tn]

其中[Ti]是以下各项的任意组合

  • 翻译
  • 缩放比例
  • 剪力
  • 回转
  • 反射

变换顺序的变化将导致不同的结果,因为通常矩阵乘法不是累积的,即[A]。 [B]≠[B]。 [A]和乘法的顺序。组成变换的基本目的是通过将一个组合变换应用于一个点而不是一个接一个地应用一系列变换来提高效率。

例如,要将对象绕任意点(X p ,Y p )旋转,我们必须执行三个步骤-

  • 将点(X p ,Y p )转换为原点。
  • 绕原点旋转。
  • 最后,将旋转中心平移回原来的位置。