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

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

相关推荐
熊明才15 小时前
WSL2 网络突然瘫痪(Network is unreachable / 没有 eth0)最短修复指南(2026年9月20日亲测可用)
linux·windows·wsl2
VIP_CQCRE15 小时前
在 Visual Studio 里接入 Ace Data Cloud:让 AI 编程助手直接用上 OpenAI 兼容接口
openai·ai编程·开发工具·visual studio·acedatacloud
VIP_CQCRE16 小时前
在 Visual Studio 里接入 AI 编程助手:用 Ace Data Cloud 打通 OpenAI 兼容接口与 LMLocal
openai·ai编程·visual studio·acedatacloud·lmlocal
free-elcmacom17 小时前
发际线警告!手撕《C陷阱与缺陷》终极 BOSS:signal 函数与 typedef 魔法
c语言·开发语言·visual studio code·visual studio
xbzb19 小时前
Windows 启动故障修复知识整理:蓝屏 / 无限重启 / 盘符 X / 无 PE 盘
windows
我命由我1234520 小时前
Mac 操作系统 - 一些使用记录
运维·windows·学习·系统安全·运维开发·mac·学习方法
VIP_CQCRE20 小时前
Visual Studio 也能丝滑接入大模型:用 Ace Data Cloud + LMLocal 打造 AI 编程体验
ai·大模型·visual studio·ace data cloud·lmlocal
千谦阙听20 小时前
【 C++篇】:模板初阶——泛型编程、函数模板与类模板
开发语言·c++·学习·visual studio
kakakahahahaha1 天前
Windows Steam 游戏存档在哪里?定位和恢复排查流程
windows·其他·电脑·笔记本电脑·内容运营·软件需求
Xy-unu1 天前
Windows 开启外接显示器 HDR 后外接显示器无信号、无法扩展模式故障记录
windows