1 /* Copyright 2022-2025 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 /** Name of the time scale. */ 28 private final String name; 29 30 /** Offset from TAI. */ 31 private final TimeOffset offset; 32 33 /** Negated offset from TAI. 34 * @since 13.0 35 */ 36 private final TimeOffset negatedOffset; 37 38 /** Simple constructor. 39 * @param name name of the time scale 40 * @param offset offset from TAI 41 */ 42 public ConstantOffsetTimeScale(final String name, final TimeOffset offset) { 43 this.name = name; 44 this.offset = offset; 45 this.negatedOffset = offset.negate(); 46 } 47 48 /** {@inheritDoc} */ 49 @Override 50 public TimeOffset offsetFromTAI(final AbsoluteDate date) { 51 return offset; 52 } 53 54 /** {@inheritDoc} */ 55 @Override 56 public <T extends CalculusFieldElement<T>> T offsetFromTAI(final FieldAbsoluteDate<T> date) { 57 return date.getField().getZero().newInstance(offset.toDouble()); 58 } 59 60 /** {@inheritDoc} */ 61 @Override 62 public TimeOffset offsetToTAI(final DateComponents date, final TimeComponents time) { 63 return negatedOffset; 64 } 65 66 /** {@inheritDoc} */ 67 public String getName() { 68 return name; 69 } 70 71 /** {@inheritDoc} */ 72 public String toString() { 73 return getName(); 74 } 75 76 }