Module: Geometry

Defined in:
lib/geometry/geometry.rb,
lib/geometry/spheroid/base.rb,
lib/geometry/vector/vector.rb,
lib/geometry/spheroid/sphere.rb,
lib/geometry/vector/geo_vector.rb,
lib/geometry/vector/earth_vector.rb

Defined Under Namespace

Modules: Spheroid Classes: EarthVector, GeoVector, Vector

Class Method Summary collapse

Class Method Details

.deg_to_rad(deg) ⇒ Object



3
4
5
# File 'lib/geometry/geometry.rb', line 3

def self.deg_to_rad(deg)
  deg * Math::PI / 180.0
end

.haversine_distance(point_1, point_2, radius, options = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/geometry/geometry.rb', line 11

def self.haversine_distance(point_1,point_2,radius, options = {})
  lat_1 = point_1[0]
  lng_1 = point_1[1]
  lat_2 = point_2[0]
  lng_2 = point_2[1]

  if options[:unit] = :deg
    lat_1 = deg_to_rad(lat_1)
    lng_1 = deg_to_rad(lng_1)
    lat_2 = deg_to_rad(lat_2)
    lng_2 = deg_to_rad(lng_2)
  end

  lat_diff = 0.5 * (lat_2 - lat_1);
  lat_diff = Math.sin(lat_diff);
  lat_diff = lat_diff * lat_diff;

  lng_diff = 0.5 * (lng_2 - lng_1);
  lng_diff = Math.sin(lng_diff);
  lng_diff = lng_diff * lng_diff;

  result = lat_diff;
  result += Math.cos(lat_1) * Math.cos(lat_2) * lng_diff;
  result = Math.sqrt(result);

  return radius * 2 * Math.asin(result);
  
end

.pythagorean_distance(point_1, point_2) ⇒ Object



40
41
42
43
44
45
# File 'lib/geometry/geometry.rb', line 40

def self.pythagorean_distance(point_1, point_2)
  x = point_2[0] - point_1[0]
  y = point_2[1] - point_1[1]

  Math.sqrt(x * x + y * y).abs
end

.rad_to_deg(rad) ⇒ Object



7
8
9
# File 'lib/geometry/geometry.rb', line 7

def self.rad_to_deg(rad)
  (rad * 180.0) / Math::PI 
end