vector2d 0.0.5 → 0.5.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/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Inge Jørgensen
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,32 @@
1
+ == Vector2d
2
+
3
+ Vector2d allows for easy handling of two-dimensionals coordinates and vectors.
4
+ It's very flexible, most methods accepts arguments as strings, arrays, hashes
5
+ or Vector2d objects.
6
+
7
+ == Licence
8
+
9
+ (The MIT License)
10
+
11
+ Copyright (c) 2006-2009 Inge Jørgensen
12
+
13
+ Permission is hereby granted, free of charge, to any person
14
+ obtaining a copy of this software and associated documentation
15
+ files (the "Software"), to deal in the Software without
16
+ restriction, including without limitation the rights to use,
17
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the
19
+ Software is furnished to do so, subject to the following
20
+ conditions:
21
+
22
+ The above copyright notice and this permission notice shall be
23
+ included in all copies or substantial portions of the Software.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
27
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
29
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
30
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
32
+ OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,83 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "vector2d"
8
+ gem.summary = %Q{Vector2d allows for easy handling of two-dimensionals coordinates and vectors}
9
+ gem.email = "inge@elektronaut.no"
10
+ gem.homepage = "http://github.com/elektronaut/vector2d"
11
+ gem.authors = ["Inge Jørgensen"]
12
+ gem.rubyforge_project = 'vector2d'
13
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
+ end
15
+
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
18
+ end
19
+
20
+ require 'rake/testtask'
21
+ Rake::TestTask.new(:test) do |test|
22
+ test.libs << 'lib' << 'test'
23
+ test.pattern = 'test/**/*_test.rb'
24
+ test.verbose = true
25
+ end
26
+
27
+ begin
28
+ require 'rcov/rcovtask'
29
+ Rcov::RcovTask.new do |test|
30
+ test.libs << 'test'
31
+ test.pattern = 'test/**/*_test.rb'
32
+ test.verbose = true
33
+ end
34
+ rescue LoadError
35
+ task :rcov do
36
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
37
+ end
38
+ end
39
+
40
+ begin
41
+ require 'rake/contrib/sshpublisher'
42
+ namespace :rubyforge do
43
+
44
+ desc "Release gem and RDoc documentation to RubyForge"
45
+ task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
46
+
47
+ namespace :release do
48
+ desc "Publish RDoc to RubyForge."
49
+ task :docs => [:rdoc] do
50
+ config = YAML.load(
51
+ File.read(File.expand_path('~/.rubyforge/user-config.yml'))
52
+ )
53
+
54
+ host = "#{config['username']}@rubyforge.org"
55
+ remote_dir = "/var/www/gforge-projects/the-perfect-gem/"
56
+ local_dir = 'rdoc'
57
+
58
+ Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
59
+ end
60
+ end
61
+ end
62
+ rescue LoadError
63
+ puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
64
+ end
65
+
66
+ task :default => :test
67
+
68
+ require 'rake/rdoctask'
69
+ Rake::RDocTask.new do |rdoc|
70
+ if File.exist?('VERSION.yml')
71
+ config = YAML.load(File.read('VERSION.yml'))
72
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
73
+ else
74
+ version = ""
75
+ end
76
+
77
+ rdoc.rdoc_dir = 'rdoc'
78
+ rdoc.title = "vector2d #{version}"
79
+ rdoc.rdoc_files.include('README*')
80
+ rdoc.rdoc_files.include('lib/**/*.rb')
81
+ end
82
+
83
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.5.2
data/lib/vector2d.rb CHANGED
@@ -1,157 +1,151 @@
1
- #--
2
- # Copyright (c) 2006 Inge Jørgensen <inge@elektronaut.no>
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- #++
23
-
24
-
25
- # Class for for easy handling of two-dimensional coordinates. It's forte is argument flexibility,
26
- # methods that take vectors accepts arguments in many forms. See Vector2d.new for details and examples.
27
- class Vector2d
28
-
29
- # X axis
30
- attr_accessor :x
31
- # Y axis
32
- attr_accessor :y
33
-
34
-
35
-
36
- # Create a new vector from args. The following examples are equal:
37
- # Vector2d.new( 150, 100 )
38
- # Vector2d.new( 150.0, 100.0 )
39
- # Vector2d.new( "150x100" )
40
- # Vector2d.new( "150.0x100.0" )
41
- # Vector2d.new( [150,100} )
42
- # Vector2d.new( { :x => 150, :y => 100 } )
43
- # Vector2d.new( { "x" => 150.0, "y" => 100.0 } )
44
- # Vector2d.new( Vector2d.new( 150, 100 ) )
45
- def initialize( *args )
46
- args.flatten!
47
- if ( args.length == 1 )
48
- if ( args[0].kind_of?( String ) && args[0].match( /^[\s]*[\d\.]*[\s]*x[\s]*[\d\.]*[\s]*$/ ) )
49
- args = args[0].split( "x" )
50
- elsif args[0].kind_of?( Vector2d )
51
- args = [ args[0].x, args[0].y ]
52
- elsif args[0].kind_of?( Hash )
53
- args[0] = args[0][:x] if args[0][:x]
54
- args[0] = args[0]["x"] if args[0]["x"]
55
- args[1] = args[0][:y] if args[0][:y]
56
- args[1] = args[0]["y"] if args[0]["y"]
57
- else
58
- args = [ args[0], args[0] ]
59
- end
60
- end
61
- @x, @y = args[0].to_f, args[1].to_f
62
- end
63
-
64
-
65
-
66
- # Compare two vectors
67
- def ==( comp )
68
- ( comp.x == @x && comp.y == y )
69
- end
70
-
71
-
72
-
73
- # Get a String representation of vector.
74
- # Vector2d.new( 150, 100 ).to_s # "150x100"
75
- def to_s; "#{@x}x#{@y}"; end
76
-
77
-
78
-
79
- # Get length of vector.
80
- def length; Math.sqrt((@x*@x)+(@y*@y)); end
81
-
82
- # Set new length.
83
- def length= ( new_length )
84
- v = self * (new_length/length)
85
- @x, @y = v.x, v.y
86
- end
87
-
88
-
89
-
90
- # Normalize vector (set length to 1.0)
91
- def normalize; self.dup.normalize!; end
92
- # In-place form of Vector2d.normalize.
93
- def normalize!; length = 1.0; self; end
94
-
95
-
96
- # Round coordinates to nearest integer.
97
- def round; self.dup.round!; end
98
- # In-place form of Vector2d.round.
99
- def round!; @x, @y = @x.round, @y.round; self; end
100
-
101
-
102
- # Get the aspect ratio of the vector, returns a Float.
103
- def aspect_ratio; (@x/@y).abs; end
104
-
105
-
106
-
107
- # Multiply vectors. If args is a single Numeric, both axis will be multiplied.
108
- def * ( *vector_or_number ); v = Vector2d::new( vector_or_number ); Vector2d.new( @x * v.x, @y * v.y ); end
109
- # Divide vectors. If args is a single Numeric, both axis will be divided.
110
- def / ( *vector_or_number ); v = Vector2d::new( vector_or_number ); Vector2d.new( @x / v.x, @y / v.y ); end
111
- # Add vectors. If args is a single Numeric, it will be added to both axis.
112
- def + ( *vector_or_number ); v = Vector2d::new( vector_or_number ); Vector2d.new( @x + v.x, @y + v.y ); end
113
- # Subtract vectors. If args is a single Numeric, it will be subtracted from both axis.
114
- def - ( *vector_or_number ); v = Vector2d::new( vector_or_number ); Vector2d.new( @x - v.x, @y - v.y ); end
115
-
116
-
117
-
118
- # Constrain/expand so that both coordinates fit within (the square implied by) another vector.
119
- # This is useful for resizing images to fit a certain size while keeping aspect ratio.
120
- #
121
- # == Examples
122
- #
123
- # my_image = Vector2d.new( "320x200" ) # Creates a new vector object
124
- # my_image.constrain_both( 100 ) # Returns a new vector: x=100, y=63
125
- # my_image.constrain_both( 150, 50 ) # Returns a new vector: x=80, y=50
126
- # my_image.constrain_both( "150x50" ) # Equal to constrain_both( 150, 50 )
127
- # my_image.constrain_both( "x100" ) # Returns a new vector: x=160, y=100
128
- #
129
- # == Note
130
- #
131
- # Either axis will be disregarded if zero or nil (see the last example). This is a feature, not a bug. ;)
132
- def constrain_both( *vector_or_number )
133
- scale = Vector2d::new( vector_or_number ) / self
134
- ( self * ( (scale.y==0||(scale.x>0&&scale.x<scale.y) ) ? scale.x : scale.y ) )
135
- end
136
-
137
-
138
-
139
- # Constrain/expand so that one of the coordinates fit within (the square implied by) another vector.
140
- #
141
- # == Example
142
- #
143
- # my_image = Vector2d.new( "320x200" ) # Creates a new vector object
144
- # my_image.constrain_one( 100, 100 ) # Returns a new vector: x=160, y=100
145
- def constrain_one( *vector_or_number )
146
- scale = Vector2d::new( vector_or_number ) / self
147
- if ( scale.x > 0 && scale.y > 0 )
148
- scale = ( scale.x<scale.y) ? scale.y : scale.x
149
- self * scale
150
- else
151
- constrain_both( args )
152
- end
153
- end
154
-
155
- end #class Vector2d
156
-
157
-
1
+ # Vector2d allows for easy handling of two-dimensionals coordinates and vectors.
2
+ # It's very flexible, most methods accepts arguments as strings, arrays, hashes
3
+ # or Vector2d objects.
4
+ class Vector2d
5
+
6
+ # X axis
7
+ attr_accessor :x
8
+ # Y axis
9
+ attr_accessor :y
10
+
11
+ # Creates a new vector.
12
+ # The following examples are all valid:
13
+ #
14
+ # Vector2d.new(150, 100)
15
+ # Vector2d.new(150.0, 100.0)
16
+ # Vector2d.new("150x100")
17
+ # Vector2d.new("150.0x100.0")
18
+ # Vector2d.new([150,100})
19
+ # Vector2d.new({:x => 150, :y => 100})
20
+ # Vector2d.new({"x" => 150.0, "y" => 100.0})
21
+ # Vector2d.new(Vector2d.new(150, 100))
22
+ def initialize(*args)
23
+ args.flatten!
24
+ if (args.length == 1)
25
+ if (args[0].kind_of?(String) && args[0].match(/^[\s]*[\d\.]*[\s]*x[\s]*[\d\.]*[\s]*$/))
26
+ args = args[0].split("x")
27
+ elsif args[0].kind_of?(Vector2d)
28
+ args = [args[0].x, args[0].y]
29
+ elsif args[0].kind_of?(Hash)
30
+ args[0] = args[0][:x] if args[0][:x]
31
+ args[0] = args[0]["x"] if args[0]["x"]
32
+ args[1] = args[0][:y] if args[0][:y]
33
+ args[1] = args[0]["y"] if args[0]["y"]
34
+ else
35
+ args = [args[0], args[0]]
36
+ end
37
+ end
38
+ @x, @y = args[0].to_f, args[1].to_f
39
+ end
40
+
41
+ # Compares two vectors.
42
+ def ==(comp)
43
+ ( comp.x == @x && comp.y == y )
44
+ end
45
+
46
+ # Returns a string representation of the vector.
47
+ #
48
+ # Example:
49
+ # Vector2d.new( 150, 100 ).to_s # "150x100"
50
+ def to_s
51
+ "#{@x}x#{@y}"
52
+ end
53
+
54
+ # Length of vector
55
+ def length
56
+ Math.sqrt((@x*@x)+(@y*@y))
57
+ end
58
+
59
+ # Set new length.
60
+ def length=(new_length)
61
+ v = self * (new_length/length)
62
+ @x, @y = v.x, v.y
63
+ end
64
+
65
+ # Returns a normalized (length = 1.0) version of the vector.
66
+ def normalize
67
+ self.dup.normalize!
68
+ end
69
+
70
+ # In-place form of Vector2d.normalize.
71
+ def normalize!
72
+ self.length = 1.0
73
+ self
74
+ end
75
+
76
+ # Rounds coordinates to nearest integer.
77
+ def round
78
+ self.dup.round!
79
+ end
80
+
81
+ # In-place form of Vector2d.round.
82
+ def round!
83
+ @x, @y = @x.round, @y.round
84
+ self
85
+ end
86
+
87
+ # Returns the aspect ratio of the vector.
88
+ def aspect_ratio
89
+ (@x/@y).abs
90
+ end
91
+
92
+ # Multiply vectors. If args is a single Numeric, both axis will be multiplied.
93
+ def *(*vector_or_number)
94
+ v = Vector2d::new(vector_or_number)
95
+ Vector2d.new(@x*v.x, @y*v.y)
96
+ end
97
+
98
+ # Divide vectors. If args is a single Numeric, both axis will be divided.
99
+ def /(*vector_or_number)
100
+ v = Vector2d::new(vector_or_number)
101
+ Vector2d.new(@x/v.x, @y/v.y)
102
+ end
103
+
104
+ # Add vectors. If args is a single Numeric, it will be added to both axis.
105
+ def +(*vector_or_number)
106
+ v = Vector2d::new(vector_or_number)
107
+ Vector2d.new(@x+v.x, @y+v.y)
108
+ end
109
+
110
+ # Subtract vectors. If args is a single Numeric, it will be subtracted from both axis.
111
+ def -(*vector_or_number)
112
+ v = Vector2d::new(vector_or_number)
113
+ Vector2d.new(@x-v.x, @y-v.y)
114
+ end
115
+
116
+ # Constrain/expand so that both coordinates fit within (the square implied by) another vector.
117
+ # This is useful for resizing images to fit a certain size while keeping aspect ratio.
118
+ #
119
+ # == Examples
120
+ #
121
+ # my_image = Vector2d.new("320x200") # Creates a new vector object
122
+ # my_image.constrain_both(100) # Returns a new vector: x=100, y=63
123
+ # my_image.constrain_both(150, 50) # Returns a new vector: x=80, y=50
124
+ # my_image.constrain_both("150x50") # Equal to constrain_both( 150, 50 )
125
+ # my_image.constrain_both("x100") # Returns a new vector: x=160, y=100
126
+ #
127
+ # == Note
128
+ #
129
+ # Either axis will be disregarded if zero or nil (see the last example). This is a feature, not a bug. ;)
130
+ def constrain_both(*vector_or_number)
131
+ scale = Vector2d::new(vector_or_number) / self
132
+ (self * ((scale.y==0||(scale.x>0&&scale.x<scale.y)) ? scale.x : scale.y))
133
+ end
134
+
135
+ # Constrain/expand so that one of the coordinates fit within (the square implied by) another vector.
136
+ #
137
+ # == Example
138
+ #
139
+ # my_image = Vector2d.new("320x200") # Creates a new vector object
140
+ # my_image.constrain_one(100, 100) # Returns a new vector: x=160, y=100
141
+ def constrain_one( *vector_or_number )
142
+ scale = Vector2d::new(vector_or_number) / self
143
+ if (scale.x > 0 && scale.y > 0)
144
+ scale = (scale.x<scale.y) ? scale.y : scale.x
145
+ self * scale
146
+ else
147
+ constrain_both(args)
148
+ end
149
+ end
150
+
151
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'vector2d'
8
+
9
+ class Test::Unit::TestCase
10
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class Vector2dTest < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
data/vector2d.gemspec ADDED
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{vector2d}
5
+ s.version = "0.5.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Inge J\303\270rgensen"]
9
+ s.date = %q{2009-05-20}
10
+ s.email = %q{inge@elektronaut.no}
11
+ s.extra_rdoc_files = [
12
+ "LICENSE",
13
+ "README.rdoc"
14
+ ]
15
+ s.files = [
16
+ ".document",
17
+ ".gitignore",
18
+ "LICENSE",
19
+ "README.rdoc",
20
+ "Rakefile",
21
+ "VERSION",
22
+ "lib/vector2d.rb",
23
+ "test/test_helper.rb",
24
+ "test/vector2d_test.rb",
25
+ "vector2d.gemspec"
26
+ ]
27
+ s.has_rdoc = true
28
+ s.homepage = %q{http://github.com/elektronaut/vector2d}
29
+ s.rdoc_options = ["--charset=UTF-8"]
30
+ s.require_paths = ["lib"]
31
+ s.rubyforge_project = %q{vector2d}
32
+ s.rubygems_version = %q{1.3.1}
33
+ s.summary = %q{Vector2d allows for easy handling of two-dimensionals coordinates and vectors}
34
+ s.test_files = [
35
+ "test/test_helper.rb",
36
+ "test/vector2d_test.rb"
37
+ ]
38
+
39
+ if s.respond_to? :specification_version then
40
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
41
+ s.specification_version = 2
42
+
43
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
44
+ else
45
+ end
46
+ else
47
+ end
48
+ end
metadata CHANGED
@@ -1,46 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
3
- specification_version: 1
4
2
  name: vector2d
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.0.5
7
- date: 2006-12-10 00:00:00 +01:00
8
- summary: A simplistic class for handling two-dimensional vectors.
9
- require_paths:
10
- - lib
11
- email: inge@elektronaut.no
12
- homepage: http://rubyforge.org/projects/vector2d/
13
- rubyforge_project: vector2d
14
- description:
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: false
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.5.2
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - "Inge J\xC3\xB8rgensen"
31
- files:
32
- - lib/vector2d.rb
33
- test_files: []
34
-
35
- rdoc_options: []
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
36
11
 
37
- extra_rdoc_files: []
12
+ date: 2009-05-20 00:00:00 +02:00
13
+ default_executable:
14
+ dependencies: []
38
15
 
16
+ description:
17
+ email: inge@elektronaut.no
39
18
  executables: []
40
19
 
41
20
  extensions: []
42
21
 
22
+ extra_rdoc_files:
23
+ - LICENSE
24
+ - README.rdoc
25
+ files:
26
+ - .document
27
+ - .gitignore
28
+ - LICENSE
29
+ - README.rdoc
30
+ - Rakefile
31
+ - VERSION
32
+ - lib/vector2d.rb
33
+ - test/test_helper.rb
34
+ - test/vector2d_test.rb
35
+ - vector2d.gemspec
36
+ has_rdoc: true
37
+ homepage: http://github.com/elektronaut/vector2d
38
+ post_install_message:
39
+ rdoc_options:
40
+ - --charset=UTF-8
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ version:
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
43
55
  requirements: []
44
56
 
45
- dependencies: []
46
-
57
+ rubyforge_project: vector2d
58
+ rubygems_version: 1.3.1
59
+ signing_key:
60
+ specification_version: 2
61
+ summary: Vector2d allows for easy handling of two-dimensionals coordinates and vectors
62
+ test_files:
63
+ - test/test_helper.rb
64
+ - test/vector2d_test.rb