class Silicium::Geometry::Triangle

Public Class Methods

new(p1, p2, p3) click to toggle source
# File lib/geometry/figure.rb, line 10
def initialize(p1, p2, p3)
  s_p1p2 = distance_point_to_point2d(p1, p2)
  s_p1p3 = distance_point_to_point2d(p1, p3)
  s_p2p3 = distance_point_to_point2d(p2, p3)
  if s_p1p2 + s_p2p3 <= s_p1p3 || s_p1p2 + s_p1p3 <= s_p2p3 || s_p2p3 + s_p1p3 <= s_p1p2
    raise ArgumentError, 'Triangle does not exist'
  else
    @side_p1p2 = s_p1p2
    @side_p1p3 = s_p1p3
    @side_p2p3 = s_p2p3
  end
end

Public Instance Methods

area() click to toggle source
# File lib/geometry/figure.rb, line 27
def area
  half_perimeter = perimeter / 2.0
  Math.sqrt(half_perimeter * (half_perimeter - @side_p1p2) * (half_perimeter - @side_p2p3) * (half_perimeter - @side_p1p3))
end
perimeter() click to toggle source
# File lib/geometry/figure.rb, line 23
def perimeter
  @side_p1p2 + @side_p1p3 + @side_p2p3
end