[Groonga-commit] groonga/groonga [master] test: support to generate calculated distance from 3rd quadrant to 1st one

Back to archive index

HAYASHI Kentaro null+****@clear*****
Fri Nov 2 16:46:49 JST 2012


HAYASHI Kentaro	2012-11-02 16:46:49 +0900 (Fri, 02 Nov 2012)

  New Revision: 2ea20d8e4e0509df2c948bf1f84c2fc25baa46fe
  https://github.com/groonga/groonga/commit/2ea20d8e4e0509df2c948bf1f84c2fc25baa46fe

  Log:
    test: support to generate calculated distance from 3rd quadrant to 1st one

  Modified files:
    test/command/tools/geo/generate-grntest-data.rb

  Modified: test/command/tools/geo/generate-grntest-data.rb (+59 -31)
===================================================================
--- test/command/tools/geo/generate-grntest-data.rb    2012-11-02 15:05:52 +0900 (0690035)
+++ test/command/tools/geo/generate-grntest-data.rb    2012-11-02 16:46:49 +0900 (7cd65d6)
@@ -597,15 +597,26 @@ class GrnTestData
                                                 @latitude_end.to_i)
           end
           (north_distance + south_distance).floor
-        when "1st_to_3rd"
+        when "1st_to_3rd", "3rd_to_1st"
           longitude_delta = @longitude_end_degree - @longitude_start_degree
           latitude_delta = @latitude_end_degree - @latitude_start_degree
           slope = latitude_delta / longitude_delta.to_f
           intercept = @latitude_start_degree - slope * @longitude_start_degree
           longitude_on_equator = -intercept / slope * GRN_GEO_RESOLUTION
+          if @longitude_start_degree > @longitude_end_degree
+            first_longitude = @longitude_start.to_i
+            first_latitude = @latitude_start.to_i
+            third_longitude = @longitude_end.to_i
+            third_latitude = @latitude_end.to_i
+          else
+            first_longitude = @longitude_end.to_i
+            first_latitude = @latitude_end.to_i
+            third_longitude = @longitude_start.to_i
+            third_latitude = @latitude_start.to_i
+          end
           if longitude_on_equator > 0
-            first_distance = calculate_distance(@longitude_start.to_i,
-                                                @latitude_start.to_i,
+            first_distance = calculate_distance(first_longitude,
+                                                first_latitude,
                                                 longitude_on_equator,
                                                 0)
             intermediate_distance = calculate_distance(longitude_on_equator,
@@ -614,12 +625,12 @@ class GrnTestData
                                                        intercept * GRN_GEO_RESOLUTION)
             third_distance = calculate_distance(0,
                                                 intercept * GRN_GEO_RESOLUTION,
-                                                @longitude_end.to_i,
-                                                @latitude_end.to_i)
+                                                third_longitude,
+                                                third_latitude)
             (first_distance + intermediate_distance + third_distance).floor
           elsif longitude_on_equator < 0
-            first_distance = calculate_distance(@longitude_start.to_i,
-                                                @latitude_start.to_i,
+            first_distance = calculate_distance(first_longitude,
+                                                first_latitude,
                                                 0,
                                                 intercept * GRN_GEO_RESOLUTION)
             intermediate_distance = calculate_distance(0,
@@ -628,18 +639,18 @@ class GrnTestData
                                                        0)
             third_distance = calculate_distance(longitude_on_equator,
                                                 0,
-                                                @longitude_end.to_i,
-                                                @latitude_end.to_i)
+                                                third_longitude,
+                                                third_latitude)
             (first_distance + intermediate_distance + third_distance).floor
           else
-            first_distance = calculate_distance(@longitude_start.to_i,
-                                                @latitude_start.to_i,
+            first_distance = calculate_distance(first_longitude,
+                                                first_latitude,
                                                 0,
                                                 0)
             third_distance = calculate_distance(0,
                                                 0,
-                                                @longitude_end.to_i,
-                                                @latitude_end.to_i)
+                                                third_longitude,
+                                                third_latitude)
             (first_distance + third_distance).floor
           end
         when "equator"
@@ -712,34 +723,51 @@ class GrnTestData
                                                180 * GRN_GEO_RESOLUTION,
                                                latitude_on_180 * GRN_GEO_RESOLUTION)
             (east_distance + west_distance).floor
