在计算机绘图中,通常需要将画出的图形平行移到一个位置,或改变图形大小及形状等。二维图形的几何变换包括平移变换、比例变换、旋转变换和镜像变换。
1. 平移图形
将图形上的点(X,Y)分别在水平方向和垂直方向移动Sx,Sy,变换后点(X ′,Y′)坐标值为:
X′= X + Sx
Y′= Y + Sy
如果Sx=0,垂直方向移动,Sy为0时水平方向移动。
2. 比例变换
以原点为中心,将图形各坐标点的X 、Y分量分别乘以Sx,Sy,则可使图形进行整体放大或缩小。这时,
X′= X × Sx
Y′= Y × Sy
当Sx=Sy时,图形作相似变换。当Sx≠Sy时,图形产生变形。
3. 旋转图形
以原点为中心,将点(X ,Y )旋转θ角度而得到的新的坐标(X ′,Y′)的变换称为旋转变换。其数学表达式为:
X′= xCosθ - ysinθ
Y′= xsinθ + ycosθ
4. 镜像变换
要进行图形的镜像变换,首先应选择一个合适的对称轴。这个对象轴可以是X轴、Y轴、原点,也可以是任意一条直线。例如,点(X ,Y)的镜像变换:
- 以X轴为对称的镜像变换式为:X′= X,Y′= -Y
- 以Y轴为对称的镜像变换式为:X′= -X,Y′= Y
- 以原点为对称的镜像变换式为:X′= -X,Y′= -Y
- 以45o直线为对称的镜像变换式为:X′= Y,Y′= X
- 以-45o直线为对称的镜像变换式为:X′= -Y,Y′= -X
【例8.4】 平移三阶曲线:

在窗体上添加一个图片框Picture1、命令按钮数组Command1,如图8.11所示。

图8.11 平移三阶曲线函数
编写命令按钮的Click事件代码:
Private Sub Command1_Click(Index As Integer)
Dim xx, yy, a
Dim x1, y1, px, py, x0, y0
x0 = 120: x1 = 180: y1 = 100
a = y1 / (x1 * (x1 - x0) * (x1 + x0))
Select Case Index
Case 0 '画曲线
Picture1.Scale (0, 0)-(640, 480)
Picture1.Cls
For x = -180 To 180 Step 2
y = a * x * (x - x0) * (x + x0)
px = 320 + x
py = 240 - y
Picture1.PSet (px, py)
Next x
Case 1 '水平平移
Picture1.Scale (0, 0)-(640, 480)
Picture1.Cls
For xx = -50 To 50 Step 5
For x = -180 To 180 Step 2
y = a * x * (x - x0) * (x + x0)
px = 320 + x + xx
py = 240 - y
Picture1.PSet (px, py)
Next x
Next xx
Case 2 '垂直平移
Picture1.Scale (0, 0)-(640, 480)
Picture1.Cls
i = 1
For yy = -150 To 150 Step 75
i = i + 1
For xx = -50 To 50 Step 5
For x = -180 To 180 Step 2
y = a * x * (x - x0) * (x + x0)
px = 320 + x + xx
py = 240 - y - yy
If x = -180 Then '变换曲线颜色
Picture1.PSet (px, py)
Else
Picture1.PSet (px, py), QBColor(i)
End If
Picture1.Line -(px, py), QBColor(i)
Next x
Next xx
Next yy
Case 3 '退出
End
End Select
End Sub
日常生活中见到的美术图案,如织物图案、装饰图案等,大多是将一个图案单元或几个图案单元进行组合和排列,从而形成一幅美丽的图案。