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)

Property definitions

geometry :: angles $ Float :: angle_lerp
	# 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