segunda-feira, 9 de fevereiro de 2009

Movimentos circulares em Visual Basic (o uso do Pi)

Neste artigo apresentarei alguns exemplos de códigos usando o Pi para
calculo da posição de um ponto numa circunferência.

Relógio

Com três linhas no formulário(Line1 , Line2, line3 ), um Objeto Timer(Timer1):


'Janela do projeto , as linhas são posicionada durante a leitura da janela

Dim CentroX As Integer
Dim CentroY As Integer
Dim RaioHora As Integer
Dim RaioMinuto As Integer
Dim RaioSec As Integer
Dim Pi As Long
'_______________________________________________________________


Private Sub Form_Load()
Pi = 3.14159265358979
Dimenção
End Sub
'_______________________________________________________________

Sub Dimenção()
RaioSec = Form1.Height * 0.5
'Define tamanho do poteiro _
de segundos para 50% da altura da janela

RaioMinuto = Form1.Height * 0.4
RaioHora = Form1.Height * 0.3
CentroY = Form1.Height / 2
CentroX = Form1.Width / 2
Line1.X1 = CentroX: Line1.Y1 = CentroY
Line2.X1 = CentroX: Line2.Y1 = CentroY
Line3.X1 = CentroX: Line3.Y1 = CentroY

End Sub
'_______________________________________________________________


Private Sub Form_Resize() 'Evento que ocorre ao redimensionar a janela
Dimenção
End Sub
'_______________________________________________________________

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then KeyAscii = 0: Text1 = Cos(Pi)
End Sub
'_______________________________________________________________


Private Sub Timer1_Timer()
Form1.Caption = Time
s = Second(Time)
'extrai os segundos da hora atual
m = Minute(Time)
'minutos
h = Hour(Time)
'Horas
If s > 14 Then s = s - 15 Else s = s + 45 ' atrazo de 1\4
If m > 14 Then m = m - 15 Else m = m + 45 ' atrazo de 1\4
If h > 2 Then h = h - 3 Else h = h + 9

Line3.X2 = Cos((Pi / 30) * s) * RaioSec + CentroX
Line3.Y2 = Sin((Pi / 30) * s) * RaioSec + CentroY
Line2.X2 = Cos((Pi / 30) * m) * RaioMinuto + CentroX
Line2.Y2 = Sin((Pi / 30) * m) * RaioMinuto + CentroY
Line1.X2 = Cos((Pi / 6) * h) * RaioHora + CentroX
Line1.Y2 = Sin((Pi / 6) * h) * RaioHora + CentroY

End Sub

' O executável funcionando

Nenhum comentário:

Postar um comentário