Class: Triangle
- Inherits:
-
Object
- Object
- Triangle
- Defined in:
- lib/classes.rb
Instance Method Summary collapse
- #angle_value_60 ⇒ Object
- #angle_value_60_differ_sides ⇒ Object
- #angle_value_60_same_sides ⇒ Object
- #angle_value_90 ⇒ Object
- #angle_value_90_angle_value_60_differ_sides ⇒ Object
- #angle_value_90_differ_sides ⇒ Object
- #angle_value_90_same_sides ⇒ Object
- #cathetus ⇒ Object
- #datatype_error ⇒ Object
- #differ_sides ⇒ Object
- #height ⇒ Object
- #hypotenuse ⇒ Object
-
#initialize(angle = 0, side = 0) ⇒ Triangle
constructor
angle must be hash side must be hash triangle sides must have key a:, b:, c: side a: is hypotenuse.
- #perimeter ⇒ Object
- #radius_circle_inside_triangle ⇒ Object
- #same_sides ⇒ Object
- #square ⇒ Object
- #type_definer ⇒ Object
Constructor Details
#initialize(angle = 0, side = 0) ⇒ Triangle
angle must be hash side must be hash triangle sides must have key a:, b:, c: side a: is hypotenuse
58 59 60 61 |
# File 'lib/classes.rb', line 58 def initialize(angle = 0, side = 0) @angle = angle @side = side end |
Instance Method Details
#angle_value_60 ⇒ Object
71 72 73 |
# File 'lib/classes.rb', line 71 def angle_value_60 @angle.value?(60) end |
#angle_value_60_differ_sides ⇒ Object
99 100 101 |
# File 'lib/classes.rb', line 99 def angle_value_60_differ_sides angle_value_60 && differ_sides end |
#angle_value_60_same_sides ⇒ Object
95 96 97 |
# File 'lib/classes.rb', line 95 def angle_value_60_same_sides angle_value_60 && same_sides end |
#angle_value_90 ⇒ Object
67 68 69 |
# File 'lib/classes.rb', line 67 def angle_value_90 @angle.value?(90) end |
#angle_value_90_angle_value_60_differ_sides ⇒ Object
91 92 93 |
# 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 ⇒ Object
87 88 89 |
# File 'lib/classes.rb', line 87 def angle_value_90_differ_sides angle_value_90 && differ_sides end |
#angle_value_90_same_sides ⇒ Object
83 84 85 |
# File 'lib/classes.rb', line 83 def angle_value_90_same_sides angle_value_90 && same_sides end |
#cathetus ⇒ Object
137 138 139 140 141 |
# 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 ⇒ Object
63 64 65 |
# File 'lib/classes.rb', line 63 def datatype_error raise 'Variable @angle must be a Hash!!!' unless @angle.is_a?(Hash) end |
#differ_sides ⇒ Object
79 80 81 |
# File 'lib/classes.rb', line 79 def differ_sides @side[:b] != @side[:c] end |
#height ⇒ Object
147 148 149 150 |
# 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 ⇒ Object
133 134 135 |
# File 'lib/classes.rb', line 133 def hypotenuse Math.sqrt(@side.values.max**2 + @side.values.min**2).round(4) end |
#perimeter ⇒ Object
143 144 145 |
# File 'lib/classes.rb', line 143 def perimeter @side.values.inject { |sum, n| sum + n }.to_f.round(4) end |
#radius_circle_inside_triangle ⇒ Object
129 130 131 |
# File 'lib/classes.rb', line 129 def radius_circle_inside_triangle (square / (perimeter / 2)).round(4) end |
#same_sides ⇒ Object
75 76 77 |
# File 'lib/classes.rb', line 75 def same_sides @side[:b] == @side[:c] end |
#square ⇒ Object
120 121 122 123 124 125 126 127 |
# 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 ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# 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 |