我怎样才能写出螺旋形的代码?
How can I write code that makes a spiral?
我刚开始在 Excel VBA 学习编程,但遇到了问题。
我想用一个程序画一个螺旋线,但是一个解决不了。
我只想使用 for
和 do until
和 do while
循环。
这是我的代码:
Sub spiral()
For i = 1 To 16
xmm = xmm - 1
ymm = ymm - 1
Do Until xp = i
xp = xp + 1
Cells(5 + xp, 5) = i
Loop
Do Until yp = i
yp = yp + 1
Cells(5 + xp, 5 + yp) = i + 1
Loop
Do Until xm > xp
xm = xm + 1
Cells(5 + xp + i * xmm, 5 + yp) = i + 2
Loop
Do Until ym > yp
ym = ym + 1
Cells(5 + xp + xmm, 5 + yp + i * ymm) = i + 3
Loop
Next i
End Sub
谢谢!
我想不出你需要这个的任何实际原因,但话虽如此,我经常浪费时间处理奇怪的任务 "just to see if I can."
访问 VBA 个圈子
最近 螺旋 是我在 SQL 玩的一个自我分配的挑战,虽然它起源于 circle in Access VBA from another useless project of mine:
这教会了我很多概念,包括如何在网格上画圆。
画圆圈的过程几乎与在时钟上画指针的过程相同。如果我不绘制时钟指针的整条线,而是只绘制它的尖端(又名半径),一直到 360°,那么我有一个圆圈。
SQL圈
说那个快十倍!
然后有一天我想知道将圆代码转换为 SQL Server 有多难,利用 Stack Exchange Data Explorer ( SEDE)。图表是在网格上绘制的,所以它是相同的概念。
这是几个结果之一(同样,都是无用的):
单击运行查询,然后在计算完成后单击图形 选项卡。 (您还需要使用您的 Stack Exchange ID 登录,或执行验证码。)您可以在用户提示中使用各种常量(在 SQL 下方)。
SQL 螺旋
然后在某个时候我想知道 spirals。
(...但我应该是时候开始生活了?Naaaa,哈哈)
螺旋只是一个修改过的圆,除了半径会随着你绕着圆周前进而减小(或增加)——而且你不会停在 360°——而是继续前进,并以稳定的速度不断改变半径。
- SEDE:Draw a spiral
再次单击运行查询,然后在计算完成后单击图表选项卡。 (您还需要使用您的 Stack Exchange ID 登录,或执行验证码。)您可以在用户提示中使用各种常量(在 SQL 下方)。
在Excel
中螺旋上升
我今天不会再在螺旋上浪费时间,但如果我要在 Excel 工作表单元格中绘制一个,我会将工作表上所有单元格的大小调整为一个小方格(也许 width=1,height=10),然后我会从 SQL 示例中借用代码,将其改编为 Excel(这不需要太多工作)。
Access VBA 示例可能更难以适应,因为有很多控件的编程操作正在进行(无法在运行时完成)。
或者,可以在 Excel 中使用控件(即线条)而不是您目前尝试的网格方法来复制 Access 示例。
更多信息:
- 维基百科:Midpoint Circle Algorithm
- rosettacode:Midpoint circle algorithm examples(39 种语言的代码)
- tutsPlus.com : Working with circles/spirals
- 数学溢出:How to spiral coordinates in an outward pattern on 2D grid?
基于此线程 (Looping in a spiral) 的一些答案,我设法提出了这个解决方案
Sub spiral()
x = 0
y = 0
d = 1
m = 1
i = 1
j = 1
Do While i < 6
Do While 2 * x * d < m
Cells(x + 5, y + 5).Value = j
x = x + d
j = j + 1
Loop
Do While 2 * y * d < m
Cells(x + 5, y + 5).Value = j
y = y + d
j = j + 1
Loop
d = -1 * d
m = m + 1
i = i + 1
Loop
End Sub
不确定这是否是您正在寻找的东西,因为您没有指定您想要实现的确切输出。
我刚开始在 Excel VBA 学习编程,但遇到了问题。
我想用一个程序画一个螺旋线,但是一个解决不了。
我只想使用 for
和 do until
和 do while
循环。
这是我的代码:
Sub spiral()
For i = 1 To 16
xmm = xmm - 1
ymm = ymm - 1
Do Until xp = i
xp = xp + 1
Cells(5 + xp, 5) = i
Loop
Do Until yp = i
yp = yp + 1
Cells(5 + xp, 5 + yp) = i + 1
Loop
Do Until xm > xp
xm = xm + 1
Cells(5 + xp + i * xmm, 5 + yp) = i + 2
Loop
Do Until ym > yp
ym = ym + 1
Cells(5 + xp + xmm, 5 + yp + i * ymm) = i + 3
Loop
Next i
End Sub
谢谢!
我想不出你需要这个的任何实际原因,但话虽如此,我经常浪费时间处理奇怪的任务 "just to see if I can."
访问 VBA 个圈子
最近 螺旋 是我在 SQL 玩的一个自我分配的挑战,虽然它起源于 circle in Access VBA from another useless project of mine:
这教会了我很多概念,包括如何在网格上画圆。
画圆圈的过程几乎与在时钟上画指针的过程相同。如果我不绘制时钟指针的整条线,而是只绘制它的尖端(又名半径),一直到 360°,那么我有一个圆圈。
SQL圈
说那个快十倍!
然后有一天我想知道将圆代码转换为 SQL Server 有多难,利用 Stack Exchange Data Explorer ( SEDE)。图表是在网格上绘制的,所以它是相同的概念。
这是几个结果之一(同样,都是无用的):
单击运行查询,然后在计算完成后单击图形 选项卡。 (您还需要使用您的 Stack Exchange ID 登录,或执行验证码。)您可以在用户提示中使用各种常量(在 SQL 下方)。
SQL 螺旋
然后在某个时候我想知道 spirals。
(...但我应该是时候开始生活了?Naaaa,哈哈)
螺旋只是一个修改过的圆,除了半径会随着你绕着圆周前进而减小(或增加)——而且你不会停在 360°——而是继续前进,并以稳定的速度不断改变半径。
- SEDE:Draw a spiral
再次单击运行查询,然后在计算完成后单击图表选项卡。 (您还需要使用您的 Stack Exchange ID 登录,或执行验证码。)您可以在用户提示中使用各种常量(在 SQL 下方)。
在Excel
中螺旋上升我今天不会再在螺旋上浪费时间,但如果我要在 Excel 工作表单元格中绘制一个,我会将工作表上所有单元格的大小调整为一个小方格(也许 width=1,height=10),然后我会从 SQL 示例中借用代码,将其改编为 Excel(这不需要太多工作)。
Access VBA 示例可能更难以适应,因为有很多控件的编程操作正在进行(无法在运行时完成)。
或者,可以在 Excel 中使用控件(即线条)而不是您目前尝试的网格方法来复制 Access 示例。
更多信息:
- 维基百科:Midpoint Circle Algorithm
- rosettacode:Midpoint circle algorithm examples(39 种语言的代码)
- tutsPlus.com : Working with circles/spirals
- 数学溢出:How to spiral coordinates in an outward pattern on 2D grid?
基于此线程 (Looping in a spiral) 的一些答案,我设法提出了这个解决方案
Sub spiral()
x = 0
y = 0
d = 1
m = 1
i = 1
j = 1
Do While i < 6
Do While 2 * x * d < m
Cells(x + 5, y + 5).Value = j
x = x + d
j = j + 1
Loop
Do While 2 * y * d < m
Cells(x + 5, y + 5).Value = j
y = y + d
j = j + 1
Loop
d = -1 * d
m = m + 1
i = i + 1
Loop
End Sub
不确定这是否是您正在寻找的东西,因为您没有指定您想要实现的确切输出。