1 package org.djunits.value.vfloat.scalar;
2
3 import org.djunits.unit.DimensionlessUnit;
4 import org.djunits.unit.ElectricalCurrentUnit;
5 import org.djunits.unit.ElectricalPotentialUnit;
6 import org.djunits.unit.ElectricalResistanceUnit;
7 import org.djunits.unit.PowerUnit;
8
9 /**
10 * Easy access methods for the ElectricalPotential FloatScalar, which is relative by definition. An example is Speed. Instead
11 * of:
12 *
13 * <pre>
14 * FloatScalar.Rel<ElectricalPotentialUnit> value =
15 * new FloatScalar.Rel<ElectricalPotentialUnit>(100.0, ElectricalPotentialUnit.SI);
16 * </pre>
17 *
18 * we can now write:
19 *
20 * <pre>
21 * FloatElectricalPotential value = new FloatElectricalPotential(100.0, ElectricalPotentialUnit.SI);
22 * </pre>
23 *
24 * The compiler will automatically recognize which units belong to which quantity, and whether the quantity type and the unit
25 * used are compatible.
26 * <p>
27 * Copyright (c) 2013-2018 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
28 * BSD-style license. See <a href="http://djunits.org/docs/license.html">DJUNITS License</a>.
29 * <p>
30 * $LastChangedDate: 2018-01-28 03:17:44 +0100 (Sun, 28 Jan 2018) $, @version $Revision: 256 $, by $Author: averbraeck $,
31 * initial version Sep 5, 2015 <br>
32 * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
33 * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
34 */
35 public class FloatElectricalPotential extends AbstractFloatScalarRel<ElectricalPotentialUnit, FloatElectricalPotential>
36 {
37 /** */
38 private static final long serialVersionUID = 20150901L;
39
40 /** constant with value zero. */
41 public static final FloatElectricalPotential ZERO = new FloatElectricalPotential(0.0f, ElectricalPotentialUnit.SI);
42
43 /** constant with value NaN. */
44 @SuppressWarnings("checkstyle:constantname")
45 public static final FloatElectricalPotential NaN = new FloatElectricalPotential(Float.NaN, ElectricalPotentialUnit.SI);
46
47 /** constant with value POSITIVE_INFINITY. */
48 public static final FloatElectricalPotential POSITIVE_INFINITY =
49 new FloatElectricalPotential(Float.POSITIVE_INFINITY, ElectricalPotentialUnit.SI);
50
51 /** constant with value NEGATIVE_INFINITY. */
52 public static final FloatElectricalPotential NEGATIVE_INFINITY =
53 new FloatElectricalPotential(Float.NEGATIVE_INFINITY, ElectricalPotentialUnit.SI);
54
55 /** constant with value MAX_VALUE. */
56 public static final FloatElectricalPotential POS_MAXVALUE =
57 new FloatElectricalPotential(Float.MAX_VALUE, ElectricalPotentialUnit.SI);
58
59 /** constant with value -MAX_VALUE. */
60 public static final FloatElectricalPotential NEG_MAXVALUE =
61 new FloatElectricalPotential(-Float.MAX_VALUE, ElectricalPotentialUnit.SI);
62
63 /**
64 * Construct FloatElectricalPotential scalar.
65 * @param value float value
66 * @param unit unit for the float value
67 */
68 public FloatElectricalPotential(final float value, final ElectricalPotentialUnit unit)
69 {
70 super(value, unit);
71 }
72
73 /**
74 * Construct FloatElectricalPotential scalar.
75 * @param value Scalar from which to construct this instance
76 */
77 public FloatElectricalPotential(final FloatElectricalPotential value)
78 {
79 super(value);
80 }
81
82 /**
83 * Construct FloatElectricalPotential scalar using a double value.
84 * @param value double value
85 * @param unit unit for the resulting float value
86 */
87 public FloatElectricalPotential(final double value, final ElectricalPotentialUnit unit)
88 {
89 super((float) value, unit);
90 }
91
92 /** {@inheritDoc} */
93 @Override
94 public final FloatElectricalPotential instantiateRel(final float value, final ElectricalPotentialUnit unit)
95 {
96 return new FloatElectricalPotential(value, unit);
97 }
98
99 /**
100 * Construct FloatElectricalPotential scalar.
101 * @param value float value in SI units
102 * @return the new scalar with the SI value
103 */
104 public static final FloatElectricalPotential createSI(final float value)
105 {
106 return new FloatElectricalPotential(value, ElectricalPotentialUnit.SI);
107 }
108
109 /**
110 * Interpolate between two values.
111 * @param zero the low value
112 * @param one the high value
113 * @param ratio the ratio between 0 and 1, inclusive
114 * @return a Scalar at the ratio between
115 */
116 public static FloatElectricalPotential interpolate(final FloatElectricalPotential zero, final FloatElectricalPotential one,
117 final float ratio)
118 {
119 return new FloatElectricalPotential(zero.getInUnit() * (1 - ratio) + one.getInUnit(zero.getUnit()) * ratio,
120 zero.getUnit());
121 }
122
123 /**
124 * Return the maximum value of two relative scalars.
125 * @param r1 the first scalar
126 * @param r2 the second scalar
127 * @return the maximum value of two relative scalars
128 */
129 public static FloatElectricalPotential max(final FloatElectricalPotential r1, final FloatElectricalPotential r2)
130 {
131 return (r1.gt(r2)) ? r1 : r2;
132 }
133
134 /**
135 * Return the maximum value of more than two relative scalars.
136 * @param r1 the first scalar
137 * @param r2 the second scalar
138 * @param rn the other scalars
139 * @return the maximum value of more than two relative scalars
140 */
141 public static FloatElectricalPotential max(final FloatElectricalPotential r1, final FloatElectricalPotential r2,
142 final FloatElectricalPotential... rn)
143 {
144 FloatElectricalPotential maxr = (r1.gt(r2)) ? r1 : r2;
145 for (FloatElectricalPotential r : rn)
146 {
147 if (r.gt(maxr))
148 {
149 maxr = r;
150 }
151 }
152 return maxr;
153 }
154
155 /**
156 * Return the minimum value of two relative scalars.
157 * @param r1 the first scalar
158 * @param r2 the second scalar
159 * @return the minimum value of two relative scalars
160 */
161 public static FloatElectricalPotential min(final FloatElectricalPotential r1, final FloatElectricalPotential r2)
162 {
163 return (r1.lt(r2)) ? r1 : r2;
164 }
165
166 /**
167 * Return the minimum value of more than two relative scalars.
168 * @param r1 the first scalar
169 * @param r2 the second scalar
170 * @param rn the other scalars
171 * @return the minimum value of more than two relative scalars
172 */
173 public static FloatElectricalPotential min(final FloatElectricalPotential r1, final FloatElectricalPotential r2,
174 final FloatElectricalPotential... rn)
175 {
176 FloatElectricalPotential minr = (r1.lt(r2)) ? r1 : r2;
177 for (FloatElectricalPotential r : rn)
178 {
179 if (r.lt(minr))
180 {
181 minr = r;
182 }
183 }
184 return minr;
185 }
186
187 /**
188 * Calculate the division of FloatElectricalPotential and FloatElectricalPotential, which results in a FloatDimensionless
189 * scalar.
190 * @param v FloatElectricalPotential scalar
191 * @return FloatDimensionless scalar as a division of FloatElectricalPotential and FloatElectricalPotential
192 */
193 public final FloatDimensionless divideBy(final FloatElectricalPotential v)
194 {
195 return new FloatDimensionless(this.si / v.si, DimensionlessUnit.SI);
196 }
197
198 /**
199 * Calculate the multiplication of FloatElectricalPotential and FloatElectricalCurrent, which results in a FloatPower
200 * scalar.
201 * @param v FloatElectricalPotential scalar
202 * @return FloatPower scalar as a multiplication of FloatElectricalPotential and FloatElectricalCurrent
203 */
204 public final FloatPower multiplyBy(final FloatElectricalCurrent v)
205 {
206 return new FloatPower(this.si * v.si, PowerUnit.SI);
207 }
208
209 /**
210 * Calculate the division of FloatElectricalPotential and FloatElectricalCurrent, which results in a
211 * FloatElectricalResistance scalar.
212 * @param v FloatElectricalPotential scalar
213 * @return FloatElectricalResistance scalar as a division of FloatElectricalPotential and FloatElectricalCurrent
214 */
215 public final FloatElectricalResistance divideBy(final FloatElectricalCurrent v)
216 {
217 return new FloatElectricalResistance(this.si / v.si, ElectricalResistanceUnit.SI);
218 }
219
220 /**
221 * Calculate the division of FloatElectricalPotential and FloatElectricalResistance, which results in a
222 * FloatElectricalCurrent scalar.
223 * @param v FloatElectricalPotential scalar
224 * @return FloatElectricalCurrent scalar as a division of FloatElectricalPotential and FloatElectricalResistance
225 */
226 public final FloatElectricalCurrent divideBy(final FloatElectricalResistance v)
227 {
228 return new FloatElectricalCurrent(this.si / v.si, ElectricalCurrentUnit.SI);
229 }
230
231 }