Visual Basic 平面图形的几何变换

在计算机绘图中,通常需要将画出的图形平行移到一个位置,或改变图形大小及形状等。二维图形的几何变换包括平移变换、比例变换、旋转变换和镜像变换。

1. 平移图形

将图形上的点(X,Y)分别在水平方向和垂直方向移动Sx,Sy,变换后点(X ′,Y′)坐标值为:

X′= X + Sx

Y′= Y + Sy

如果Sx=0,垂直方向移动,Sy为0时水平方向移动。

2. 比例变换

以原点为中心,将图形各坐标点的XY分量分别乘以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

日常生活中见到的美术图案,如织物图案、装饰图案等,大多是将一个图案单元或几个图案单元进行组合和排列,从而形成一幅美丽的图案。

相关推荐
lucky67072 小时前
Windows 上彻底卸载 Node.js
windows·node.js
编程小白20262 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
凯子坚持 c4 小时前
CANN 性能剖析实战:从原始事件到交互式火焰图
windows·microsoft
开开心心就好4 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
獨枭4 小时前
PyCharm 跑通 SAM 全流程实战
windows
仙剑魔尊重楼5 小时前
音乐制作电子软件FL Studio2025.2.4.5242中文版新功能介绍
windows·音频·录屏·音乐·fl studio
PHP小志6 小时前
Windows 服务器怎么修改密码和用户名?账户被系统锁定如何解锁
windows
专注VB编程开发20年7 小时前
vb.net datatable新增数据时改用数组缓存
java·linux·windows
仙剑魔尊重楼7 小时前
专业音乐制作软件fl Studio 2025.2.4.5242中文版新功能
windows·音乐·fl studio
rjc_lihui8 小时前
Windows 运程共享linux系统的方法
windows