1 /* Copyright 2002-2012 Space Applications Services 2 * Licensed to CS Systèmes d'Information (CS) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * CS licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.orekit.files.general; 18 19 import java.io.Serializable; 20 21 import org.apache.commons.math3.geometry.euclidean.threed.Vector3D; 22 import org.orekit.time.AbsoluteDate; 23 import org.orekit.time.TimeStamped; 24 import org.orekit.utils.PVCoordinates; 25 26 /** Contains the position/velocity of a satellite at an specific epoch. 27 * @author Thomas Neidhart 28 */ 29 public class SatelliteTimeCoordinate implements TimeStamped, Serializable { 30 31 /** Serializable UID. */ 32 private static final long serialVersionUID = -2099947583052252633L; 33 34 /** Epoch for this entry. */ 35 private AbsoluteDate epoch; 36 37 /** Position/velocity coordinates for this entry. */ 38 private PVCoordinates coordinate; 39 40 /** Clock correction in micro-seconds. */ 41 private double clockCorrection; 42 43 /** Clock rate change. */ 44 private double clockRateChange; 45 46 /** Creates a new {@link SatelliteTimeCoordinate} instance with 47 * a given epoch and coordinate. 48 * @param time the epoch of the entry 49 * @param coord the coordinate of the entry 50 */ 51 public SatelliteTimeCoordinate(final AbsoluteDate time, 52 final PVCoordinates coord) { 53 this(time, coord, 0.0d, 0.0d); 54 } 55 56 /** Creates a new {@link SatelliteTimeCoordinate} object with a given epoch 57 * and position coordinate. The velocity is set to a zero vector. 58 * @param time the epoch of the entry 59 * @param pos the position coordinate of the entry 60 * @param clock the clock value in (micro-seconds) 61 */ 62 public SatelliteTimeCoordinate(final AbsoluteDate time, 63 final Vector3D pos, final double clock) { 64 this(time, new PVCoordinates(pos, Vector3D.ZERO), clock, 0.0d); 65 } 66 67 /** Creates a new {@link SatelliteTimeCoordinate} instance with a given 68 * epoch, coordinate and clock value / rate change. 69 * @param time the epoch of the entry 70 * @param coord the coordinate of the entry 71 * @param clockCorr the clock value that corresponds to this coordinate 72 * @param rateChange the clock rate change 73 */ 74 public SatelliteTimeCoordinate(final AbsoluteDate time, 75 final PVCoordinates coord, 76 final double clockCorr, 77 final double rateChange) { 78 this.epoch = time; 79 this.coordinate = coord; 80 this.clockCorrection = clockCorr; 81 this.clockRateChange = rateChange; 82 } 83 84 /** Returns the epoch for this coordinate. 85 * @return the epoch 86 */ 87 public AbsoluteDate getEpoch() { 88 return epoch; 89 } 90 91 /** {@inheritDoc} */ 92 public AbsoluteDate getDate() { 93 return getEpoch(); 94 } 95 96 /** Set the epoch for this coordinate. 97 * @param epoch the epoch to be set 98 */ 99 public void setEpoch(final AbsoluteDate epoch) { 100 this.epoch = epoch; 101 } 102 103 /** Returns the coordinate of this entry. 104 * @return the coordinate 105 */ 106 public PVCoordinates getCoordinate() { 107 return coordinate; 108 } 109 110 /** Set the coordinate for this entry. 111 * @param coordinate the coordinate to be set 112 */ 113 public void setCoordinate(final PVCoordinates coordinate) { 114 this.coordinate = coordinate; 115 } 116 117 /** Returns the clock correction value. 118 * @return the clock correction 119 */ 120 public double getClockCorrection() { 121 return clockCorrection; 122 } 123 124 /** Set the clock correction to the given value. 125 * @param corr the clock correction value 126 */ 127 public void setClockCorrection(final double corr) { 128 this.clockCorrection = corr; 129 } 130 131 /** Returns the clock rate change value. 132 * @return the clock rate change 133 */ 134 public double getClockRateChange() { 135 return clockRateChange; 136 } 137 138 /** Set the clock rate change to the given value. 139 * @param rateChange the clock rate change value 140 */ 141 public void setClockRateChange(final double rateChange) { 142 this.clockRateChange = rateChange; 143 } 144 }