1 package org.djunits.unit.scale;
2
3 import java.io.Serializable;
4
5 /**
6 * Scales for unit conversion, offers functions to and from SI units. E.g., LinearScale for Length, Area, etc. LinearOffsetScale
7 * for Temperature. PercentScale for Angle. LogarithmicScale for Sound, GradeScale for percentual angle.
8 * <p>
9 * Copyright (c) 2013-2025 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
10 * BSD-style license. See <a href="https://djunits.org/docs/license.html">DJUNITS License</a>.
11 * </p>
12 * @author <a href="https://www.tudelft.nl/averbraeck">Alexander Verbraeck</a>
13 * @author <a href="https://www.tudelft.nl/staff/p.knoppers/">Peter Knoppers</a>
14 */
15 public interface Scale extends Serializable
16 {
17 /**
18 * Convert a value to an SI value using this scale.
19 * @param value the value to convert
20 * @return the corresponding SI value
21 */
22 double toStandardUnit(double value);
23
24 /**
25 * Convert a value from an SI value to a value in the unit that uses this scale.
26 * @param value the value to convert
27 * @return the corresponding value in the given unit
28 */
29 double fromStandardUnit(double value);
30
31 /**
32 * Return whether a scale is a 'standard' scale that would belong to an SI unit. For a linear scale, any scale with
33 * conversion factor 1 would be considered standard. For an offset scale, it would be considered standard if the offset is 0
34 * and the conversion factor is 1.
35 * @return whether the scale is a 'standard' scale that would belong to an SI unit.
36 */
37 boolean isBaseSIScale();
38
39 }