diff --git a/Zilon.Core/Zilon.Core.Tests/Common/TestCases/HexHelperTestCases.cs b/Zilon.Core/Zilon.Core.Tests/Common/TestCases/HexHelperTestCases.cs index d6a12b3f6..c41d69962 100644 --- a/Zilon.Core/Zilon.Core.Tests/Common/TestCases/HexHelperTestCases.cs +++ b/Zilon.Core/Zilon.Core.Tests/Common/TestCases/HexHelperTestCases.cs @@ -31,8 +31,8 @@ public static IEnumerable TestCases yield return new TestCaseData(stepLeft(50), 0, 50).Returns(new OffsetCoords(1, 0)); yield return new TestCaseData(stepLeft(50) / 2, stepTop(50), 50).Returns(new OffsetCoords(0, 1)); - yield return new TestCaseData(stepLeft(50) + stepLeft(50) / 2, stepTop(50), 50).Returns(new OffsetCoords(1, 1)); - yield return new TestCaseData(3 * stepLeft(50) + stepLeft(50) / 2, stepTop(50), 50).Returns(new OffsetCoords(3, 1)); + yield return new TestCaseData(stepLeft(50) + (stepLeft(50) / 2), stepTop(50), 50).Returns(new OffsetCoords(1, 1)); + yield return new TestCaseData((3 * stepLeft(50)) + (stepLeft(50) / 2), stepTop(50), 50).Returns(new OffsetCoords(3, 1)); yield return new TestCaseData(0, 2 * stepTop(50), 50).Returns(new OffsetCoords(0, 2)); diff --git a/Zilon.Core/Zilon.Core/Common/HexHelper.cs b/Zilon.Core/Zilon.Core/Common/HexHelper.cs index 2d9ab981d..fe66b6847 100644 --- a/Zilon.Core/Zilon.Core/Common/HexHelper.cs +++ b/Zilon.Core/Zilon.Core/Common/HexHelper.cs @@ -64,8 +64,11 @@ public static AxialCoords ConvertWorldToAxial(int worldX, int worldY, int size) // see https://habr.com/ru/post/319644/ static float sqrt(float a) => (float)Math.Sqrt(a); - var q = (sqrt(3) / 3f * worldX - worldY / 3f) / size; - var r = (2f / 3f * worldY) / size; + + var xDiv3 = worldX / 3f; + var yDiv3 = worldY / 3f; + var q = ((xDiv3 * sqrt(3)) - yDiv3) / size; + var r = (yDiv3 * 2f) / size; var axialCoords = new AxialCoords(q, r); return axialCoords;