mageo 0.0.1 → 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.
data/lib/mageo/vector.rb CHANGED
@@ -1,18 +1,16 @@
1
1
  #! /usr/bin/ruby
2
2
 
3
- require "matrix"
4
-
5
3
  class Vector
6
4
  #include Math
7
- class ZeroOperation < Exception; end
5
+ class ZeroOperationError < Exception; end
8
6
  class SizeError < Exception; end
9
7
 
10
8
  # Get a unit vector.
11
9
  def unit_vector
12
10
  len = self.r
13
- raise Vector::ZeroOperation if (len == 0)
11
+ raise Vector::ZeroOperationError if (len == 0)
14
12
  self * (1/len)
15
- # Vector3D.new(@x*(1.0/len), @y*(1.0/len), @z*(1.0/len))
13
+ # Mageo::Vector3D.new(@x*(1.0/len), @y*(1.0/len), @z*(1.0/len))
16
14
  end
17
15
 
18
16
  def floor
@@ -1,12 +1,5 @@
1
1
  #! /usr/bin/ruby
2
2
 
3
- # written by Ippei KISHIDA
4
- #
5
- require "matrix"
6
- require "mageo/polar2d.rb"
7
- require "mageo/polar3d.rb"
8
- require "mageo/axes.rb"
9
- require "mageo/vector.rb"
10
3
  require "rubygems"
11
4
  gem "malge"
12
5
  require "malge.rb"
@@ -15,18 +8,18 @@ require "malge.rb"
15
8
 
16
9
  # Open class to add "to_v3d" method.
17
10
  class Array
18
- # Convert Array to Vector3D
11
+ # Convert Array to Mageo::Vector3D
19
12
  def to_v3d
20
- Vector3D[*self]
21
- #要素数チェックは Vector3D.[] 側でやっている。
13
+ Mageo::Vector3D[*self]
14
+ #要素数チェックは Mageo::Vector3D.[] 側でやっている。
22
15
  end
23
16
  end
24
17
 
25
18
  class Vector
26
- # Return a new instance converted to Vector3D class.
19
+ # Return a new instance converted to Mageo::Vector3D class.
27
20
  def to_v3d
28
- Vector3D[*self]
29
- #要素数チェックは Vector3D.[] 側でやっている。
21
+ Mageo::Vector3D[*self]
22
+ #要素数チェックは Mageo::Vector3D.[] 側でやっている。
30
23
  end
31
24
  end
32
25
 
@@ -35,16 +28,16 @@ end
35
28
  # This class provide exterior_product method and others, which is not included
36
29
  # in native Vector class.
37
30
  # This class is constructed under the assumption in the Cartesian coordinate.
38
- # If you want to be in an internal coordinate, you can use Math/Vector3DInternal.rb .
31
+ # If you want to be in an internal coordinate, you can use Math/Mageo::Vector3DInternal.rb .
39
32
  #
40
33
  # Memo:
41
- # Vector3DInternal との対比として、Vector3DCartesian という名前にすることも考えたが、
34
+ # Mageo::Vector3DInternal との対比として、Vector3DCartesian という名前にすることも考えたが、
42
35
  # 長くなるし、普通直交座標で考えるよね、と。
43
36
  #
44
37
  # インスタンス生成の時点で要素数をチェックし、要素の追加削除を禁止しているので
45
38
  # 要素数は常に3であることが保証されている。
46
39
  #
47
- class Vector3D < Vector
40
+ class Mageo::Vector3D < Vector
48
41
 
49
42
  class TypeError < Exception; end
50
43
  class ZeroOperation < Exception; end
@@ -60,7 +53,7 @@ class Vector3D < Vector
60
53
  # Get the exterior product.
61
54
  def self.exterior_product(vec0, vec1)
62
55
  [vec0, vec1].each_with_index do |vec, index|
63
- unless (vec.class == Vector3D)
56
+ unless (vec.class == Mageo::Vector3D)
64
57
  raise TypeError, "Vector #{index}, #{vec.inspect}."
