Class: Clusto::Distance
- Inherits:
-
Object
- Object
- Clusto::Distance
- Defined in:
- lib/clusto/distance.rb
Class Method Summary collapse
Class Method Details
.euclidian(pa, pb) ⇒ Object
3 4 5 |
# File 'lib/clusto/distance.rb', line 3 def self.euclidian(pa, pb) Math::sqrt((pa.x - pb.x) ** 2 + (pa.y - pb.y) ** 2) end |
.haversine(pa, pb) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/clusto/distance.rb', line 7 def self.haversine(pa, pb) x = (pb.x - pa.x) * RADIANS_PER_DEGREES y = (pb.y - pa.y) * RADIANS_PER_DEGREES ar = pa.x * RADIANS_PER_DEGREES br = pb.x * RADIANS_PER_DEGREES a = Math.sin(x / 2) ** 2 + Math.cos(ar) * Math.cos(br) * Math.sin(y / 2) ** 2 c = 2 * Math.atan2(Math::sqrt(a), Math::sqrt(1 - a)) GREAT_CIRCLE_RADIUS * c; end |