core :: Float :: angle_lerp
a
and b
, in radiansThe result is normalized with angle_normalize
.
assert 0.5.angle_lerp(0.0, pi).is_approx(0.5*pi, 0.0001)
assert 8.5.angle_lerp(0.0, pi).is_approx(0.5*pi, 0.0001)
assert 7.5.angle_lerp(0.0, pi).is_approx(-0.5*pi, 0.0001)
assert 0.5.angle_lerp(0.2, 2.0*pi-0.1).is_approx(0.05, 0.0001)
# Linear interpolation of between the angles `a` and `b`, in radians
#
# The result is normalized with `angle_normalize`.
#
# ~~~
# assert 0.5.angle_lerp(0.0, pi).is_approx(0.5*pi, 0.0001)
# assert 8.5.angle_lerp(0.0, pi).is_approx(0.5*pi, 0.0001)
# assert 7.5.angle_lerp(0.0, pi).is_approx(-0.5*pi, 0.0001)
# assert 0.5.angle_lerp(0.2, 2.0*pi-0.1).is_approx(0.05, 0.0001)
# ~~~
fun angle_lerp(a, b: Float): Float
do
var d = b - a
while d > pi do d -= 2.0*pi
while d < -pi do d += 2.0*pi
return (a + d*self).angle_normalize
end
lib/geometry/angles.nit:54,2--70,4