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