65
58
  end
66
59
  end
@@ -83,7 +76,7 @@ class Vector3D < Vector
83
76
  # Get the scalar triple product.
84
77
  def self.scalar_triple_product(vec0, vec1, vec2)
85
78
  [vec0, vec1, vec2].each_with_index do |vec, index|
86
- raise TypeError, "#{index}th vector: #{vec.inspect}" unless (vec.class == Vector3D)
79
+ raise TypeError, "#{index}th vector: #{vec.inspect}" unless (vec.class == Mageo::Vector3D)
87
80
  end
88
81
 
89
82
  vec0.inner_product(vec1.exterior_product(vec2))
@@ -92,7 +85,7 @@ class Vector3D < Vector
92
85
  # Get the angle with radian between self and other vectors.
93
86
  def self.angle_radian(vec0, vec1)
94
87
  [vec0, vec1].each_with_index do |vec, index|
95
- raise TypeError, "#{index}th vector: #{vec.inspect}" unless (vec.class == Vector3D)
88
+ raise TypeError, "#{index}th vector: #{vec.inspect}" unless (vec.class == Mageo::Vector3D)
96
89
  raise ZeroOperation, "#{index}th vector: #{vec.inspect}" if (vec.r == 0.0)
97
90
  end
98
91
 
@@ -102,7 +95,7 @@ class Vector3D < Vector
102
95
  # Get the angle with degree between self and other vectors.
103
96
  def self.angle_degree(vec0, vec1)
104
97
  [vec0, vec1].each_with_index do |vec, index|
105
- raise TypeError, "#{index}th vector: #{vec.inspect}" unless (vec.class == Vector3D)
98
+ raise TypeError, "#{index}th vector: #{vec.inspect}" unless (vec.class == Mageo::Vector3D)
106
99
  raise ZeroOperation, "#{index}th vector: #{vec.inspect}" if (vec.r == 0.0)
107
100
  end
108
101
 
@@ -123,33 +116,33 @@ class Vector3D < Vector
123
116
 
124
117
 
125
118
  # ベクトルが等しいかチェック。
126
- # other として Vector3D クラス以外のインスタンス渡すと Vector3D::TypeError。
119
+ # other として Mageo::Vector3D クラス以外のインスタンス渡すと Vector3D::TypeError。
127
120
  # 両者の差分ベクトルの長さが tolerance 以下という判定になる。
128
121
  def equal_in_delta?(other, tolerance = 0.0)
129
- raise TypeError if (other.class != Vector3D)
122
+ raise TypeError if (other.class != Mageo::Vector3D)
130
123
  return (other - self).r <= tolerance
131
124
  end
132
125
 
133
126
  # Vectorクラスで用意されているメソッドは Vectorクラスインスタンスを返すようになっているので、
134
- # Vector3D クラスインスタンスを返すようにした + メソッド。
127
+ # Mageo::Vector3D クラスインスタンスを返すようにした + メソッド。
135
128
  def +(vec)
136
- unless (vec.class == Vector3D)
129
+ unless (vec.class == Mageo::Vector3D)
137
130
  raise TypeError, "#{vec.inspect}."
138
131
  end
139
132
  super(vec).to_v3d
140
133
  end
141
134
 
142
135
  # Vectorクラスで用意されているメソッドは Vectorクラスインスタンスを返すようになっているので、
143
- # Vector3D クラスインスタンスを返すようにした - メソッド。
136
+ # Mageo::Vector3D クラスインスタンスを返すようにした - メソッド。
144
137
  def -(vec)
145
- unless (vec.class == Vector3D)
138
+ unless (vec.class == Mageo::Vector3D)
146
139
  raise TypeError, "#{vec.inspect}."
147
140
  end
148
141
  super(vec).to_v3d
149
142
  end
150
143
 
151
144
  # Vectorクラスで用意されているメソッドは Vectorクラスインスタンスを返すようになっているので、
