正多角形関数
ここに載せてあるソースコードは、参考のために載せてあります
サンプルコードは、一番下にLZHとしてあります
Option Explicit '面白い関数を作ってみました 'もっと拡張してほしい場合は、メールを下さい。ken3@24h.co.jp '-/-/-/-/-/-TruePlgの引数の説明-/-/-/-/-/-/- ' ' object Form1やPicture1などのLineメソッドが使えるコントロール ' x 正多角形の中心の水平位置 ' y 正多角形の中心の垂直位置 ' n 正多角形の角数 ' l 正多角形の大きさ ' r 正多角形の傾き度 ' '-/-/-/-/-/--/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- '正多角形を作成する関数 Function TruePlg(ByVal object As Object, ByVal x, ByVal y, ByVal n, ByVal l, ByVal r) As Long Dim j As Double, i As Double, pai As Double Dim px As Single, py As Single On Error GoTo ErrGoto pai = 3.14 / 180 i = 360 / n For j = 0 To 360 Step i px = x + Cos((r + j) * pai) * l py = y + Sin((r + j) * pai) * l If j = 0 Then object.PSet (px, py) Else object.Line -(px, py) End If Next Exit Function ErrGoto: TruePlg = Err.Number End Function Private Sub Timer1_Timer() Static r As Integer '回転角度の記憶 Picture1.Cls TruePlg Picture1, 100, 100, 4, 50, r '4角形の時計回り TruePlg Picture1, 150, 150, 3, 50, -r '3角形の反時計回り TruePlg Picture1, 150, 150, 3, 40, r '3角形の時計回り TruePlg Picture1, 50, 50, 5, 50, -r '5角形の反時計回り TruePlg Picture1, 150, 50, 11, 50, -r '11角形の反時計回り TruePlg Picture1, 200, 100, 7, 50, r '7角形の時計回り ' 角度の変数がオーバーフローしないように調節 r = Abs(r) '負の数を正の数にする If r >= 360 Then r = r - 360 '360度以上なら360を引く Else r = r + 6 '角度の加算 End If End Sub |