mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-29 02:21:44 +00:00
@@ -206,6 +206,6 @@ public class Rotation2d implements Interpolatable<Rotation2d> {
|
||||
@Override
|
||||
@SuppressWarnings("ParameterName")
|
||||
public Rotation2d interpolate(Rotation2d endValue, double t) {
|
||||
return new Rotation2d(MathUtil.interpolate(this.getRadians(), endValue.getRadians(), t));
|
||||
return plus(endValue.minus(this).times(MathUtil.clamp(t, 0, 1)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,4 +76,19 @@ class Rotation2dTest {
|
||||
var rot2 = Rotation2d.fromDegrees(43.5);
|
||||
assertNotEquals(rot1, rot2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testInterpolate() {
|
||||
// 50 + (70 - 50) * 0.5 = 60
|
||||
var rot1 = Rotation2d.fromDegrees(50);
|
||||
var rot2 = Rotation2d.fromDegrees(70);
|
||||
var interpolated = rot1.interpolate(rot2, 0.5);
|
||||
assertEquals(60.0, interpolated.getDegrees(), 1e-2);
|
||||
|
||||
// -160 minus half distance between 170 and -160 (15) = -175
|
||||
var rot3 = Rotation2d.fromDegrees(170);
|
||||
var rot4 = Rotation2d.fromDegrees(-160);
|
||||
interpolated = rot3.interpolate(rot4, 0.5);
|
||||
assertEquals(-175.0, interpolated.getDegrees());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user