From ee64fef165331b267148407eff60f5f4fb89db5b Mon Sep 17 00:00:00 2001 From: Vojtech Moravec <vojtech.moravec.st@vsb.cz> Date: Fri, 16 Oct 2020 18:34:33 +0200 Subject: [PATCH] Fix MirroredRepeat wrapping strategy. Our old calculation would fail if we oveflow by more than one dimension. Eg. dimX = 2 and X = 4, we would wrap it to -1 instead of 1. --- src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java index 60d9698..a5bac1b 100644 --- a/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java @@ -62,7 +62,7 @@ public abstract class BasicLoader { if (wrappingStrategy == DataWrappingStrategy.ClampToEdge) { return dims.getX() - 1; } else if (wrappingStrategy == DataWrappingStrategy.MirroredRepeat) { - return (dims.getX() - ((x - dims.getX()) + 1)); + return (dims.getX() - (1 + (x % dims.getX()))); } return x; } @@ -77,7 +77,7 @@ public abstract class BasicLoader { if (wrappingStrategy == DataWrappingStrategy.ClampToEdge) { return dims.getY() - 1; } else if (wrappingStrategy == DataWrappingStrategy.MirroredRepeat) { - return (dims.getY() - ((y - dims.getY()) + 1)); + return (dims.getY() - (1 + (y % dims.getY()))); } return y; } @@ -92,7 +92,7 @@ public abstract class BasicLoader { if (wrappingStrategy == DataWrappingStrategy.ClampToEdge) { return dims.getZ() - 1; } else if (wrappingStrategy == DataWrappingStrategy.MirroredRepeat) { - return (dims.getZ() - ((z - dims.getZ()) + 1)); + return (dims.getZ() - (1 + (z % dims.getZ()))); } return z; } -- GitLab