class Triangle
Public Class Methods
new(angle = 0, side = 0)
click to toggle source
angle must be hash side must be hash triangle sides must have key a:, b:, c: side a: is hypotenuse
# File lib/classes.rb, line 58 def initialize(angle = 0, side = 0) @angle = angle @side = side end
Public Instance Methods
angle_value_60()
click to toggle source
# File lib/classes.rb, line 71 def angle_value_60 @angle.value?(60) end
angle_value_60_differ_sides()
click to toggle source
# File lib/classes.rb, line 99 def angle_value_60_differ_sides angle_value_60 && differ_sides end
angle_value_60_same_sides()
click to toggle source
# File lib/classes.rb, line 95 def angle_value_60_same_sides angle_value_60 && same_sides end
angle_value_90()
click to toggle source
# File lib/classes.rb, line 67 def angle_value_90 @angle.value?(90) end
angle_value_90_angle_value_60_differ_sides()
click to toggle source
# File lib/classes.rb, line 91 def angle_value_90_angle_value_60_differ_sides angle_value_90 && angle_value_60 && differ_sides end
angle_value_90_differ_sides()
click to toggle source
# File lib/classes.rb, line 87 def angle_value_90_differ_sides angle_value_90 && differ_sides end
angle_value_90_same_sides()
click to toggle source
# File lib/classes.rb, line 83 def angle_value_90_same_sides angle_value_90 && same_sides end
cathetus()
click to toggle source
# File lib/classes.rb, line 137 def cathetus hypotenuse = @side.values.max cathetus = @side.values.min Math.sqrt(hypotenuse**2 - cathetus**2).round(4) end
datatype_error()
click to toggle source
# File lib/classes.rb, line 63 def datatype_error raise 'Variable @angle must be a Hash!!!' unless @angle.is_a?(Hash) end
differ_sides()
click to toggle source
# File lib/classes.rb, line 79 def differ_sides @side[:b] != @side[:c] end
height()
click to toggle source
# File lib/classes.rb, line 147 def height small_kathetus = @side[:a].to_f / 2.to_f Math.sqrt(@side[:a]**2.to_f - small_kathetus**2).round(4) end
hypotenuse()
click to toggle source
# File lib/classes.rb, line 133 def hypotenuse Math.sqrt(@side.values.max**2 + @side.values.min**2).round(4) end
perimeter()
click to toggle source
# File lib/classes.rb, line 143 def perimeter @side.values.inject { |sum, n| sum + n }.to_f.round(4) end
radius_circle_inside_triangle()
click to toggle source
# File lib/classes.rb, line 129 def radius_circle_inside_triangle (square / (perimeter / 2)).round(4) end
same_sides()
click to toggle source
# File lib/classes.rb, line 75 def same_sides @side[:b] == @side[:c] end
square()
click to toggle source
# File lib/classes.rb, line 120 def square case type_definer when 'Triangle_90_differ_cathetus' (@side[:b] * @side[:c] / 2).round(4) when 'Right triangle' (0.5 * @side[:a] * height).round(4) end end
type_definer()
click to toggle source
# File lib/classes.rb, line 103 def type_definer datatype_error if angle_value_90_same_sides 'angle_90_same_cathetus' elsif angle_value_90_differ_sides 'Triangle_90_differ_cathetus' elsif angle_value_90_angle_value_60_differ_sides 'Triangle_90_differ_cathetus' elsif angle_value_60_same_sides 'Right triangle' elsif angle_value_60_differ_sides 'Various side triangle 60' else 'Various side triangle' end end