旋转四面体的c语言函数 制作一个旋转的正四面体(11)


01
如图2-3所示 。
30
a [1 2]= [3 2]a'
01
30
b [2 2]= [6 2]b'
01
30
c [2 3]= [6 3]c'
01
2. 对称变换
图形上一点P(x,y)经关于原点对称变换后成为新图形上一点P'(x',y'),则
x' = -x
y' = -y
写成矩阵形式成为
-10
[x' y'] = [x y]= [x y] * T
0-1
-10
这里 T =为关于原点对称变换矩阵 。
0-1
若关于x轴对称,则对称变换的矩阵表示为
10
[x' y'] = [x y]= [x y] * T
0-1
10
于是关于x轴对称变换矩阵 T =
0-1
若关于y轴对称,则对称变换的矩阵表示为
-10
[x' y'] = [x y]= [x y] * T
01
-10
于是关于y轴对称变换矩阵 T =
01
若关于直线y = -x对称,则对称变换矩阵表示为
0-1
[x' y'] = [x y]= [x y] * T
-10
01
于是关于直线 y = x对称变换矩阵 T =
10
各种对称变换的图形均可由实例程序绘出,参见实例程序图形 。
3. 错切变换
对图形的任一点P(x,y),作线性变换如下
x' = x + by
y' = y + dx
式中b,d为不全为零的常 数 , 点P'(x',y')为新图形上相应的点,这个变换称为图形的错切变换 。
错切变换的矩阵表示为
1d
[x' y'] = [x y]= [x y] * T
b1
1d
T =叫做错切变换矩阵(b,d不全为零) 。
b1
① 当d=0时,x'=x+by,y'=y , 这时图形的y坐标不变,x坐标值随(x,y)及系数b作线性变化 。若b0时 , 图形沿x轴作错切位移;若b0 , 图形沿x轴负向作错切位移 。
② 当b=0时,x'=x,y'=dx+y,此时图形的x坐标不变y坐标随(x,y)及系数d作线性变化 。如d0,图形沿y轴正向作错切位移;如d0,图形沿y轴负向作错切位移 。
③ 当b≠0且d≠0时,x'=x+by,y'=y+dx,图形沿x,y两个方向作错切位移 。
12
例 2: 设有错切变换 矩阵 T =,正方形abcd经此错切变换成为四边形a'b'c'd',
01
如图2-4所示 。
12
a [0 0]= [0 0]a'
01
12
b [1 0]= [1 2]b'
01
12
c [1 1]= [1 3]c'
01
12
d [0 1]= [0 1]d'
01
4. 旋转变换
设图形上一点P(x,y)绕原点逆时针旋转θ角后成为新的图形上一点P'(x',y'),则由解析几何方法可得
x' = xcosθ + ysinθ
y' = -xsinθ + ycosθ
用矩阵表示为
cosθ-sinθ
[x' y'] = [x y]= [x y] * T
sinθcosθ
cosθ-sinθ
这里 T =为绕原点逆时针变换矩阵 。若顺时针旋转时,θ角为负值 。
sinθcosθ
5. 平移变换
若图形上一点P(x,y)沿x轴平移 l距离,沿y轴平移m距离后成为新的图形上一点P'(x',y'),则有
x' = x + l
y' = y + m
式中l,m不全为零,这称为平移变换 。但此变换无法用组成图形的点向量和2×2阶变换矩阵相乘来实现 。
用二维点向量和2×2阶矩阵相乘不能表示图形的平移变换,那么自然会想到用三维点向量和3×3阶矩阵相乘来实现图形的平移变换 。因此对图形上二个坐标的点向量需要添加一个坐标,使之成为三维点向量以便与三阶矩阵相乘,进而实现用矩阵表示平移变换 。实际上就是对上面的二个坐标变换式添加第三个坐标变换式,即成为
x' = x + l
y' = y + m
k = k
这第三个坐标变换式(即k=k)必须是恒等式,因为不需作变换,本质上是为了进行矩阵运算而引入的 。
将此三个变换式(仍然是图形的平移变换 , 不妨将k = k取成1=1)写成矩阵得
100
[x' y' l] = [x y l]010= [x y 1] * T
lm1
100
显然 T =010为图形的平移变换矩阵 。
lm1
这里通过对原图形上二维点向量引进第三个坐标成为三维点向量,从而使原图形的平移变换 能用矩阵表示 。同样其它基本变换也可以如此用矩阵表示 。因此图形的基本变换都可以在这样的三维点向量下统一、整齐用矩阵表示 。这样的三维点向量称为齐次点向量,也叫三维齐次坐标点,简称三维齐次坐标 。只有在三维齐次坐标下,二维几何变换才都可以用矩阵表示 。下面再进一步讨论一下齐次坐标的优点 。

推荐阅读