jpountz commented on a change in pull request #587: LUCENE-8707: Add 
LatLonShape and XYShape distance query
URL: https://github.com/apache/lucene-solr/pull/587#discussion_r358242820
 
 

 ##########
 File path: lucene/sandbox/src/java/org/apache/lucene/geo/Circle.java
 ##########
 @@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.geo;
+
+
+/**
+ * Represents a circle on the earth's surface.
+ * <p>
+ * NOTES:
+ * <ol>
+ *   <li> Latitude/longitude values must be in decimal degrees.
+ *   <li> Radius must be in meters.
+ *   <li>For more advanced GeoSpatial indexing and query operations see the 
{@code spatial-extras} module
+ * </ol>
+ * @lucene.experimental
+ */
+public class Circle {
+  /** Center latitude */
+  private final double lat;
+  /** Center longitude */
+  private final double lon;
+  /** radius in meters */
+  private final double distance;
+  /** Max radius allowed, half of the earth mean radius.*/
+  public static double MAXRADIUS = GeoUtils.EARTH_MEAN_RADIUS_METERS / 2.0;
+
+
+  /**
+   * Creates a new circle from the supplied latitude/longitude center and 
distance in meters..
+   */
+  public Circle(double lat, double lon, double radiusMeters) {
+    GeoUtils.checkLatitude(lat);
+    GeoUtils.checkLongitude(lon);
+    if (radiusMeters <= 0) {
+       throw new IllegalArgumentException("Radius must be bigger than 0, got " 
+ radiusMeters);
+    }
+    if (radiusMeters >= MAXRADIUS) {
 
 Review comment:
   when validating, it's often beffer to do `radiusMeters < MAXRADIUS == 
false`, which has the nice property of also failing if `radiusMeters` in NaN

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to