Method: Quant::Mixins::Functions#angle

Defined in:
lib/quant/mixins/functions.rb

#angle(line1, line2) ⇒ Object

d = dx1*dx2 + dy1*dy2; // dot product of the 2 vectors l2 = (dx1*dx1+dy1*dy1)*(dx2*dx2+dy2*dy2) // product of the squared lengths



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/quant/mixins/functions.rb', line 44

def angle(line1, line2)
  dx1 = line2[0][0] - line1[0][0]
  dy1 = line2[0][1] - line1[0][1]
  dx2 = line2[1][0] - line1[1][0]
  dy2 = line2[1][1] - line1[1][1]

  d = dx1 * dx2 + dy1 * dy2
  l2 = ((dx1**2 + dy1**2) * (dx2**2 + dy2**2))

  radians = d.to_f / Math.sqrt(l2)
  value = rad2deg Math.acos(radians)

  value.nan? ? 0.0 : value
end