mageo 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,147 @@
1
+ #! /usr/bin/ruby
2
+
3
+ require 'test/unit'
4
+ require 'matrix'
5
+ require 'mageo/vector3d.rb'
6
+ require 'mageo/vector3dinternal.rb'
7
+
8
+ class TC_Array < Test::Unit::TestCase
9
+ $tolerance = 10.0**(-10)
10
+
11
+ def setup
12
+ @a = [1.0, 2.0, 3.0]
13
+ end
14
+
15
+ def test_to_v3di
16
+ assert_equal( Vector3DInternal, @a.to_v3di.class )
17
+ assert_in_delta( 1.0, @a.to_v3di[0], $tolerance )
18
+ assert_in_delta( 2.0, @a.to_v3di[1], $tolerance )
19
+ assert_in_delta( 3.0, @a.to_v3di[2], $tolerance )
20
+ assert_raise( Vector3DInternal::RangeError ){ [1.0].to_v3di }
21
+ assert_raise( Vector3DInternal::RangeError ){ [0.0, 1.0, 2.0, 3.0].to_v3di }
22
+ end
23
+
24
+ end
25
+
26
+ class TC_Vector3DInternal < Test::Unit::TestCase
27
+ $tolerance = 10.0**(-10)
28
+ include Math
29
+
30
+ def setup
31
+ @v0 = Vector3DInternal[1.0, 2.0, 3.0]
32
+ @v1 = Vector3DInternal[2.0, 4.0, 6.0]
33
+ end
34
+
35
+ def test_size
36
+ assert_equal( 3, @v0.size )
37
+ assert_equal( 3, @v1.size )
38
+ end
39
+
40
+ def test_to_v3di
41
+ assert_equal( @v0, @v0.to_v3di )
42
+ assert_equal( @v1, @v1.to_v3di )
43
+ end
44
+
45
+ def test_equal
46
+ assert_equal( true , @v0 == Vector3DInternal[1.0, 2.0, 3.0] )
47
+ assert_equal( true , @v1 == Vector3DInternal[2.0, 4.0, 6.0] )
48
+ assert_equal( false, @v0 == Vector3DInternal[2.0, 4.0, 6.0] )
49
+ assert_equal( false, @v1 == Vector3DInternal[1.0, 2.0, 3.0] )
50
+ end
51
+
52
+ def test_class
53
+ assert_equal( Vector3DInternal, @v0.class )
54
+ assert_equal( Vector3DInternal, ( @v0 * 3.0 ).class )
55
+ assert_equal( Vector3DInternal, ( @v0 + @v1 ).class )
56
+ assert_equal( Vector3DInternal, ( @v0 - @v1 ).class )
57
+ #assert_equal( Vector3DInternal, @v0.clone.class )
58
+ #assert_equal( Vector3DInternal, @v0.dup.class )
59
+ end
60
+
61
+ def test_access
62
+ assert_equal( 1.0, @v0[0] )
63
+ assert_equal( 2.0, @v0[1] )
64
+ assert_equal( 3.0, @v0[2] )
65
+ assert_raise( Vector3DInternal::RangeError ){ @v0[3] }
66
+ assert_raise( Vector3DInternal::RangeError ){ @v0[-1] }
67
+
68
+ @v0[0] = 0.0
69
+ @v0[1] = 0.0
70
+ @v0[2] = 0.0
71
+ assert_equal( 0.0, @v0[0] )
72
+ assert_equal( 0.0, @v0[1] )
73
+ assert_equal( 0.0, @v0[2] )
74
+ assert_raise( Vector3DInternal::RangeError ){ @v0[3] = 0.0 }
75
+ assert_raise( Vector3DInternal::RangeError ){ @v0[-1] = 0.0 }
76
+ end
77
+
78
+ def test_plus
79
+ assert_raise(Vector3DInternal::TypeError){ @v0 + [0.1, 0.2, 0.3] }
80
+ assert_raise(Vector3DInternal::TypeError){ @v0 + Vector[0.1, 0.2, 0.3] }
81
+ assert_raise(Vector3DInternal::TypeError){ @v0 + Vector3D[0.1, 0.2, 0.3] }
82
+
83
+ t = @v0 + Vector3DInternal[0.1, 0.2, 0.3]
84
+ assert_in_delta( 1.1, t[0], $tolerance )
85
+ assert_in_delta( 2.2, t[1], $tolerance )
86
+ assert_in_delta( 3.3, t[2], $tolerance )
87
+ end
88
+
89
+ def test_minus
90
+ assert_raise(Vector3DInternal::TypeError){ @v0 - [0.1, 0.2, 0.3] }
91
+ assert_raise(Vector3DInternal::TypeError){ @v0 - Vector[0.1, 0.2, 0.3] }
92
+ assert_raise(Vector3DInternal::TypeError){ @v0 - Vector3D[0.3, 0.2, 0.3] }
93
+
94
+ t = @v0 - Vector3DInternal[0.1, 0.2, 0.3]
95
+ assert_in_delta( 0.9, t[0], $tolerance )
96
+ assert_in_delta( 1.8, t[1], $tolerance )
97
+ assert_in_delta( 2.7, t[2], $tolerance )
98
+ end
99
+
100
+ def test_multiply
101
+ t = @v0 * 2
102
+ assert_in_delta( 2.0, t[0], $tolerance )
103
+ assert_in_delta( 4.0, t[1], $tolerance )
104
+ assert_in_delta( 6.0, t[2], $tolerance )
105
+
106
+ t = @v0 * 3.0
107
+ assert_in_delta( 3.0, t[0], $tolerance )
108
+ assert_in_delta( 6.0, t[1], $tolerance )
109
+ assert_in_delta( 9.0, t[2], $tolerance )
110
+
111
+ end
112
+
113
+ #def test_equal
114
+ # assert_equal( )
115
+ #end
116
+
117
+ def test_to_a
118
+ assert_equal( [1.0, 2.0, 3.0], @v0.to_a )
119
+ assert_equal( [2.0, 4.0, 6.0], @v1.to_a )
120
+ end
121
+
122
+ def test_to_v3d
123
+ t = Vector3DInternal[ 2.0, 3.0, 4.0 ].to_v3d( [ [1.0, 1.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0] ] )
124
+ assert_in_delta( 2.0, t[0], $tolerance )
125
+ assert_in_delta( 5.0, t[1], $tolerance )
126
+ assert_in_delta( 9.0, t[2], $tolerance )
127
+
128
+ t = Vector3DInternal[ 2.0, 3.0, 4.0 ].to_v3d(
129
+ [ Vector3D[1.0, 1.0, 1.0], Vector3D[0.0, 1.0, 1.0], Vector3D[0.0, 0.0, 1.0] ]
130
+ )
131
+ assert_in_delta( 2.0, t[0], $tolerance )
132
+ assert_in_delta( 5.0, t[1], $tolerance )
133
+ assert_in_delta( 9.0, t[2], $tolerance )
134
+ end
135
+
136
+ def test_each
137
+ i = 0
138
+ @v0.each { |coord|
139
+ assert_equal( @v0[i], coord )
140
+ i += 1
141
+ }
142
+
143
+ # map method.
144
+ assert_equal( @v0 * 2.0, @v0.map { |coord| coord * 2.0 } )
145
+ end
146
+ end
147
+
metadata ADDED
@@ -0,0 +1,183 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mageo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - ippei94da
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rdoc
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.12'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.12'
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.1.3
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.1.3
46
+ - !ruby/object:Gem::Dependency
47
+ name: jeweler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.8.3
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.3
62
+ - !ruby/object:Gem::Dependency
63
+ name: simplecov
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: builtinextension
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: malge
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: 0.0.1
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: 0.0.1
110
+ description: ! "MAth GEOmetry library to deal with 2 and 3 dimension space.\n Cartesian
111
+ and internal coordinate systems can be used.\n This includes besic objects in
112
+ 3 dimensional space.\n "
113
+ email: ippei94da@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files:
117
+ - LICENSE.txt
118
+ - README.rdoc
119
+ files:
120
+ - .document
121
+ - Gemfile
122
+ - LICENSE.txt
123
+ - README.rdoc
124
+ - Rakefile
125
+ - VERSION
126
+ - lib/mageo.rb
127
+ - lib/mageo/axes.rb
128
+ - lib/mageo/cylinder.rb
129
+ - lib/mageo/octahedron.rb
130
+ - lib/mageo/polar2d.rb
131
+ - lib/mageo/polar3d.rb
132
+ - lib/mageo/polyhedron.rb
133
+ - lib/mageo/segment.rb
134
+ - lib/mageo/sphere.rb
135
+ - lib/mageo/tetrahedron.rb
136
+ - lib/mageo/triangle.rb
137
+ - lib/mageo/vector.rb
138
+ - lib/mageo/vector3d.rb
139
+ - lib/mageo/vector3dinternal.rb
140
+ - mageo.gemspec
141
+ - test/helper.rb
142
+ - test/test_axes.rb
143
+ - test/test_cylinder.rb
144
+ - test/test_octahedron.rb
145
+ - test/test_polar2d.rb
146
+ - test/test_polar3d.rb
147
+ - test/test_polyhedron.rb
148
+ - test/test_segment.rb
149
+ - test/test_sphere.rb
150
+ - test/test_tetrahedron.rb
151
+ - test/test_triangle.rb
152
+ - test/test_vector.rb
153
+ - test/test_vector3d.rb
154
+ - test/test_vector3dinternal.rb
155
+ homepage: http://github.com/ippei94da/mageo
156
+ licenses:
157
+ - MIT
158
+ post_install_message:
159
+ rdoc_options: []
160
+ require_paths:
161
+ - lib
162
+ required_ruby_version: !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ! '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ segments:
169
+ - 0
170
+ hash: -984763203
171
+ required_rubygems_version: !ruby/object:Gem::Requirement
172
+ none: false
173
+ requirements:
174
+ - - ! '>='
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ requirements: []
178
+ rubyforge_project:
179
+ rubygems_version: 1.8.21
180
+ signing_key:
181
+ specification_version: 3
182
+ summary: MAth GEOmetry library to deal with 2 and 3 dimension space.
183
+ test_files: []