From 5989e45906c14bd0a3cb828efe3628535f366fce Mon Sep 17 00:00:00 2001 From: jan Date: Sun, 8 Mar 2026 21:38:47 -0700 Subject: [PATCH] [apply_transforms] fix handling of rotations while mirrored --- masque/utils/transform.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/masque/utils/transform.py b/masque/utils/transform.py index dfb6492..90647b1 100644 --- a/masque/utils/transform.py +++ b/masque/utils/transform.py @@ -114,9 +114,13 @@ def apply_transforms( tot = numpy.empty((outer.shape[0], inner.shape[0], 4)) tot[:, :, :2] = outer[:, None, :2] + xy - tot[:, :, 2:] = outer[:, None, 2:] + inner[None, :, 2:] # sum rotations and mirrored - tot[:, :, 2] %= 2 * pi # clamp rot - tot[:, :, 3] %= 2 # clamp mirrored + + # If mirrored, flip inner rotation + mirrored_outer = outer[:, None, 3].astype(bool) + rotations = outer[:, None, 2] + numpy.where(mirrored_outer, -inner[None, :, 2], inner[None, :, 2]) + + tot[:, :, 2] = rotations % (2 * pi) + tot[:, :, 3] = (outer[:, None, 3] + inner[None, :, 3]) % 2 # net mirrored if tensor: return tot