sixarm_ruby_geometry 3.0.0

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.
Files changed (70) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Rakefile +18 -0
  5. data/lib/sixarm_ruby_geometry.rb +41 -0
  6. data/lib/sixarm_ruby_geometry/indexable.rb +7 -0
  7. data/lib/sixarm_ruby_geometry/indexable/d1.rb +12 -0
  8. data/lib/sixarm_ruby_geometry/indexable/d2.rb +12 -0
  9. data/lib/sixarm_ruby_geometry/indexable/d3.rb +12 -0
  10. data/lib/sixarm_ruby_geometry/indexable/pitch.rb +15 -0
  11. data/lib/sixarm_ruby_geometry/indexable/rad.rb +15 -0
  12. data/lib/sixarm_ruby_geometry/indexable/width.rb +20 -0
  13. data/lib/sixarm_ruby_geometry/indexable/width_height.rb +30 -0
  14. data/lib/sixarm_ruby_geometry/indexable/width_height_depth.rb +40 -0
  15. data/lib/sixarm_ruby_geometry/indexable/x.rb +18 -0
  16. data/lib/sixarm_ruby_geometry/indexable/xy.rb +26 -0
  17. data/lib/sixarm_ruby_geometry/indexable/xyz.rb +40 -0
  18. data/lib/sixarm_ruby_geometry/indexable/yaw.rb +15 -0
  19. data/lib/sixarm_ruby_geometry/point.rb +7 -0
  20. data/lib/sixarm_ruby_geometry/point/array.rb +12 -0
  21. data/lib/sixarm_ruby_geometry/point/array/d1.rb +14 -0
  22. data/lib/sixarm_ruby_geometry/point/array/d2.rb +14 -0
  23. data/lib/sixarm_ruby_geometry/point/array/d3.rb +14 -0
  24. data/lib/sixarm_ruby_geometry/point/vector.rb +12 -0
  25. data/lib/sixarm_ruby_geometry/point/vector/d1.rb +14 -0
  26. data/lib/sixarm_ruby_geometry/point/vector/d2.rb +14 -0
  27. data/lib/sixarm_ruby_geometry/point/vector/d3.rb +14 -0
  28. data/lib/sixarm_ruby_geometry/space.rb +7 -0
  29. data/lib/sixarm_ruby_geometry/space/array.rb +12 -0
  30. data/lib/sixarm_ruby_geometry/space/array/d1.rb +14 -0
  31. data/lib/sixarm_ruby_geometry/space/array/d2.rb +14 -0
  32. data/lib/sixarm_ruby_geometry/space/array/d3.rb +14 -0
  33. data/lib/sixarm_ruby_geometry/space/vector.rb +12 -0
  34. data/lib/sixarm_ruby_geometry/space/vector/d1.rb +14 -0
  35. data/lib/sixarm_ruby_geometry/space/vector/d2.rb +14 -0
  36. data/lib/sixarm_ruby_geometry/space/vector/d3.rb +14 -0
  37. data/test/sixarm_ruby_geometry_test.rb +1 -0
  38. data/test/sixarm_ruby_geometry_test/indexable/d1_test.rb +34 -0
  39. data/test/sixarm_ruby_geometry_test/indexable/d2_test.rb +36 -0
  40. data/test/sixarm_ruby_geometry_test/indexable/d3_test.rb +38 -0
  41. data/test/sixarm_ruby_geometry_test/indexable/pitch_test.rb +36 -0
  42. data/test/sixarm_ruby_geometry_test/indexable/rad_test.rb +31 -0
  43. data/test/sixarm_ruby_geometry_test/indexable/width_height_depth_test.rb +70 -0
  44. data/test/sixarm_ruby_geometry_test/indexable/width_height_test.rb +56 -0
  45. data/test/sixarm_ruby_geometry_test/indexable/width_test.rb +42 -0
  46. data/test/sixarm_ruby_geometry_test/indexable/x_test.rb +42 -0
  47. data/test/sixarm_ruby_geometry_test/indexable/xy_test.rb +56 -0
  48. data/test/sixarm_ruby_geometry_test/indexable/xyz_test.rb +72 -0
  49. data/test/sixarm_ruby_geometry_test/indexable/yaw_test.rb +31 -0
  50. data/test/sixarm_ruby_geometry_test/indexable_test.rb +31 -0
  51. data/test/sixarm_ruby_geometry_test/point/array/d1_test.rb +35 -0
  52. data/test/sixarm_ruby_geometry_test/point/array/d2_test.rb +37 -0
  53. data/test/sixarm_ruby_geometry_test/point/array/d3_test.rb +39 -0
  54. data/test/sixarm_ruby_geometry_test/point/array_test.rb +33 -0
  55. data/test/sixarm_ruby_geometry_test/point/vector/d1_test.rb +36 -0
  56. data/test/sixarm_ruby_geometry_test/point/vector/d2_test.rb +38 -0
  57. data/test/sixarm_ruby_geometry_test/point/vector/d3_test.rb +40 -0
  58. data/test/sixarm_ruby_geometry_test/point/vector_test.rb +34 -0
  59. data/test/sixarm_ruby_geometry_test/point_test.rb +25 -0
  60. data/test/sixarm_ruby_geometry_test/space/array/d1_test.rb +35 -0
  61. data/test/sixarm_ruby_geometry_test/space/array/d2_test.rb +37 -0
  62. data/test/sixarm_ruby_geometry_test/space/array/d3_test.rb +39 -0
  63. data/test/sixarm_ruby_geometry_test/space/array_test.rb +33 -0
  64. data/test/sixarm_ruby_geometry_test/space/vector/d1_test.rb +36 -0
  65. data/test/sixarm_ruby_geometry_test/space/vector/d2_test.rb +38 -0
  66. data/test/sixarm_ruby_geometry_test/space/vector/d3_test.rb +40 -0
  67. data/test/sixarm_ruby_geometry_test/space/vector_test.rb +34 -0
  68. data/test/sixarm_ruby_geometry_test/space_test.rb +25 -0
  69. metadata +262 -0
  70. metadata.gz.sig +0 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: eedd0bba34e7feed95380845cb2fef6a5209da2a
