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

org.wamblee.gps.track.TrackSegmentImpl Maven / Gradle / Ivy

/*
 * Copyright 2006 the original author or authors.
 * 
 * Licensed 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.wamblee.gps.track;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.wamblee.gps.geometry.Point;

/**
 * Represents a GPS track. 
 *
 * @author Erik Brakkee
 */
public class TrackSegmentImpl implements Serializable, TrackSegment {
    
    private String _description; 
    private List _points; 
    
    /**
     * Constructs an empty track. 
     *
     */
    public TrackSegmentImpl(String aDescription) { 
        _description = aDescription;  
        _points = new ArrayList();
    }
    
    
    @Override
    public String getDescription() {
        return _description;
    }
    
    /**
     * Adds a point to a track. 
     * @param aPoint Point. 
     */
    public void addPoint(TrackPoint aPoint) { 
        _points.add(aPoint);
    }
    
    /* (non-Javadoc)
     * @see org.wamblee.gps.track.TrackSegment#size()
     */
    public int size()  { 
        return _points.size(); 
    }
    
    /* (non-Javadoc)
     * @see org.wamblee.gps.track.TrackSegment#getMinCoordinate(int)
     */
    public double getMinCoordinate(int i) {
        if ( size() == 0 ) { 
            throw new IllegalArgumentException("empty track");
        }
        double min = getPoint(0).getCoordinates().getX(i);
        for (int j = 1; j < size(); j++) { 
            min = Math.min(min, getPoint(j).getCoordinates().getX(i));
        }
        return min;
    }
    
    /* (non-Javadoc)
     * @see org.wamblee.gps.track.TrackSegment#getMaxCoordinate(int)
     */
    public double getMaxCoordinate(int i) {
        if ( size() == 0 ) { 
            throw new IllegalArgumentException("empty track");
        }
        double max = getPoint(0).getCoordinates().getX(i);
        for (int j = 1; j < size(); j++) { 
            max = Math.max(max, getPoint(j).getCoordinates().getX(i));
        }
        return max;
    }
    
    /* (non-Javadoc)
     * @see org.wamblee.gps.track.TrackSegment#getPoint(int)
     */
    public Point getPoint(int aIndex) { 
        return _points.get(aIndex);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy