pranavbhole commented on code in PR #15881:
URL: https://github.com/apache/druid/pull/15881#discussion_r1485001516
##########
processing/src/test/java/org/apache/druid/collections/spatial/search/PolygonBoundTest.java:
##########
@@ -31,52 +31,70 @@ public class PolygonBoundTest
public void testCacheKey()
{
Assert.assertArrayEquals(
- PolygonBound.from(new float[]{1F, 2F, 3F}, new float[]{0F, 2F, 0F},
1).getCacheKey(),
- PolygonBound.from(new float[]{1F, 2F, 3F}, new float[]{0F, 2F, 0F},
1).getCacheKey()
+ PolygonBound.from(new double[]{1F, 2F, 3F}, new double[]{0F, 2F, 0F},
1).getCacheKey(),
+ PolygonBound.from(new double[]{1F, 2F, 3F}, new double[]{0F, 2F, 0F},
1).getCacheKey()
);
Assert.assertFalse(Arrays.equals(
- PolygonBound.from(new float[]{1F, 2F, 3F}, new float[]{0F, 2F, 0F},
1).getCacheKey(),
- PolygonBound.from(new float[]{1F, 2F, 3F}, new float[]{0F, 2F, 1F},
1).getCacheKey()
+ PolygonBound.from(new double[]{1F, 2F, 3F}, new double[]{0F, 2F, 0F},
1).getCacheKey(),
+ PolygonBound.from(new double[]{1F, 2F, 3F}, new double[]{0F, 2F, 1F},
1).getCacheKey()
));
Assert.assertFalse(Arrays.equals(
- PolygonBound.from(new float[]{1F, 2F, 3F}, new float[]{0F, 2F, 0F},
1).getCacheKey(),
- PolygonBound.from(new float[]{1F, 2F, 2F}, new float[]{0F, 2F, 0F},
1).getCacheKey()
+ PolygonBound.from(new double[]{1F, 2F, 3F}, new double[]{0F, 2F, 0F},
1).getCacheKey(),
+ PolygonBound.from(new double[]{1F, 2F, 2F}, new double[]{0F, 2F, 0F},
1).getCacheKey()
));
Assert.assertFalse(Arrays.equals(
- PolygonBound.from(new float[]{1F, 2F, 3F}, new float[]{0F, 2F, 0F},
1).getCacheKey(),
- PolygonBound.from(new float[]{1F, 2F, 3F}, new float[]{0F, 2F, 0F},
2).getCacheKey()
+ PolygonBound.from(new double[]{1F, 2F, 3F}, new double[]{0F, 2F, 0F},
1).getCacheKey(),
+ PolygonBound.from(new double[]{1F, 2F, 3F}, new double[]{0F, 2F, 0F},
2).getCacheKey()
));
}
@Test
public void testContains()
{
- final PolygonBound triangle = PolygonBound.from(new float[]{1f, 4f, 7f},
new float[]{1f, 4f, 1f});
+ final PolygonBound triangle = PolygonBound.from(new double[]{1f, 4f, 7f},
new double[]{1f, 4f, 1f});
final float delta = 1e-5f;
- Assert.assertTrue(triangle.contains(new float[]{1f, 1f}));
- Assert.assertFalse(triangle.contains(new float[]{1f, 1f - delta}));
- Assert.assertFalse(triangle.contains(new float[]{1f, 1f + delta}));
- Assert.assertTrue(triangle.contains(new float[]{1f + delta, 1f}));
- Assert.assertFalse(triangle.contains(new float[]{1f - delta, 1f}));
- Assert.assertTrue(triangle.contains(new float[]{1f + delta, 1f}));
- Assert.assertFalse(triangle.contains(new float[]{1f - delta, 1f}));
- Assert.assertTrue(triangle.contains(new float[]{5f, 1f}));
- Assert.assertFalse(triangle.contains(new float[]{1f, 5f}));
- Assert.assertTrue(triangle.contains(new float[]{3f, 2f}));
+ Assert.assertTrue(triangle.contains(new double[]{1f, 1f}));
+ Assert.assertFalse(triangle.contains(new double[]{1f, 1f - delta}));
+ Assert.assertFalse(triangle.contains(new double[]{1f, 1f + delta}));
+ Assert.assertTrue(triangle.contains(new double[]{1f + delta, 1f}));
+ Assert.assertFalse(triangle.contains(new double[]{1f - delta, 1f}));
+ Assert.assertTrue(triangle.contains(new double[]{1f + delta, 1f}));
+ Assert.assertFalse(triangle.contains(new double[]{1f - delta, 1f}));
+ Assert.assertTrue(triangle.contains(new double[]{5f, 1f}));
+ Assert.assertFalse(triangle.contains(new double[]{1f, 5f}));
+ Assert.assertTrue(triangle.contains(new double[]{3f, 2f}));
- final PolygonBound rightTriangle = PolygonBound.from(new float[]{1f, 1f,
5f}, new float[]{1f, 5f, 1f});
+ final PolygonBound rightTriangle = PolygonBound.from(new double[]{1f, 1f,
5f}, new double[]{1f, 5f, 1f});
- Assert.assertTrue(rightTriangle.contains(new float[]{1f, 5f}));
- Assert.assertTrue(rightTriangle.contains(new float[]{2f, 4f}));
- Assert.assertTrue(rightTriangle.contains(new float[]{2f - delta, 4f}));
- Assert.assertFalse(rightTriangle.contains(new float[]{2f + delta, 4f}));
- Assert.assertTrue(rightTriangle.contains(new float[]{2f, 4f - delta}));
- Assert.assertFalse(rightTriangle.contains(new float[]{2f, 4f + delta}));
- Assert.assertTrue(rightTriangle.contains(new float[]{3f - delta, 3f}));
- Assert.assertFalse(rightTriangle.contains(new float[]{3f + delta, 3f}));
- Assert.assertTrue(rightTriangle.contains(new float[]{3f, 3f - delta}));
- Assert.assertFalse(rightTriangle.contains(new float[]{3f, 3f + delta}));
+ Assert.assertTrue(rightTriangle.contains(new double[]{1f, 5f}));
+ Assert.assertTrue(rightTriangle.contains(new double[]{2f, 4f}));
+ Assert.assertTrue(rightTriangle.contains(new double[]{2f - delta, 4f}));
+ Assert.assertFalse(rightTriangle.contains(new double[]{2f + delta, 4f}));
+ Assert.assertTrue(rightTriangle.contains(new double[]{2f, 4f - delta}));
+ Assert.assertFalse(rightTriangle.contains(new double[]{2f, 4f + delta}));
+ Assert.assertTrue(rightTriangle.contains(new double[]{3f - delta, 3f}));
+ Assert.assertFalse(rightTriangle.contains(new double[]{3f + delta, 3f}));
+ Assert.assertTrue(rightTriangle.contains(new double[]{3f, 3f - delta}));
+ Assert.assertFalse(rightTriangle.contains(new double[]{3f, 3f + delta}));
+ }
+
+ @Test
+ public void testHighPrecisions()
+ {
+ //37.82460331205531, -122.50851323395436 Black Sand Beach
+ //37.79378584960722, -122.48344917652936 Bakers Beach
+ //37.82872192254861, -122.48597242173493 Golden Gate view point
+
+ final PolygonBound triangle = PolygonBound.from(
+ new double[]{37.82460331205531, 37.79378584960722, 37.82872192254861},
+ new double[]{-122.50851323395436, -122.48344917652936,
-122.48597242173493}
+ );
+ // points near triangle edges
+ Assert.assertTrue(triangle.contains(new double[]{37.82668550138975,
-122.48783179067323}));
+ Assert.assertTrue(triangle.contains(new double[]{37.813408325545275,
-122.48605838780342}));
+ Assert.assertFalse(triangle.contains(new double[]{37.80812634358083,
-122.49676991156807}));
+ Assert.assertFalse(triangle.contains(new double[]{37.81832968852414,
-122.4843583756818}));
}
Review Comment:
Used this triangle for this high precision test
<img width="1084" alt="Screenshot 2024-02-09 at 11 50 12 PM"
src="https://github.com/apache/druid/assets/4935454/c9b1bc79-bd9b-4e25-82a1-ba540f62df9f">
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]