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