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