1 /* Copyright 2002-2024 Luc Maisonobe 2 * Licensed to CS GROUP (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.time; 18 19 import org.hipparchus.CalculusFieldElement; 20 21 /** Base class for time scales with constant offset with respect to to TAI. 22 * @author Luc Maisonobe 23 * @since 12.1 24 */ 25 public class ConstantOffsetTimeScale implements TimeScale { 26 27 /** Serializable UID. */ 28 private static final long serialVersionUID = 20240720L; 29 30 /** Name of the time scale. */ 31 private final String name; 32 33 /** Offset from TAI. */ 34 private final TimeOffset offset; 35 36 /** Negated offset from TAI. 37 * @since 13.0 38 */ 39 private final TimeOffset negatedOffset; 40 41 /** Simple constructor. 42 * @param name name of the time scale 43 * @param offset offset from TAI 44 */ 45 public ConstantOffsetTimeScale(final String name, final TimeOffset offset) { 46 this.name = name; 47 this.offset = offset; 48 this.negatedOffset = offset.negate(); 49 } 50 51 /** {@inheritDoc} */ 52 @Override 53 public TimeOffset offsetFromTAI(final AbsoluteDate date) { 54 return offset; 55 } 56 57 /** {@inheritDoc} */ 58 @Override 59 public <T extends CalculusFieldElement<T>> T offsetFromTAI(final FieldAbsoluteDate<T> date) { 60 return date.getField().getZero().newInstance(offset.toDouble()); 61 } 62 63 /** {@inheritDoc} */ 64 @Override 65 public TimeOffset offsetToTAI(final DateComponents date, final TimeComponents time) { 66 return negatedOffset; 67 } 68 69 /** {@inheritDoc} */ 70 public String getName() { 71 return name; 72 } 73 74 /** {@inheritDoc} */ 75 public String toString() { 76 return getName(); 77 } 78 79 }