geometry-in-ruby 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTdjMTNiMjQ5N2ZkMmQwZmFlNTdjYzEwNjExZjE0ZWM1ODdmOGY2NQ==
4
+ ZDBiMTc5MWYyZTU4Nzk3YjIwYjE4N2I5ODQ1Njc0Njk3MTU2YjIxYg==
5
5
  data.tar.gz: !binary |-
6
- YWE2MjRmMTllNTk3NmJmMzY1MzczZTMxYmQ1NmU1OWRhN2RkNmI0Ng==
6
+ ZTFkMjM4M2I0ZGI1MDRiY2EwOWY0NGI4ZWIxMzg1OGQ5M2RkZTM2OA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODYxZTg4YTVmNjc0MGE2MjdiZDk1MWFkZTJhOWI2MWVhNDAxZGMxNjM3Zjk1
10
- ZDgxOGU1YjlkYzBkZTYwZjY4MTU5ZjA5Y2MwMWYwMGU5OGQxZjM5MjBiZjA1
11
- MDQ3NWQ3YjNiMTgyMWEwNjFjNWI4MzdmNDBiYWQ5NmIxNDA1Y2Y=
9
+ YTJlMjJjN2JhYzM3YmViNWRhOGRmNWJmYjI2YjIzOTRkZmIyNDUxNjIyZTZh
10
+ ZGJjMGRlNzk0MTMzZjRlZTk2ZDMxYjY2OTQ1MmFjNWE0OTExZjlmNjYxYTZm
11
+ MDcyNmJmNzU0ZTI1OWVjZDZiNDk1MzBmZDkzMDJjYzBmMWZkZGQ=
12
12
  data.tar.gz: !binary |-
13
- MmJmYzg5MzZhNWZjZDIxYTZkNTM2ZWVjMzdjY2NhYWJkNWViYmQzNzY1OWZi
14
- MGUzYTMzNGFkODUyZjY3NDM5MWFkYzMwN2JjZGYzYWE2NmQ2M2E2YjgzYzFj
15
- MWM0ZGE2YTFkOWQ4NmQzZTJkZGMwMDhiN2VjNDliYTEyNjdkYzg=
13
+ Y2ZhZTYzM2FhMDlhYmFhOWEzMDNhNjg2YWY2N2I4YWMyYzQ5ZWE2NmQ2ZTE0
14
+ OTFlM2RiZmM4YWY4MDZiMTQ5MGQ0ZjBlYTdjMmQxOWIyYWE3OTIzZjE1M2Ni
15
+ NWNjNmU0ZDE4YThmZDkyYzhjNjljOGRhMTc4MmJkNDg0ZDhkZTk=
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "geometry-in-ruby"
6
- s.version = '0.0.4'
6
+ s.version = '0.0.5'
7
7
  s.authors = ["Brandon Fosdick", "Meseker Yohannes"]
8
8
  s.email = ["meseker.yohannes@gmail.com"]
9
9
  s.homepage = "http://github.com/meseker/geometry"
@@ -13,87 +13,87 @@ An {Arc} with its center at [1,1] and a radius of 2 that starts at the X-axis an
13
13
  arc = Geometry::Arc.new center:[1,1], radius:2, start:0, end:90
14
14
  =end
15
15
 
16
- class Arc
17
- include ClusterFactory
16
+ class Arc
17
+ include ClusterFactory
18
+
19
+ attr_reader :center
20
+ attr_reader :radius
21
+ attr_reader :start_angle, :end_angle
22
+ attr_writer :options
23
+ def options
24
+ @options = {} if !@options
25
+ @options
26
+ end
18
27
 
19
- attr_reader :center
20
- attr_reader :radius
21
- attr_reader :start_angle, :end_angle
22
- attr_writer :options
23
- def options
24
- @options = {} if !@options
25
- @option
28
+ # @overload new(center, start, end)
29
+ # Create a new {Arc} given center, start and end {Point}s
30
+ # @option options [Point] :center (PointZero) The {Point} at the center
31
+ # @option options [Point] :start The {Arc} starts at the start {Point}
32
+ # @option options [Point] :end The {Point} where it all ends
33
+ # @return [Arc]
34
+ # @overload new(center, radius, start, end)
35
+ # Create a new {Arc} given a center {Point}, a radius and start and end angles
36
+ # @option options [Point] :center (PointZero) The {Point} at the center of it all
37
+ # @option options [Numeric] :radius Radius
38
+ # @option options [Numeric] :start Starting angle
39
+ # @option options [Numeric] :end Ending angle
40
+ # @return [ThreePointArc]
41
+ def self.new(options={})
42
+ center = options.delete(:center) || PointZero.new
43
+
44
+ if options.has_key?(:radius)
45
+ original_new(center, options[:radius], options[:start], options[:end])
46
+ else
47
+ ThreePointArc.new(center, options[:start], options[:end])
48
+ end
49
+ end
50
+
51
+ # Construct a new {Arc}
52
+ # @overload initialize(center, radius, start_angle, end_angle)
53
+ # @param [Point] center The {Point} at the center of it all
54
+ # @param [Numeric] radius Radius
55
+ # @param [Numeric] start_angle Starting angle
56
+ # @param [Numeric] end_angle Ending angle
57
+ def initialize(center, radius, start_angle, end_angle)
58
+ @center = Point[center]
59
+ @radius = radius
60
+ @start_angle = start_angle
61
+ @end_angle = end_angle
62
+ end
63
+
64
+ # @return [Point] The starting point of the {Arc}
65
+ def first
66
+ @center + @radius * Vector[Math.cos(@start_angle), Math.sin(@start_angle)]
67
+ end
68
+
69
+ # @return [Point] The end point of the {Arc}
70
+ def last
71
+ @center + @radius * Vector[Math.cos(@end_angle), Math.sin(@end_angle)]
72
+ end
26
73
  end
27
74
 
28
- # @overload new(center, start, end)
29
- # Create a new {Arc} given center, start and end {Point}s
30
- # @option options [Point] :center (PointZero) The {Point} at the center
31
- # @option options [Point] :start The {Arc} starts at the start {Point}
32
- # @option options [Point] :end The {Point} where it all ends
33
- # @return [Arc]
34
- # @overload new(center, radius, start, end)
35
- # Create a new {Arc} given a center {Point}, a radius and start and end angles
36
- # @option options [Point] :center (PointZero) The {Point} at the center of it all
37
- # @option options [Numeric] :radius Radius
38
- # @option options [Numeric] :start Starting angle
39
- # @option options [Numeric] :end Ending angle
40
- # @return [ThreePointArc]
41
- def self.new(options={})
42
- center = options.delete(:center) || PointZero.new
75
+ class ThreePointArc < Arc
76
+ attr_reader :center
77
+ attr_reader :start, :end
43
78
 
44
- if options.has_key?(:radius)
45
- original_new(center, options[:radius], options[:start], options[:end])
46
- else
47
- ThreePointArc.new(center, options[:start], options[:end])
48
- end
49
- end
79
+ # Contruct a new {Arc} given center, start and end {Point}s
80
+ # Always assumes that the {Arc} is counter-clockwise. Reverse the order
81
+ # of the start and end points to get an {Arc} that goes around the other way.
82
+ # @overload initialize(center_point, start_point, end_point)
83
+ # @param [Point] center_point The {Point} at the center
84
+ # @param [Point] start_point The {Arc} starts at the start {Point}
85
+ # @param [Point] end_point The {Point} where it all ends
86
+ def initialize(center_point, start_point, end_point)
87
+ @center, @start, @end = [center_point, start_point, end_point].map {|p| Point[p]}
88
+ raise ArgumentError unless [@center, @start, @end].all? {|p| p.is_a?(Point)}
89
+ end
50
90
 
51
- # Construct a new {Arc}
52
- # @overload initialize(center, radius, start_angle, end_angle)
53
- # @param [Point] center The {Point} at the center of it all
54
- # @param [Numeric] radius Radius
55
- # @param [Numeric] start_angle Starting angle
56
- # @param [Numeric] end_angle Ending angle
57
- def initialize(center, radius, start_angle, end_angle)
58
- @center = Point[center]
59
- @radius = radius
60
- @start_angle = start_angle
61
- @end_angle = end_angle
62
- end
91
+ # The starting point of the {Arc}
92
+ # @return [Point]
93
+ alias :first :start
63
94
 
64
- # @return [Point] The starting point of the {Arc}
65
- def first
66
- @center + @radius * Vector[Math.cos(@start_angle), Math.sin(@start_angle)]
95
+ # The end point of the {Arc}
96
+ # @return [Point]
97
+ alias :last :end
67
98
  end
68
-
69
- # @return [Point] The end point of the {Arc}
70
- def last
71
- @center + @radius * Vector[Math.cos(@end_angle), Math.sin(@end_angle)]
72
- end
73
- end
74
-
75
- class ThreePointArc < Arc
76
- attr_reader :center
77
- attr_reader :start, :end
78
-
79
- # Contruct a new {Arc} given center, start and end {Point}s
80
- # Always assumes that the {Arc} is counter-clockwise. Reverse the order
81
- # of the start and end points to get an {Arc} that goes around the other way.
82
- # @overload initialize(center_point, start_point, end_point)
83
- # @param [Point] center_point The {Point} at the center
84
- # @param [Point] start_point The {Arc} starts at the start {Point}
85
- # @param [Point] end_point The {Point} where it all ends
86
- def initialize(center_point, start_point, end_point)
87
- @center, @start, @end = [center_point, start_point, end_point].map {|p| Point[p]}
88
- raise ArgumentError unless [@center, @start, @end].all? {|p| p.is_a?(Point)}
89
- end
90
-
91
- # The starting point of the {Arc}
92
- # @return [Point]
93
- alias :first :start
94
-
95
- # The end point of the {Arc}
96
- # @return [Point]
97
- alias :last :end
98
- end
99
99
  end
@@ -13,7 +13,7 @@ Circles come in all shapes and sizes, but they're usually round.
13
13
  circle = Geometry::Circle.new diameter:6
14
14
  =end
15
15
 
16
- class Circle
16
+ class Circle
17
17
  include ClusterFactory
18
18
 
19
19
  # @return [Point] The {Circle}'s center point
@@ -21,7 +21,11 @@ Circles come in all shapes and sizes, but they're usually round.
21
21
 
22
22
  # @return [Number] The {Circle}'s radius
23
23
  attr_reader :radius
24
-
24
+ attr_writer :options
25
+ def options
26
+ @options = {} if !@options
27
+ @options
28
+ end
25
29
  # @overload new(center, radius)
26
30
  # Construct a {Circle} using a centerpoint and radius
27
31
  # @param [Point] center The center point of the {Circle}
@@ -12,7 +12,7 @@ An edge. It's a line segment between 2 points. Generally part of a {Polygon}.
12
12
 
13
13
  =end
14
14
 
15
- class Edge
15
+ class Edge
16
16
  attr_reader :first, :last
17
17
  attr_writer :options
18
18
  def options
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geometry-in-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Fosdick