You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by kw...@apache.org on 2016/04/29 02:31:00 UTC

[16/25] lucene-solr:branch_6x: Flesh out remaining methods

Flesh out remaining methods


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/f9a4a08c
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/f9a4a08c
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/f9a4a08c

Branch: refs/heads/branch_6x
Commit: f9a4a08ce003f3d30af9332158cf386db22866ef
Parents: 3a0dbbe
Author: Karl Wright <Da...@gmail.com>
Authored: Wed Apr 27 08:26:03 2016 -0400
Committer: Karl Wright <Da...@gmail.com>
Committed: Thu Apr 28 20:24:53 2016 -0400

----------------------------------------------------------------------
 .../spatial3d/geom/GeoComplexPolygon.java       | 31 +++++++++++++++-----
 1 file changed, 24 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f9a4a08c/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java
----------------------------------------------------------------------
diff --git a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java
index 9b0fd1f..47ca961 100644
--- a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java
+++ b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoComplexPolygon.java
@@ -254,8 +254,25 @@ class GeoComplexPolygon extends GeoBasePolygon {
 
   @Override
   protected double outsideDistance(final DistanceStyle distanceStyle, final double x, final double y, final double z) {
-    // MHL
-    return 0.0;
+    double minimumDistance = Double.MAX_VALUE;
+    for (final Edge shapeStartEdge : shapeStartEdges) {
+      Edge shapeEdge = shapeStartEdge;
+      while (true) {
+        final double newDist = distanceStyle.computeDistance(shapeEdge.startPoint, x, y, z);
+        if (newDist < minimumDistance) {
+          minimumDistance = newDist;
+        }
+        final double newPlaneDist = distanceStyle.computeDistance(planetModel, shapeEdge.plane, x, y, z, shapeEdge.startPlane, shapeEdge.endPlane);
+        if (newPlaneDist < minimumDistance) {
+          minimumDistance = newPlaneDist;
+        }
+        shapeEdge = shapeEdge.next;
+        if (shapeEdge == shapeStartEdge) {
+          break;
+        }
+      }
+    }
+    return minimumDistance;
   }
 
   /**
@@ -1002,19 +1019,19 @@ class GeoComplexPolygon extends GeoBasePolygon {
   
   @Override
   public boolean equals(Object o) {
-    // MHL
-    return false;
+    // Way too expensive to do this the hard way, so each complex polygon will be considered unique.
+    return this == o;
   }
 
   @Override
   public int hashCode() {
-    // MHL
-    return 0;
+    // Each complex polygon is considered unique.
+    return System.identityHashCode(this);
   }
 
   @Override
   public String toString() {
-    return "GeoComplexPolygon: {planetmodel=" + planetModel + "}";
+    return "GeoComplexPolygon: {planetmodel=" + planetModel + ", number of shapes="+shapeStartEdges.length+", address="+ Integer.toHexString(hashCode())+"}";
   }
 }