152
- # Vector3D クラスインスタンスを返すようにした * メソッド。
145
+ # Mageo::Vector3D クラスインスタンスを返すようにした * メソッド。
153
146
  # Argument 'val' must have :to_f method.
154
147
  def *(val)
155
148
  #raise TypeError if (val.class != Float)
@@ -158,18 +151,18 @@ class Vector3D < Vector
158
151
  end
159
152
 
160
153
  # Vectorクラスで用意されているメソッドは Vectorクラスインスタンスを返すようになっているので、
161
- # Vector3D クラスインスタンスを返すようにした clone メソッド。
154
+ # Mageo::Vector3D クラスインスタンスを返すようにした clone メソッド。
162
155
  def clone
163
156
  super().to_v3d
164
157
  end
165
158
 
166
- # Convert to Vector3DInternal. Non-destructive.
159
+ # Convert to Mageo::Vector3DInternal. Non-destructive.
167
160
  def to_v3di(axes)
168
- #pp axes.is_a?(Axes)
169
- raise TypeError unless axes.is_a?(Axes)
161
+ #pp axes.is_a?(Mageo::Axes)
162
+ raise TypeError unless axes.is_a?(Mageo::Axes)
170
163
 
171
164
  axes = axes.to_a
172
- Vector3DInternal[ *(Malge::SimultaneousEquations.cramer(axes.transpose, self)) ]
165
+ Mageo::Vector3DInternal[ *(Malge::SimultaneousEquations.cramer(axes.transpose, self)) ]
173
166
  end
174
167
 
175
168
  #Return size, always 3.
@@ -196,17 +189,17 @@ class Vector3D < Vector
196
189
  self.class.angle_degree(self, vec)
197
190
  end
198
191
 
199
- #3次元極座標への変換した Polar3D インスタンスを返す。
192
+ #3次元極座標への変換した Mageo::Polar3D インスタンスを返す。
200
193
  def to_p3d
201
194
  r = self.r
202
195
  if r == 0.0
203
196
  theta = 0.0
204
197
  phi = 0.0
205
198
  else
206
- theta = Polar2D.minimum_radian(Math::acos(self[2] / r))
199
+ theta = Mageo::Polar2D.minimum_radian(Math::acos(self[2] / r))
207
200
  phi = Vector[ self[0], self[1] ].to_p2d.theta
208
201
  end
209
- Polar3D.new(r, theta, phi)
202
+ Mageo::Polar3D.new(r, theta, phi)
210
203
  end
211
204
 
212
205
  #x, y, z 軸のいずれかで self を回転する。破壊的。
@@ -1,8 +1,8 @@
1
- require 'mageo/vector3d.rb'
1
+ #require 'mageo/vector3d.rb'
2
2
 
3
3
  class Array
4
4
  def to_v3di
5
- Vector3DInternal[ *self ]
5
+ Mageo::Vector3DInternal[ *self ]
6
6
  end
7
7
  end
8
8
 
@@ -11,16 +11,16 @@ end
11
11
  # (直交座標と間違えて)内部座標で内積を求めるなど誤った演算を例外で止めるのが目的。
12
12
  # 座標軸の情報は自身では持たない。
13
13
  # Actually, this class is very similar to Array class, except for +, -, and * methods.
14
- # Vector, Vector3D との混在計算は例外を発生。
14
+ # Vector, Mageo::Vector3D との混在計算は例外を発生。
15
15
  #
16
16
  # 軸の情報は持たない。
17
17
  # 軸に関係ない抽象的な内部座標について議論することもありうるし、
18
18
  # 軸情報が必要なのは to_v3d メソッドくらいなので。
19
- class Vector3DInternal < Vector3D
19
+ class Mageo::Vector3DInternal < Mageo::Vector3D
20
20
  class RangeError < Exception; end
21
21
  class TypeError < Exception; end
22
22
 
23
- #要素数3以外では例外 Vector3DInternalSizeError を発生。
23
+ #要素数3以外では例外 Mageo::Vector3DInternalSizeError を発生。
24
24
  def self.[]( *args )
