| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // Copyright Contributors to the OpenVDB Project | ||
| 2 | // SPDX-License-Identifier: MPL-2.0 | ||
| 3 | |||
| 4 | #include <openvdb/Types.h> | ||
| 5 | #include <openvdb/openvdb.h> | ||
| 6 | #include <openvdb/tools/GridOperators.h> | ||
| 7 | #include "util.h" // for unittest_util::makeSphere() | ||
| 8 | #include <gtest/gtest.h> | ||
| 9 | #include <sstream> | ||
| 10 | |||
| 11 | |||
| 12 | 11 | class TestGradient: public ::testing::Test | |
| 13 | { | ||
| 14 | public: | ||
| 15 | 11 | void SetUp() override { openvdb::initialize(); } | |
| 16 | 11 | void TearDown() override { openvdb::uninitialize(); } | |
| 17 | }; | ||
| 18 | |||
| 19 | |||
| 20 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testISGradient) |
| 21 | { | ||
| 22 | using namespace openvdb; | ||
| 23 | |||
| 24 | using AccessorType = FloatGrid::ConstAccessor; | ||
| 25 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | FloatGrid::Ptr grid = createGrid<FloatGrid>(/*background=*/5.0); |
| 26 | FloatTree& tree = grid->tree(); | ||
| 27 | |||
| 28 | const openvdb::Coord dim(64,64,64); | ||
| 29 | const openvdb::Vec3f center(35.0f ,30.0f, 40.0f); | ||
| 30 | const float radius=10.0f; | ||
| 31 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>(dim, center, radius, *grid, unittest_util::SPHERE_DENSE); |
| 32 | |||
| 33 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(!tree.empty()); |
| 34 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_EQ(dim[0]*dim[1]*dim[2], int(tree.activeVoxelCount())); |
| 35 | const Coord xyz(10, 20, 30); | ||
| 36 | |||
| 37 | |||
| 38 | // Index Space Gradients: random access and stencil version | ||
| 39 | AccessorType inAccessor = grid->getConstAccessor(); | ||
| 40 | Vec3f result; | ||
| 41 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::CD_2ND>::result(inAccessor, xyz); |
| 42 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 43 | |||
| 44 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::CD_4TH>::result(inAccessor, xyz); |
| 45 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 46 | |||
| 47 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::CD_6TH>::result(inAccessor, xyz); |
| 48 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 49 | |||
| 50 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::FD_1ST>::result(inAccessor, xyz); |
| 51 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.02); |
| 52 | |||
| 53 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::FD_2ND>::result(inAccessor, xyz); |
| 54 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 55 | |||
| 56 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::FD_3RD>::result(inAccessor, xyz); |
| 57 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 58 | |||
| 59 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::BD_1ST>::result(inAccessor, xyz); |
| 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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.02); |
| 61 | |||
| 62 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::BD_2ND>::result(inAccessor, xyz); |
| 63 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 64 | |||
| 65 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::BD_3RD>::result(inAccessor, xyz); |
| 66 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 67 | |||
| 68 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::FD_WENO5>::result(inAccessor, xyz); |
| 69 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 70 | |||
| 71 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::ISGradient<math::BD_WENO5>::result(inAccessor, xyz); |
| 72 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 73 | 1 | } | |
| 74 | |||
| 75 | |||
| 76 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testISGradientStencil) |
| 77 | { | ||
| 78 | using namespace openvdb; | ||
| 79 | |||
| 80 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | FloatGrid::Ptr grid = createGrid<FloatGrid>(/*background=*/5.0); |
| 81 | FloatTree& tree = grid->tree(); | ||
| 82 | |||
| 83 | const openvdb::Coord dim(64,64,64); | ||
| 84 | const openvdb::Vec3f center(35.0f ,30.0f, 40.0f); | ||
| 85 | const float radius = 10.0f; | ||
| 86 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>(dim, center, radius, *grid, unittest_util::SPHERE_DENSE); |
| 87 | |||
| 88 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(!tree.empty()); |
| 89 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_EQ(dim[0]*dim[1]*dim[2], int(tree.activeVoxelCount())); |
| 90 | const Coord xyz(10, 20, 30); | ||
| 91 | |||
| 92 | |||
| 93 | // Index Space Gradients: stencil version | ||
| 94 | Vec3f result; | ||
| 95 | // this stencil is large enough for all thie different schemes used | ||
| 96 | // in this test | ||
| 97 | math::NineteenPointStencil<FloatGrid> stencil(*grid); | ||
| 98 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 99 | |||
| 100 | 1 | result = math::ISGradient<math::CD_2ND>::result(stencil); | |
| 101 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 102 | |||
| 103 | 1 | result = math::ISGradient<math::CD_4TH>::result(stencil); | |
| 104 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 105 | |||
| 106 | 1 | result = math::ISGradient<math::CD_6TH>::result(stencil); | |
| 107 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 108 | |||
| 109 | result = math::ISGradient<math::FD_1ST>::result(stencil); | ||
| 110 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.02); |
| 111 | |||
| 112 | 1 | result = math::ISGradient<math::FD_2ND>::result(stencil); | |
| 113 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 114 | |||
| 115 | 1 | result = math::ISGradient<math::FD_3RD>::result(stencil); | |
| 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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 117 | |||
| 118 | result = math::ISGradient<math::BD_1ST>::result(stencil); | ||
| 119 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.02); |
| 120 | |||
| 121 | 1 | result = math::ISGradient<math::BD_2ND>::result(stencil); | |
| 122 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 123 | |||
| 124 | 1 | result = math::ISGradient<math::BD_3RD>::result(stencil); | |
| 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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 126 | |||
| 127 | 1 | result = math::ISGradient<math::FD_WENO5>::result(stencil); | |
| 128 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 129 | |||
| 130 | 1 | result = math::ISGradient<math::BD_WENO5>::result(stencil); | |
| 131 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 132 | 1 | } | |
| 133 | |||
| 134 | |||
| 135 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testWSGradient) |
| 136 | { | ||
| 137 | using namespace openvdb; | ||
| 138 | |||
| 139 | using AccessorType = FloatGrid::ConstAccessor; | ||
| 140 | |||
| 141 | double voxel_size = 0.5; | ||
| 142 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | FloatGrid::Ptr grid = FloatGrid::create(/*background=*/5.0); |
| 143 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | grid->setTransform(math::Transform::createLinearTransform(voxel_size)); |
| 144 |
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(grid->empty()); |
| 145 | |||
| 146 | const openvdb::Coord dim(32,32,32); | ||
| 147 | const openvdb::Vec3f center(6.0f, 8.0f, 10.0f);//i.e. (12,16,20) in index space | ||
| 148 | const float radius = 10.0f; | ||
| 149 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>(dim, center, radius, *grid, unittest_util::SPHERE_DENSE); |
| 150 | |||
| 151 |
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(!grid->empty()); |
| 152 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_EQ(dim[0]*dim[1]*dim[2], int(grid->activeVoxelCount())); |
| 153 | const Coord xyz(11, 17, 26); | ||
| 154 | |||
| 155 | AccessorType inAccessor = grid->getConstAccessor(); | ||
| 156 | // try with a map | ||
| 157 | |||
| 158 | // Index Space Gradients: stencil version | ||
| 159 | Vec3f result; | ||
| 160 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::MapBase::Ptr rotated_map; |
| 161 | { | ||
| 162 | math::UniformScaleMap map(voxel_size); | ||
| 163 | result = math::Gradient<math::UniformScaleMap, math::CD_2ND>::result( | ||
| 164 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | map, inAccessor, xyz); |
| 165 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 166 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | rotated_map = map.preRotate(1.5, math::X_AXIS); |
| 167 | // verify the new map is an affine map | ||
| 168 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ 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 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
|
1 | EXPECT_TRUE(rotated_map->type() == math::AffineMap::mapType()); |
| 169 | math::AffineMap::Ptr affine_map = | ||
| 170 | StaticPtrCast<math::AffineMap, math::MapBase>(rotated_map); | ||
| 171 | // the gradient should have the same length even after rotation | ||
| 172 | result = math::Gradient<math::AffineMap, math::CD_2ND>::result( | ||
| 173 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | *affine_map, inAccessor, xyz); |
| 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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 175 | result = math::Gradient<math::AffineMap, math::CD_4TH>::result( | ||
| 176 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | *affine_map, inAccessor, xyz); |
| 177 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 178 | } | ||
| 179 | { | ||
| 180 | 1 | math::UniformScaleTranslateMap map(voxel_size, Vec3d(0,0,0)); | |
| 181 | result = math::Gradient<math::UniformScaleTranslateMap, math::CD_2ND>::result( | ||
| 182 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | map, inAccessor, xyz); |
| 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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 184 | } | ||
| 185 | { | ||
| 186 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | math::ScaleTranslateMap map(Vec3d(voxel_size, voxel_size, voxel_size), Vec3d(0,0,0)); |
| 187 | result = math::Gradient<math::ScaleTranslateMap, math::CD_2ND>::result( | ||
| 188 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | map, inAccessor, xyz); |
| 189 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 190 | } | ||
| 191 | |||
| 192 | { | ||
| 193 | // this map has no scale, expect result/voxel_spaceing = 1 | ||
| 194 | math::TranslationMap map; | ||
| 195 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::Gradient<math::TranslationMap, math::CD_2ND>::result(map, inAccessor, xyz); |
| 196 |
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 | EXPECT_NEAR(voxel_size, result.length(), /*tolerance=*/0.01); |
| 197 | } | ||
| 198 | |||
| 199 | { | ||
| 200 | // test the GenericMap Grid interface | ||
| 201 | math::GenericMap generic_map(*grid); | ||
| 202 | result = math::Gradient<math::GenericMap, math::CD_2ND>::result( | ||
| 203 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generic_map, inAccessor, xyz); |
| 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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 205 | } | ||
| 206 | { | ||
| 207 | // test the GenericMap Transform interface | ||
| 208 | math::GenericMap generic_map(grid->transform()); | ||
| 209 | result = math::Gradient<math::GenericMap, math::CD_2ND>::result( | ||
| 210 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generic_map, inAccessor, xyz); |
| 211 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 212 | } | ||
| 213 | { | ||
| 214 | // test the GenericMap Map interface | ||
| 215 | 1 | math::GenericMap generic_map(rotated_map); | |
| 216 | result = math::Gradient<math::GenericMap, math::CD_2ND>::result( | ||
| 217 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generic_map, inAccessor, xyz); |
| 218 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 219 | } | ||
| 220 | { | ||
| 221 | // test a map with non-uniform SCALING AND ROTATION | ||
| 222 | Vec3d voxel_sizes(0.25, 0.45, 0.75); | ||
| 223 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | math::MapBase::Ptr base_map( new math::ScaleMap(voxel_sizes)); |
| 224 | // apply rotation | ||
| 225 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | rotated_map = base_map->preRotate(1.5, math::X_AXIS); |
| 226 |
4/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
|
3 | grid->setTransform(math::Transform::Ptr(new math::Transform(rotated_map))); |
| 227 | // remake the sphere | ||
| 228 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>( |
| 229 | dim, center, radius, *grid, unittest_util::SPHERE_DENSE); | ||
| 230 | |||
| 231 | math::AffineMap::Ptr affine_map = | ||
| 232 | StaticPtrCast<math::AffineMap, math::MapBase>(rotated_map); | ||
| 233 | |||
| 234 | // math::ScaleMap map(voxel_sizes); | ||
| 235 | result = math::Gradient<math::AffineMap, math::CD_2ND>::result( | ||
| 236 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | *affine_map, inAccessor, xyz); |
| 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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 238 | } | ||
| 239 | { | ||
| 240 | // test a map with non-uniform SCALING | ||
| 241 | Vec3d voxel_sizes(0.25, 0.45, 0.75); | ||
| 242 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | math::MapBase::Ptr base_map( new math::ScaleMap(voxel_sizes)); |
| 243 |
4/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
|
3 | grid->setTransform(math::Transform::Ptr(new math::Transform(base_map))); |
| 244 | // remake the sphere | ||
| 245 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>( |
| 246 | dim, center, radius, *grid, unittest_util::SPHERE_DENSE); | ||
| 247 | math::ScaleMap::Ptr scale_map = StaticPtrCast<math::ScaleMap, math::MapBase>(base_map); | ||
| 248 | |||
| 249 | // math::ScaleMap map(voxel_sizes); | ||
| 250 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::Gradient<math::ScaleMap, math::CD_2ND>::result(*scale_map, inAccessor, xyz); |
| 251 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 252 | } | ||
| 253 | 1 | } | |
| 254 | |||
| 255 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestGradient, testWSGradientStencilFrustum) |
| 256 | { | ||
| 257 | using namespace openvdb; | ||
| 258 | |||
| 259 | // Construct a frustum that matches the one in TestMaps::testFrustum() | ||
| 260 | |||
| 261 | 1 | openvdb::BBoxd bbox(Vec3d(0), Vec3d(100)); | |
| 262 | math::NonlinearFrustumMap frustum(bbox, 1./6., 5); | ||
| 263 | /// frustum will have depth, far plane - near plane = 5 | ||
| 264 | /// the frustum has width 1 in the front and 6 in the back | ||
| 265 | |||
| 266 | Vec3d trans(2,2,2); | ||
| 267 | math::NonlinearFrustumMap::Ptr map = | ||
| 268 | StaticPtrCast<math::NonlinearFrustumMap, math::MapBase>( | ||
| 269 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
|
2 | frustum.preScale(Vec3d(10,10,10))->postTranslate(trans)); |
| 270 | |||
| 271 | |||
| 272 | // Create a grid with this frustum | ||
| 273 | |||
| 274 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
1 | FloatGrid::Ptr grid = FloatGrid::create(/*background=*/0.f); |
| 275 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
2 | math::Transform::Ptr transform = math::Transform::Ptr( new math::Transform(map)); |
| 276 |
2/6✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | grid->setTransform(transform); |
| 277 | |||
| 278 | FloatGrid::Accessor acc = grid->getAccessor(); | ||
| 279 | // Totally fill the interior of the frustum with word space distances | ||
| 280 | // from its center. | ||
| 281 | |||
| 282 | |||
| 283 | math::Vec3d isCenter(.5 * 101, .5 * 101, .5 * 101); | ||
| 284 | 1 | math::Vec3d wsCenter = map->applyMap(isCenter); | |
| 285 | |||
| 286 | math::Coord ijk; | ||
| 287 | |||
| 288 | // convert to IntType | ||
| 289 | Vec3i min(bbox.min()); | ||
| 290 | Vec3i max = Vec3i(bbox.max()) + Vec3i(1, 1, 1); | ||
| 291 | |||
| 292 |
2/2✓ Branch 0 taken 101 times.
✓ Branch 1 taken 1 times.
|
102 | for (ijk[0] = min.x(); ijk[0] < max.x(); ++ijk[0]) { |
| 293 |
2/2✓ Branch 0 taken 10201 times.
✓ Branch 1 taken 101 times.
|
10302 | for (ijk[1] = min.y(); ijk[1] < max.y(); ++ijk[1]) { |
| 294 |
2/2✓ Branch 0 taken 1030301 times.
✓ Branch 1 taken 10201 times.
|
1040502 | for (ijk[2] = min.z(); ijk[2] < max.z(); ++ijk[2]) { |
| 295 | const math::Vec3d wsLocation = transform->indexToWorld(ijk); | ||
| 296 | 1030301 | const float dis = float((wsLocation - wsCenter).length()); | |
| 297 | |||
| 298 |
1/2✓ Branch 1 taken 1030301 times.
✗ Branch 2 not taken.
|
1030301 | acc.setValue(ijk, dis); |
| 299 | } | ||
| 300 | } | ||
| 301 | } | ||
| 302 | |||
| 303 | |||
| 304 | { | ||
| 305 | // test at location 10, 10, 10 in index space | ||
| 306 | math::Coord xyz(10, 10, 10); | ||
| 307 | |||
| 308 | math::Vec3s result = | ||
| 309 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::Gradient<math::NonlinearFrustumMap, math::CD_2ND>::result(*map, acc, xyz); |
| 310 | |||
| 311 | // The Gradient should be unit lenght for this case | ||
| 312 |
1/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ 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 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
|
1 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 313 | |||
| 314 | math::Vec3d wsVec = transform->indexToWorld(xyz); | ||
| 315 | math::Vec3d direction = (wsVec - wsCenter); | ||
| 316 | 1 | direction.normalize(); | |
| 317 | |||
| 318 | // test the actual direction of the gradient | ||
| 319 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(direction.eq(result, 0.01 /*tolerance*/)); |
| 320 | } | ||
| 321 | |||
| 322 | { | ||
| 323 | // test at location 30, 30, 60 in index space | ||
| 324 | math::Coord xyz(30, 30, 60); | ||
| 325 | |||
| 326 | math::Vec3s result = | ||
| 327 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::Gradient<math::NonlinearFrustumMap, math::CD_2ND>::result(*map, acc, xyz); |
| 328 | |||
| 329 | // The Gradient should be unit lenght for this case | ||
| 330 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 331 | |||
| 332 | math::Vec3d wsVec = transform->indexToWorld(xyz); | ||
| 333 | math::Vec3d direction = (wsVec - wsCenter); | ||
| 334 | 1 | direction.normalize(); | |
| 335 | |||
| 336 | // test the actual direction of the gradient | ||
| 337 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(direction.eq(result, 0.01 /*tolerance*/)); |
| 338 | } | ||
| 339 | 1 | } | |
| 340 | |||
| 341 | |||
| 342 | |||
| 343 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testWSGradientStencil) |
| 344 | { | ||
| 345 | using namespace openvdb; | ||
| 346 | |||
| 347 | double voxel_size = 0.5; | ||
| 348 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | FloatGrid::Ptr grid = FloatGrid::create(/*background=*/5.0); |
| 349 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | grid->setTransform(math::Transform::createLinearTransform(voxel_size)); |
| 350 |
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(grid->empty()); |
| 351 | |||
| 352 | const openvdb::Coord dim(32,32,32); | ||
| 353 | const openvdb::Vec3f center(6.0f, 8.0f ,10.0f);//i.e. (12,16,20) in index space | ||
| 354 | const float radius = 10; | ||
| 355 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>(dim, center, radius, *grid, unittest_util::SPHERE_DENSE); |
| 356 | |||
| 357 |
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(!grid->empty()); |
| 358 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_EQ(dim[0]*dim[1]*dim[2], int(grid->activeVoxelCount())); |
| 359 | const Coord xyz(11, 17, 26); | ||
| 360 | |||
| 361 | // try with a map | ||
| 362 | math::SevenPointStencil<FloatGrid> stencil(*grid); | ||
| 363 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 364 | |||
| 365 | math::SecondOrderDenseStencil<FloatGrid> dense_2ndOrder(*grid); | ||
| 366 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dense_2ndOrder.moveTo(xyz); |
| 367 | |||
| 368 | math::FourthOrderDenseStencil<FloatGrid> dense_4thOrder(*grid); | ||
| 369 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dense_4thOrder.moveTo(xyz); |
| 370 | |||
| 371 | Vec3f result; | ||
| 372 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::MapBase::Ptr rotated_map; |
| 373 | { | ||
| 374 | math::UniformScaleMap map(voxel_size); | ||
| 375 | result = math::Gradient<math::UniformScaleMap, math::CD_2ND>::result( | ||
| 376 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | map, stencil); |
| 377 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 378 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | rotated_map = map.preRotate(1.5, math::X_AXIS); |
| 379 | // verify the new map is an affine map | ||
| 380 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ 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 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
|
1 | EXPECT_TRUE(rotated_map->type() == math::AffineMap::mapType()); |
| 381 | math::AffineMap::Ptr affine_map = | ||
| 382 | StaticPtrCast<math::AffineMap, math::MapBase>(rotated_map); | ||
| 383 | // the gradient should have the same length even after rotation | ||
| 384 | |||
| 385 | result = math::Gradient<math::AffineMap, math::CD_2ND>::result( | ||
| 386 | 1 | *affine_map, dense_2ndOrder); | |
| 387 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 388 | |||
| 389 | result = math::Gradient<math::AffineMap, math::CD_4TH>::result( | ||
| 390 | 1 | *affine_map, dense_4thOrder); | |
| 391 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 392 | } | ||
| 393 | { | ||
| 394 | 1 | math::UniformScaleTranslateMap map(voxel_size, Vec3d(0,0,0)); | |
| 395 | |||
| 396 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::Gradient<math::UniformScaleTranslateMap, math::CD_2ND>::result(map, stencil); |
| 397 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 398 | } | ||
| 399 | { | ||
| 400 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | math::ScaleTranslateMap map(Vec3d(voxel_size, voxel_size, voxel_size), Vec3d(0,0,0)); |
| 401 | 1 | result = math::Gradient<math::ScaleTranslateMap, math::CD_2ND>::result(map, stencil); | |
| 402 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 403 | } | ||
| 404 | { | ||
| 405 | math::TranslationMap map; | ||
| 406 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | result = math::Gradient<math::TranslationMap, math::CD_2ND>::result(map, stencil); |
| 407 | // value = 1 because the translation map assumes uniform spacing | ||
| 408 |
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 | EXPECT_NEAR(0.5, result.length(), /*tolerance=*/0.01); |
| 409 | } | ||
| 410 | { | ||
| 411 | // test the GenericMap Grid interface | ||
| 412 | math::GenericMap generic_map(*grid); | ||
| 413 | result = math::Gradient<math::GenericMap, math::CD_2ND>::result( | ||
| 414 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generic_map, dense_2ndOrder); |
| 415 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 416 | } | ||
| 417 | { | ||
| 418 | // test the GenericMap Transform interface | ||
| 419 | math::GenericMap generic_map(grid->transform()); | ||
| 420 | result = math::Gradient<math::GenericMap, math::CD_2ND>::result( | ||
| 421 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generic_map, dense_2ndOrder); |
| 422 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 423 | } | ||
| 424 | { | ||
| 425 | // test the GenericMap Map interface | ||
| 426 | 1 | math::GenericMap generic_map(rotated_map); | |
| 427 | result = math::Gradient<math::GenericMap, math::CD_2ND>::result( | ||
| 428 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generic_map, dense_2ndOrder); |
| 429 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 430 | } | ||
| 431 | { | ||
| 432 | // test a map with non-uniform SCALING AND ROTATION | ||
| 433 | Vec3d voxel_sizes(0.25, 0.45, 0.75); | ||
| 434 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | math::MapBase::Ptr base_map( new math::ScaleMap(voxel_sizes)); |
| 435 | // apply rotation | ||
| 436 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | rotated_map = base_map->preRotate(1.5, math::X_AXIS); |
| 437 |
4/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
|
3 | grid->setTransform(math::Transform::Ptr(new math::Transform(rotated_map))); |
| 438 | // remake the sphere | ||
| 439 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>( |
| 440 | dim, center, radius, *grid, unittest_util::SPHERE_DENSE); | ||
| 441 | math::AffineMap::Ptr affine_map = | ||
| 442 | StaticPtrCast<math::AffineMap, math::MapBase>(rotated_map); | ||
| 443 | |||
| 444 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 445 | 1 | result = math::Gradient<math::AffineMap, math::CD_2ND>::result(*affine_map, stencil); | |
| 446 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 447 | } | ||
| 448 | { | ||
| 449 | // test a map with NON-UNIFORM SCALING | ||
| 450 | Vec3d voxel_sizes(0.5, 1.0, 0.75); | ||
| 451 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | math::MapBase::Ptr base_map( new math::ScaleMap(voxel_sizes)); |
| 452 |
4/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
|
3 | grid->setTransform(math::Transform::Ptr(new math::Transform(base_map))); |
| 453 | // remake the sphere | ||
| 454 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>( |
| 455 | dim, center, radius, *grid, unittest_util::SPHERE_DENSE); | ||
| 456 | |||
| 457 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::ScaleMap map(voxel_sizes); |
| 458 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dense_2ndOrder.moveTo(xyz); |
| 459 | |||
| 460 | 1 | result = math::Gradient<math::ScaleMap, math::CD_2ND>::result(map, dense_2ndOrder); | |
| 461 |
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 | EXPECT_NEAR(1.0, result.length(), /*tolerance=*/0.01); |
| 462 | } | ||
| 463 | 1 | } | |
| 464 | |||
| 465 | |||
| 466 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testWSGradientNormSqr) |
| 467 | { | ||
| 468 | using namespace openvdb; | ||
| 469 | |||
| 470 | using AccessorType = FloatGrid::ConstAccessor; | ||
| 471 | double voxel_size = 0.5; | ||
| 472 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | FloatGrid::Ptr grid = FloatGrid::create(/*background=*/5.0); |
| 473 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | grid->setTransform(math::Transform::createLinearTransform(voxel_size)); |
| 474 |
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(grid->empty()); |
| 475 | |||
| 476 | const openvdb::Coord dim(32,32,32); | ||
| 477 | const openvdb::Vec3f center(6.0f,8.0f,10.0f);//i.e. (12,16,20) in index space | ||
| 478 | const float radius = 10.0f; | ||
| 479 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>(dim, center, radius, *grid, unittest_util::SPHERE_DENSE); |
| 480 | |||
| 481 |
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(!grid->empty()); |
| 482 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_EQ(dim[0]*dim[1]*dim[2], int(grid->activeVoxelCount())); |
| 483 | const Coord xyz(11, 17, 26); | ||
| 484 | |||
| 485 | AccessorType inAccessor = grid->getConstAccessor(); | ||
| 486 | |||
| 487 | // test gradient in index and world space using the 7-pt stencil | ||
| 488 | math::UniformScaleMap uniform_scale(voxel_size); | ||
| 489 | FloatTree::ValueType normsqrd; | ||
| 490 | normsqrd = math::GradientNormSqrd<math::UniformScaleMap, math::FIRST_BIAS>::result( | ||
| 491 | uniform_scale, inAccessor, xyz); | ||
| 492 |
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 | EXPECT_NEAR(1.0, normsqrd, /*tolerance=*/0.07); |
| 493 | |||
| 494 | // test world space using the 13pt stencil | ||
| 495 | normsqrd = math::GradientNormSqrd<math::UniformScaleMap, math::SECOND_BIAS>::result( | ||
| 496 | uniform_scale, inAccessor, xyz); | ||
| 497 |
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 | EXPECT_NEAR(1.0, normsqrd, /*tolerance=*/0.05); |
| 498 | |||
| 499 |
1/4✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
|
1 | math::AffineMap affine(voxel_size*math::Mat3d::identity()); |
| 500 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | normsqrd = math::GradientNormSqrd<math::AffineMap, math::FIRST_BIAS>::result( |
| 501 | affine, inAccessor, xyz); | ||
| 502 |
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 | EXPECT_NEAR(1.0, normsqrd, /*tolerance=*/0.07); |
| 503 | |||
| 504 | normsqrd = math::GradientNormSqrd<math::UniformScaleMap, math::THIRD_BIAS>::result( | ||
| 505 | uniform_scale, inAccessor, xyz); | ||
| 506 |
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 | EXPECT_NEAR(1.0, normsqrd, /*tolerance=*/0.05); |
| 507 | 1 | } | |
| 508 | |||
| 509 | |||
| 510 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testWSGradientNormSqrStencil) |
| 511 | { | ||
| 512 | using namespace openvdb; | ||
| 513 | |||
| 514 | double voxel_size = 0.5; | ||
| 515 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | FloatGrid::Ptr grid = FloatGrid::create(/*background=*/5.0); |
| 516 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | grid->setTransform(math::Transform::createLinearTransform(voxel_size)); |
| 517 |
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(grid->empty()); |
| 518 | |||
| 519 | const openvdb::Coord dim(32,32,32); | ||
| 520 | const openvdb::Vec3f center(6.0f, 8.0f, 10.0f);//i.e. (12,16,20) in index space | ||
| 521 | const float radius = 10.0f; | ||
| 522 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>(dim, center, radius, *grid, unittest_util::SPHERE_DENSE); |
| 523 | |||
| 524 |
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(!grid->empty()); |
| 525 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_EQ(dim[0]*dim[1]*dim[2], int(grid->activeVoxelCount())); |
| 526 | const Coord xyz(11, 17, 26); | ||
| 527 | |||
| 528 | math::SevenPointStencil<FloatGrid> sevenpt(*grid); | ||
| 529 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | sevenpt.moveTo(xyz); |
| 530 | |||
| 531 | math::ThirteenPointStencil<FloatGrid> thirteenpt(*grid); | ||
| 532 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | thirteenpt.moveTo(xyz); |
| 533 | |||
| 534 | math::SecondOrderDenseStencil<FloatGrid> dense_2ndOrder(*grid); | ||
| 535 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dense_2ndOrder.moveTo(xyz); |
| 536 | |||
| 537 | math::NineteenPointStencil<FloatGrid> nineteenpt(*grid); | ||
| 538 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | nineteenpt.moveTo(xyz); |
| 539 | |||
| 540 | // test gradient in index and world space using the 7-pt stencil | ||
| 541 | math::UniformScaleMap uniform_scale(voxel_size); | ||
| 542 | FloatTree::ValueType normsqrd; | ||
| 543 | normsqrd = math::GradientNormSqrd<math::UniformScaleMap, math::FIRST_BIAS>::result( | ||
| 544 | uniform_scale, sevenpt); | ||
| 545 |
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 | EXPECT_NEAR(1.0, normsqrd, /*tolerance=*/0.07); |
| 546 | |||
| 547 | |||
| 548 | // test gradient in index and world space using the 13pt stencil | ||
| 549 | normsqrd = math::GradientNormSqrd<math::UniformScaleMap, math::SECOND_BIAS>::result( | ||
| 550 | uniform_scale, thirteenpt); | ||
| 551 |
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 | EXPECT_NEAR(1.0, normsqrd, /*tolerance=*/0.05); |
| 552 | |||
| 553 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | math::AffineMap affine(voxel_size*math::Mat3d::identity()); |
| 554 | 1 | normsqrd = math::GradientNormSqrd<math::AffineMap, math::FIRST_BIAS>::result( | |
| 555 | affine, dense_2ndOrder); | ||
| 556 |
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 | EXPECT_NEAR(1.0, normsqrd, /*tolerance=*/0.07); |
| 557 | |||
| 558 | normsqrd = math::GradientNormSqrd<math::UniformScaleMap, math::THIRD_BIAS>::result( | ||
| 559 | uniform_scale, nineteenpt); | ||
| 560 |
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 | EXPECT_NEAR(1.0, normsqrd, /*tolerance=*/0.05); |
| 561 | 1 | } | |
| 562 | |||
| 563 | |||
| 564 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testGradientTool) |
| 565 | { | ||
| 566 | using namespace openvdb; | ||
| 567 | |||
| 568 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | FloatGrid::Ptr grid = createGrid<FloatGrid>(/*background=*/5.0); |
| 569 | FloatTree& tree = grid->tree(); | ||
| 570 | |||
| 571 | const openvdb::Coord dim(64, 64, 64); | ||
| 572 | const openvdb::Vec3f center(35.0f, 30.0f, 40.0f); | ||
| 573 | const float radius = 10.0f; | ||
| 574 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>(dim, center, radius, *grid, unittest_util::SPHERE_DENSE); |
| 575 | |||
| 576 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(!tree.empty()); |
| 577 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_EQ(dim[0]*dim[1]*dim[2], int(tree.activeVoxelCount())); |
| 578 | const Coord xyz(10, 20, 30); | ||
| 579 | |||
| 580 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | Vec3SGrid::Ptr grad = tools::gradient(*grid); |
| 581 |
4/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
1 | EXPECT_EQ(int(tree.activeVoxelCount()), int(grad->activeVoxelCount())); |
| 582 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
2 | EXPECT_NEAR(1.0, grad->getConstAccessor().getValue(xyz).length(), |
| 583 | /*tolerance=*/0.01); | ||
| 584 | 1 | } | |
| 585 | |||
| 586 | |||
| 587 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testGradientMaskedTool) |
| 588 | { | ||
| 589 | using namespace openvdb; | ||
| 590 | |||
| 591 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | FloatGrid::Ptr grid = createGrid<FloatGrid>(/*background=*/5.0); |
| 592 | FloatTree& tree = grid->tree(); | ||
| 593 | |||
| 594 | const openvdb::Coord dim(64, 64, 64); | ||
| 595 | const openvdb::Vec3f center(35.0f, 30.0f, 40.0f); | ||
| 596 | const float radius = 10.0f; | ||
| 597 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>(dim, center, radius, *grid, unittest_util::SPHERE_DENSE); |
| 598 | |||
| 599 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(!tree.empty()); |
| 600 |
3/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_EQ(dim[0]*dim[1]*dim[2], int(tree.activeVoxelCount())); |
| 601 | |||
| 602 | 1 | const openvdb::CoordBBox maskbbox(openvdb::Coord(35, 30, 30), openvdb::Coord(41, 41, 41)); | |
| 603 |
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 | BoolGrid::Ptr maskGrid = BoolGrid::create(false); |
| 604 |
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.
|
2 | maskGrid->fill(maskbbox, true/*value*/, true/*activate*/); |
| 605 | |||
| 606 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | Vec3SGrid::Ptr grad = tools::gradient(*grid, *maskGrid); |
| 607 | {// outside the masked region | ||
| 608 | const Coord xyz(10, 20, 30); | ||
| 609 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(!maskbbox.isInside(xyz)); |
| 610 |
3/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
2 | EXPECT_NEAR(0.0, grad->getConstAccessor().getValue(xyz).length(), |
| 611 | /*tolerance=*/0.01); | ||
| 612 | } | ||
| 613 | {// inside the masked region | ||
| 614 | const Coord xyz(38, 35, 33); | ||
| 615 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(maskbbox.isInside(xyz)); |
| 616 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
2 | EXPECT_NEAR(1.0, grad->getConstAccessor().getValue(xyz).length(), |
| 617 | /*tolerance=*/0.01); | ||
| 618 | } | ||
| 619 | 1 | } | |
| 620 | |||
| 621 | |||
| 622 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testIntersectsIsoValue) |
| 623 | { | ||
| 624 | using namespace openvdb; | ||
| 625 | |||
| 626 | {// test zero crossing in -x | ||
| 627 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | FloatGrid grid(/*backgroundValue=*/5.0); |
| 628 | FloatTree& tree = grid.tree(); | ||
| 629 | Coord xyz(2,-5,60); | ||
| 630 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz, 1.3f); |
| 631 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tree.setValue(xyz.offsetBy(-1,0,0), -2.0f); |
| 632 | math::SevenPointStencil<FloatGrid> stencil(grid); | ||
| 633 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 634 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE( stencil.intersects( )); |
| 635 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE( stencil.intersects( 0.0f)); |
| 636 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE( stencil.intersects( 2.0f)); |
| 637 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(!stencil.intersects( 5.5f)); |
| 638 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(!stencil.intersects(-2.5f)); |
| 639 | } | ||
| 640 | {// test zero crossing in +x | ||
| 641 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | FloatGrid grid(/*backgroundValue=*/5.0); |
| 642 | FloatTree& tree = grid.tree(); | ||
| 643 | Coord xyz(2,-5,60); | ||
| 644 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz, 1.3f); |
| 645 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tree.setValue(xyz.offsetBy(1,0,0), -2.0f); |
| 646 | math::SevenPointStencil<FloatGrid> stencil(grid); | ||
| 647 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 648 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(stencil.intersects()); |
| 649 | } | ||
| 650 | {// test zero crossing in -y | ||
| 651 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | FloatGrid grid(/*backgroundValue=*/5.0); |
| 652 | FloatTree& tree = grid.tree(); | ||
| 653 | Coord xyz(2,-5,60); | ||
| 654 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz, 1.3f); |
| 655 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tree.setValue(xyz.offsetBy(0,-1,0), -2.0f); |
| 656 | math::SevenPointStencil<FloatGrid> stencil(grid); | ||
| 657 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 658 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(stencil.intersects()); |
| 659 | } | ||
| 660 | {// test zero crossing in y | ||
| 661 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | FloatGrid grid(/*backgroundValue=*/5.0); |
| 662 | FloatTree& tree = grid.tree(); | ||
| 663 | Coord xyz(2,-5,60); | ||
| 664 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz, 1.3f); |
| 665 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tree.setValue(xyz.offsetBy(0,1,0), -2.0f); |
| 666 | math::SevenPointStencil<FloatGrid> stencil(grid); | ||
| 667 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 668 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(stencil.intersects()); |
| 669 | } | ||
| 670 | {// test zero crossing in -z | ||
| 671 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | FloatGrid grid(/*backgroundValue=*/5.0); |
| 672 | FloatTree& tree = grid.tree(); | ||
| 673 | Coord xyz(2,-5,60); | ||
| 674 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz, 1.3f); |
| 675 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tree.setValue(xyz.offsetBy(0,0,-1), -2.0f); |
| 676 | math::SevenPointStencil<FloatGrid> stencil(grid); | ||
| 677 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 678 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(stencil.intersects()); |
| 679 | } | ||
| 680 | {// test zero crossing in z | ||
| 681 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | FloatGrid grid(/*backgroundValue=*/5.0); |
| 682 | FloatTree& tree = grid.tree(); | ||
| 683 | Coord xyz(2,-5,60); | ||
| 684 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz, 1.3f); |
| 685 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tree.setValue(xyz.offsetBy(0,0,1), -2.0f); |
| 686 | math::SevenPointStencil<FloatGrid> stencil(grid); | ||
| 687 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 688 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(stencil.intersects()); |
| 689 | } | ||
| 690 | {// test zero crossing in -x & z | ||
| 691 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | FloatGrid grid(/*backgroundValue=*/5.0); |
| 692 | FloatTree& tree = grid.tree(); | ||
| 693 | Coord xyz(2,-5,60); | ||
| 694 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz, 1.3f); |
| 695 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tree.setValue(xyz.offsetBy(-1,0,1), -2.0f); |
| 696 | math::SevenPointStencil<FloatGrid> stencil(grid); | ||
| 697 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 698 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(!stencil.intersects()); |
| 699 | } | ||
| 700 | {// test zero multiple crossings | ||
| 701 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | FloatGrid grid(/*backgroundValue=*/5.0); |
| 702 | FloatTree& tree = grid.tree(); | ||
| 703 | Coord xyz(2,-5,60); | ||
| 704 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz, 1.3f); |
| 705 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz.offsetBy(-1, 0, 1), -1.0f); |
| 706 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz.offsetBy( 0, 0, 1), -2.0f); |
| 707 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree.setValue(xyz.offsetBy( 0, 1, 0), -3.0f); |
| 708 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tree.setValue(xyz.offsetBy( 0, 0,-1), -2.0f); |
| 709 | math::SevenPointStencil<FloatGrid> stencil(grid); | ||
| 710 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | stencil.moveTo(xyz); |
| 711 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 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.
|
1 | EXPECT_TRUE(stencil.intersects()); |
| 712 | } | ||
| 713 | 1 | } | |
| 714 | |||
| 715 | |||
| 716 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGradient, testOldStyleStencils) |
| 717 | { | ||
| 718 | using namespace openvdb; | ||
| 719 | |||
| 720 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | FloatGrid::Ptr grid = FloatGrid::create(/*backgroundValue=*/5.0); |
| 721 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | grid->setTransform(math::Transform::createLinearTransform(/*voxel size=*/0.5)); |
| 722 |
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(grid->empty()); |
| 723 | |||
| 724 | const openvdb::Coord dim(32,32,32); | ||
| 725 | const openvdb::Vec3f center(6.0f,8.0f,10.0f);//i.e. (12,16,20) in index space | ||
| 726 | const float radius=10.0f; | ||
| 727 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | unittest_util::makeSphere<FloatGrid>(dim, center, radius, *grid, unittest_util::SPHERE_DENSE); |
| 728 | |||
| 729 |
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(!grid->empty()); |
| 730 |
3/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ 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 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_EQ(dim[0]*dim[1]*dim[2], int(grid->activeVoxelCount())); |
| 731 | const Coord xyz(11, 17, 26); | ||
| 732 | |||
| 733 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::GradStencil<FloatGrid> gs(*grid); |
| 734 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | gs.moveTo(xyz); |
| 735 |
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 | EXPECT_NEAR(1.0, gs.gradient().length(), /*tolerance=*/0.01); |
| 736 |
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 | EXPECT_NEAR(1.0, gs.normSqGrad(), /*tolerance=*/0.10); |
| 737 | |||
| 738 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::WenoStencil<FloatGrid> ws(*grid); |
| 739 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ws.moveTo(xyz); |
| 740 |
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 | EXPECT_NEAR(1.0, ws.gradient().length(), /*tolerance=*/0.01); |
| 741 |
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 | EXPECT_NEAR(1.0, ws.normSqGrad(), /*tolerance=*/0.01); |
| 742 | |||
| 743 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::CurvatureStencil<FloatGrid> cs(*grid); |
| 744 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | cs.moveTo(xyz); |
| 745 |
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 | EXPECT_NEAR(1.0, cs.gradient().length(), /*tolerance=*/0.01); |
| 746 | 1 | } | |
| 747 |