Module: KdTree::Dimensions

Included in:
Tree
Defined in:
lib/ffi-kdtree/dimensions.rb

Constant Summary collapse

DIMENSIONAL_ARRAY_CLASSES =
{}

Instance Method Summary collapse

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

#dimensionsObject



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_positionObject



9
10
11
# File 'lib/ffi-kdtree/dimensions.rb', line 9

def new_position
  KdTree::DimensionArray(dimensions).new
end