25
25
  raise RangeError unless args.size == 3
26
26
  super *args
@@ -36,7 +36,7 @@ class Vector3DInternal < Vector3D
36
36
  return self
37
37
  end
38
38
 
39
- # Convert to Vector3D. Non-destructive.
39
+ # Convert to Mageo::Vector3D. Non-destructive.
40
40
  def to_v3d( axes )
41
41
  result = [ 0.0, 0.0, 0.0 ]
42
42
  3.times do |i|
@@ -44,7 +44,7 @@ class Vector3DInternal < Vector3D
44
44
  result[i] += ( self[j] * axes[j][i] )
45
45
  end
46
46
  end
47
- Vector3D[ *result ]
47
+ Mageo::Vector3D[ *result ]
48
48
  end
49
49
 
50
50
  ## Return an array converted from self.
@@ -62,13 +62,13 @@ class Vector3DInternal < Vector3D
62
62
  # return true
63
63
  #end
64
64
 
65
- #0〜2 以外の要素にアクセスしようとすると例外 Vector3DInternal::RangeError を発生。
65
+ #0〜2 以外の要素にアクセスしようとすると例外 Mageo::Vector3DInternal::RangeError を発生。
66
66
  def []( index )
67
67
  raise RangeError if ( index < 0 || 2 < index )
68
68
  super index
69
69
  end
70
70
 
71
- #0〜2 以外の要素にアクセスしようとすると例外 Vector3DInternal::RangeError を発生。
71
+ #0〜2 以外の要素にアクセスしようとすると例外 Mageo::Vector3DInternal::RangeError を発生。
72
72
  def []=( index, val )
73
73
  raise RangeError if ( index < 0 || 2 < index )
74
74
  super index, val
@@ -76,11 +76,11 @@ class Vector3DInternal < Vector3D
76
76
 
77
77
  #ベクトルとしての加算
78
78
  def +(vec)
79
- unless vec.class == Vector3DInternal
79
+ unless vec.class == Mageo::Vector3DInternal
80
80
  raise TypeError,
81
81
  "Argument: #{vec.inspect}, #{vec.class}."
82
82
  end
83
- result = Vector3DInternal[0.0, 0.0, 0.0]
83
+ result = Mageo::Vector3DInternal[0.0, 0.0, 0.0]
84
84
  3.times do |i|
85
85
  result[ i ] = (self[ i ] + vec[ i ])
86
86
  end
@@ -89,11 +89,11 @@ class Vector3DInternal < Vector3D
89
89
 
90
90
  #ベクトルとしての減算
91
91
  def -( vec )
92
- unless vec.class == Vector3DInternal
92
+ unless vec.class == Mageo::Vector3DInternal
93
93
  raise TypeError,
94
94
  "Argument: #{vec.inspect}, #{vec.class}."
95
95
  end
96
- result = Vector3DInternal[0.0, 0.0, 0.0]
96
+ result = Mageo::Vector3DInternal[0.0, 0.0, 0.0]
97
97
  3.times do |i|
98
98
  result[ i ] = (self[ i ] - vec[ i ])
99
99
  end
@@ -102,7 +102,7 @@ class Vector3DInternal < Vector3D
102
102
 
103
103
  #ベクトルとしての乗算
104
104
  def *( val )
105
- result = Vector3DInternal[0.0, 0.0, 0.0]
105
+ result = Mageo::Vector3DInternal[0.0, 0.0, 0.0]
106
106
  3.times do |i|
107
107
  result[ i ] = ( self[ i ] * val )
108
108
  end
data/mageo.gemspec CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "mageo"
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ippei94da"]
12
- s.date = "2013-02-02"
13
- s.description = "MAth GEOmetry library to deal with 2 and 3 dimension space.\n Cartesian and internal coordinate systems can be used.\n This includes besic objects in 3 dimensional space.\n "
12
+ s.date = "2013-04-18"
13
+ s.description = "MAth GEOmetry library to deal with 2 and 3 dimensional spaces.\n Cartesian and internal coordinate systems can be used.\n This includes besic objects in 3 dimensional space.\n "
14
14
  s.email = "ippei94da@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
