Rename Rot2::angle_between to Rot2::angle_to (#16327)

# Objective

`glam` has opted to rename `Vec2::angle_between` to `Vec2::angle_to`
because of the difference in semantics compared to `Vec3::angle_between`
and others which return an unsigned angle `[0, PI]` where
`Vec2::angle_between` returns a signed angle `[-PI, PI]`.
We should follow suit for `Rot2` in 0.15 to avoid further confusion.

Links:
-
https://github.com/bitshifter/glam-rs/issues/514#issuecomment-2143202294
- https://github.com/bitshifter/glam-rs/pull/524

## Migration Guide

`Rot2::angle_between` has been deprecated, use `Rot2::angle_to` instead,
the semantics of `Rot2::angle_between` will change in the future.

---------

Co-authored-by: Joona Aalto <jondolf.dev@gmail.com>
This commit is contained in:
Tim 2024-11-10 14:36:48 +00:00 committed by GitHub
parent 40640fdf42
commit 03991cd595
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -331,7 +331,17 @@ impl Rot2 {
/// Returns the angle in radians needed to make `self` and `other` coincide. /// Returns the angle in radians needed to make `self` and `other` coincide.
#[inline] #[inline]
#[deprecated(
since = "0.15.0",
note = "Use `angle_to` instead, the semantics of `angle_between` will change in the future."
)]
pub fn angle_between(self, other: Self) -> f32 { pub fn angle_between(self, other: Self) -> f32 {
self.angle_to(other)
}
/// Returns the angle in radians needed to make `self` and `other` coincide.
#[inline]
pub fn angle_to(self, other: Self) -> f32 {
(other * self.inverse()).as_radians() (other * self.inverse()).as_radians()
} }
@ -424,7 +434,7 @@ impl Rot2 {
/// ``` /// ```
#[inline] #[inline]
pub fn slerp(self, end: Self, s: f32) -> Self { pub fn slerp(self, end: Self, s: f32) -> Self {
self * Self::radians(self.angle_between(end) * s) self * Self::radians(self.angle_to(end) * s)
} }
} }
@ -567,10 +577,7 @@ mod tests {
assert_relative_eq!((rotation1 * rotation2.inverse()).as_degrees(), 45.0); assert_relative_eq!((rotation1 * rotation2.inverse()).as_degrees(), 45.0);
// This should be equivalent to the above // This should be equivalent to the above
assert_relative_eq!( assert_relative_eq!(rotation2.angle_to(rotation1), core::f32::consts::FRAC_PI_4);
rotation2.angle_between(rotation1),
core::f32::consts::FRAC_PI_4
);
} }
#[test] #[test]