module ClockAngleCalculator
Constants
- VERSION
Public Class Methods
calculate_angle(hour, minute)
click to toggle source
given an hour and minute, model the time on an analog clock return the angle between the hour and minute hands on the clock
# File lib/clock_angle_calculator.rb, line 19 def self.calculate_angle(hour, minute) return calculate_angle_helper(hour, minute) end
calculate_angle_datetime(datetime)
click to toggle source
given a datetime, model the time on an analog clock return the angle between the hour and minute hands on the clock
# File lib/clock_angle_calculator.rb, line 7 def self.calculate_angle_datetime(datetime) if datetime.is_a?(DateTime) || datetime.is_a?(Time) || datetime.is_a?(Date) hour = (datetime.strftime("%H")).to_f % 12 minute = datetime.strftime("%M").to_f return calculate_angle_helper(hour, minute) else return nil end end
Private Class Methods
calculate_angle_helper(hour, minute)
click to toggle source
private helper method used to determine the angle
# File lib/clock_angle_calculator.rb, line 24 def self.calculate_angle_helper(hour, minute) if hour < 0 || hour > 12 || minute < 0 || minute > 59 return nil end hourly_degree = (360.0 / 12.0) minute_degree = (360.0 / 60.0) minute_angle = (minute_degree * (minute % 60)).to_f hour_angle = ((hourly_degree * (hour % 12)) + ((minute / 60.0) * hourly_degree)).to_f angle = (hour_angle - minute_angle).abs if angle > 180 angle = 360 - angle end return angle end