@@ -58,34 +58,31 @@ Gem::Specification.new do |s|
58
58
  s.licenses = ["MIT"]
59
59
  s.require_paths = ["lib"]
60
60
  s.rubygems_version = "1.8.11"
61
- s.summary = "MAth GEOmetry library to deal with 2 and 3 dimension space."
61
+ s.summary = "MAth GEOmetry library to deal with 2 and 3 dimensional spaces."
62
62
 
63
63
  if s.respond_to? :specification_version then
64
64
  s.specification_version = 3
65
65
 
66
66
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
67
- s.add_development_dependency(%q<builtinextension>, [">= 0"])
68
- s.add_development_dependency(%q<bundler>, ["~> 1.2.2"])
67
+ s.add_development_dependency(%q<builtinextension>, [">= 0.1.0"])
68
+ s.add_development_dependency(%q<bundler>, ["~> 1.3.5"])
69
69
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
70
- s.add_development_dependency(%q<malge>, [">= 0.0.2"])
71
- s.add_development_dependency(%q<psych>, [">= 0"])
70
+ s.add_development_dependency(%q<malge>, [">= 0.0.8"])
72
71
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
73
72
  s.add_development_dependency(%q<simplecov>, [">= 0"])
74
73
  else
75
- s.add_dependency(%q<builtinextension>, [">= 0"])
76
- s.add_dependency(%q<bundler>, ["~> 1.2.2"])
74
+ s.add_dependency(%q<builtinextension>, [">= 0.1.0"])
75
+ s.add_dependency(%q<bundler>, ["~> 1.3.5"])
77
76
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
78
- s.add_dependency(%q<malge>, [">= 0.0.2"])
79
- s.add_dependency(%q<psych>, [">= 0"])
77
+ s.add_dependency(%q<malge>, [">= 0.0.8"])
80
78
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
81
79
  s.add_dependency(%q<simplecov>, [">= 0"])
82
80
  end
83
81
  else
84
- s.add_dependency(%q<builtinextension>, [">= 0"])
85
- s.add_dependency(%q<bundler>, ["~> 1.2.2"])
82
+ s.add_dependency(%q<builtinextension>, [">= 0.1.0"])
83
+ s.add_dependency(%q<bundler>, ["~> 1.3.5"])
86
84
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
87
- s.add_dependency(%q<malge>, [">= 0.0.2"])
88
- s.add_dependency(%q<psych>, [">= 0"])
85
+ s.add_dependency(%q<malge>, [">= 0.0.8"])
89
86
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
90
87
  s.add_dependency(%q<simplecov>, [">= 0"])
91
88
  end
data/test/test_axes.rb CHANGED
@@ -2,17 +2,17 @@
2
2
  # coding: utf-8
3
3
 
4
4
  require "helper"
5
- require "test/unit"
6
- require "mageo/axes.rb"
5
+ #require "test/unit"
6
+ #require "mageo/axes.rb"
7
7
 
8
8
  class TC_Axes < Test::Unit::TestCase
9
9
  $tolerance = 1.0 * 10.0**(-10)
10
10
 
11
11
  def setup
12
- @a10 = Axes.new([[1.0]])
13
- @a20 = Axes.new([[1.0, 0.0], [0.0, 1.0]])
14
- @a30 = Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]])
15
- @a40 = Axes.new([
12
+ @a10 = Mageo::Axes.new([[1.0]])
13
+ @a20 = Mageo::Axes.new([[1.0, 0.0], [0.0, 1.0]])
14
+ @a30 = Mageo::Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]])
15
+ @a40 = Mageo::Axes.new([
16
16
  [1.0, 0.0, 0.0, 0.0],
17
17
  [0.0, 1.0, 0.0, 0.0],
18
18
  [0.0, 0.0, 1.0, 0.0],
@@ -20,12 +20,12 @@ class TC_Axes < Test::Unit::TestCase
20
20
  ]
21
21
  )
