001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY
006
007package org.wpilib.units.measure;
008
009import static org.wpilib.units.Units.*;
010import org.wpilib.units.*;
011
012@SuppressWarnings({"unchecked", "cast", "checkstyle"})
013public record LinearVelocity(double magnitude, double baseUnitMagnitude, LinearVelocityUnit unit) implements Measure<LinearVelocityUnit> {
014  /**
015   * For doing math with measures of a known dimension but an unknown unit. Most users should use
016   * {@link LinearVelocityUnit#of(double)} on a known unit from {@link Units} instead of calling this method.
017   * @param magnitude the magnitude of the measurement in terms of the given unit
018   * @param unit the unit of the measurement
019   * @return a measurement object
020   */
021  public static  LinearVelocity ofRelativeUnits(double magnitude, LinearVelocityUnit unit) {
022    return new LinearVelocity(magnitude, unit.toBaseUnits(magnitude), unit);
023  }
024
025  /**
026   * For doing math with measures of a known dimension but an unknown unit. Most users should use
027   * {@link LinearVelocityUnit#of(double)} on a known unit from {@link Units} instead of calling this method.
028   * @param baseUnitMagnitude the magnitude of the measurement in terms of the given unit's base unit
029   * @param unit the unit of the measurement
030   * @return a measurement object
031   */
032  public static  LinearVelocity ofBaseUnits(double baseUnitMagnitude, LinearVelocityUnit unit) {
033    return new LinearVelocity(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit);
034  }
035
036  @Override
037  public LinearVelocityUnit baseUnit() { return (LinearVelocityUnit) unit().getBaseUnit(); }
038
039  @Override
040  public double in(LinearVelocityUnit unit) {
041    return unit.fromBaseUnits(baseUnitMagnitude());
042  }
043
044  @Override
045  @SuppressWarnings("rawtypes")
046  public boolean equals(Object object) {
047    return object instanceof LinearVelocity m && isEquivalent(m);
048  }
049
050  @Override
051  public LinearVelocity unaryMinus() {
052    return (LinearVelocity) unit().ofBaseUnits(0 - baseUnitMagnitude());
053  }
054
055  @Override
056  public LinearVelocity plus(Measure<? extends LinearVelocityUnit> other) {
057    return (LinearVelocity) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());
058  }
059
060  @Override
061  public LinearVelocity minus(Measure<? extends LinearVelocityUnit> other) {
062    return (LinearVelocity) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude());
063  }
064
065  @Override
066  public LinearVelocity times(double multiplier) {
067    return (LinearVelocity) unit().ofBaseUnits(baseUnitMagnitude() * multiplier);
068  }
069
070  @Override
071  public LinearVelocity div(double divisor) {
072    return (LinearVelocity) unit().ofBaseUnits(baseUnitMagnitude() / divisor);
073  }
074
075
076  @Override
077  public Mult<LinearVelocityUnit, AccelerationUnit<?>> times(Acceleration<?> multiplier) {
078    return (Mult<LinearVelocityUnit, AccelerationUnit<?>>) Measure.super.times(multiplier);
079  }
080
081  @Override
082  public Per<LinearVelocityUnit, AccelerationUnit<?>> div(Acceleration<?> divisor) {
083    return (Per<LinearVelocityUnit, AccelerationUnit<?>>) Measure.super.div(divisor);
084  }
085
086  @Override
087  public Per<LinearVelocityUnit, AccelerationUnit<?>> per(AccelerationUnit<?> divisorUnit) {
088    return div(divisorUnit.one());
089  }
090
091
092  @Override
093  public Mult<LinearVelocityUnit, AngleUnit> times(Angle multiplier) {
094    return (Mult<LinearVelocityUnit, AngleUnit>) Measure.super.times(multiplier);
095  }
096
097  @Override
098  public Per<LinearVelocityUnit, AngleUnit> div(Angle divisor) {
099    return (Per<LinearVelocityUnit, AngleUnit>) Measure.super.div(divisor);
100  }
101
102  @Override
103  public Per<LinearVelocityUnit, AngleUnit> per(AngleUnit divisorUnit) {
104    return div(divisorUnit.one());
105  }
106
107
108  @Override
109  public Mult<LinearVelocityUnit, AngularAccelerationUnit> times(AngularAcceleration multiplier) {
110    return (Mult<LinearVelocityUnit, AngularAccelerationUnit>) Measure.super.times(multiplier);
111  }
112
113  @Override
114  public Per<LinearVelocityUnit, AngularAccelerationUnit> div(AngularAcceleration divisor) {
115    return (Per<LinearVelocityUnit, AngularAccelerationUnit>) Measure.super.div(divisor);
116  }
117
118  @Override
119  public Per<LinearVelocityUnit, AngularAccelerationUnit> per(AngularAccelerationUnit divisorUnit) {
120    return div(divisorUnit.one());
121  }
122
123
124  @Override
125  public Mult<LinearVelocityUnit, AngularMomentumUnit> times(AngularMomentum multiplier) {
126    return (Mult<LinearVelocityUnit, AngularMomentumUnit>) Measure.super.times(multiplier);
127  }
128
129  @Override
130  public Per<LinearVelocityUnit, AngularMomentumUnit> div(AngularMomentum divisor) {
131    return (Per<LinearVelocityUnit, AngularMomentumUnit>) Measure.super.div(divisor);
132  }
133
134  @Override
135  public Per<LinearVelocityUnit, AngularMomentumUnit> per(AngularMomentumUnit divisorUnit) {
136    return div(divisorUnit.one());
137  }
138
139
140  @Override
141  public Mult<LinearVelocityUnit, AngularVelocityUnit> times(AngularVelocity multiplier) {
142    return (Mult<LinearVelocityUnit, AngularVelocityUnit>) Measure.super.times(multiplier);
143  }
144
145  @Override
146  public Per<LinearVelocityUnit, AngularVelocityUnit> div(AngularVelocity divisor) {
147    return (Per<LinearVelocityUnit, AngularVelocityUnit>) Measure.super.div(divisor);
148  }
149
150  @Override
151  public Per<LinearVelocityUnit, AngularVelocityUnit> per(AngularVelocityUnit divisorUnit) {
152    return div(divisorUnit.one());
153  }
154
155
156  @Override
157  public Mult<LinearVelocityUnit, CurrentUnit> times(Current multiplier) {
158    return (Mult<LinearVelocityUnit, CurrentUnit>) Measure.super.times(multiplier);
159  }
160
161  @Override
162  public Per<LinearVelocityUnit, CurrentUnit> div(Current divisor) {
163    return (Per<LinearVelocityUnit, CurrentUnit>) Measure.super.div(divisor);
164  }
165
166  @Override
167  public Per<LinearVelocityUnit, CurrentUnit> per(CurrentUnit divisorUnit) {
168    return div(divisorUnit.one());
169  }
170
171  @Override
172  public LinearVelocity div(Dimensionless divisor) {
173    return (LinearVelocity) MetersPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
174  }
175
176  @Override
177  public LinearVelocity times(Dimensionless multiplier) {
178    return (LinearVelocity) MetersPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
179  }
180
181
182  @Override
183  public Mult<LinearVelocityUnit, DistanceUnit> times(Distance multiplier) {
184    return (Mult<LinearVelocityUnit, DistanceUnit>) Measure.super.times(multiplier);
185  }
186
187  @Override
188  public Per<LinearVelocityUnit, DistanceUnit> div(Distance divisor) {
189    return (Per<LinearVelocityUnit, DistanceUnit>) Measure.super.div(divisor);
190  }
191
192  @Override
193  public Per<LinearVelocityUnit, DistanceUnit> per(DistanceUnit divisorUnit) {
194    return div(divisorUnit.one());
195  }
196
197
198  @Override
199  public Mult<LinearVelocityUnit, EnergyUnit> times(Energy multiplier) {
200    return (Mult<LinearVelocityUnit, EnergyUnit>) Measure.super.times(multiplier);
201  }
202
203  @Override
204  public Per<LinearVelocityUnit, EnergyUnit> div(Energy divisor) {
205    return (Per<LinearVelocityUnit, EnergyUnit>) Measure.super.div(divisor);
206  }
207
208  @Override
209  public Per<LinearVelocityUnit, EnergyUnit> per(EnergyUnit divisorUnit) {
210    return div(divisorUnit.one());
211  }
212
213
214  @Override
215  public Mult<LinearVelocityUnit, ForceUnit> times(Force multiplier) {
216    return (Mult<LinearVelocityUnit, ForceUnit>) Measure.super.times(multiplier);
217  }
218
219  @Override
220  public Per<LinearVelocityUnit, ForceUnit> div(Force divisor) {
221    return (Per<LinearVelocityUnit, ForceUnit>) Measure.super.div(divisor);
222  }
223
224  @Override
225  public Per<LinearVelocityUnit, ForceUnit> per(ForceUnit divisorUnit) {
226    return div(divisorUnit.one());
227  }
228
229
230  @Override
231  public LinearAcceleration times(Frequency multiplier) {
232    return MetersPerSecondPerSecond.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
233  }
234
235  @Override
236  public Per<LinearVelocityUnit, FrequencyUnit> div(Frequency divisor) {
237    return (Per<LinearVelocityUnit, FrequencyUnit>) Measure.super.div(divisor);
238  }
239
240  @Override
241  public Per<LinearVelocityUnit, FrequencyUnit> per(FrequencyUnit divisorUnit) {
242    return div(divisorUnit.one());
243  }
244
245
246  @Override
247  public Mult<LinearVelocityUnit, LinearAccelerationUnit> times(LinearAcceleration multiplier) {
248    return (Mult<LinearVelocityUnit, LinearAccelerationUnit>) Measure.super.times(multiplier);
249  }
250
251  @Override
252  public Per<LinearVelocityUnit, LinearAccelerationUnit> div(LinearAcceleration divisor) {
253    return (Per<LinearVelocityUnit, LinearAccelerationUnit>) Measure.super.div(divisor);
254  }
255
256  @Override
257  public Per<LinearVelocityUnit, LinearAccelerationUnit> per(LinearAccelerationUnit divisorUnit) {
258    return div(divisorUnit.one());
259  }
260
261
262  @Override
263  public Mult<LinearVelocityUnit, LinearMomentumUnit> times(LinearMomentum multiplier) {
264    return (Mult<LinearVelocityUnit, LinearMomentumUnit>) Measure.super.times(multiplier);
265  }
266
267  @Override
268  public Per<LinearVelocityUnit, LinearMomentumUnit> div(LinearMomentum divisor) {
269    return (Per<LinearVelocityUnit, LinearMomentumUnit>) Measure.super.div(divisor);
270  }
271
272  @Override
273  public Per<LinearVelocityUnit, LinearMomentumUnit> per(LinearMomentumUnit divisorUnit) {
274    return div(divisorUnit.one());
275  }
276
277
278  @Override
279  public Mult<LinearVelocityUnit, LinearVelocityUnit> times(LinearVelocity multiplier) {
280    return (Mult<LinearVelocityUnit, LinearVelocityUnit>) Measure.super.times(multiplier);
281  }
282
283  @Override
284  public Dimensionless div(LinearVelocity divisor) {
285    return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
286  }
287
288  @Override
289  public Dimensionless per(LinearVelocityUnit divisorUnit) {
290    return div(divisorUnit.one());
291  }
292
293
294  @Override
295  public Mult<LinearVelocityUnit, MassUnit> times(Mass multiplier) {
296    return (Mult<LinearVelocityUnit, MassUnit>) Measure.super.times(multiplier);
297  }
298
299  @Override
300  public Per<LinearVelocityUnit, MassUnit> div(Mass divisor) {
301    return (Per<LinearVelocityUnit, MassUnit>) Measure.super.div(divisor);
302  }
303
304  @Override
305  public Per<LinearVelocityUnit, MassUnit> per(MassUnit divisorUnit) {
306    return div(divisorUnit.one());
307  }
308
309
310  @Override
311  public Mult<LinearVelocityUnit, MomentOfInertiaUnit> times(MomentOfInertia multiplier) {
312    return (Mult<LinearVelocityUnit, MomentOfInertiaUnit>) Measure.super.times(multiplier);
313  }
314
315  @Override
316  public Per<LinearVelocityUnit, MomentOfInertiaUnit> div(MomentOfInertia divisor) {
317    return (Per<LinearVelocityUnit, MomentOfInertiaUnit>) Measure.super.div(divisor);
318  }
319
320  @Override
321  public Per<LinearVelocityUnit, MomentOfInertiaUnit> per(MomentOfInertiaUnit divisorUnit) {
322    return div(divisorUnit.one());
323  }
324
325
326  @Override
327  public Mult<LinearVelocityUnit, MultUnit<?, ?>> times(Mult<?, ?> multiplier) {
328    return (Mult<LinearVelocityUnit, MultUnit<?, ?>>) Measure.super.times(multiplier);
329  }
330
331  @Override
332  public Per<LinearVelocityUnit, MultUnit<?, ?>> div(Mult<?, ?> divisor) {
333    return (Per<LinearVelocityUnit, MultUnit<?, ?>>) Measure.super.div(divisor);
334  }
335
336  @Override
337  public Per<LinearVelocityUnit, MultUnit<?, ?>> per(MultUnit<?, ?> divisorUnit) {
338    return div(divisorUnit.ofNative(1));
339  }
340
341
342  @Override
343  public Mult<LinearVelocityUnit, PerUnit<?, ?>> times(Per<?, ?> multiplier) {
344    return (Mult<LinearVelocityUnit, PerUnit<?, ?>>) Measure.super.times(multiplier);
345  }
346
347  @Override
348  public Per<LinearVelocityUnit, PerUnit<?, ?>> div(Per<?, ?> divisor) {
349    return (Per<LinearVelocityUnit, PerUnit<?, ?>>) Measure.super.div(divisor);
350  }
351
352  @Override
353  public Per<LinearVelocityUnit, PerUnit<?, ?>> per(PerUnit<?, ?> divisorUnit) {
354    return div(divisorUnit.ofNative(1));
355  }
356
357
358  @Override
359  public Mult<LinearVelocityUnit, PowerUnit> times(Power multiplier) {
360    return (Mult<LinearVelocityUnit, PowerUnit>) Measure.super.times(multiplier);
361  }
362
363  @Override
364  public Per<LinearVelocityUnit, PowerUnit> div(Power divisor) {
365    return (Per<LinearVelocityUnit, PowerUnit>) Measure.super.div(divisor);
366  }
367
368  @Override
369  public Per<LinearVelocityUnit, PowerUnit> per(PowerUnit divisorUnit) {
370    return div(divisorUnit.one());
371  }
372
373
374  @Override
375  public Mult<LinearVelocityUnit, ResistanceUnit> times(Resistance multiplier) {
376    return (Mult<LinearVelocityUnit, ResistanceUnit>) Measure.super.times(multiplier);
377  }
378
379  @Override
380  public Per<LinearVelocityUnit, ResistanceUnit> div(Resistance divisor) {
381    return (Per<LinearVelocityUnit, ResistanceUnit>) Measure.super.div(divisor);
382  }
383
384  @Override
385  public Per<LinearVelocityUnit, ResistanceUnit> per(ResistanceUnit divisorUnit) {
386    return div(divisorUnit.one());
387  }
388
389
390  @Override
391  public Mult<LinearVelocityUnit, TemperatureUnit> times(Temperature multiplier) {
392    return (Mult<LinearVelocityUnit, TemperatureUnit>) Measure.super.times(multiplier);
393  }
394
395  @Override
396  public Per<LinearVelocityUnit, TemperatureUnit> div(Temperature divisor) {
397    return (Per<LinearVelocityUnit, TemperatureUnit>) Measure.super.div(divisor);
398  }
399
400  @Override
401  public Per<LinearVelocityUnit, TemperatureUnit> per(TemperatureUnit divisorUnit) {
402    return div(divisorUnit.one());
403  }
404
405
406  @Override
407  public Distance times(Time multiplier) {
408    return Meters.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
409  }
410
411  @Override
412  public LinearAcceleration div(Time divisor) {
413    return MetersPerSecondPerSecond.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
414  }
415
416  @Override
417  public LinearAcceleration per(TimeUnit divisorUnit) {
418    return div(divisorUnit.one());
419  }
420
421
422  @Override
423  public Mult<LinearVelocityUnit, TorqueUnit> times(Torque multiplier) {
424    return (Mult<LinearVelocityUnit, TorqueUnit>) Measure.super.times(multiplier);
425  }
426
427  @Override
428  public Per<LinearVelocityUnit, TorqueUnit> div(Torque divisor) {
429    return (Per<LinearVelocityUnit, TorqueUnit>) Measure.super.div(divisor);
430  }
431
432  @Override
433  public Per<LinearVelocityUnit, TorqueUnit> per(TorqueUnit divisorUnit) {
434    return div(divisorUnit.one());
435  }
436
437
438  @Override
439  public Mult<LinearVelocityUnit, VelocityUnit<?>> times(Velocity<?> multiplier) {
440    return (Mult<LinearVelocityUnit, VelocityUnit<?>>) Measure.super.times(multiplier);
441  }
442
443  @Override
444  public Per<LinearVelocityUnit, VelocityUnit<?>> div(Velocity<?> divisor) {
445    return (Per<LinearVelocityUnit, VelocityUnit<?>>) Measure.super.div(divisor);
446  }
447
448  @Override
449  public Per<LinearVelocityUnit, VelocityUnit<?>> per(VelocityUnit<?> divisorUnit) {
450    return div(divisorUnit.one());
451  }
452
453
454  @Override
455  public Mult<LinearVelocityUnit, VoltageUnit> times(Voltage multiplier) {
456    return (Mult<LinearVelocityUnit, VoltageUnit>) Measure.super.times(multiplier);
457  }
458
459  @Override
460  public Per<LinearVelocityUnit, VoltageUnit> div(Voltage divisor) {
461    return (Per<LinearVelocityUnit, VoltageUnit>) Measure.super.div(divisor);
462  }
463
464  @Override
465  public Per<LinearVelocityUnit, VoltageUnit> per(VoltageUnit divisorUnit) {
466    return div(divisorUnit.one());
467  }
468
469}