Line | Branch | Exec | Source |
---|---|---|---|
1 | // Copyright Contributors to the OpenVDB Project | ||
2 | // SPDX-License-Identifier: MPL-2.0 | ||
3 | |||
4 | /// @file unittest/TestLevelSetRayIntersector.cc | ||
5 | /// @author Ken Museth | ||
6 | |||
7 | // Uncomment to enable statistics of ray-intersections | ||
8 | //#define STATS_TEST | ||
9 | |||
10 | #include <openvdb/Exceptions.h> | ||
11 | #include <openvdb/openvdb.h> | ||
12 | #include <openvdb/math/Ray.h> | ||
13 | #include <openvdb/Types.h> | ||
14 | #include <openvdb/math/Transform.h> | ||
15 | #include <openvdb/tools/LevelSetSphere.h> | ||
16 | #include <openvdb/tools/RayIntersector.h> | ||
17 | #include <openvdb/tools/RayTracer.h>// for Film | ||
18 | #ifdef STATS_TEST | ||
19 | //only needed for statistics | ||
20 | #include <openvdb/math/Stats.h> | ||
21 | #include <openvdb/util/CpuTimer.h> | ||
22 | #include <iostream> | ||
23 | #endif | ||
24 | |||
25 | #include <gtest/gtest.h> | ||
26 | |||
27 | |||
28 | #define ASSERT_DOUBLES_APPROX_EQUAL(expected, actual) \ | ||
29 | EXPECT_NEAR((expected), (actual), /*tolerance=*/1.e-6); | ||
30 | |||
31 | |||
32 | 1 | class TestLevelSetRayIntersector : public ::testing::Test | |
33 | { | ||
34 | }; | ||
35 | |||
36 | |||
37 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestLevelSetRayIntersector, tests) |
38 | { | ||
39 | using namespace openvdb; | ||
40 | typedef math::Ray<double> RayT; | ||
41 | typedef RayT::Vec3Type Vec3T; | ||
42 | |||
43 | {// voxel intersection against a level set sphere | ||
44 | const float r = 5.0f; | ||
45 | const Vec3f c(20.0f, 0.0f, 0.0f); | ||
46 | const float s = 0.5f, w = 2.0f; | ||
47 | |||
48 | 1 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | |
49 | |||
50 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1 | tools::LevelSetRayIntersector<FloatGrid> lsri(*ls); |
51 | |||
52 | const Vec3T dir(1.0, 0.0, 0.0); | ||
53 | const Vec3T eye(2.0, 0.0, 0.0); | ||
54 | const RayT ray(eye, dir); | ||
55 | //std::cerr << ray << std::endl; | ||
56 | Vec3T xyz(0); | ||
57 | 1 | Real time = 0; | |
58 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(lsri.intersectsWS(ray, xyz, time)); |
59 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, xyz[0]); |
60 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[1]); |
61 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[2]); |
62 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(13.0, time); |
63 | 1 | double t0=0, t1=0; | |
64 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); |
65 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(t0, time); |
66 | //std::cerr << "\nray("<<t0<<")="<<ray(t0)<<std::endl; | ||
67 | //std::cerr << "Intersection at xyz = " << xyz << " time = " << time << std::endl; | ||
68 |
2/18✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
2 | EXPECT_TRUE(ray(t0) == xyz); |
69 | } | ||
70 | |||
71 | {// voxel intersection against a level set sphere | ||
72 | const float r = 5.0f; | ||
73 | const Vec3f c(20.0f, 0.0f, 0.0f); | ||
74 | const float s = 0.5f, w = 2.0f; | ||
75 | |||
76 | 1 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | |
77 | |||
78 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1 | tools::LevelSetRayIntersector<FloatGrid> lsri(*ls); |
79 | |||
80 | const Vec3T dir(1.0,-0.0,-0.0); | ||
81 | const Vec3T eye(2.0, 0.0, 0.0); | ||
82 | const RayT ray(eye, dir); | ||
83 | //std::cerr << ray << std::endl; | ||
84 | Vec3T xyz(0); | ||
85 | 1 | Real time = 0; | |
86 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(lsri.intersectsWS(ray, xyz, time)); |
87 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, xyz[0]); |
88 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[1]); |
89 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[2]); |
90 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(13.0, time); |
91 | 1 | double t0=0, t1=0; | |
92 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); |
93 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(t0, time); |
94 | //std::cerr << "\nray("<<t0<<")="<<ray(t0)<<std::endl; | ||
95 | //std::cerr << "Intersection at xyz = " << xyz << std::endl; | ||
96 |
2/18✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
2 | EXPECT_TRUE(ray(t0) == xyz); |
97 | } | ||
98 | |||
99 | {// voxel intersection against a level set sphere | ||
100 | const float r = 5.0f; | ||
101 | const Vec3f c(0.0f, 20.0f, 0.0f); | ||
102 | const float s = 1.5f, w = 2.0f; | ||
103 | |||
104 | 1 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | |
105 | |||
106 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1 | tools::LevelSetRayIntersector<FloatGrid> lsri(*ls); |
107 | |||
108 | const Vec3T dir(0.0, 1.0, 0.0); | ||
109 | const Vec3T eye(0.0,-2.0, 0.0); | ||
110 | RayT ray(eye, dir); | ||
111 | Vec3T xyz(0); | ||
112 | 1 | Real time = 0; | |
113 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(lsri.intersectsWS(ray, xyz, time)); |
114 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[0]); |
115 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, xyz[1]); |
116 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[2]); |
117 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(17.0, time); |
118 | 1 | double t0=0, t1=0; | |
119 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); |
120 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(t0, time); |
121 | //std::cerr << "\nray("<<t0<<")="<<ray(t0)<<std::endl; | ||
122 | //std::cerr << "Intersection at xyz = " << xyz << std::endl; | ||
123 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[0]); |
124 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, ray(t0)[1]); |
125 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[2]); |
126 | } | ||
127 | |||
128 | {// voxel intersection against a level set sphere | ||
129 | const float r = 5.0f; | ||
130 | const Vec3f c(0.0f, 20.0f, 0.0f); | ||
131 | const float s = 1.5f, w = 2.0f; | ||
132 | |||
133 | 1 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | |
134 | |||
135 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1 | tools::LevelSetRayIntersector<FloatGrid> lsri(*ls); |
136 | |||
137 | const Vec3T dir(-0.0, 1.0,-0.0); | ||
138 | const Vec3T eye( 0.0,-2.0, 0.0); | ||
139 | RayT ray(eye, dir); | ||
140 | Vec3T xyz(0); | ||
141 | 1 | Real time = 0; | |
142 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(lsri.intersectsWS(ray, xyz, time)); |
143 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[0]); |
144 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, xyz[1]); |
145 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[2]); |
146 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(17.0, time); |
147 | 1 | double t0=0, t1=0; | |
148 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); |
149 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(t0, time); |
150 | //std::cerr << "\nray("<<t0<<")="<<ray(t0)<<std::endl; | ||
151 | //std::cerr << "Intersection at xyz = " << xyz << std::endl; | ||
152 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[0]); |
153 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, ray(t0)[1]); |
154 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[2]); |
155 | } | ||
156 | |||
157 | {// voxel intersection against a level set sphere | ||
158 | const float r = 5.0f; | ||
159 | const Vec3f c(0.0f, 0.0f, 20.0f); | ||
160 | const float s = 1.0f, w = 3.0f; | ||
161 | |||
162 | 1 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | |
163 | |||
164 | typedef tools::LinearSearchImpl<FloatGrid> SearchImplT; | ||
165 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1 | tools::LevelSetRayIntersector<FloatGrid, SearchImplT, -1> lsri(*ls); |
166 | |||
167 | const Vec3T dir(0.0, 0.0, 1.0); | ||
168 | const Vec3T eye(0.0, 0.0, 4.0); | ||
169 | RayT ray(eye, dir); | ||
170 | Vec3T xyz(0); | ||
171 | 1 | Real time = 0; | |
172 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(lsri.intersectsWS(ray, xyz, time)); |
173 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[0]); |
174 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[1]); |
175 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, xyz[2]); |
176 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(11.0, time); |
177 | 1 | double t0=0, t1=0; | |
178 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); |
179 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(t0, time); |
180 | //std::cerr << "\nray("<<t0<<")="<<ray(t0)<<std::endl; | ||
181 | //std::cerr << "Intersection at xyz = " << xyz << std::endl; | ||
182 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[0]); |
183 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[1]); |
184 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, ray(t0)[2]); |
185 | } | ||
186 | |||
187 | {// voxel intersection against a level set sphere | ||
188 | const float r = 5.0f; | ||
189 | const Vec3f c(0.0f, 0.0f, 20.0f); | ||
190 | const float s = 1.0f, w = 3.0f; | ||
191 | |||
192 | 1 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | |
193 | |||
194 | typedef tools::LinearSearchImpl<FloatGrid> SearchImplT; | ||
195 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1 | tools::LevelSetRayIntersector<FloatGrid, SearchImplT, -1> lsri(*ls); |
196 | |||
197 | const Vec3T dir(-0.0,-0.0, 1.0); | ||
198 | const Vec3T eye( 0.0, 0.0, 4.0); | ||
199 | RayT ray(eye, dir); | ||
200 | Vec3T xyz(0); | ||
201 | 1 | Real time = 0; | |
202 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(lsri.intersectsWS(ray, xyz, time)); |
203 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[0]); |
204 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[1]); |
205 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, xyz[2]); |
206 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(11.0, time); |
207 | 1 | double t0=0, t1=0; | |
208 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); |
209 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(t0, time); |
210 | //std::cerr << "t0 = " << t0 << " t1 = " << t1 << std::endl; | ||
211 | //std::cerr << "\nray("<<t0<<")="<<ray(t0)<<std::endl; | ||
212 | //std::cerr << "Intersection at xyz = " << xyz << std::endl; | ||
213 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[0]); |
214 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[1]); |
215 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(15.0, ray(t0)[2]); |
216 | } | ||
217 | |||
218 | {// voxel intersection against a level set sphere | ||
219 | const float r = 5.0f; | ||
220 | const Vec3f c(0.0f, 0.0f, 20.0f); | ||
221 | const float s = 1.0f, w = 3.0f; | ||
222 | |||
223 | 1 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | |
224 | |||
225 | typedef tools::LinearSearchImpl<FloatGrid> SearchImplT; | ||
226 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1 | tools::LevelSetRayIntersector<FloatGrid, SearchImplT, -1> lsri(*ls); |
227 | |||
228 | const Vec3T dir(-0.0,-0.0, 1.0); | ||
229 | const Vec3T eye( 0.0, 0.0, 4.0); | ||
230 | RayT ray(eye, dir, 16.0); | ||
231 | Vec3T xyz(0); | ||
232 | 1 | Real time = 0; | |
233 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(lsri.intersectsWS(ray, xyz, time)); |
234 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[0]); |
235 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, xyz[1]); |
236 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(25.0, xyz[2]); |
237 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(21.0, time); |
238 | 1 | double t0=0, t1=0; | |
239 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); |
240 | //std::cerr << "t0 = " << t0 << " t1 = " << t1 << std::endl; | ||
241 | //std::cerr << "\nray("<<t0<<")="<<ray(t0)<<std::endl; | ||
242 | //std::cerr << "Intersection at xyz = " << xyz << std::endl; | ||
243 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(t1, time); |
244 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[0]); |
245 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL( 0.0, ray(t0)[1]); |
246 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(25.0, ray(t1)[2]); |
247 | } | ||
248 | |||
249 | {// voxel intersection against a level set sphere | ||
250 | const float r = 5.0f; | ||
251 | const Vec3f c(10.0f, 10.0f, 10.0f); | ||
252 | const float s = 1.0f, w = 3.0f; | ||
253 | |||
254 | 1 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | |
255 | |||
256 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
1 | tools::LevelSetRayIntersector<FloatGrid> lsri(*ls); |
257 | |||
258 | 1 | Vec3T dir(1.0, 1.0, 1.0); dir.normalize(); | |
259 | const Vec3T eye(0.0, 0.0, 0.0); | ||
260 | RayT ray(eye, dir); | ||
261 | //std::cerr << "ray: " << ray << std::endl; | ||
262 | Vec3T xyz(0); | ||
263 | 1 | Real time = 0; | |
264 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(lsri.intersectsWS(ray, xyz, time)); |
265 | //std::cerr << "\nIntersection at xyz = " << xyz << std::endl; | ||
266 | //analytical intersection test | ||
267 | 1 | double t0=0, t1=0; | |
268 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); |
269 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(t0, time); |
270 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL((ray(t0)-c).length()-r, 0); |
271 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL((ray(t1)-c).length()-r, 0); |
272 | //std::cerr << "\nray("<<t0<<")="<<ray(t0)<<std::endl; | ||
273 | //std::cerr << "\nray("<<t1<<")="<<ray(t1)<<std::endl; | ||
274 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | const Vec3T delta = xyz - ray(t0); |
275 | //std::cerr << "delta = " << delta << std::endl; | ||
276 | //std::cerr << "|delta|/dx=" << (delta.length()/ls->voxelSize()[0]) << std::endl; | ||
277 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | ASSERT_DOUBLES_APPROX_EQUAL(0, delta.length()); |
278 | } | ||
279 | |||
280 | {// test intersections against a high-resolution level set sphere @1024^3 | ||
281 | const float r = 5.0f; | ||
282 | const Vec3f c(10.0f, 10.0f, 20.0f); | ||
283 | const float s = 0.01f, w = 2.0f; | ||
284 | 1 | double t0=0, t1=0; | |
285 | 1 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | |
286 | |||
287 | typedef tools::LinearSearchImpl<FloatGrid, /*iterations=*/2> SearchImplT; | ||
288 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | tools::LevelSetRayIntersector<FloatGrid, SearchImplT> lsri(*ls); |
289 | |||
290 | Vec3T xyz(0); | ||
291 | 1 | Real time = 0; | |
292 | const size_t width = 1024; | ||
293 | const double dx = 20.0/width; | ||
294 | const Vec3T dir(0.0, 0.0, 1.0); | ||
295 | |||
296 |
2/2✓ Branch 0 taken 1024 times.
✓ Branch 1 taken 1 times.
|
1025 | for (size_t i=0; i<width; ++i) { |
297 |
2/2✓ Branch 0 taken 1048576 times.
✓ Branch 1 taken 1024 times.
|
1049600 | for (size_t j=0; j<width; ++j) { |
298 |
1/2✓ Branch 1 taken 1048576 times.
✗ Branch 2 not taken.
|
1048576 | const Vec3T eye(dx*double(i), dx*double(j), 0.0); |
299 | const RayT ray(eye, dir); | ||
300 |
3/4✓ Branch 1 taken 1048576 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 205861 times.
✓ Branch 4 taken 842715 times.
|
1048576 | if (lsri.intersectsWS(ray, xyz, time)){ |
301 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 205861 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
205861 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); |
302 |
2/16✓ Branch 1 taken 205861 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 205861 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
205861 | EXPECT_NEAR(0, 100*(t0-time)/t0, /*tolerance=*/0.1);//percent |
303 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 205861 times.
|
205861 | double delta = (ray(t0)-xyz).length()/s;//in voxel units |
304 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 205861 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
205861 | EXPECT_TRUE(delta < 0.06); |
305 | } | ||
306 | } | ||
307 | } | ||
308 | } | ||
309 | 1 | } | |
310 | |||
311 | #ifdef STATS_TEST | ||
312 | TEST_F(TestLevelSetRayIntersector, stats) | ||
313 | { | ||
314 | using namespace openvdb; | ||
315 | typedef math::Ray<double> RayT; | ||
316 | typedef RayT::Vec3Type Vec3T; | ||
317 | util::CpuTimer timer; | ||
318 | |||
319 | {// generate an image, benchmarks and statistics | ||
320 | |||
321 | // Generate a high-resolution level set sphere @1024^3 | ||
322 | const float r = 5.0f; | ||
323 | const Vec3f c(10.0f, 10.0f, 20.0f); | ||
324 | const float s = 0.01f, w = 2.0f; | ||
325 | double t0=0, t1=0; | ||
326 | FloatGrid::Ptr ls = tools::createLevelSetSphere<FloatGrid>(r, c, s, w); | ||
327 | |||
328 | typedef tools::LinearSearchImpl<FloatGrid, /*iterations=*/2> SearchImplT; | ||
329 | tools::LevelSetRayIntersector<FloatGrid, SearchImplT> lsri(*ls); | ||
330 | |||
331 | Vec3T xyz(0); | ||
332 | const size_t width = 1024; | ||
333 | const double dx = 20.0/width; | ||
334 | const Vec3T dir(0.0, 0.0, 1.0); | ||
335 | |||
336 | tools::Film film(width, width); | ||
337 | math::Stats stats; | ||
338 | math::Histogram hist(0.0, 0.1, 20); | ||
339 | |||
340 | timer.start("\nSerial ray-intersections of sphere"); | ||
341 | for (size_t i=0; i<width; ++i) { | ||
342 | for (size_t j=0; j<width; ++j) { | ||
343 | const Vec3T eye(dx*i, dx*j, 0.0); | ||
344 | const RayT ray(eye, dir); | ||
345 | if (lsri.intersectsWS(ray, xyz)){ | ||
346 | EXPECT_TRUE(ray.intersects(c, r, t0, t1)); | ||
347 | double delta = (ray(t0)-xyz).length()/s;//in voxel units | ||
348 | stats.add(delta); | ||
349 | hist.add(delta); | ||
350 | if (delta > 0.01) { | ||
351 | film.pixel(i, j) = tools::Film::RGBA(1.0f, 0.0f, 0.0f); | ||
352 | } else { | ||
353 | film.pixel(i, j) = tools::Film::RGBA(0.0f, 1.0f, 0.0f); | ||
354 | } | ||
355 | } | ||
356 | } | ||
357 | } | ||
358 | timer.stop(); | ||
359 | |||
360 | film.savePPM("sphere_serial"); | ||
361 | stats.print("First hit"); | ||
362 | hist.print("First hit"); | ||
363 | } | ||
364 | } | ||
365 | #endif // STATS_TEST | ||
366 | |||
367 | #undef STATS_TEST | ||
368 |