22
22
 
23
- @a31 = Axes.new( [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0] ] )
24
- @a32 = Axes.new( [ [0.5, 0.5, 0.0], [0.5, 0.0, 0.5], [0.0, 0.5, 0.5] ] )
25
- @a33 = Axes.new( [ [1.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, 1.0] ] )
26
- @a34 = Axes.new( [ [0.5, 0.5, 0.0], [0.5, 0.0, 0.0], [0.0, 0.5, 0.0] ] )
27
- @a35 = Axes.new( [ [1.0, 1.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0] ] )
28
- @a36 = Axes.new( [ [1.0, 1.0, 1.0], [0.0,-1.0,-1.0], [0.0, 0.0, 1.0] ] )
23
+ @a31 = Mageo::Axes.new( [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0] ] )
24
+ @a32 = Mageo::Axes.new( [ [0.5, 0.5, 0.0], [0.5, 0.0, 0.5], [0.0, 0.5, 0.5] ] )
25
+ @a33 = Mageo::Axes.new( [ [1.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, 1.0] ] )
26
+ @a34 = Mageo::Axes.new( [ [0.5, 0.5, 0.0], [0.5, 0.0, 0.0], [0.0, 0.5, 0.0] ] )
27
+ @a35 = Mageo::Axes.new( [ [1.0, 1.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0] ] )
28
+ @a36 = Mageo::Axes.new( [ [1.0, 1.0, 1.0], [0.0,-1.0,-1.0], [0.0, 0.0, 1.0] ] )
29
29
 
30
30
  @vec_x = Vector[ 1.0, 0.0, 0.0 ]
31
31
  @vec_y = Vector[ 0.0, 1.0, 0.0 ]
@@ -35,56 +35,56 @@ class TC_Axes < Test::Unit::TestCase
35
35
  end
36
36
 
37
37
  def test_initialize
38
- assert_raise(Axes::InitializeError) { Axes.new([[]]) }
39
- assert_raise(Axes::InitializeError) { Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) }
40
- assert_raise(Axes::InitializeError) { Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 1.0]]) }
41
- assert_raise(Axes::InitializeError) { Axes.new([[1.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]) }
42
- assert_raise(Axes::InitializeError) { Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0], [0.0, 0.0, 1.0]]) }
43
- assert_raise(Axes::InitializeError) { Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0]]) }
44
- assert_raise(Axes::InitializeError) { Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0, 0.0]]) }
45
-
46
- assert_nothing_raised{ Axes.new([["1.0", "0.0", "0.0"], [0.0, 1.0, 0.0], [0.0, 0.0, 0.0]]) }
47
- assert_nothing_raised{ Axes.new([[1, 0, 0], [0, 1, 0], [0, 0, 0]]) }
38
+ assert_raise(Mageo::Axes::InitializeError) { Mageo::Axes.new([[]]) }
39
+ assert_raise(Mageo::Axes::InitializeError) { Mageo::Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) }
40
+ assert_raise(Mageo::Axes::InitializeError) { Mageo::Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 1.0]]) }
41
+ assert_raise(Mageo::Axes::InitializeError) { Mageo::Axes.new([[1.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]) }
42
+ assert_raise(Mageo::Axes::InitializeError) { Mageo::Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0], [0.0, 0.0, 1.0]]) }
43
+ assert_raise(Mageo::Axes::InitializeError) { Mageo::Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0]]) }
44
+ assert_raise(Mageo::Axes::InitializeError) { Mageo::Axes.new([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0, 0.0]]) }
45
+
46
+ assert_nothing_raised{ Mageo::Axes.new([["1.0", "0.0", "0.0"], [0.0, 1.0, 0.0], [0.0, 0.0, 0.0]]) }
47
+ assert_nothing_raised{ Mageo::Axes.new([[1, 0, 0], [0, 1, 0], [0, 0, 0]]) }
48
48
  end