4
+ data.tar.gz: 8778ff4c945d83045655413b80cf48bd2ce10519
5
+ SHA512:
6
+ metadata.gz: c3df36dec2056d227ecd60314ac0afc140f530da2eae4bf5b5ade559ec218d749ff6a0edbdc54c410a255256ad964f9a294738dd141a389a206779f99a3c5b17
7
+ data.tar.gz: e0552060e12e25e88ee913d269f8c374c38a94f1e4de49b873c99e81c541675e1e1810ae5a892ccf61400b099f367542e8bd95aeba0b203bba3c7a2a5b5c9b40
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
Binary file
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "rake"
3
+ require "rake/testtask"
4
+
5
+ task :default => :test
6
+
7
+ $:<<'lib'
8
+
9
+ task :test do
10
+ require "simplecov"
11
+ SimpleCov.start do
12
+ add_filter "/test/"
13
+ end
14
+ $:<<'test'
15
+ Dir.glob('./test/**/*.rb').each{|file| require file }
16
+ end
17
+
18
+ task :default => [:test]
@@ -0,0 +1,41 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require "matrix"
4
+
5
+ SOURCES = %w"5
6
+ point
7
+ point/array
8
+ point/array/d1
9
+ point/array/d2
10
+ point/array/d3
11
+ point/vector
12
+ point/vector/d1
13
+ point/vector/d2
14
+ point/vector/d3
15
+ indexable
16
+ indexable/d1
17
+ indexable/d2
18
+ indexable/d3
19
+ indexable/pitch
20
+ indexable/rad
21
+ indexable/width
22
+ indexable/width_height
23
+ indexable/width_height_depth
24
+ indexable/x
25
+ indexable/xy
26
+ indexable/xyz
27
+ indexable/yaw
28
+ space
29
+ space/array
30
+ space/array/d1
31
+ space/array/d2
32
+ space/array/d3
33
+ space/vector
34
+ space/vector/d1
35
+ space/vector/d2
36
+ space/vector/d3
37
+ "
38
+
39
+ SOURCES.map{|x|
40
+ require File.dirname(__FILE__) + "/sixarm_ruby_geometry/#{x}.rb"
41
+ }
@@ -0,0 +1,7 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Indexable, i.e. responds to [].
5
+ #
6
+ module Indexable
7
+ end
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Indexable by dimension.
5
+ #
6
+ # * Intended to be implemented via [].
7
+ # * Intended to be 1-dimensional.
8
+ #
9
+ module Indexable
10
+ module D1
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Indexable by dimension.
5
+ #
6
+ # * Intended to be implemented via [].
7
+ # * Intended to be 2-dimensional.
8
+ #
9
+ module Indexable
10
+ module D2
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Indexable by dimension.
5
+ #
6
+ # * Intended to be implemented via [].
7
+ # * Intended to be 3-dimensional.
8
+ #
9
+ module Indexable
10
+ module D3
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Indexable #pitch method.
5
+ #
6
+ module Indexable
7
+ module Pitch
8
+
9
+ # Calculate the xy-plane angle to the z-coordinate.
10
+ def pitch
11
+ Math::atan2(self[2], Math::sqrt(self[0]**2 + self[1]**2))
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Indexable #rad method.
5
+ #
6
+ module Indexable
7
+ module Rad
8
+
9
+ # Calculate the xy angle in radians.
10
+ def rad
11
+ Math::atan2(self[1],self[0])
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Accessors for #width.
5
+ #
6
+ module Indexable
7
+ module Width
8
+
9
+ # Get width.
10
+ def width
11
+ self[0]
12
+ end
13
+
14
+ # Set width.
15
+ def width=(width)
16
+ self[0]=width
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Accessors for #width, #height.
5
+ #
6
+ module Indexable
7
+ module WidthHeight
8
+
9
+ # Get width.
10
+ def width
11
+ self[0]
12
+ end
13
+
14
+ # Set width.
15
+ def width=(width)
16
+ self[0]=width
17
+ end
18
+
19
+ # Get height.
20
+ def height
21
+ self[1]
22
+ end
23
+
24
+ # Set height.
25
+ def height=(height)
26
+ self[1]=height
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,40 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Accessors for #width, #height, #depth.
5
+ #
6
+ module Indexable
7
+ module WidthHeightDepth
8
+
9
+ # Get width.
10
+ def width
11
+ self[0]
12
+ end
13
+
14
+ # Set width.
15
+ def width=(width)
16
+ self[0]=width
17
+ end
18
+
19
+ # Get height.
20
+ def height
21
+ self[1]
22
+ end
23
+
24
+ # Set height.
25
+ def height=(height)
26
+ self[1]=height
27
+ end
28
+
29
+ # Get depth.
30
+ def depth
31
+ self[2]
32
+ end
33
+
34
+ # Set depth.
35
+ def depth=(depth)
36
+ self[2]=depth
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Accessors for #x.
5
+ #
6
+ module Indexable
7
+ module X
8
+
9
+ def x
10
+ self[0]
11
+ end
12
+
13
+ def x=(x)
14
+ self[0]=x
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Accessors for #x, #y.
5
+ #
6
+ module Indexable
7
+ module XY
8
+
9
+ def x
10
+ self[0]
11
+ end
12
+
13
+ def x=(x)
14
+ self[0]=x
15
+ end
16
+
17
+ def y
18
+ self[1]
19
+ end
20
+
21
+ def y=(y)
22
+ self[1]=y
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,40 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Accessors for #x, #y, #z.
5
+ #
6
+ module Indexable
7
+ module XYZ
8
+
9
+ # Get x.
10
+ def x
11
+ self[0]
12
+ end
13
+
14
+ # Set x.
15
+ def x=(x)
16
+ self[0]=x
17
+ end
18
+
19
+ # Get y.
20
+ def y
21
+ self[1]
22
+ end
23
+
24
+ # Set y.
25
+ def y=(y)
26
+ self[1]=y
27
+ end
28
+
29
+ # Get z.
30
+ def z
31
+ self[2]
32
+ end
33
+
34
+ # Set z.
35
+ def z=(z)
36
+ self[2]=z
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,15 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # Indexable #yaw method.
5
+ #
6
+ module Indexable
7
+ module Yaw
8
+
9
+ # Calculate the xy-plane angle in radians.
10
+ def yaw
11
+ Math::atan2(-self[1],self[0])
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # A generic geometery point.
5
+ #
6
+ module Point
7
+ end
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # A generic geometery point.
5
+ #
6
+ # * Intended to be implemented via Array.
7
+ # * Intended to be N-dimensional.
8
+ #
9
+ module Point
10
+ module Array
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # A generic geometery point.
5
+ #
6
+ # * Intended to be implemented via Array.
7
+ # * Intended to be 1-dimensional.
8
+ #
9
+ module Point
10
+ module Array
11
+ module D1
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # A generic geometery point.
5
+ #
6
+ # * Intended to be implemented via Array.
7
+ # * Intended to be 2-dimensional.
8
+ #
9
+ module Point
10
+ module Array
11
+ module D2
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # A generic geometery point.
5
+ #
6
+ # * Intended to be implemented via Array.
7
+ # * Intended to be 3-dimensional.
8
+ #
9
+ module Point
10
+ module Array
11
+ module D3
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ##
4
+ # A generic geometery point.
5
+ #
6
+ # * Intended to be implemented via Vector.
7
+ # * Intended to be N-dimensional.
8
+ #
9
+ module Point
10
+ module Vector
11
+ end
12
+ end