Class: Geometry::Triangle
- Inherits:
-
Object
- Object
- Geometry::Triangle
- Defined in:
- lib/gemometry.rb
Instance Attribute Summary collapse
-
#sideA ⇒ Object
Returns the value of attribute sideA.
-
#sideB ⇒ Object
Returns the value of attribute sideB.
-
#sideC ⇒ Object
Returns the value of attribute sideC.
Instance Method Summary collapse
- #angles ⇒ Object
- #area ⇒ Object
-
#initialize(side1, side2, side3) ⇒ Triangle
constructor
A new instance of Triangle.
- #perimeter ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(side1, side2, side3) ⇒ Triangle
Returns a new instance of Triangle.
5 6 7 8 9 |
# File 'lib/gemometry.rb', line 5 def initialize(side1, side2, side3) @sideA = side1.to_f @sideB = side2.to_f @sideC = side3.to_f end |
Instance Attribute Details
#sideA ⇒ Object
Returns the value of attribute sideA.
3 4 5 |
# File 'lib/gemometry.rb', line 3 def sideA @sideA end |
#sideB ⇒ Object
Returns the value of attribute sideB.
3 4 5 |
# File 'lib/gemometry.rb', line 3 def sideB @sideB end |
#sideC ⇒ Object
Returns the value of attribute sideC.
3 4 5 |
# File 'lib/gemometry.rb', line 3 def sideC @sideC end |
Instance Method Details
#angles ⇒ Object
20 21 22 23 24 |
# File 'lib/gemometry.rb', line 20 def angles [ law_of_cosines(sideA, sideB, sideC), law_of_cosines(sideC, sideA, sideB), law_of_cosines(sideB, sideC, sideA) ] end |
#area ⇒ Object
15 16 17 18 |
# File 'lib/gemometry.rb', line 15 def area p = self.perimeter / 2 Math.sqrt(p * (p - @sideA) * (p - @sideB) * (p - @sideC)) end |
#perimeter ⇒ Object
11 12 13 |
# File 'lib/gemometry.rb', line 11 def perimeter @sideA + @sideB + @sideC end |
#valid? ⇒ Boolean
26 27 28 |
# File 'lib/gemometry.rb', line 26 def valid? (sideA < sideB + sideC) && (sideB < sideA + sideC) && (sideC < sideA + sideB) end |