AP_Math: AP_GeodesicGrid: make all methods static

Since all members are.
This commit is contained in:
Gustavo Jose de Sousa 2016-04-22 14:29:23 -03:00 committed by Lucas De Marchi
parent 3b05ec1157
commit 9d34b3b996
4 changed files with 30 additions and 31 deletions

View File

@ -179,7 +179,7 @@ const Matrix3f AP_GeodesicGrid::_mid_inverses[10]{
}; };
int AP_GeodesicGrid::section(const Vector3f& v, int AP_GeodesicGrid::section(const Vector3f& v,
const bool inclusive) const const bool inclusive)
{ {
int i = _triangle_index(v, inclusive); int i = _triangle_index(v, inclusive);
if (i < 0) { if (i < 0) {
@ -195,7 +195,7 @@ int AP_GeodesicGrid::section(const Vector3f& v,
} }
int AP_GeodesicGrid::_neighbor_umbrella_component(int idx, int AP_GeodesicGrid::_neighbor_umbrella_component(int idx,
int comp_idx) const int comp_idx)
{ {
if (idx < 3) { if (idx < 3) {
return _neighbor_umbrellas[idx].components[comp_idx]; return _neighbor_umbrellas[idx].components[comp_idx];
@ -206,7 +206,7 @@ int AP_GeodesicGrid::_neighbor_umbrella_component(int idx,
int AP_GeodesicGrid::_from_neighbor_umbrella(int idx, int AP_GeodesicGrid::_from_neighbor_umbrella(int idx,
const Vector3f& v, const Vector3f& v,
const Vector3f& u, const Vector3f& u,
bool inclusive) const bool inclusive)
{ {
/* The following comparisons between the umbrella's first and second /* The following comparisons between the umbrella's first and second
* vertices' coefficients work for this algorithm because all vertices' * vertices' coefficients work for this algorithm because all vertices'
@ -301,7 +301,7 @@ int AP_GeodesicGrid::_from_neighbor_umbrella(int idx,
} }
int AP_GeodesicGrid::_triangle_index(const Vector3f& v, int AP_GeodesicGrid::_triangle_index(const Vector3f& v,
const bool inclusive) const const bool inclusive)
{ {
/* w holds the coordinates of v with respect to the basis comprised by the /* w holds the coordinates of v with respect to the basis comprised by the
* vectors of T_i */ * vectors of T_i */
@ -436,7 +436,7 @@ int AP_GeodesicGrid::_triangle_index(const Vector3f& v,
int AP_GeodesicGrid::_subtriangle_index(const unsigned int triangle_index, int AP_GeodesicGrid::_subtriangle_index(const unsigned int triangle_index,
const Vector3f& v, const Vector3f& v,
const bool inclusive) const const bool inclusive)
{ {
/* w holds the coordinates of v with respect to the basis comprised by the /* w holds the coordinates of v with respect to the basis comprised by the
* vectors of the middle triangle of T_i where i is triangle_index */ * vectors of the middle triangle of T_i where i is triangle_index */

View File

@ -123,7 +123,7 @@ public:
* the null vector or the section isn't found, which might happen when \p * the null vector or the section isn't found, which might happen when \p
* inclusive is false. * inclusive is false.
*/ */
int section(const Vector3f& v, const bool inclusive = false) const; static int section(const Vector3f& v, const bool inclusive = false);
private: private:
/* /*
@ -235,8 +235,8 @@ private:
* *
* @return The icosahedron triangle's index of the component. * @return The icosahedron triangle's index of the component.
*/ */
int _neighbor_umbrella_component(int umbrella_index, static int _neighbor_umbrella_component(int umbrella_index,
int component_index) const; int component_index);
/** /**
* Find the icosahedron triangle index of the component of * Find the icosahedron triangle index of the component of
* #_neighbor_umbrellas[umbrella_index] that is crossed by \p v. * #_neighbor_umbrellas[umbrella_index] that is crossed by \p v.
@ -256,10 +256,10 @@ private:
* if \p v is the null vector or the triangle isn't found, which might * if \p v is the null vector or the triangle isn't found, which might
* happen when \p inclusive is false. * happen when \p inclusive is false.
*/ */
int _from_neighbor_umbrella(int umbrella_index, static int _from_neighbor_umbrella(int umbrella_index,
const Vector3f& v, const Vector3f& v,
const Vector3f& u, const Vector3f& u,
bool inclusive) const; bool inclusive);
/** /**
* Find which icosahedron's triangle is crossed by \p v. * Find which icosahedron's triangle is crossed by \p v.
@ -272,7 +272,7 @@ private:
* @return The index of the triangle. The value -1 is returned if the * @return The index of the triangle. The value -1 is returned if the
* triangle isn't found, which might happen when \p inclusive is false. * triangle isn't found, which might happen when \p inclusive is false.
*/ */
int _triangle_index(const Vector3f& v, const bool inclusive) const; static int _triangle_index(const Vector3f& v, const bool inclusive);
/** /**
* Find which sub-triangle of the icosahedron's triangle pointed by \p * Find which sub-triangle of the icosahedron's triangle pointed by \p
@ -292,7 +292,7 @@ private:
* @return The index of the sub-triangle. The value -1 is returned if the * @return The index of the sub-triangle. The value -1 is returned if the
* triangle isn't found, which might happen when \p inclusive is false. * triangle isn't found, which might happen when \p inclusive is false.
*/ */
int _subtriangle_index(const unsigned int triangle_index, static int _subtriangle_index(const unsigned int triangle_index,
const Vector3f& v, const Vector3f& v,
const bool inclusive) const; const bool inclusive);
}; };

View File

@ -18,8 +18,6 @@
#include <AP_Math/AP_GeodesicGrid.h> #include <AP_Math/AP_GeodesicGrid.h>
static AP_GeodesicGrid grid;
static const Vector3f triangles[20][3] = { static const Vector3f triangles[20][3] = {
{{-M_GOLDEN, 1, 0}, {-1, 0,-M_GOLDEN}, {-M_GOLDEN,-1, 0}}, {{-M_GOLDEN, 1, 0}, {-1, 0,-M_GOLDEN}, {-M_GOLDEN,-1, 0}},
{{-1, 0,-M_GOLDEN}, {-M_GOLDEN,-1, 0}, { 0,-M_GOLDEN,-1}}, {{-1, 0,-M_GOLDEN}, {-M_GOLDEN,-1, 0}, { 0,-M_GOLDEN,-1}},
@ -92,7 +90,7 @@ static void BM_GeodesicGridSections(benchmark::State& state)
v = (a + b + c) / 3.0f; v = (a + b + c) / 3.0f;
while (state.KeepRunning()) { while (state.KeepRunning()) {
int s = grid.section(v); int s = AP_GeodesicGrid::section(v);
gbenchmark_escape(&s); gbenchmark_escape(&s);
} }
} }

View File

@ -42,8 +42,6 @@ public:
class GeodesicGridTest : public ::testing::TestWithParam<TestParam> { class GeodesicGridTest : public ::testing::TestWithParam<TestParam> {
protected: protected:
static AP_GeodesicGrid grid;
/** /**
* Test the functions for triangles indexes. * Test the functions for triangles indexes.
* *
@ -51,25 +49,28 @@ protected:
*/ */
void test_triangles_indexes(const TestParam& p) { void test_triangles_indexes(const TestParam& p) {
if (p.section >= 0) { if (p.section >= 0) {
int expected_triangle = p.section / grid.NUM_SUBTRIANGLES; int expected_triangle =
int triangle = grid._triangle_index(p.v, false); p.section / AP_GeodesicGrid::NUM_SUBTRIANGLES;
int triangle = AP_GeodesicGrid::_triangle_index(p.v, false);
ASSERT_EQ(expected_triangle, triangle); ASSERT_EQ(expected_triangle, triangle);
int expected_subtriangle = p.section % grid.NUM_SUBTRIANGLES; int expected_subtriangle =
int subtriangle = grid._subtriangle_index(triangle, p.v, false); p.section % AP_GeodesicGrid::NUM_SUBTRIANGLES;
int subtriangle =
AP_GeodesicGrid::_subtriangle_index(triangle, p.v, false);
ASSERT_EQ(expected_subtriangle, subtriangle); ASSERT_EQ(expected_subtriangle, subtriangle);
} else { } else {
int triangle = grid._triangle_index(p.v, false); int triangle = AP_GeodesicGrid::_triangle_index(p.v, false);
if (triangle >= 0) { if (triangle >= 0) {
int subtriangle = grid._subtriangle_index(triangle, p.v, false); int subtriangle = AP_GeodesicGrid::_subtriangle_index(triangle,
p.v,
false);
ASSERT_EQ(-1, subtriangle) << "triangle is " << triangle; ASSERT_EQ(-1, subtriangle) << "triangle is " << triangle;
} }
} }
} }
}; };
AP_GeodesicGrid GeodesicGridTest::grid;
static const Vector3f triangles[20][3] = { static const Vector3f triangles[20][3] = {
{{-M_GOLDEN, 1, 0}, {-1, 0,-M_GOLDEN}, {-M_GOLDEN,-1, 0}}, {{-M_GOLDEN, 1, 0}, {-1, 0,-M_GOLDEN}, {-M_GOLDEN,-1, 0}},
{{-1, 0,-M_GOLDEN}, {-M_GOLDEN,-1, 0}, { 0,-M_GOLDEN,-1}}, {{-1, 0,-M_GOLDEN}, {-M_GOLDEN,-1, 0}, { 0,-M_GOLDEN,-1}},
@ -140,10 +141,10 @@ TEST_P(GeodesicGridTest, Sections)
auto p = GetParam(); auto p = GetParam();
test_triangles_indexes(p); test_triangles_indexes(p);
EXPECT_EQ(p.section, grid.section(p.v)); EXPECT_EQ(p.section, AP_GeodesicGrid::section(p.v));
if (p.section < 0) { if (p.section < 0) {
int s = grid.section(p.v, true); int s = AP_GeodesicGrid::section(p.v, true);
int i; int i;
for (i = 0; p.inclusive_sections[i] > 0; i++) { for (i = 0; p.inclusive_sections[i] > 0; i++) {
assert(i < 7); assert(i < 7);