class Geometry::Triangle
Attributes
sideA[RW]
sideB[RW]
sideC[RW]
Public Class Methods
new(side1, side2, side3)
click to toggle source
# File lib/gemometry.rb, line 5 def initialize(side1, side2, side3) @sideA = side1.to_f @sideB = side2.to_f @sideC = side3.to_f end
Public Instance Methods
angles()
click to toggle source
# 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()
click to toggle source
# File lib/gemometry.rb, line 15 def area p = self.perimeter / 2 Math.sqrt(p * (p - @sideA) * (p - @sideB) * (p - @sideC)) end
perimeter()
click to toggle source
# File lib/gemometry.rb, line 11 def perimeter @sideA + @sideB + @sideC end
valid?()
click to toggle source
# File lib/gemometry.rb, line 26 def valid? (sideA < sideB + sideC) && (sideB < sideA + sideC) && (sideC < sideA + sideB) end
Private Instance Methods
law_of_cosines(a, b, c)
click to toggle source
# File lib/gemometry.rb, line 32 def law_of_cosines(a, b, c) Math.acos((a**2 + b**2 - c**2) / (2*a*b)) * (180 / Math::PI) # cos = ((a**2 + b**2 - c**2) / (2*a*b)) # (Math.acos(cos) / (Math::PI / 180)).round(2) end