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

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

相关推荐
追逐时光者1 天前
精选 5 款基于 .NET 开源的 Visual Studio 实用插件
visual studio
埃博拉酱4 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code
唐宋元明清21884 天前
.NET 本地Db数据库-技术方案选型
windows·c#
加号34 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
tryCbest4 天前
Windows环境下配置pip镜像源
windows·pip
呉師傅4 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
百事牛科技4 天前
保护文档安全:PDF限制功能详解与实操
windows·pdf
一个人旅程~4 天前
如何用命令行把win10/win11设置为长期暂停更新?
linux·windows·经验分享·电脑
一个假的前端男4 天前
[特殊字符] Flutter 安装完整指南 Windows—— 2026最新版
windows·flutter
倚肆5 天前
在 Windows Docker 中安装并配置 Nginx (映射 Windows 端口与路径)
windows·nginx·docker