From 4a8ad9a5bea9d0be251450f9e0db15b16e85e1ac Mon Sep 17 00:00:00 2001 From: magethle Date: Fri, 7 Feb 2025 16:52:29 +0100 Subject: [PATCH] Fix distortion calculation for isosceles right triangles --- .../com/google/zxing/qrcode/detector/FinderPatternFinder.java | 2 +- .../java/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/google/zxing/qrcode/detector/FinderPatternFinder.java b/core/src/main/java/com/google/zxing/qrcode/detector/FinderPatternFinder.java index 17ca88b8f..0123f45db 100755 --- a/core/src/main/java/com/google/zxing/qrcode/detector/FinderPatternFinder.java +++ b/core/src/main/java/com/google/zxing/qrcode/detector/FinderPatternFinder.java @@ -695,7 +695,7 @@ public class FinderPatternFinder { // we need to check both two equal sides separately. // The value of |c^2 - 2 * b^2| + |c^2 - 2 * a^2| increases as dissimilarity // from isosceles right triangle. - double d = Math.abs(c - 2 * b) + Math.abs(c - 2 * a); + double d = Math.abs(c * c - 2 * b * b) + Math.abs(c * c - 2 * a * a); if (d < distortion) { distortion = d; bestPatterns[0] = fpi; diff --git a/core/src/test/java/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java b/core/src/test/java/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java index 9968608f8..c521ac5cb 100644 --- a/core/src/test/java/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java +++ b/core/src/test/java/com/google/zxing/qrcode/QRCodeBlackBox3TestCase.java @@ -29,8 +29,8 @@ public final class QRCodeBlackBox3TestCase extends AbstractBlackBoxTestCase { super("src/test/resources/blackbox/qrcode-3", new MultiFormatReader(), BarcodeFormat.QR_CODE); addTest(38, 38, 0.0f); addTest(39, 39, 90.0f); - addTest(36, 36, 180.0f); - addTest(39, 39, 270.0f); + addTest(33, 33, 180.0f); + addTest(38, 38, 270.0f); } }