All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.lucene.spatial3d.geom.Bounds Maven / Gradle / Ivy

There is a newer version: 10.1.0
Show newest version
/*
 * 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 */ public interface Bounds { /** * 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. * * @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. * * @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. * * @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. * * @param point is the point. * @return the updated Bounds object. */ public Bounds addPoint(final GeoPoint point); /** * 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. * * @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. * * @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. * * @return the updated Bounds object. */ public Bounds isWide(); /** * Signal that there is no longitude bound. * * @return the updated Bounds object. */ public Bounds noLongitudeBound(); /** * Signal that there is no top latitude bound. * * @return the updated Bounds object. */ public Bounds noTopLatitudeBound(); /** * 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. * * @return the updated Bounds object., */ public Bounds noBound(final PlanetModel planetModel); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy