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
|