-          when "1st_to_3rd"
-            rounded_longitude = @longitude_end_degree + 360
-            rounded_latitude = @latitude_end_degree
-            longitude_delta = rounded_longitude - @longitude_start_degree
-            latitude_delta = rounded_latitude - @latitude_start_degree
+          when "1st_to_3rd", "3rd_to_1st"
+            if @longitude_start_degree > @longitude_end_degree
+              rounded_longitude_degree = @longitude_end_degree + 360
+              rounded_latitude_degree = @latitude_end_degree
+              base_longitude_degree = @longitude_start_degree
+              base_latitude_degree = @latitude_start_degree
+              base_longitude = @longitude_start.to_i
+              base_latitude = @latitude_start.to_i
+              third_longitude = @longitude_end.to_i
+              third_latitude = @latitude_end.to_i
+            else
+              rounded_longitude_degree = @longitude_start_degree + 360
+              rounded_latitude_degree = @latitude_start_degree
+              base_longitude_degree = @longitude_end_degree
+              base_latitude_degree = @latitude_end_degree
+              base_longitude = @longitude_end.to_i
+              base_latitude = @latitude_end.to_i
+              third_longitude = @longitude_start.to_i
+              third_latitude = @latitude_start.to_i
+            end
+            longitude_delta = rounded_longitude_degree - base_longitude_degree
+            latitude_delta = rounded_latitude_degree - base_latitude_degree
             slope = latitude_delta / longitude_delta.to_f
-            intercept = @latitude_start_degree - slope * @longitude_start_degree
+            intercept = base_latitude_degree - slope * base_longitude_degree
             latitude_on_180 = (slope * 180 + intercept) * GRN_GEO_RESOLUTION
             longitude_on_equator = (-intercept / slope)
             inverted_longitude = (360 - longitude_on_equator) * GRN_GEO_RESOLUTION
             longitude_on_equator *= GRN_GEO_RESOLUTION
             if latitude_on_180 > 0
-              first_distance = calculate_distance(@longitude_start.to_i,
-                                                  @latitude_start.to_i,
+              first_distance = calculate_distance(base_longitude,
+                                                  base_latitude,
                                                   GRN_GEO_180DEGREE_RESOLUTION,
                                                   latitude_on_180)
               intermediate_distance = calculate_distance(GRN_GEO_180DEGREE_RESOLUTION,
                                                          latitude_on_180,
                                                          inverted_longitude,
                                                          0)
-              third_distance = calculate_distance(- �� longitude_end.to_i,
-                                                  @latitude_end.to_i,
+              third_distance = calculate_distance(-third_longitude,
+                                                  third_latitude,
                                                   inverted_longitude,
                                                   0)
               (first_distance + intermediate_distance + third_distance).floor
             elsif latitude_on_180 < 0
-              first_distance = calculate_distance(@longitude_start.to_i,
-                                                  @latitude_start.to_i,
+              first_distance = calculate_distance(base_longitude,
+                                                  base_latitude,
                                                   longitude_on_equator,
                                                   0)
               intermediate_distance = calculate_distance(longitude_on_equator,
@@ -748,18 +776,18 @@ class GrnTestData
                                                          latitude_on_180)
               third_distance = calculate_distance(-GRN_GEO_180DEGREE_RESOLUTION,
                                                   latitude_on_180,
-                                                  @longitude_end.to_i,
-                                                  @latitude_end.to_i)
+                                                  third_longitude,
+                                                  third_latitude)
               (first_distance + intermediate_distance + third_distance).floor
             else
-              first_distance = calculate_distance(@longitude_start.to_i,
-                                                  @latitude_start.to_i,
+              first_distance = calculate_distance(base_longitude,
+                                                  base_latitude,
                                                   GRN_GEO_180DEGREE_RESOLUTION,
                                                   0)
               third_distance = calculate_distance(-GRN_GEO_180DEGREE_RESOLUTION,
                                                   0,
-                                                  @longitude_end.to_i,
-                                                  @latitude_end.to_i)
+                                                  third_longitude,
+                                                  third_latitude)
               (first_distance + third_distance).floor
             end
           end
-------------- next part --------------
HTML����������������������������...
Télécharger 



More information about the Groonga-commit mailing list
Back to archive index