Module: KdTree::Dimensions
- Included in:
- Tree
- Defined in:
- lib/ffi-kdtree/dimensions.rb
Constant Summary collapse
- DIMENSIONAL_ARRAY_CLASSES =
{}
Instance Method Summary collapse
- #build_position(ary) ⇒ Object
- #dimensions ⇒ Object
- #distance(from, to) ⇒ Object
- #distance_sq(from, to) ⇒ Object
- #new_position ⇒ Object
Instance Method Details
#build_position(ary) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/ffi-kdtree/dimensions.rb', line 13 def build_position(ary) position = new_position ary.each_with_index do |value, index| position[:pos][index] = value end position end |
#dimensions ⇒ Object
5 6 7 |
# File 'lib/ffi-kdtree/dimensions.rb', line 5 def dimensions self.tree[:dim] end |
#distance(from, to) ⇒ Object
31 32 33 |
# File 'lib/ffi-kdtree/dimensions.rb', line 31 def distance(from, to) Math.sqrt(distance_sq(from, to)) end |
#distance_sq(from, to) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/ffi-kdtree/dimensions.rb', line 21 def distance_sq(from, to) raise "Dimensions must be the same size between positions" unless from.size == to.size sq = 0 from.each_with_index do |value, index| diff = value - to[index] sq += diff * diff end sq end |
#new_position ⇒ Object
9 10 11 |
# File 'lib/ffi-kdtree/dimensions.rb', line 9 def new_position KdTree::DimensionArray(dimensions).new end |