Option Explicit
Option Base 0
'
Public Sub ベルヌーイの螺旋描画マクロ()
Const BERNPAIV = 3.141592653589 'π
Const BERNRADI = BERNPAIV / 180 'π/180
Const BERNCXPT = 160 '描画開始位置
Const BERNCYPT = 180
'
Const BERNEANG = 360 * 5 '終点角度(°)
Const BERNAVAL = 5 '係数A(サイズ)
Const BERNBVAL = 0.1 '係数B
'
Const BERNLNCL = &HD30094 '線の色(紫)
Const BERNLNWT = 1.5 '線の太さ
'---------------------------------------------------------------------------
Dim Ip As Integer
Dim sngPlp(BERNEANG, 1) As Single
Dim sngSit As Single, sngRad As Single
'
'*座標を算出、ポリラインの配列に格納
For Ip = 0 To BERNEANG
sngSit = BERNRADI * Ip
sngRad = BERNAVAL * Exp(BERNBVAL * sngSit)
sngPlp(Ip, 0) = sngRad * Cos(sngSit) + BERNCXPT
sngPlp(Ip, 1) = sngRad * Sin(sngSit) + BERNCYPT
Next Ip
'
'*ポリライン描画
With ActiveDocument.Shapes.AddPolyline(sngPlp)
.Fill.Visible = msoFalse
.Line.Visible = msoCTrue
.Line.ForeColor = BERNLNCL '←線色
.Line.Weight = BERNLNWT '←線の太さ
.Line.DashStyle = msoLineSolid '←線種
End With
End Sub