mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[wpiunits] Add resistance units (#7168)
This commit is contained in:
committed by
GitHub
parent
a3b12b3bd9
commit
ac907f755a
@@ -51,6 +51,7 @@ MATH_OPERATION_UNITS = [
|
||||
"Mult<?, ?>",
|
||||
"Per<?, ?>",
|
||||
"Power",
|
||||
"Resistance",
|
||||
"Temperature",
|
||||
"Time",
|
||||
"Torque",
|
||||
@@ -91,7 +92,11 @@ UNIT_CONFIGURATIONS = {
|
||||
"""
|
||||
),
|
||||
},
|
||||
"Current": {"base_unit": "Amps", "multiply": {"Voltage": "Power"}, "divide": {}},
|
||||
"Current": {
|
||||
"base_unit": "Amps",
|
||||
"multiply": {"Voltage": "Power", "Resistance": "Voltage"},
|
||||
"divide": {},
|
||||
},
|
||||
"Dimensionless": {
|
||||
"base_unit": "Value",
|
||||
"multiply": {
|
||||
@@ -111,6 +116,7 @@ UNIT_CONFIGURATIONS = {
|
||||
"Mass": "Mass",
|
||||
"MomentOfInertia": "MomentOfInertia",
|
||||
"Power": "Power",
|
||||
"Resistance": "Resistance",
|
||||
"Temperature": "Temperature",
|
||||
"Time": "Time",
|
||||
"Torque": "Torque",
|
||||
@@ -225,6 +231,13 @@ UNIT_CONFIGURATIONS = {
|
||||
},
|
||||
"divide": {"Voltage": "Current", "Current": "Voltage", "Energy": "Frequency"},
|
||||
},
|
||||
"Resistance": {
|
||||
"base_unit": "Ohms",
|
||||
"multiply": {
|
||||
"Current": "Voltage",
|
||||
},
|
||||
"divide": {},
|
||||
},
|
||||
"Temperature": {"base_unit": "Kelvin", "multiply": {}, "divide": {}},
|
||||
"Time": {
|
||||
"base_unit": "Seconds",
|
||||
@@ -272,7 +285,16 @@ UNIT_CONFIGURATIONS = {
|
||||
},
|
||||
"divide": {},
|
||||
},
|
||||
"Voltage": {"base_unit": "Volts", "multiply": {"Current": "Power"}, "divide": {}},
|
||||
"Voltage": {
|
||||
"base_unit": "Volts",
|
||||
"multiply": {
|
||||
"Current": "Power",
|
||||
},
|
||||
"divide": {
|
||||
"Resistance": "Current",
|
||||
"Current": "Resistance",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -331,7 +353,6 @@ def indent(multiline_string, indentation):
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
dirname, _ = os.path.split(os.path.abspath(__file__))
|
||||
|
||||
env = Environment(
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Acceleration<D extends Unit> extends Measure<AccelerationUnit<D
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AccelerationUnit<D>, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<AccelerationUnit<D>, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<AccelerationUnit<D>, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<AccelerationUnit<D>, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AccelerationUnit<D>, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<AccelerationUnit<D>, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Angle extends Measure<AngleUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AngleUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<AngleUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<AngleUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<AngleUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AngleUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<AngleUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface AngularAcceleration extends Measure<AngularAccelerationUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AngularAccelerationUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<AngularAccelerationUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<AngularAccelerationUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<AngularAccelerationUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AngularAccelerationUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<AngularAccelerationUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface AngularMomentum extends Measure<AngularMomentumUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AngularMomentumUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<AngularMomentumUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<AngularMomentumUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<AngularMomentumUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AngularMomentumUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<AngularMomentumUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface AngularVelocity extends Measure<AngularVelocityUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AngularVelocityUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<AngularVelocityUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<AngularVelocityUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<AngularVelocityUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<AngularVelocityUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<AngularVelocityUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Current extends Measure<CurrentUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Voltage times(Resistance multiplier) {
|
||||
return Volts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<CurrentUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<CurrentUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<CurrentUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<CurrentUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Dimensionless extends Measure<DimensionlessUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Resistance times(Resistance multiplier) {
|
||||
return Ohms.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<DimensionlessUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<DimensionlessUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Temperature times(Temperature multiplier) {
|
||||
return Kelvin.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Distance extends Measure<DistanceUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<DistanceUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<DistanceUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<DistanceUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<DistanceUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<DistanceUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<DistanceUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Energy extends Measure<EnergyUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<EnergyUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<EnergyUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<EnergyUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<EnergyUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<EnergyUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<EnergyUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Force extends Measure<ForceUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ForceUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<ForceUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ForceUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<ForceUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ForceUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<ForceUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Frequency extends Measure<FrequencyUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<FrequencyUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<FrequencyUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<FrequencyUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<FrequencyUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<FrequencyUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<FrequencyUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
28
wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableResistance.java
generated
Normal file
28
wpiunits/src/generated/main/java/edu/wpi/first/units/measure/ImmutableResistance.java
generated
Normal file
@@ -0,0 +1,28 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY
|
||||
|
||||
package edu.wpi.first.units.measure;
|
||||
|
||||
import static edu.wpi.first.units.Units.*;
|
||||
import edu.wpi.first.units.*;
|
||||
|
||||
@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"})
|
||||
public record ImmutableResistance(double magnitude, double baseUnitMagnitude, ResistanceUnit unit) implements Resistance {
|
||||
@Override
|
||||
public Resistance copy() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return toShortString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
return o instanceof Measure<?> m && isEquivalent(m);
|
||||
}
|
||||
}
|
||||
@@ -277,6 +277,17 @@ public interface LinearAcceleration extends Measure<LinearAccelerationUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<LinearAccelerationUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<LinearAccelerationUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<LinearAccelerationUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<LinearAccelerationUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<LinearAccelerationUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<LinearAccelerationUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface LinearMomentum extends Measure<LinearMomentumUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<LinearMomentumUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<LinearMomentumUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<LinearMomentumUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<LinearMomentumUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<LinearMomentumUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<LinearMomentumUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface LinearVelocity extends Measure<LinearVelocityUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<LinearVelocityUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<LinearVelocityUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<LinearVelocityUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<LinearVelocityUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<LinearVelocityUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<LinearVelocityUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Mass extends Measure<MassUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<MassUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<MassUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<MassUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<MassUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<MassUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<MassUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface MomentOfInertia extends Measure<MomentOfInertiaUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<MomentOfInertiaUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<MomentOfInertiaUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<MomentOfInertiaUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<MomentOfInertiaUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<MomentOfInertiaUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<MomentOfInertiaUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Mult<A extends Unit, B extends Unit> extends Measure<MultUnit<A
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<MultUnit<A, B>, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<MultUnit<A, B>, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<MultUnit<A, B>, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<MultUnit<A, B>, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<MultUnit<A, B>, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<MultUnit<A, B>, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
25
wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutResistance.java
generated
Normal file
25
wpiunits/src/generated/main/java/edu/wpi/first/units/measure/MutResistance.java
generated
Normal file
@@ -0,0 +1,25 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY
|
||||
|
||||
package edu.wpi.first.units.measure;
|
||||
|
||||
import static edu.wpi.first.units.Units.*;
|
||||
import edu.wpi.first.units.*;
|
||||
import edu.wpi.first.units.mutable.MutableMeasureBase;
|
||||
|
||||
@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"})
|
||||
public final class MutResistance
|
||||
extends MutableMeasureBase<ResistanceUnit, Resistance, MutResistance>
|
||||
implements Resistance {
|
||||
public MutResistance(double magnitude, double baseUnitMagnitude, ResistanceUnit unit) {
|
||||
super(magnitude, baseUnitMagnitude, unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resistance copy() {
|
||||
return new ImmutableResistance(magnitude(), baseUnitMagnitude(), unit());
|
||||
}
|
||||
}
|
||||
@@ -277,6 +277,17 @@ public interface Per<Dividend extends Unit, Divisor extends Unit> extends Measur
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<PerUnit<Dividend, Divisor>, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<PerUnit<Dividend, Divisor>, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<PerUnit<Dividend, Divisor>, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<PerUnit<Dividend, Divisor>, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<PerUnit<Dividend, Divisor>, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<PerUnit<Dividend, Divisor>, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Power extends Measure<PowerUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<PowerUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<PowerUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<PowerUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<PowerUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<PowerUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<PowerUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
345
wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Resistance.java
generated
Normal file
345
wpiunits/src/generated/main/java/edu/wpi/first/units/measure/Resistance.java
generated
Normal file
@@ -0,0 +1,345 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
// THIS FILE WAS AUTO-GENERATED BY ./wpiunits/generate_units.py. DO NOT MODIFY
|
||||
|
||||
package edu.wpi.first.units.measure;
|
||||
|
||||
import static edu.wpi.first.units.Units.*;
|
||||
import edu.wpi.first.units.*;
|
||||
|
||||
@SuppressWarnings({"unchecked", "cast", "checkstyle", "PMD"})
|
||||
public interface Resistance extends Measure<ResistanceUnit> {
|
||||
static Resistance ofRelativeUnits(double magnitude, ResistanceUnit unit) {
|
||||
return new ImmutableResistance(magnitude, unit.toBaseUnits(magnitude), unit);
|
||||
}
|
||||
|
||||
static Resistance ofBaseUnits(double baseUnitMagnitude, ResistanceUnit unit) {
|
||||
return new ImmutableResistance(unit.fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
Resistance copy();
|
||||
|
||||
@Override
|
||||
default MutResistance mutableCopy() {
|
||||
return new MutResistance(magnitude(), baseUnitMagnitude(), unit());
|
||||
}
|
||||
|
||||
@Override
|
||||
ResistanceUnit unit();
|
||||
|
||||
@Override
|
||||
default ResistanceUnit baseUnit() { return (ResistanceUnit) unit().getBaseUnit(); }
|
||||
|
||||
@Override
|
||||
default double in(ResistanceUnit unit) {
|
||||
return unit.fromBaseUnits(baseUnitMagnitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
default Resistance unaryMinus() {
|
||||
return (Resistance) unit().ofBaseUnits(0 - baseUnitMagnitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
default Resistance plus(Measure<? extends ResistanceUnit> other) {
|
||||
return (Resistance) unit().ofBaseUnits(baseUnitMagnitude() + other.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
default Resistance minus(Measure<? extends ResistanceUnit> other) {
|
||||
return (Resistance) unit().ofBaseUnits(baseUnitMagnitude() - other.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
default Resistance times(double multiplier) {
|
||||
return (Resistance) unit().ofBaseUnits(baseUnitMagnitude() * multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Resistance divide(double divisor) {
|
||||
return (Resistance) unit().ofBaseUnits(baseUnitMagnitude() / divisor);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Velocity<ResistanceUnit> per(TimeUnit period) {
|
||||
return divide(period.of(1));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, AccelerationUnit<?>> times(Acceleration<?> multiplier) {
|
||||
return (Mult<ResistanceUnit, AccelerationUnit<?>>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, AccelerationUnit<?>> divide(Acceleration<?> divisor) {
|
||||
return (Per<ResistanceUnit, AccelerationUnit<?>>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, AngleUnit> times(Angle multiplier) {
|
||||
return (Mult<ResistanceUnit, AngleUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, AngleUnit> divide(Angle divisor) {
|
||||
return (Per<ResistanceUnit, AngleUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, AngularAccelerationUnit> times(AngularAcceleration multiplier) {
|
||||
return (Mult<ResistanceUnit, AngularAccelerationUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, AngularAccelerationUnit> divide(AngularAcceleration divisor) {
|
||||
return (Per<ResistanceUnit, AngularAccelerationUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, AngularMomentumUnit> times(AngularMomentum multiplier) {
|
||||
return (Mult<ResistanceUnit, AngularMomentumUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, AngularMomentumUnit> divide(AngularMomentum divisor) {
|
||||
return (Per<ResistanceUnit, AngularMomentumUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, AngularVelocityUnit> times(AngularVelocity multiplier) {
|
||||
return (Mult<ResistanceUnit, AngularVelocityUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, AngularVelocityUnit> divide(AngularVelocity divisor) {
|
||||
return (Per<ResistanceUnit, AngularVelocityUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Voltage times(Current multiplier) {
|
||||
return Volts.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, CurrentUnit> divide(Current divisor) {
|
||||
return (Per<ResistanceUnit, CurrentUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Resistance divide(Dimensionless divisor) {
|
||||
return (Resistance) Ohms.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
default Resistance times(Dimensionless multiplier) {
|
||||
return (Resistance) Ohms.of(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, DistanceUnit> times(Distance multiplier) {
|
||||
return (Mult<ResistanceUnit, DistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, DistanceUnit> divide(Distance divisor) {
|
||||
return (Per<ResistanceUnit, DistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, EnergyUnit> times(Energy multiplier) {
|
||||
return (Mult<ResistanceUnit, EnergyUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, EnergyUnit> divide(Energy divisor) {
|
||||
return (Per<ResistanceUnit, EnergyUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, ForceUnit> times(Force multiplier) {
|
||||
return (Mult<ResistanceUnit, ForceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, ForceUnit> divide(Force divisor) {
|
||||
return (Per<ResistanceUnit, ForceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, FrequencyUnit> times(Frequency multiplier) {
|
||||
return (Mult<ResistanceUnit, FrequencyUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, FrequencyUnit> divide(Frequency divisor) {
|
||||
return (Per<ResistanceUnit, FrequencyUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, LinearAccelerationUnit> times(LinearAcceleration multiplier) {
|
||||
return (Mult<ResistanceUnit, LinearAccelerationUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, LinearAccelerationUnit> divide(LinearAcceleration divisor) {
|
||||
return (Per<ResistanceUnit, LinearAccelerationUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, LinearMomentumUnit> times(LinearMomentum multiplier) {
|
||||
return (Mult<ResistanceUnit, LinearMomentumUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, LinearMomentumUnit> divide(LinearMomentum divisor) {
|
||||
return (Per<ResistanceUnit, LinearMomentumUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, LinearVelocityUnit> times(LinearVelocity multiplier) {
|
||||
return (Mult<ResistanceUnit, LinearVelocityUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, LinearVelocityUnit> divide(LinearVelocity divisor) {
|
||||
return (Per<ResistanceUnit, LinearVelocityUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, MassUnit> times(Mass multiplier) {
|
||||
return (Mult<ResistanceUnit, MassUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, MassUnit> divide(Mass divisor) {
|
||||
return (Per<ResistanceUnit, MassUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, MomentOfInertiaUnit> times(MomentOfInertia multiplier) {
|
||||
return (Mult<ResistanceUnit, MomentOfInertiaUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, MomentOfInertiaUnit> divide(MomentOfInertia divisor) {
|
||||
return (Per<ResistanceUnit, MomentOfInertiaUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, MultUnit<?, ?>> times(Mult<?, ?> multiplier) {
|
||||
return (Mult<ResistanceUnit, MultUnit<?, ?>>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, MultUnit<?, ?>> divide(Mult<?, ?> divisor) {
|
||||
return (Per<ResistanceUnit, MultUnit<?, ?>>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, PerUnit<?, ?>> times(Per<?, ?> multiplier) {
|
||||
return (Mult<ResistanceUnit, PerUnit<?, ?>>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, PerUnit<?, ?>> divide(Per<?, ?> divisor) {
|
||||
return (Per<ResistanceUnit, PerUnit<?, ?>>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, PowerUnit> times(Power multiplier) {
|
||||
return (Mult<ResistanceUnit, PowerUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, PowerUnit> divide(Power divisor) {
|
||||
return (Per<ResistanceUnit, PowerUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<ResistanceUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Dimensionless divide(Resistance divisor) {
|
||||
return Value.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<ResistanceUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, TemperatureUnit> divide(Temperature divisor) {
|
||||
return (Per<ResistanceUnit, TemperatureUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, TimeUnit> times(Time multiplier) {
|
||||
return (Mult<ResistanceUnit, TimeUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Velocity<ResistanceUnit> divide(Time divisor) {
|
||||
return VelocityUnit.combine(unit(), divisor.unit()).ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, TorqueUnit> times(Torque multiplier) {
|
||||
return (Mult<ResistanceUnit, TorqueUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, TorqueUnit> divide(Torque divisor) {
|
||||
return (Per<ResistanceUnit, TorqueUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, VelocityUnit<?>> times(Velocity<?> multiplier) {
|
||||
return (Mult<ResistanceUnit, VelocityUnit<?>>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, VelocityUnit<?>> divide(Velocity<?> divisor) {
|
||||
return (Per<ResistanceUnit, VelocityUnit<?>>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<ResistanceUnit, VoltageUnit> times(Voltage multiplier) {
|
||||
return (Mult<ResistanceUnit, VoltageUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<ResistanceUnit, VoltageUnit> divide(Voltage divisor) {
|
||||
return (Per<ResistanceUnit, VoltageUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -277,6 +277,17 @@ public interface Temperature extends Measure<TemperatureUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<TemperatureUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<TemperatureUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<TemperatureUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<TemperatureUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<TemperatureUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<TemperatureUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Time extends Measure<TimeUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<TimeUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<TimeUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<TimeUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<TimeUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<TimeUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<TimeUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Torque extends Measure<TorqueUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<TorqueUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<TorqueUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<TorqueUnit, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<TorqueUnit, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<TorqueUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<TorqueUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -277,6 +277,17 @@ public interface Velocity<D extends Unit> extends Measure<VelocityUnit<D>> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<VelocityUnit<D>, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<VelocityUnit<D>, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<VelocityUnit<D>, ResistanceUnit> divide(Resistance divisor) {
|
||||
return (Per<VelocityUnit<D>, ResistanceUnit>) Measure.super.divide(divisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<VelocityUnit<D>, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<VelocityUnit<D>, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -130,8 +130,8 @@ public interface Voltage extends Measure<VoltageUnit> {
|
||||
}
|
||||
|
||||
@Override
|
||||
default Per<VoltageUnit, CurrentUnit> divide(Current divisor) {
|
||||
return (Per<VoltageUnit, CurrentUnit>) Measure.super.divide(divisor);
|
||||
default Resistance divide(Current divisor) {
|
||||
return Ohms.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -277,6 +277,17 @@ public interface Voltage extends Measure<VoltageUnit> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<VoltageUnit, ResistanceUnit> times(Resistance multiplier) {
|
||||
return (Mult<VoltageUnit, ResistanceUnit>) Measure.super.times(multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Current divide(Resistance divisor) {
|
||||
return Amps.of(baseUnitMagnitude() / divisor.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
default Mult<VoltageUnit, TemperatureUnit> times(Temperature multiplier) {
|
||||
return (Mult<VoltageUnit, TemperatureUnit>) Measure.super.times(multiplier);
|
||||
|
||||
@@ -25,6 +25,7 @@ import edu.wpi.first.units.measure.MomentOfInertia;
|
||||
import edu.wpi.first.units.measure.Mult;
|
||||
import edu.wpi.first.units.measure.Per;
|
||||
import edu.wpi.first.units.measure.Power;
|
||||
import edu.wpi.first.units.measure.Resistance;
|
||||
import edu.wpi.first.units.measure.Temperature;
|
||||
import edu.wpi.first.units.measure.Time;
|
||||
import edu.wpi.first.units.measure.Torque;
|
||||
@@ -246,6 +247,8 @@ public interface Measure<U extends Unit> extends Comparable<Measure<U>> {
|
||||
return times(velocity);
|
||||
} else if (multiplier instanceof Voltage voltage) {
|
||||
return times(voltage);
|
||||
} else if (multiplier instanceof Resistance resistance) {
|
||||
return times(resistance);
|
||||
} else {
|
||||
// Dimensional analysis fallthrough or a generic input measure type
|
||||
// Do a basic unit multiplication
|
||||
@@ -530,6 +533,18 @@ public interface Measure<U extends Unit> extends Comparable<Measure<U>> {
|
||||
.ofBaseUnits(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiplies this measure by a resistance and returns the resulting measure in the most
|
||||
* appropriate unit.
|
||||
*
|
||||
* @param multiplier the measurement to multiply by.
|
||||
* @return the multiplication result
|
||||
*/
|
||||
default Measure<?> times(Resistance multiplier) {
|
||||
return MultUnit.combine(unit(), multiplier.unit())
|
||||
.ofBaseUnits(baseUnitMagnitude() * multiplier.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiplies this measure by a conversion factor, returning the converted measurement. Unlike
|
||||
* {@link #times(Per)}, this allows for basic unit cancellation to return measurements of a known
|
||||
@@ -687,6 +702,8 @@ public interface Measure<U extends Unit> extends Comparable<Measure<U>> {
|
||||
return divide(velocity);
|
||||
} else if (divisor instanceof Voltage voltage) {
|
||||
return divide(voltage);
|
||||
} else if (divisor instanceof Resistance resistance) {
|
||||
return divide(resistance);
|
||||
} else {
|
||||
// Dimensional analysis fallthrough or a generic input measure type
|
||||
// Do a basic unit multiplication
|
||||
@@ -957,6 +974,17 @@ public interface Measure<U extends Unit> extends Comparable<Measure<U>> {
|
||||
.ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
/**
|
||||
* Divides this measure by a resistance and returns the result in the most appropriate unit.
|
||||
*
|
||||
* @param divisor the measurement to divide by.
|
||||
* @return the division result
|
||||
*/
|
||||
default Measure<?> divide(Resistance divisor) {
|
||||
return PerUnit.combine(unit(), divisor.unit())
|
||||
.ofBaseUnits(baseUnitMagnitude() / divisor.baseUnitMagnitude());
|
||||
}
|
||||
|
||||
/**
|
||||
* Divides this measure by a ratio in terms of this measurement's unit to another unit, returning
|
||||
* a measurement in terms of the other unit.
|
||||
|
||||
104
wpiunits/src/main/java/edu/wpi/first/units/ResistanceUnit.java
Normal file
104
wpiunits/src/main/java/edu/wpi/first/units/ResistanceUnit.java
Normal file
@@ -0,0 +1,104 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
package edu.wpi.first.units;
|
||||
|
||||
import edu.wpi.first.units.measure.ImmutableResistance;
|
||||
import edu.wpi.first.units.measure.MutResistance;
|
||||
import edu.wpi.first.units.measure.Resistance;
|
||||
|
||||
/**
|
||||
* Unit of resistance dimension.
|
||||
*
|
||||
* <p>This is the base type for units of resistance dimension. It is also used to specify the
|
||||
* dimension for {@link Measure}: <code>Measure<ResistanceUnit></code>.
|
||||
*
|
||||
* <p>Actual units (such as {@link Units#Ohms} and {@link Units#KiloOhms}) can be found in the
|
||||
* {@link Units} class.
|
||||
*/
|
||||
public final class ResistanceUnit extends PerUnit<VoltageUnit, CurrentUnit> {
|
||||
private static final CombinatoryUnitCache<VoltageUnit, CurrentUnit, ResistanceUnit> cache =
|
||||
new CombinatoryUnitCache<>(ResistanceUnit::new);
|
||||
|
||||
ResistanceUnit(VoltageUnit numerator, CurrentUnit denominator) {
|
||||
super(
|
||||
numerator.isBaseUnit() && denominator.isBaseUnit()
|
||||
? null
|
||||
: combine(numerator.getBaseUnit(), denominator.getBaseUnit()),
|
||||
numerator,
|
||||
denominator);
|
||||
}
|
||||
|
||||
ResistanceUnit(
|
||||
ResistanceUnit baseUnit,
|
||||
UnaryFunction toBaseConverter,
|
||||
UnaryFunction fromBaseConverter,
|
||||
String name,
|
||||
String symbol) {
|
||||
super(baseUnit, toBaseConverter, fromBaseConverter, name, symbol);
|
||||
}
|
||||
|
||||
/**
|
||||
* Combines an voltage and a current unit to form a unit of resistance.
|
||||
*
|
||||
* @param voltage the unit of voltage
|
||||
* @param current the unit of current
|
||||
* @return the combined unit of resistance
|
||||
*/
|
||||
public static ResistanceUnit combine(VoltageUnit voltage, CurrentUnit current) {
|
||||
return cache.combine(voltage, current);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResistanceUnit getBaseUnit() {
|
||||
return (ResistanceUnit) super.getBaseUnit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resistance of(double magnitude) {
|
||||
return new ImmutableResistance(magnitude, toBaseUnits(magnitude), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resistance ofBaseUnits(double baseUnitMagnitude) {
|
||||
return new ImmutableResistance(fromBaseUnits(baseUnitMagnitude), baseUnitMagnitude, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resistance zero() {
|
||||
return (Resistance) super.zero();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resistance one() {
|
||||
return (Resistance) super.one();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MutResistance mutable(double initialMagnitude) {
|
||||
return new MutResistance(initialMagnitude, toBaseUnits(initialMagnitude), this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a ratio unit between this unit and an arbitrary other unit.
|
||||
*
|
||||
* @param other the other unit
|
||||
* @param <U> the type of the other unit
|
||||
* @return the ratio unit
|
||||
*/
|
||||
public <U extends Unit> PerUnit<ResistanceUnit, U> per(U other) {
|
||||
return PerUnit.combine(this, other);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a measurement value in terms of another power unit to this unit.
|
||||
*
|
||||
* @param magnitude the magnitude of the measurement in terms of the other power unit
|
||||
* @param otherUnit the other power unit
|
||||
* @return the value of the measurement in terms of this unit
|
||||
*/
|
||||
public double convertFrom(double magnitude, ResistanceUnit otherUnit) {
|
||||
return fromBaseUnits(otherUnit.toBaseUnits(magnitude));
|
||||
}
|
||||
}
|
||||
@@ -412,6 +412,25 @@ public final class Units {
|
||||
*/
|
||||
public static final CurrentUnit Milliamp = Milliamps; // alias
|
||||
|
||||
// ResistanceUnit
|
||||
/** The base unit of resistance. Equivalent to one {@link #Volt} per {@link #Amp}. */
|
||||
public static final ResistanceUnit Ohms = derive(Volts.per(Amp)).named("Ohm").symbol("Ω").make();
|
||||
|
||||
/** The base unit of resistance. Equivalent to one {@link #Volt} per {@link #Amp}. */
|
||||
public static final ResistanceUnit Ohm = Ohms; // alias
|
||||
|
||||
/** A unit equal to 1,000 {@link #Ohms}. */
|
||||
public static final ResistanceUnit KiloOhms = Kilo(Ohms);
|
||||
|
||||
/** A unit equal to 1,000 {@link #Ohms}. */
|
||||
public static final ResistanceUnit KiloOhm = KiloOhms; // alias
|
||||
|
||||
/** A unit equal to 1/1000 of a {@link #Ohm}. */
|
||||
public static final ResistanceUnit MilliOhms = Milli(Ohms);
|
||||
|
||||
/** A unit equal to 1/1000 of a {@link #Ohm}. */
|
||||
public static final ResistanceUnit MilliOhm = MilliOhms; // alias
|
||||
|
||||
// EnergyUnit
|
||||
/** The base unit of energy. */
|
||||
public static final EnergyUnit Joules = BaseUnits.EnergyUnit;
|
||||
|
||||
@@ -81,6 +81,16 @@ public final class VoltageUnit extends Unit {
|
||||
return VelocityUnit.combine(this, period);
|
||||
}
|
||||
|
||||
/**
|
||||
* Combines this unit of voltage with a unit of current to form a unit of resistance.
|
||||
*
|
||||
* @param currentUnit the unit of current
|
||||
* @return the combined resistance unit
|
||||
*/
|
||||
public ResistanceUnit per(CurrentUnit currentUnit) {
|
||||
return ResistanceUnit.combine(this, currentUnit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a generic ratio unit of this voltage to a different unit type.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user