geodesic_wgs84 1.32.1 → 1.32.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7a7022172b287d9a9a44085d1109ac86f468ee6
4
- data.tar.gz: 6b73f57a5fb81bed47234fbf63d4eb49daee44a0
3
+ metadata.gz: c0b5d1d30c466c4e1b8d77c9645649268131e195
4
+ data.tar.gz: 1775ce204604bcdab8baa51ae991905313cdad12
5
5
  SHA512:
6
- metadata.gz: f3a4fb0fdcac3a795c62501062626bacd1c16c22fcdaeda8fb1bf9937ceba475ed5c4d598b6786952a0c6d3a1971de994189b275f317343e350eae50e2274944
7
- data.tar.gz: 64dcc40316c5c783368457cf8fa12b224f713a7d92bd9d1eeea409abd9f78ad42c9636de9984cc9ba7a648840f16b5b64832aaf248d25d9d1873e0742d2c3305
6
+ metadata.gz: 386432a02f9aa2b593d8ac22d5ed97d0ef07be8fc2d6697024a01c4d3f5d8e6bff557ae5efdc97fa903e4209b0a6fae044d49a13a0c5ccbe7efa2c82d172e02b
7
+ data.tar.gz: 144cd6983cc835a2367362774579d2a18235d94cd3727db49d6e3e3e98d958d46049527ea7b2e7b30e8976e5d88c3bdd3459c779c78b643554160933c86028db
data/README.md CHANGED
@@ -43,6 +43,8 @@ Or install it yourself as:
43
43
 
44
44
  wgs84.average ...
45
45
 
46
+ wgs84.center ...
47
+
46
48
  ## Running tests
47
49
 
48
50
  Tests are based on minitest.
@@ -180,6 +180,41 @@ wgs84_average(VALUE klass, VALUE array, VALUE target)
180
180
  }
181
181
 
182
182
 
183
+ static VALUE
184
+ wgs84_center(VALUE klass, VALUE array, VALUE center)
185
+ {
186
+ VALUE tmp, arr_val;
187
+ double min_lat, min_lon, max_lat, max_lon, tmp_lat, tmp_lon;
188
+ int cnt;
189
+
190
+ tmp = rb_check_array_type(center);
191
+ if (NIL_P(tmp))
192
+ rb_raise(rb_eArgError, "invalid (default) argument");
193
+ min_lat = max_lat = wgs84_get_value(rb_ary_entry(tmp, 0));
194
+ min_lon = max_lon = wgs84_get_value(rb_ary_entry(tmp, 1));
195
+
196
+ arr_val = rb_check_convert_type(array, T_ARRAY, "Array", "to_a");
197
+ for (cnt = 0; cnt < RARRAY_LEN(arr_val); cnt++) {
198
+ tmp = rb_check_array_type(rb_ary_entry(arr_val, cnt));
199
+ if (NIL_P(tmp))
200
+ rb_raise(rb_eArgError, "invalid (array) argument");
201
+ tmp_lat = wgs84_get_value(rb_ary_entry(tmp, 0));
202
+ tmp_lon = wgs84_get_value(rb_ary_entry(tmp, 1));
203
+ if (tmp_lat < min_lat)
204
+ min_lat = tmp_lat;
205
+ if (tmp_lon < min_lon)
206
+ min_lon = tmp_lon;
207
+ if (tmp_lat > max_lat)
208
+ max_lat = tmp_lat;
209
+ if (tmp_lon > max_lon)
210
+ max_lon = tmp_lon;
211
+ }
212
+ min_lat = (min_lat + max_lat) / 2.0;
213
+ min_lon = (min_lon + max_lon) / 2.0;
214
+ return rb_ary_new3(2L, rb_float_new(min_lat), rb_float_new(min_lon));
215
+ }
216
+
217
+
183
218
  void
184
219
  Init_geodesic_wgs84(void)
185
220
  {
@@ -188,5 +223,6 @@ Init_geodesic_wgs84(void)
188
223
  rb_define_method(cWGS84, "lat_lon", wgs84_lat_lon, -1);
189
224
  rb_define_method(cWGS84, "distance", wgs84_distance, -1);
190
225
  rb_define_method(cWGS84, "average", wgs84_average, 2);
226
+ rb_define_method(cWGS84, "center", wgs84_center, 2);
191
227
  }
192
228
 
@@ -1,3 +1,3 @@
1
1
  module GeodesicWgs84
2
- VERSION = "1.32.1"
2
+ VERSION = "1.32.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geodesic_wgs84
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.32.1
4
+ version: 1.32.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Volker Wiegand
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  version: '0'
81
81
  requirements: []
82
82
  rubyforge_project:
83
- rubygems_version: 2.2.2
83
+ rubygems_version: 2.4.2
84
84
  signing_key:
85
85
  specification_version: 4
86
86
  summary: Calculate distances on Earth using WGS84