正多角形関数

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下に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




<戻る

Sample16.lzh


http://www.vector.co.jp/authors/VA015521/