SatelliteTimeCoordinate.java
/* Copyright 2002-2012 Space Applications Services
* Licensed to CS Systèmes d'Information (CS) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* CS 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.orekit.files.general;
import java.io.Serializable;
import org.apache.commons.math3.geometry.euclidean.threed.Vector3D;
import org.orekit.time.AbsoluteDate;
import org.orekit.time.TimeStamped;
import org.orekit.utils.PVCoordinates;
/** Contains the position/velocity of a satellite at an specific epoch.
* @author Thomas Neidhart
*/
public class SatelliteTimeCoordinate implements TimeStamped, Serializable {
/** Serializable UID. */
private static final long serialVersionUID = -2099947583052252633L;
/** Epoch for this entry. */
private AbsoluteDate epoch;
/** Position/velocity coordinates for this entry. */
private PVCoordinates coordinate;
/** Clock correction in micro-seconds. */
private double clockCorrection;
/** Clock rate change. */
private double clockRateChange;
/** Creates a new {@link SatelliteTimeCoordinate} instance with
* a given epoch and coordinate.
* @param time the epoch of the entry
* @param coord the coordinate of the entry
*/
public SatelliteTimeCoordinate(final AbsoluteDate time,
final PVCoordinates coord) {
this(time, coord, 0.0d, 0.0d);
}
/** Creates a new {@link SatelliteTimeCoordinate} object with a given epoch
* and position coordinate. The velocity is set to a zero vector.
* @param time the epoch of the entry
* @param pos the position coordinate of the entry
* @param clock the clock value in (micro-seconds)
*/
public SatelliteTimeCoordinate(final AbsoluteDate time,
final Vector3D pos, final double clock) {
this(time, new PVCoordinates(pos, Vector3D.ZERO), clock, 0.0d);
}
/** Creates a new {@link SatelliteTimeCoordinate} instance with a given
* epoch, coordinate and clock value / rate change.
* @param time the epoch of the entry
* @param coord the coordinate of the entry
* @param clockCorr the clock value that corresponds to this coordinate
* @param rateChange the clock rate change
*/
public SatelliteTimeCoordinate(final AbsoluteDate time,
final PVCoordinates coord,
final double clockCorr,
final double rateChange) {
this.epoch = time;
this.coordinate = coord;
this.clockCorrection = clockCorr;
this.clockRateChange = rateChange;
}
/** Returns the epoch for this coordinate.
* @return the epoch
*/
public AbsoluteDate getEpoch() {
return epoch;
}
/** {@inheritDoc} */
public AbsoluteDate getDate() {
return getEpoch();
}
/** Set the epoch for this coordinate.
* @param epoch the epoch to be set
*/
public void setEpoch(final AbsoluteDate epoch) {
this.epoch = epoch;
}
/** Returns the coordinate of this entry.
* @return the coordinate
*/
public PVCoordinates getCoordinate() {
return coordinate;
}
/** Set the coordinate for this entry.
* @param coordinate the coordinate to be set
*/
public void setCoordinate(final PVCoordinates coordinate) {
this.coordinate = coordinate;
}
/** Returns the clock correction value.
* @return the clock correction
*/
public double getClockCorrection() {
return clockCorrection;
}
/** Set the clock correction to the given value.
* @param corr the clock correction value
*/
public void setClockCorrection(final double corr) {
this.clockCorrection = corr;
}
/** Returns the clock rate change value.
* @return the clock rate change
*/
public double getClockRateChange() {
return clockRateChange;
}
/** Set the clock rate change to the given value.
* @param rateChange the clock rate change value
*/
public void setClockRateChange(final double rateChange) {
this.clockRateChange = rateChange;
}
}