aurora-geometry 0.0.2
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.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/Gemfile +7 -0
- data/LICENSE +21 -0
- data/README.markdown +105 -0
- data/Rakefile +24 -0
- data/aurora-geometry.gemspec +23 -0
- data/lib/geometry.rb +22 -0
- data/lib/geometry/arc.rb +94 -0
- data/lib/geometry/circle.rb +122 -0
- data/lib/geometry/cluster_factory.rb +15 -0
- data/lib/geometry/edge.rb +140 -0
- data/lib/geometry/line.rb +154 -0
- data/lib/geometry/obround.rb +238 -0
- data/lib/geometry/path.rb +67 -0
- data/lib/geometry/point.rb +163 -0
- data/lib/geometry/point_zero.rb +107 -0
- data/lib/geometry/polygon.rb +368 -0
- data/lib/geometry/polyline.rb +318 -0
- data/lib/geometry/rectangle.rb +378 -0
- data/lib/geometry/regular_polygon.rb +136 -0
- data/lib/geometry/rotation.rb +190 -0
- data/lib/geometry/size.rb +75 -0
- data/lib/geometry/size_zero.rb +70 -0
- data/lib/geometry/square.rb +113 -0
- data/lib/geometry/text.rb +24 -0
- data/lib/geometry/transformation.rb +171 -0
- data/lib/geometry/transformation/composition.rb +39 -0
- data/lib/geometry/triangle.rb +78 -0
- data/lib/geometry/vector.rb +34 -0
- data/test/geometry.rb +5 -0
- data/test/geometry/arc.rb +25 -0
- data/test/geometry/circle.rb +112 -0
- data/test/geometry/edge.rb +132 -0
- data/test/geometry/line.rb +132 -0
- data/test/geometry/obround.rb +25 -0
- data/test/geometry/path.rb +66 -0
- data/test/geometry/point.rb +258 -0
- data/test/geometry/point_zero.rb +177 -0
- data/test/geometry/polygon.rb +214 -0
- data/test/geometry/polyline.rb +266 -0
- data/test/geometry/rectangle.rb +154 -0
- data/test/geometry/regular_polygon.rb +120 -0
- data/test/geometry/rotation.rb +108 -0
- data/test/geometry/size.rb +97 -0
- data/test/geometry/size_zero.rb +153 -0
- data/test/geometry/square.rb +66 -0
- data/test/geometry/transformation.rb +169 -0
- data/test/geometry/transformation/composition.rb +49 -0
- data/test/geometry/triangle.rb +32 -0
- data/test/geometry/vector.rb +41 -0
- metadata +115 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'geometry/transformation/composition'
|
3
|
+
|
4
|
+
describe Geometry::Transformation::Composition do
|
5
|
+
Composition = Geometry::Transformation::Composition
|
6
|
+
Transformation = Geometry::Transformation
|
7
|
+
|
8
|
+
subject { Composition.new }
|
9
|
+
|
10
|
+
describe "when constructed" do
|
11
|
+
it "must accept multiple transformations" do
|
12
|
+
composition = Composition.new(Transformation.new, Transformation.new)
|
13
|
+
composition.size.must_equal 2
|
14
|
+
end
|
15
|
+
|
16
|
+
it "must reject anything that isn't a Transformation" do
|
17
|
+
-> { Composition.new :foo }.must_raise TypeError
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "attributes" do
|
22
|
+
describe "has_rotation?" do
|
23
|
+
it "must properly be true" do
|
24
|
+
Composition.new(Transformation.new angle:90).has_rotation?.must_equal true
|
25
|
+
end
|
26
|
+
|
27
|
+
it "must properly be false" do
|
28
|
+
subject.has_rotation?.must_equal false
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "when composing" do
|
34
|
+
it "must append a Transformation" do
|
35
|
+
(Composition.new(Transformation.new) + Transformation.new).size.must_equal 2
|
36
|
+
end
|
37
|
+
|
38
|
+
it "must merge with a Composition" do
|
39
|
+
(Composition.new(Transformation.new) + Composition.new(Transformation.new)).size.must_equal 2
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "when transforming a Point" do
|
44
|
+
it "must handle composed translations" do
|
45
|
+
composition = Composition.new(Transformation.new origin:[1,2]) + Composition.new(Transformation.new [3,4])
|
46
|
+
composition.transform(Point[5,6]).must_equal Point[9, 12]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'geometry/triangle'
|
3
|
+
|
4
|
+
describe Geometry::Triangle do
|
5
|
+
Triangle = Geometry::Triangle
|
6
|
+
|
7
|
+
describe "when constructed with 3 points" do
|
8
|
+
let(:triangle) { Triangle.new [0,0], [0,1], [1,0] }
|
9
|
+
|
10
|
+
it "must create a scalene Triangle" do
|
11
|
+
triangle.must_be_instance_of Geometry::ScaleneTriangle
|
12
|
+
triangle.must_be_kind_of Triangle
|
13
|
+
end
|
14
|
+
|
15
|
+
it "must have a points accessor" do
|
16
|
+
triangle.points.must_equal [Point[0,0], Point[0,1], Point[1,0]]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "when constructed with a point and a leg length" do
|
21
|
+
let(:triangle) { Triangle.new [0,0], 1 }
|
22
|
+
|
23
|
+
it "must create a right Triangle" do
|
24
|
+
triangle.must_be_instance_of Geometry::RightTriangle
|
25
|
+
triangle.must_be_kind_of(Triangle)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "must have a points accessor" do
|
29
|
+
triangle.points.must_equal [Point[0,0], Point[0,1], Point[1,0]]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'geometry/vector'
|
3
|
+
|
4
|
+
describe Vector do
|
5
|
+
describe "when monkeypatching Vector" do
|
6
|
+
let(:left) { Vector[1,2] }
|
7
|
+
let(:right) { Vector[3,4] }
|
8
|
+
|
9
|
+
it "must have +@" do
|
10
|
+
(+left).must_equal Vector[1,2]
|
11
|
+
end
|
12
|
+
|
13
|
+
it "must have unary negation" do
|
14
|
+
(-left).must_equal Vector[-1,-2]
|
15
|
+
end
|
16
|
+
|
17
|
+
it "must cross product" do
|
18
|
+
left.cross(right).must_equal -2
|
19
|
+
Vector[1,2,3].cross(Vector[3,4,5]).must_equal Vector[-2, 4, -2]
|
20
|
+
(Vector[1,2,3] ** Vector[3,4,5]).must_equal Vector[-2, 4, -2]
|
21
|
+
end
|
22
|
+
|
23
|
+
it "must have a constant representing the X axis" do
|
24
|
+
Vector::X.must_equal Vector[1,0,0]
|
25
|
+
end
|
26
|
+
|
27
|
+
it "must have a constant representing the Y axis" do
|
28
|
+
Vector::Y.must_equal Vector[0,1,0]
|
29
|
+
end
|
30
|
+
|
31
|
+
it "must have a constant representing the Z axis" do
|
32
|
+
Vector::Z.must_equal Vector[0,0,1]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "must not create global axis constants" do
|
36
|
+
-> { X }.must_raise NameError
|
37
|
+
-> { Y }.must_raise NameError
|
38
|
+
-> { Z }.must_raise NameError
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aurora-geometry
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brandon Fosdick
|
8
|
+
- Meseker Yohannes
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-03-10 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Geometric primitives and algorithms for Ruby
|
15
|
+
email:
|
16
|
+
- meseker.yohannes@gmail.com
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- .gitignore
|
22
|
+
- Gemfile
|
23
|
+
- LICENSE
|
24
|
+
- README.markdown
|
25
|
+
- Rakefile
|
26
|
+
- aurora-geometry.gemspec
|
27
|
+
- lib/geometry.rb
|
28
|
+
- lib/geometry/arc.rb
|
29
|
+
- lib/geometry/circle.rb
|
30
|
+
- lib/geometry/cluster_factory.rb
|
31
|
+
- lib/geometry/edge.rb
|
32
|
+
- lib/geometry/line.rb
|
33
|
+
- lib/geometry/obround.rb
|
34
|
+
- lib/geometry/path.rb
|
35
|
+
- lib/geometry/point.rb
|
36
|
+
- lib/geometry/point_zero.rb
|
37
|
+
- lib/geometry/polygon.rb
|
38
|
+
- lib/geometry/polyline.rb
|
39
|
+
- lib/geometry/rectangle.rb
|
40
|
+
- lib/geometry/regular_polygon.rb
|
41
|
+
- lib/geometry/rotation.rb
|
42
|
+
- lib/geometry/size.rb
|
43
|
+
- lib/geometry/size_zero.rb
|
44
|
+
- lib/geometry/square.rb
|
45
|
+
- lib/geometry/text.rb
|
46
|
+
- lib/geometry/transformation.rb
|
47
|
+
- lib/geometry/transformation/composition.rb
|
48
|
+
- lib/geometry/triangle.rb
|
49
|
+
- lib/geometry/vector.rb
|
50
|
+
- test/geometry.rb
|
51
|
+
- test/geometry/arc.rb
|
52
|
+
- test/geometry/circle.rb
|
53
|
+
- test/geometry/edge.rb
|
54
|
+
- test/geometry/line.rb
|
55
|
+
- test/geometry/obround.rb
|
56
|
+
- test/geometry/path.rb
|
57
|
+
- test/geometry/point.rb
|
58
|
+
- test/geometry/point_zero.rb
|
59
|
+
- test/geometry/polygon.rb
|
60
|
+
- test/geometry/polyline.rb
|
61
|
+
- test/geometry/rectangle.rb
|
62
|
+
- test/geometry/regular_polygon.rb
|
63
|
+
- test/geometry/rotation.rb
|
64
|
+
- test/geometry/size.rb
|
65
|
+
- test/geometry/size_zero.rb
|
66
|
+
- test/geometry/square.rb
|
67
|
+
- test/geometry/transformation.rb
|
68
|
+
- test/geometry/transformation/composition.rb
|
69
|
+
- test/geometry/triangle.rb
|
70
|
+
- test/geometry/vector.rb
|
71
|
+
homepage: http://github.com/meseker/geometry
|
72
|
+
licenses: []
|
73
|
+
metadata: {}
|
74
|
+
post_install_message:
|
75
|
+
rdoc_options: []
|
76
|
+
require_paths:
|
77
|
+
- lib
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
requirements: []
|
89
|
+
rubyforge_project: aurora-geometry
|
90
|
+
rubygems_version: 2.0.3
|
91
|
+
signing_key:
|
92
|
+
specification_version: 4
|
93
|
+
summary: Geometric primitives and algoritms
|
94
|
+
test_files:
|
95
|
+
- test/geometry.rb
|
96
|
+
- test/geometry/arc.rb
|
97
|
+
- test/geometry/circle.rb
|
98
|
+
- test/geometry/edge.rb
|
99
|
+
- test/geometry/line.rb
|
100
|
+
- test/geometry/obround.rb
|
101
|
+
- test/geometry/path.rb
|
102
|
+
- test/geometry/point.rb
|
103
|
+
- test/geometry/point_zero.rb
|
104
|
+
- test/geometry/polygon.rb
|
105
|
+
- test/geometry/polyline.rb
|
106
|
+
- test/geometry/rectangle.rb
|
107
|
+
- test/geometry/regular_polygon.rb
|
108
|
+
- test/geometry/rotation.rb
|
109
|
+
- test/geometry/size.rb
|
110
|
+
- test/geometry/size_zero.rb
|
111
|
+
- test/geometry/square.rb
|
112
|
+
- test/geometry/transformation.rb
|
113
|
+
- test/geometry/transformation/composition.rb
|
114
|
+
- test/geometry/triangle.rb
|
115
|
+
- test/geometry/vector.rb
|