Class: Triangle

Inherits:
Polygon show all
Defined in:
lib/shapedoc.rb

Instance Attribute Summary collapse

Attributes inherited from Polygon

#sides

Instance Method Summary collapse

Methods inherited from Polygon

#perimeter

Constructor Details

#initialize(s1, s2, s3, arg = Hash.new) ⇒ Triangle

Returns a new instance of Triangle.



53
# File 'lib/shapedoc.rb', line 53

def initialize(s1, s2, s3, arg = Hash.new); @base, @height, @sides = arg[:base], arg[:height], [s1, s2, s3]; end

Instance Attribute Details

#baseObject (readonly)

Returns the value of attribute base.



52
53
54
# File 'lib/shapedoc.rb', line 52

def base
  @base
end

#heightObject (readonly)

Returns the value of attribute height.



52
53
54
# File 'lib/shapedoc.rb', line 52

def height
  @height
end

Instance Method Details

#_sidesObject



51
# File 'lib/shapedoc.rb', line 51

def _sides; 3; end

#areaObject



54
# File 'lib/shapedoc.rb', line 54

def area; (@base*@height)/2; end

#diagramObject



55
56
57
58
# File 'lib/shapedoc.rb', line 55

def diagram
  if self.equilateral?; "\u25b3"
  else; "\u22bf"; end
end

#equilateral?Boolean

Returns:

  • (Boolean)


59
60
61
62
63
64
65
66
# File 'lib/shapedoc.rb', line 59

def equilateral?
  s, eq = @sides[1], true
  for side in @sides
    eq = false unless side == s
    s = side
  end
  return eq
end

#isosceles?Boolean

Returns:

  • (Boolean)


67
68
69
70
71
72
73
74
# File 'lib/shapedoc.rb', line 67

def isosceles?
  unless self.equilateral?
    if (@sides[0] == @sides[1] && @sides[0] != @sides[2]) || (@sides[0] != @sides[1] && @sides[0] == @sides[2]); return true
    else return false
    end
  else; return false
  end
end

#scalene?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/shapedoc.rb', line 75

def scalene?
  true unless self.equilateral? || self.isosceles?
end