adding getShortestRotation(): useful for preventing spins in camera lerps

This commit is contained in:
Josh Wilson 2008-01-10 19:54:20 +00:00
parent 596a1867c3
commit 3ff1c7a8a7
1 changed files with 15 additions and 0 deletions

View File

@ -1653,6 +1653,21 @@ def lerp(v0, v1, t):
"""
return v0 + ((v1 - v0) * t)
def getShortestRotation(start, end):
"""
Given two heading values, return a tuple describing
the shortest interval from 'start' to 'end'. This tuple
can be used to lerp a camera between two rotations
while avoiding the 'spin' problem.
"""
start, end = start % 360, end % 360
if abs(end - start) > 180:
if end < start:
end += 360
else:
start += 360
return (start, end)
def average(*args):
""" returns simple average of list of values """
val = 0.