[Groonga-commit] groonga/groonga [master] geo: remove redundant calculations

Back to archive index

null+****@clear***** null+****@clear*****
2012年 6月 11日 (月) 14:20:42 JST


HAYASHI Kentaro	2012-06-11 14:20:42 +0900 (Mon, 11 Jun 2012)

  New Revision: 70aca846854904131132ac61ccb3431ef0d0d308

  Log:
    geo: remove redundant calculations
    
    refs #1387

  Modified files:
    lib/geo.c

  Modified: lib/geo.c (+6 -14)
===================================================================
--- lib/geo.c    2012-06-09 23:24:03 +0900 (86fac1a)
+++ lib/geo.c    2012-06-11 14:20:42 +0900 (3975959)
@@ -1911,21 +1911,13 @@ static inline double
 geo_distance_rectangle_abs(double start_longitude, double start_latitude,
                            double end_longitude, double end_latitude)
 {
-  double rad_start_latitude, rad_start_longitude;
-  double rad_end_latitude, rad_end_longitude;
-  double diff_longitude, diff_latitude, sum_latitude;
+  double diff_longitude;
   double x, y;
 
-  rad_start_latitude = fabs(start_latitude);
-  rad_start_longitude = fabs(start_longitude);
-  rad_end_latitude = fabs(end_latitude);
-  rad_end_longitude = fabs(end_longitude);
-  diff_longitude = rad_end_longitude - rad_start_longitude;
-  sum_latitude = rad_start_latitude + rad_end_latitude;
-  diff_latitude = rad_end_latitude - rad_start_latitude;
-  x = diff_longitude * cos(sum_latitude * 0.5);
-  y = diff_latitude;
-  return sqrt((x * x) + (y * y)) * GRN_GEO_RADIUS;
+  diff_longitude = end_longitude - start_longitude;
+  x = diff_longitude * cos((start_latitude + end_latitude) * 0.5);
+  y = end_latitude - start_latitude;
+  return sqrt((x * x) + (y * y));
 }
 
 double
@@ -1963,7 +1955,7 @@ grn_geo_distance_rectangle_raw(grn_ctx *ctx,
                                                  intercept,
                                                  lng2,
                                                  lat2);
-      distance = east_distance + west_distance;
+      distance = (east_distance + west_distance) * GRN_GEO_RADIUS;
     } else {
       x = (lng2 - lng1) * cos((lat1 + lat2) * 0.5);
       y = (lat2 - lat1);




Groonga-commit メーリングリストの案内
Back to archive index