49
49
 
50
50
  def test_self_dependent?
51
51
  # Righthand
52
- assert_equal( false, Axes.dependent?( [ @vec_x, @vec_y, @vec_z ] ) )
53
- assert_equal( false, Axes.dependent?( [ @vec_y, @vec_z, @vec_x ] ) )
54
- assert_equal( false, Axes.dependent?( [ @vec_z, @vec_x, @vec_y ] ) )
52
+ assert_equal( false, Mageo::Axes.dependent?( [ @vec_x, @vec_y, @vec_z ] ) )
53
+ assert_equal( false, Mageo::Axes.dependent?( [ @vec_y, @vec_z, @vec_x ] ) )
54
+ assert_equal( false, Mageo::Axes.dependent?( [ @vec_z, @vec_x, @vec_y ] ) )
55
55
 
56
56
  # Lefthand
57
- assert_equal( false, Axes.dependent?( [ @vec_z, @vec_y, @vec_x ] ) )
58
- assert_equal( false, Axes.dependent?( [ @vec_x, @vec_z, @vec_y ] ) )
59
- assert_equal( false, Axes.dependent?( [ @vec_y, @vec_x, @vec_z ] ) )
57
+ assert_equal( false, Mageo::Axes.dependent?( [ @vec_z, @vec_y, @vec_x ] ) )
58
+ assert_equal( false, Mageo::Axes.dependent?( [ @vec_x, @vec_z, @vec_y ] ) )
59
+ assert_equal( false, Mageo::Axes.dependent?( [ @vec_y, @vec_x, @vec_z ] ) )
60
60
 
61
61
  # Including zero vector.
62
- assert_equal( true , Axes.dependent?( [ @vec_0, @vec_y, @vec_z ] ) )
63
- assert_equal( true , Axes.dependent?( [ @vec_0, @vec_z, @vec_x ] ) )
64
- assert_equal( true , Axes.dependent?( [ @vec_0, @vec_x, @vec_y ] ) )
62
+ assert_equal( true , Mageo::Axes.dependent?( [ @vec_0, @vec_y, @vec_z ] ) )
63
+ assert_equal( true , Mageo::Axes.dependent?( [ @vec_0, @vec_z, @vec_x ] ) )
64
+ assert_equal( true , Mageo::Axes.dependent?( [ @vec_0, @vec_x, @vec_y ] ) )
65
65
 
66
66
  # One vector is on the plane of residual two vectors.
67
- assert_equal( true , Axes.dependent?( [ @vec_x, @vec_y, @vec_1 ] ) )
67
+ assert_equal( true , Mageo::Axes.dependent?( [ @vec_x, @vec_y, @vec_1 ] ) )
68
68
  end
69
69
 
70
70
  def test_self_independent?
71
71
  # Righthand
72
- assert_equal( true , Axes.independent?( [ @vec_x, @vec_y, @vec_z ] ) )
73
- assert_equal( true , Axes.independent?( [ @vec_y, @vec_z, @vec_x ] ) )
74
- assert_equal( true , Axes.independent?( [ @vec_z, @vec_x, @vec_y ] ) )
72
+ assert_equal( true , Mageo::Axes.independent?( [ @vec_x, @vec_y, @vec_z ] ) )
73
+ assert_equal( true , Mageo::Axes.independent?( [ @vec_y, @vec_z, @vec_x ] ) )
74
+ assert_equal( true , Mageo::Axes.independent?( [ @vec_z, @vec_x, @vec_y ] ) )
75
75
 
76
76
  # Lefthand
77
- assert_equal( true , Axes.independent?( [ @vec_z, @vec_y, @vec_x ] ) )
78
- assert_equal( true , Axes.independent?( [ @vec_x, @vec_z, @vec_y ] ) )
79
- assert_equal( true , Axes.independent?( [ @vec_y, @vec_x, @vec_z ] ) )
77
+ assert_equal( true , Mageo::Axes.independent?( [ @vec_z, @vec_y, @vec_x ] ) )
78
+ assert_equal( true , Mageo::Axes.independent?( [ @vec_x, @vec_z, @vec_y ] ) )
79
+ assert_equal( true , Mageo::Axes.independent?( [ @vec_y, @vec_x, @vec_z ] ) )
80
80
 
