shapeslib 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/shapelib.rb +133 -0
  2. metadata +45 -0
@@ -0,0 +1,133 @@
1
+ class Square
2
+
3
+ attr_reader :area, :perimiter, :diagonal
4
+
5
+ def initialize(side)
6
+ @side = side
7
+ @area = side ** 2
8
+ @perimiter = side * 4
9
+ @diagonal = Math.sqrt(side ** 2 + side ** 2)
10
+ end
11
+
12
+ def side=(val)
13
+ @side = val
14
+ @area = @side ** 2
15
+ @perimiter = @side * 4
16
+ end
17
+
18
+ def to_s
19
+ "Square: #{@side}"
20
+ end
21
+
22
+ end
23
+
24
+ class Rectangle
25
+
26
+ attr_reader :area, :perimiter, :diagonal
27
+
28
+ def initialize(side_one, side_two)
29
+ @side_one, @side_two = side_one, side_two
30
+ @area = side_one * side_two
31
+ @perimiter = (side_one * 2) + (side_two * 2)
32
+ @diagonal = Math.sqrt(side_one ** 2 + side_two ** 2)
33
+ end
34
+
35
+ private
36
+ def recalc
37
+ @area = @side_one * @side_two
38
+ @perimiter = (@side_one * 2) + (@side_two * 2)
39
+ @diagonal = Math.sqrt(@side_one ** 2 + @side_two ** 2)
40
+ end
41
+
42
+ public
43
+ def side_one=(val)
44
+ @side_one = val
45
+ recalc
46
+ end
47
+
48
+ def side_two=(val)
49
+ @side_two = val
50
+ recalc
51
+ end
52
+
53
+ def to_s
54
+ "Rectangle: #{@side_one}-#{@side_two}"
55
+ end
56
+
57
+ end
58
+
59
+
60
+ class Triangle
61
+
62
+ attr_reader :side_one, :side_two, :side_three, :perimiter, :semiperimiter, :area
63
+
64
+ def initialize(side_one, side_two, side_three)
65
+ @side_one, @side_two, @side_three = side_one, side_two, side_three
66
+ @perimiter = side_one + side_two + side_three
67
+ @semiperimiter = @perimiter/2.0
68
+ @area = Math.sqrt(((side_one + side_two + side_three) * ((side_one * -1) + side_two + side_three) * (side_one - side_two + side_three) * (side_one + side_two - side_three)) / 16.0)
69
+ end
70
+
71
+ private
72
+ def recalc
73
+ @perimiter = @side_one + @side_two + @side_three
74
+ @semiperimiter = @perimiter/2.0
75
+ @area = Math.sqrt(((@side_one + @side_two + @side_three) * ((@side_one * -1) + @side_two + @side_three) * (@side_one - @side_two + @side_three) * (@side_one + @side_two - @side_three)) / 16.0)
76
+ end
77
+
78
+ public
79
+ def side_one=(val)
80
+ @side_one = val
81
+ recalc
82
+ end
83
+
84
+ def side_two=(val)
85
+ @side_two = val
86
+ recalc
87
+ end
88
+
89
+ def side_three=(val)
90
+ @side_three = val
91
+ recalc
92
+ end
93
+
94
+ def to_s
95
+ "Triangle: #{@side_one}-#{@side_two}-#{@side_three}"
96
+ end
97
+
98
+ end
99
+
100
+
101
+ class Circle
102
+
103
+ attr_reader :radius, :diameter, :circumference, :area
104
+
105
+ def initialize(radius)
106
+ @PI = Math::PI
107
+ @radius = radius
108
+ @diameter = radius * 2
109
+ @circumference = @diameter * @PI
110
+ @area = @PI * radius ** 2
111
+ @anti_area = @diameter ** 2 - @area
112
+ end
113
+
114
+ private
115
+ def recalc
116
+ @diameter = @radius * 2
117
+ @circumference = @diameter * @PI
118
+ @area = @PI * @radius ** 2
119
+ @anti_area = @diameter ** 2 - @area
120
+ end
121
+
122
+ public
123
+ def radius=(val)
124
+ @radius = val
125
+ recalc
126
+ end
127
+
128
+ def to_s
129
+ "Circle: #{@radius}"
130
+ end
131
+
132
+ end
133
+
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shapeslib
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Solomon Wise
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-20 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A library for manipulating and calculating shapes.
15
+ email: slmnwise@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/shapelib.rb
21
+ homepage: http://gist.github.com/2759860
22
+ licenses: []
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 1.8.24
42
+ signing_key:
43
+ specification_version: 3
44
+ summary: Shape Library
45
+ test_files: []