1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.geometry.enclosing;
18
19 import java.util.Arrays;
20 import java.util.List;
21
22 import org.apache.commons.geometry.core.precision.DoublePrecisionContext;
23 import org.apache.commons.geometry.core.precision.EpsilonDoublePrecisionContext;
24 import org.apache.commons.geometry.enclosing.euclidean.threed.WelzlEncloser3D;
25 import org.apache.commons.geometry.euclidean.EuclideanTestUtils;
26 import org.apache.commons.geometry.euclidean.threed.Vector3D;
27 import org.junit.Assert;
28 import org.junit.Test;
29
30
31
32
33 public class DocumentationExamplesTest {
34
35 private static final double TEST_EPS = 1e-10;
36
37 @Test
38 public void testWelzlEncloser3DExample() {
39 final DoublePrecisionContext precision = new EpsilonDoublePrecisionContext(1e-10);
40
41 final List<Vector3D> points = Arrays.asList(
42 Vector3D.of(0, 0, 1),
43 Vector3D.of(0.75, 0, 1),
44 Vector3D.of(2, 0, 1),
45 Vector3D.of(1, 0, 2)
46 );
47
48
49 final WelzlEncloser3D encloser = new WelzlEncloser3D(precision);
50
51 final EnclosingBall<Vector3D> sphere = encloser.enclose(points);
52
53
54 final Vector3D center = sphere.getCenter();
55 final double radius = sphere.getRadius();
56 final boolean containsCenter = sphere.contains(center);
57 final boolean containsOrigin = sphere.contains(Vector3D.ZERO);
58
59
60 EuclideanTestUtils.assertCoordinatesEqual(Vector3D.of(1, 0, 1), center, TEST_EPS);
61 Assert.assertEquals(1.0, radius, TEST_EPS);
62 Assert.assertTrue(containsCenter);
63 Assert.assertFalse(containsOrigin);
64 }
65 }