From 559659b1d2de57d9c2cf48fb4a168d706ab99a36 Mon Sep 17 00:00:00 2001 From: Kijai <40791699+kijai@users.noreply.github.com> Date: Tue, 19 Dec 2023 16:29:10 +0200 Subject: [PATCH] Fix negative angles --- nodes.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/nodes.py b/nodes.py index 83a899c..37d7d56 100644 --- a/nodes.py +++ b/nodes.py @@ -2750,12 +2750,24 @@ def camera_embeddings(elevation, azimuth): return embeddings def interpolate_angle(start, end, fraction): - # Calculate the difference in angles and adjust for wraparound if necessary - diff = (end - start + 540) % 360 - 180 - # Apply fraction to the difference - interpolated = start + fraction * diff - # Normalize the result to be within the range of -180 to 180 - return (interpolated + 180) % 360 - 180 + # Normalize angles between -180 and 180 + start = ((start + 180) % 360) - 180 + end = ((end + 180) % 360) - 180 + + # Compute the difference in angles and wrap it properly + diff = (end - start + 180) % 360 - 180 + + # Use the shortest path + if diff > 180: + diff -= 360 + elif diff < -180: + diff += 360 + + # Interpolate and wrap the result again + interpolated = (start + diff * fraction + 360) % 360 + if interpolated > 180: + interpolated -= 360 + return interpolated class StableZero123_BatchSchedule: @classmethod @@ -2847,7 +2859,7 @@ class StableZero123_BatchSchedule: interpolated_azimuth = interpolate_angle(azimuth_points[prev_point][1], azimuth_points[next_point][1], fraction) else: interpolated_azimuth = azimuth_points[prev_point][1] - + print(interpolated_azimuth) # Interpolate the elevation next_elevation_point = 1 while next_elevation_point < len(elevation_points) and i >= elevation_points[next_elevation_point][0]: