Hi!
Since I've been messing around with trigonometry this week, I decided to give you guys an analog clock example. Enjoy!
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
If you need anything to be explained in detail, just let me know. I'll be glad to help.
PS: If you'd rather copy-paste the code, you'll need the Sound lib and an mp3 file named "tick.mp3" in your assets folder.
			
			Since I've been messing around with trigonometry this week, I decided to give you guys an analog clock example. Enjoy!
			
				B4X:
			
		
		
		#Region  Project Attributes
    #ApplicationLabel: Analog Clock
    #VersionCode: 1
    #VersionName: 1
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region
#Region  Activity Attributes
    #FullScreen: True
    #IncludeTitle: False
#End Region
Sub Process_Globals
    Dim TicTac As Timer 
End Sub
Sub Globals
    Dim Wall As Canvas
 
    Dim maxresX = GetDeviceLayoutValues.Width  As Float
    Dim maxresY = GetDeviceLayoutValues.Height As Float
 
    Dim Clock_Radius As Float
    Dim Clock_X, Clock_Y As Float
 
    Dim Hour_Handle_Size, Mins_Handle_Size, Secs_Handle_Size As Float
    Dim Sound   As SoundPool
    Dim ticksnd As Int
 
End Sub
Sub Activity_Create(FirstTime As Boolean)
 
    Activity.LoadLayout("Layout1")
    'Clock Position on the wall
        Clock_X = maxresX / 2
        Clock_Y = maxresY / 2
    'Resize the clock accordingly to the screen orientation
        If maxresX > maxresY Then
            Clock_Radius = 30%y
        Else
            Clock_Radius = 30%x
        End If
 
    'Set the handle size accordingly to the clock size
        Hour_Handle_Size = Clock_Radius * 0.65 '65% of the clock radius
        Mins_Handle_Size = Clock_Radius * 0.80 '80% of the clock radius
        Secs_Handle_Size = Clock_Radius * 0.80 '80% of the clock radius
 
    'Initialize the Sound
        Sound.Initialize(2)
        ticksnd = Sound.Load(File.DirAssets,"tick.mp3")
 
    'Initialize the Wall 
        Wall.Initialize(Activity)     
    'Initialize the Clock
        TicTac.Initialize("TicTac", 1000) 
        TicTac.Enabled = True
 
End Sub
Sub TicTac_Tick 
    'Redraw everything
        Activity.Invalidate
 
    'Get the current time
        Dim Hour = DateTime.GetHour(DateTime.Now)   As Int
        Dim Mins = DateTime.GetMinute(DateTime.Now) As Int
        Dim Secs = DateTime.GetSecond(DateTime.Now) As Int
 
    'Brace yourselves. Math is coming!
        Dim Hour_X, Hour_Y, Mins_X, Mins_Y, Secs_X, Secs_Y As Float 
        Dim Hour_Angle, Mins_Angle, Secs_Angle             As Float
     
    '270 degrees is the position for midnight
        Hour_Angle = 270 + (Hour * 360 / 12)
        Mins_Angle = 270 + (Mins * 360 / 60)
        Secs_Angle = 270 + (Secs * 360 / 60)
 
    'Keep in mind that we're using degrees instead of radians
        Hour_X = (CosD(Hour_Angle) * Hour_Handle_Size) + Clock_X
        Hour_Y = (SinD(Hour_Angle) * Hour_Handle_Size) + Clock_Y
     
        Mins_X = (CosD(Mins_Angle) * Mins_Handle_Size) + Clock_X
        Mins_Y = (SinD(Mins_Angle) * Mins_Handle_Size) + Clock_Y
        Secs_X = (CosD(Secs_Angle) * Secs_Handle_Size) + Clock_X
        Secs_Y = (SinD(Secs_Angle) * Secs_Handle_Size) + Clock_Y
     
    'Draw the clock
        Draw_Clock
 
    'Draw the handles on the clock
        Wall.DrawLine(Clock_X, Clock_Y, Hour_X, Hour_Y, Colors.Blue,  Clock_Radius * 0.03)
        Wall.DrawLine(Clock_X, Clock_Y, Mins_X, Mins_Y, Colors.Green, Clock_Radius * 0.03)
        Wall.DrawLine(Clock_X, Clock_Y, Secs_X, Secs_Y, Colors.Red,   Clock_Radius * 0.01)
        Sound.Play(ticksnd, 1, 1, 1 , 0, 0)
End Sub
Sub Draw_Clock 
 
    'Draw the clock itself     
        Wall.DrawCircle(Clock_X + 1%x, Clock_Y + 1%y, Clock_Radius, Colors.Gray, True, 0)     
        Wall.DrawCircle(Clock_X, Clock_Y, Clock_Radius, Colors.White, True, 0)     
        Wall.DrawCircle(Clock_X, Clock_Y, Clock_Radius * 0.05, Colors.Black, True, 0)
 
    'Draw the 12 dots representing the hours
        Dim midnight = 270 As Int
        For angle = midnight To (midnight + 360) Step (360 / 12)
            Dim x = (CosD(angle) * Clock_Radius * 0.80) + Clock_X As Float
            Dim y = (SinD(angle) * Clock_Radius * 0.80) + Clock_Y As Float
            Wall.DrawCircle(x, y, Clock_Radius * 0.05, Colors.Black, True, 0)
        Next 
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End SubIf you need anything to be explained in detail, just let me know. I'll be glad to help.
PS: If you'd rather copy-paste the code, you'll need the Sound lib and an mp3 file named "tick.mp3" in your assets folder.
 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		