1 /* Copyright 2002-2013 CS Systèmes d'Information 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.frames; 18 19 import java.io.Externalizable; 20 import java.io.IOException; 21 import java.io.NotSerializableException; 22 import java.io.ObjectInput; 23 import java.io.ObjectOutput; 24 25 import org.orekit.errors.OrekitException; 26 import org.orekit.propagation.Propagator; 27 import org.orekit.time.AbsoluteDate; 28 import org.orekit.utils.PVCoordinates; 29 import org.orekit.utils.PVCoordinatesProvider; 30 31 32 /** Spacecraft frame. 33 * <p>Frame associated to a satellite body, taking into account orbit and attitude.</p> 34 * <p> 35 * Use of this frame is not recommended, and it will probably be withdrawn in a future version. 36 * In many cases, rather than using this frame and its {@link #getTransformTo(Frame, AbsoluteDate) 37 * getTransformTo} method, users should directly get a {@link Transform} using 38 * {@link org.orekit.propagation.SpacecraftState#toTransform()}. 39 * </p> 40 * <p> 41 * Note that despite it extends {@link Frame}, this frame is <em>NOT</em> serializable, 42 * as it relies on {@link Propagator}. 43 * </p> 44 * @deprecated as of 6.0 replaced by {@link org.orekit.propagation.SpacecraftState#toTransform()} 45 * @author Luc Maisonobe 46 */ 47 @Deprecated 48 public class SpacecraftFrame extends Frame implements PVCoordinatesProvider { 49 50 /** Serializable UID. */ 51 private static final long serialVersionUID = 6012707827832395314L; 52 53 /** Simple constructor. 54 * @param propagator orbit/attitude propagator computing spacecraft state evolution 55 * @param name name of the frame 56 */ 57 public SpacecraftFrame(final Propagator propagator, final String name) { 58 super(propagator.getFrame(), new LocalProvider(propagator), name, false); 59 } 60 61 /** Get the underlying propagator. 62 * @return underlying propagator 63 */ 64 public Propagator getPropagator() { 65 return ((LocalProvider) getTransformProvider()).getPropagator(); 66 } 67 68 /** Get the {@link PVCoordinates} of the spacecraft frame origin in the selected frame. 69 * @param date current date 70 * @param frame the frame where to define the position 71 * @return position/velocity of the spacecraft frame origin (m and m/s) 72 * @exception OrekitException if position cannot be computed in given frame 73 */ 74 public PVCoordinates getPVCoordinates(final AbsoluteDate date, final Frame frame) 75 throws OrekitException { 76 return getPropagator().getPVCoordinates(date, frame); 77 } 78 79 /** Local provider for transforms. */ 80 private static class LocalProvider implements TransformProvider, Externalizable { 81 82 /** Serializable UID. */ 83 private static final long serialVersionUID = 386815086579675823L; 84 85 /** Propagator to use. */ 86 private final transient Propagator propagator; 87 88 /** Simple constructor. 89 * @param propagator orbit/attitude propagator computing spacecraft state evolution 90 */ 91 public LocalProvider(final Propagator propagator) { 92 this.propagator = propagator; 93 } 94 95 /** {@inheritDoc} */ 96 public Transform getTransform(final AbsoluteDate date) throws OrekitException { 97 return propagator.propagate(date).toTransform(); 98 } 99 100 /** Get the underlying propagator. 101 * @return underlying propagator 102 */ 103 public Propagator getPropagator() { 104 return propagator; 105 } 106 107 /** {@inheritDoc} */ 108 public void readExternal(final ObjectInput input) throws IOException { 109 throw new NotSerializableException(); 110 } 111 112 /** {@inheritDoc} */ 113 public void writeExternal(final ObjectOutput output) throws IOException { 114 throw new NotSerializableException(); 115 } 116 117 } 118 119 }