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