001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.commons.math3.geometry.partitioning;
018    
019    import org.apache.commons.math3.geometry.Space;
020    
021    /** Class holding boundary attributes.
022     * <p>This class is used for the attributes associated with the
023     * nodes of region boundary shell trees returned by the {@link
024     * Region#getTree Region.getTree}. It contains the
025     * parts of the node cut sub-hyperplane that belong to the
026     * boundary.</p>
027     * <p>This class is a simple placeholder, it does not provide any
028     * processing methods.</p>
029     * @param <S> Type of the space.
030     * @see Region#getTree
031     * @version $Id: BoundaryAttribute.java 1416643 2012-12-03 19:37:14Z tn $
032     * @since 3.0
033     */
034    public class BoundaryAttribute<S extends Space> {
035    
036        /** Part of the node cut sub-hyperplane that belongs to the
037         * boundary and has the outside of the region on the plus side of
038         * its underlying hyperplane (may be null).
039         */
040        private final SubHyperplane<S> plusOutside;
041    
042        /** Part of the node cut sub-hyperplane that belongs to the
043         * boundary and has the inside of the region on the plus side of
044         * its underlying hyperplane (may be null).
045         */
046        private final SubHyperplane<S> plusInside;
047    
048        /** Simple constructor.
049         * @param plusOutside part of the node cut sub-hyperplane that
050         * belongs to the boundary and has the outside of the region on
051         * the plus side of its underlying hyperplane (may be null)
052         * @param plusInside part of the node cut sub-hyperplane that
053         * belongs to the boundary and has the inside of the region on the
054         * plus side of its underlying hyperplane (may be null)
055         */
056        public BoundaryAttribute(final SubHyperplane<S> plusOutside,
057                                 final SubHyperplane<S> plusInside) {
058            this.plusOutside = plusOutside;
059            this.plusInside  = plusInside;
060        }
061    
062        /** Get the part of the node cut sub-hyperplane that belongs to the
063         * boundary and has the outside of the region on the plus side of
064         * its underlying hyperplane.
065         * @return part of the node cut sub-hyperplane that belongs to the
066         * boundary and has the outside of the region on the plus side of
067         * its underlying hyperplane
068         */
069        public SubHyperplane<S> getPlusOutside() {
070            return plusOutside;
071        }
072    
073        /** Get the part of the node cut sub-hyperplane that belongs to the
074         * boundary and has the inside of the region on the plus side of
075         * its underlying hyperplane.
076         * @return part of the node cut sub-hyperplane that belongs to the
077         * boundary and has the inside of the region on the plus side of
078         * its underlying hyperplane
079         */
080        public SubHyperplane<S> getPlusInside() {
081            return plusInside;
082        }
083    
084    }