Loading GeometryEngines/src/test/java/cz/fidentis/analyst/engines/distance/MeshDistanceGPUTest.java +30 −16 Original line number Diff line number Diff line Loading @@ -7,7 +7,6 @@ import cz.fidentis.analyst.engines.distance.impl.MeshDistanceNNGPU; import cz.fidentis.analyst.engines.distance.impl.MeshDistancePreciseGPU; import cz.fidentis.analyst.engines.raycasting.impl.SpatialDataProvider; import cz.fidentis.analyst.opencl.OpenCLServices; import cz.fidentis.analyst.data.kdtree.impl.LeftBalancedKdTreeImpl; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; Loading @@ -22,7 +21,7 @@ import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.*; public class MeshDistanceGPUTest extends MeshDistanceTest { public class MeshDistanceGPUTest { private final float VERTEX_DELTA = 0.0001f; private final float SURFACE_DELTA = 0.05f; private static final int RANDOM_VERTEX_COUNT = 1500; Loading Loading @@ -58,7 +57,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { protected void distancesEqual(ArrayList<Double> expected, FacetDistances tested, float delta) { for (int i = 0; i < expected.size(); i++) { assertEquals(expected.get(i), tested.get(i).getDistance(), delta); assertEquals(expected.get(i), tested.get(i).getDistance(), delta); // can't use assertArrayEquals as it doesn't support delta } } Loading @@ -73,14 +72,29 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void NNTrivialTest() { MeshModel first = getTrivialModel(1.0, 1.0); MeshModel second = getTrivialModel(1.5, 1.0); ArrayList<Point3d> firstTriangle = new ArrayList<>() {{ add(new Point3d(1, 0, 0)); add(new Point3d(0, 1, 0)); add(new Point3d(0, 0, 0)); }}; ArrayList<Point3d> secondTriangle = new ArrayList<>() {{ add(new Point3d(1, 0, 0.5)); add(new Point3d(0, 1, 0.5)); add(new Point3d(0, 0, 0.5)); }}; ArrayList<Double> expectedDistances = new ArrayList<>() {{ add(0.5); add(0.5); add(0.5); }}; MeshFacet first = testDataProvider.createFacet(firstTriangle); MeshFacet second = testDataProvider.createFacet(secondTriangle); LeftBalancedKdTreeImpl kdTree = new LeftBalancedKdTreeImpl(first.getFacets()); MeshDistanceConfig config = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, kdTree, false, false); MeshDistanceNNGPU DistanceGPU = (MeshDistanceNNGPU) config.getVisitor(); MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, first, null, false, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); second.accept(GPUVisitor); testDist(DistanceGPU, first, second, 0.5); distancesEqual(expectedDistances, GPUVisitor.getDistancesOfVisitedFacets().getFacetMeasurement(second), VERTEX_DELTA); } Loading Loading @@ -120,7 +134,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void NNFaceTest() throws IOException { public void NNFaceTest() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, firstFace, null, false, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading @@ -136,7 +150,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void NNFaceTestRelative() throws IOException { public void NNFaceTestRelative() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, firstFace, null, true, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading @@ -152,7 +166,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void NNFaceTestCrop() throws IOException { public void NNFaceTestCrop() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, firstFace, null, false, true); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading Loading @@ -309,7 +323,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void FaceTriangleDistance() throws IOException { public void FaceTriangleDistance() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_TRIANGLE_NEAREST_NEIGHBORS_GPU, firstFace, null, false, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading @@ -325,7 +339,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void FaceTriangleRelativeDistance() throws IOException { public void FaceTriangleRelativeDistance() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_TRIANGLE_NEAREST_NEIGHBORS_GPU, firstFace, null, true, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading Loading @@ -378,7 +392,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @Disabled @DisabledIf("OpenCLNotAvailable") public void PreciseSurfaceTest() throws IOException { public void PreciseSurfaceTest() { MeshDistanceConfig configCPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_TRIANGLE_NEAREST_NEIGHBORS, firstFace, null, false, false); MeshDistanceNN CPUVisitor = (MeshDistanceNN) configCPU.getVisitor(); secondFace.accept(CPUVisitor); Loading @@ -397,7 +411,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @Disabled @DisabledIf("OpenCLNotAvailable") public void PreciseSurfaceRelativeDistanceTest() throws IOException { public void PreciseSurfaceRelativeDistanceTest() { MeshDistanceConfig configCPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_TRIANGLE_NEAREST_NEIGHBORS, firstFace, null, true, false); MeshDistanceNN CPUVisitor = (MeshDistanceNN) configCPU.getVisitor(); secondFace.accept(CPUVisitor); Loading Loading
GeometryEngines/src/test/java/cz/fidentis/analyst/engines/distance/MeshDistanceGPUTest.java +30 −16 Original line number Diff line number Diff line Loading @@ -7,7 +7,6 @@ import cz.fidentis.analyst.engines.distance.impl.MeshDistanceNNGPU; import cz.fidentis.analyst.engines.distance.impl.MeshDistancePreciseGPU; import cz.fidentis.analyst.engines.raycasting.impl.SpatialDataProvider; import cz.fidentis.analyst.opencl.OpenCLServices; import cz.fidentis.analyst.data.kdtree.impl.LeftBalancedKdTreeImpl; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; Loading @@ -22,7 +21,7 @@ import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.*; public class MeshDistanceGPUTest extends MeshDistanceTest { public class MeshDistanceGPUTest { private final float VERTEX_DELTA = 0.0001f; private final float SURFACE_DELTA = 0.05f; private static final int RANDOM_VERTEX_COUNT = 1500; Loading Loading @@ -58,7 +57,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { protected void distancesEqual(ArrayList<Double> expected, FacetDistances tested, float delta) { for (int i = 0; i < expected.size(); i++) { assertEquals(expected.get(i), tested.get(i).getDistance(), delta); assertEquals(expected.get(i), tested.get(i).getDistance(), delta); // can't use assertArrayEquals as it doesn't support delta } } Loading @@ -73,14 +72,29 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void NNTrivialTest() { MeshModel first = getTrivialModel(1.0, 1.0); MeshModel second = getTrivialModel(1.5, 1.0); ArrayList<Point3d> firstTriangle = new ArrayList<>() {{ add(new Point3d(1, 0, 0)); add(new Point3d(0, 1, 0)); add(new Point3d(0, 0, 0)); }}; ArrayList<Point3d> secondTriangle = new ArrayList<>() {{ add(new Point3d(1, 0, 0.5)); add(new Point3d(0, 1, 0.5)); add(new Point3d(0, 0, 0.5)); }}; ArrayList<Double> expectedDistances = new ArrayList<>() {{ add(0.5); add(0.5); add(0.5); }}; MeshFacet first = testDataProvider.createFacet(firstTriangle); MeshFacet second = testDataProvider.createFacet(secondTriangle); LeftBalancedKdTreeImpl kdTree = new LeftBalancedKdTreeImpl(first.getFacets()); MeshDistanceConfig config = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, kdTree, false, false); MeshDistanceNNGPU DistanceGPU = (MeshDistanceNNGPU) config.getVisitor(); MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, first, null, false, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); second.accept(GPUVisitor); testDist(DistanceGPU, first, second, 0.5); distancesEqual(expectedDistances, GPUVisitor.getDistancesOfVisitedFacets().getFacetMeasurement(second), VERTEX_DELTA); } Loading Loading @@ -120,7 +134,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void NNFaceTest() throws IOException { public void NNFaceTest() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, firstFace, null, false, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading @@ -136,7 +150,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void NNFaceTestRelative() throws IOException { public void NNFaceTestRelative() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, firstFace, null, true, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading @@ -152,7 +166,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void NNFaceTestCrop() throws IOException { public void NNFaceTestCrop() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_POINT_NEAREST_NEIGHBORS_GPU, firstFace, null, false, true); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading Loading @@ -309,7 +323,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void FaceTriangleDistance() throws IOException { public void FaceTriangleDistance() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_TRIANGLE_NEAREST_NEIGHBORS_GPU, firstFace, null, false, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading @@ -325,7 +339,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @DisabledIf("OpenCLNotAvailable") public void FaceTriangleRelativeDistance() throws IOException { public void FaceTriangleRelativeDistance() { MeshDistanceConfig configGPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_TRIANGLE_NEAREST_NEIGHBORS_GPU, firstFace, null, true, false); MeshDistanceNNGPU GPUVisitor = (MeshDistanceNNGPU) configGPU.getVisitor(); secondFace.accept(GPUVisitor); Loading Loading @@ -378,7 +392,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @Disabled @DisabledIf("OpenCLNotAvailable") public void PreciseSurfaceTest() throws IOException { public void PreciseSurfaceTest() { MeshDistanceConfig configCPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_TRIANGLE_NEAREST_NEIGHBORS, firstFace, null, false, false); MeshDistanceNN CPUVisitor = (MeshDistanceNN) configCPU.getVisitor(); secondFace.accept(CPUVisitor); Loading @@ -397,7 +411,7 @@ public class MeshDistanceGPUTest extends MeshDistanceTest { @Test @Disabled @DisabledIf("OpenCLNotAvailable") public void PreciseSurfaceRelativeDistanceTest() throws IOException { public void PreciseSurfaceRelativeDistanceTest() { MeshDistanceConfig configCPU = new MeshDistanceConfig(MeshDistanceConfig.Method.POINT_TO_TRIANGLE_NEAREST_NEIGHBORS, firstFace, null, true, false); MeshDistanceNN CPUVisitor = (MeshDistanceNN) configCPU.getVisitor(); secondFace.accept(CPUVisitor); Loading