81
81
  # Including zero vector.
82
- assert_equal( false, Axes.independent?( [ @vec_0, @vec_y, @vec_z ] ) )
83
- assert_equal( false, Axes.independent?( [ @vec_0, @vec_z, @vec_x ] ) )
84
- assert_equal( false, Axes.independent?( [ @vec_0, @vec_x, @vec_y ] ) )
82
+ assert_equal( false, Mageo::Axes.independent?( [ @vec_0, @vec_y, @vec_z ] ) )
83
+ assert_equal( false, Mageo::Axes.independent?( [ @vec_0, @vec_z, @vec_x ] ) )
84
+ assert_equal( false, Mageo::Axes.independent?( [ @vec_0, @vec_x, @vec_y ] ) )
85
85
 
86
86
  # One vector is on the plane of residual two vectors.
87
- assert_equal( false, Axes.independent?( [ @vec_x, @vec_y, @vec_1 ] ) )
87
+ assert_equal( false, Mageo::Axes.independent?( [ @vec_x, @vec_y, @vec_1 ] ) )
88
88
  end
89
89
 
90
90
  def test_size
@@ -95,17 +95,17 @@ class TC_Axes < Test::Unit::TestCase
95
95
  end
96
96
 
97
97
  def test_equal
98
- assert_equal( true , @a31 == Axes.new( [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0] ] ))
99
- assert_equal( false, @a31 == Axes.new( [ [0.5, 0.5, 0.0], [0.0, 0.5, 0.5], [0.5, 0.0, 0.5] ] ))
100
- assert_equal( false, @a31 == Axes.new( [ [1.0, 1.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0] ] ))
98
+ assert_equal( true , @a31 == Mageo::Axes.new( [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0] ] ))
99
+ assert_equal( false, @a31 == Mageo::Axes.new( [ [0.5, 0.5, 0.0], [0.0, 0.5, 0.5], [0.5, 0.0, 0.5] ] ))
100
+ assert_equal( false, @a31 == Mageo::Axes.new( [ [1.0, 1.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0] ] ))
101
101
 
102
- assert_equal( false, @a32 == Axes.new( [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0] ] ))
103
- assert_equal( true , @a32 == Axes.new( [ [0.5, 0.5, 0.0], [0.5, 0.0, 0.5], [0.0, 0.5, 0.5] ] ))
104
- assert_equal( false, @a32 == Axes.new( [ [1.0, 1.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0] ] ))
102
+ assert_equal( false, @a32 == Mageo::Axes.new( [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0] ] ))
103
+ assert_equal( true , @a32 == Mageo::Axes.new( [ [0.5, 0.5, 0.0], [0.5, 0.0, 0.5], [0.0, 0.5, 0.5] ] ))
104
+ assert_equal( false, @a32 == Mageo::Axes.new( [ [1.0, 1.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0] ] ))
105
105
 
106
- assert_equal( false, @a35 == Axes.new( [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0] ] ))
107
- assert_equal( false, @a35 == Axes.new( [ [0.5, 0.5, 0.0], [0.0, 0.5, 0.5], [0.5, 0.0, 0.5] ] ))
108
- assert_equal( true , @a35 == Axes.new( [ [1.0, 1.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0] ] ))
106
+ assert_equal( false, @a35 == Mageo::Axes.new( [ [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0] ] ))
107
+ assert_equal( false, @a35 == Mageo::Axes.new( [ [0.5, 0.5, 0.0], [0.0, 0.5, 0.5], [0.5, 0.0, 0.5] ] ))
108
+ assert_equal( true , @a35 == Mageo::Axes.new( [ [1.0, 1.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0] ] ))
109
109
  end
110
110
 
111
111
  def test_dependent?