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