/*
 * 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.spatial3d.geom;

An interface for accumulating bounds information. The bounds object is initially empty. Bounding points are then applied by supplying (x,y,z) tuples. It is also possible to indicate the following edge cases: (1) No longitude bound possible (2) No upper latitude bound possible (3) No lower latitude bound possible When any of these have been applied, further application of points cannot override that decision.
@lucene.experimental
/** * An interface for accumulating bounds information. * The bounds object is initially empty. Bounding points * are then applied by supplying (x,y,z) tuples. It is also * possible to indicate the following edge cases: * (1) No longitude bound possible * (2) No upper latitude bound possible * (3) No lower latitude bound possible * When any of these have been applied, further application of * points cannot override that decision. * * @lucene.experimental */
public interface Bounds {
Add a general plane to the bounds description.
Params:
  • planetModel – is the planet model.
  • plane – is the plane.
  • bounds – are the membership bounds for points along the arc.
/** Add a general plane to the bounds description. *@param planetModel is the planet model. *@param plane is the plane. *@param bounds are the membership bounds for points along the arc. */
public Bounds addPlane(final PlanetModel planetModel, final Plane plane, final Membership... bounds);
Add a horizontal plane to the bounds description. This method should EITHER use the supplied latitude, OR use the supplied plane, depending on what is most efficient.
Params:
  • planetModel – is the planet model.
  • latitude – is the latitude.
  • horizontalPlane – is the plane.
  • bounds – are the constraints on the plane.
Returns:updated Bounds object.
/** Add a horizontal plane to the bounds description. * This method should EITHER use the supplied latitude, OR use the supplied * plane, depending on what is most efficient. *@param planetModel is the planet model. *@param latitude is the latitude. *@param horizontalPlane is the plane. *@param bounds are the constraints on the plane. *@return updated Bounds object. */
public Bounds addHorizontalPlane(final PlanetModel planetModel, final double latitude, final Plane horizontalPlane, final Membership... bounds);
Add a vertical plane to the bounds description. This method should EITHER use the supplied longitude, OR use the supplied plane, depending on what is most efficient.
Params:
  • planetModel – is the planet model.
  • longitude – is the longitude.
  • verticalPlane – is the plane.
  • bounds – are the constraints on the plane.
Returns:updated Bounds object.
/** Add a vertical plane to the bounds description. * This method should EITHER use the supplied longitude, OR use the supplied * plane, depending on what is most efficient. *@param planetModel is the planet model. *@param longitude is the longitude. *@param verticalPlane is the plane. *@param bounds are the constraints on the plane. *@return updated Bounds object. */
public Bounds addVerticalPlane(final PlanetModel planetModel, final double longitude, final Plane verticalPlane, final Membership... bounds);
Add the intersection between two planes to the bounds description. Where the shape has intersecting planes, it is better to use this method than just adding the point, since this method takes each plane's error envelope into account.
Params:
  • planetModel – is the planet model.
  • plane1 – is the first plane.
  • plane2 – is the second plane.
  • bounds – are the membership bounds for the intersection.
/** Add the intersection between two planes to the bounds description. * Where the shape has intersecting planes, it is better to use this method * than just adding the point, since this method takes each plane's error envelope into * account. *@param planetModel is the planet model. *@param plane1 is the first plane. *@param plane2 is the second plane. *@param bounds are the membership bounds for the intersection. */
public Bounds addIntersection(final PlanetModel planetModel, final Plane plane1, final Plane plane2, final Membership... bounds);
Add a single point.
Params:
  • point – is the point.
Returns:the updated Bounds object.
/** Add a single point. *@param point is the point. *@return the updated Bounds object. */
public Bounds addPoint(final GeoPoint point);
Add an X value.
Params:
  • point – is the point to take the x value from.
Returns:the updated object.
/** Add an X value. *@param point is the point to take the x value from. *@return the updated object. */
public Bounds addXValue(final GeoPoint point);
Add a Y value.
Params:
  • point – is the point to take the y value from.
Returns:the updated object.
/** Add a Y value. *@param point is the point to take the y value from. *@return the updated object. */
public Bounds addYValue(final GeoPoint point);
Add a Z value.
Params:
  • point – is the point to take the z value from.
Returns:the updated object.
/** Add a Z value. *@param point is the point to take the z value from. *@return the updated object. */
public Bounds addZValue(final GeoPoint point);
Signal that the shape exceeds Math.PI in longitude.
Returns:the updated Bounds object.
/** Signal that the shape exceeds Math.PI in longitude. *@return the updated Bounds object. */
public Bounds isWide();
Signal that there is no longitude bound.
Returns:the updated Bounds object.
/** Signal that there is no longitude bound. *@return the updated Bounds object. */
public Bounds noLongitudeBound();
Signal that there is no top latitude bound.
Returns:the updated Bounds object.
/** Signal that there is no top latitude bound. *@return the updated Bounds object. */
public Bounds noTopLatitudeBound();
Signal that there is no bottom latitude bound.
Returns:the updated Bounds object.
/** Signal that there is no bottom latitude bound. *@return the updated Bounds object. */
public Bounds noBottomLatitudeBound();
Signal that there is no bound whatsoever. The bound is limited only by the constraints of the planet.
Returns:the updated Bounds object.,
/** Signal that there is no bound whatsoever. * The bound is limited only by the constraints of the * planet. *@return the updated Bounds object., */
public Bounds noBound(final PlanetModel planetModel); }