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.



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

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.



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

def base
  @base
end

#heightObject (readonly)

Returns the value of attribute height.



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

def height
  @height
end

Instance Method Details

#_sidesObject



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

def _sides; 3; end

#areaObject



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

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

#diagramObject



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

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

#equilateral?Boolean

Returns:

  • (Boolean)


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

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)


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

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)


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

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