Skip to content

fix(VertexNormal): weight polygon vertex normal by vertex angles#1288

Open
MoulardM wants to merge 3 commits into
nextfrom
fix/use_medial_balls_to_determine_metric
Open

fix(VertexNormal): weight polygon vertex normal by vertex angles#1288
MoulardM wants to merge 3 commits into
nextfrom
fix/use_medial_balls_to_determine_metric

Conversation

@MoulardM

Copy link
Copy Markdown
Contributor

No description provided.

@MoulardM MoulardM requested a review from BotellaA June 15, 2026 14:58
@github-actions

github-actions Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Cpp-Linter Report ⚠️

Some files did not pass the configured checks!

clang-tidy (v20.1.8) reports: 22 concern(s)
  • src/geode/mesh/core/surface_mesh.cpp:117:9: warning: [bugprone-easily-swappable-parameters]

    2 adjacent parameters of 'not_same_orientation' of similar type ('const geode::PolygonEdge &') are easily swapped by mistake

      117 |         const geode::PolygonEdge& current_edge,
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      118 |         const geode::PolygonEdge& adj_edge )
          |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:117:35: note: the first parameter in the range is 'current_edge'
      117 |         const geode::PolygonEdge& current_edge,
          |                                   ^~~~~~~~~~~~
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:118:35: note: the last parameter in the range is 'adj_edge'
      118 |         const geode::PolygonEdge& adj_edge )
          |                                   ^~~~~~~~
  • src/geode/mesh/core/surface_mesh.cpp:152:47: warning: [readability-function-cognitive-complexity]

    function 'compute_polygons_around_vertex' has cognitive complexity of 11 (threshold 10)

      152 |     geode::internal::PolygonsAroundVertexImpl compute_polygons_around_vertex(
          |                                               ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:157:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      157 |         if( !first_polygon )
          |         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:170:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      170 |         do
          |         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:182:13: note: +2, including nesting penalty of 1, nesting level increased to 2
      182 |             if( !cur_polygon_vertex )
          |             ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:187:18: note: +1
      187 |                  && safety_count < MAX_SAFETY_COUNT );
          |                  ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:190:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      190 |         if( result.vertex_is_on_border )
          |         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:196:9: note: +1, nesting level increased to 1
      196 |         else
          |         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:200:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      200 |         while( cur_polygon_vertex && safety_count < MAX_SAFETY_COUNT )
          |         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:200:35: note: +1
      200 |         while( cur_polygon_vertex && safety_count < MAX_SAFETY_COUNT )
          |                                   ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:210:13: note: +2, including nesting penalty of 1, nesting level increased to 2
      210 |             if( !cur_polygon_vertex )
          |             ^
  • src/geode/mesh/core/surface_mesh.cpp:170:9: warning: [cppcoreguidelines-avoid-do-while]

    avoid do-while loops

      170 |         do
          |         ^
  • src/geode/mesh/core/surface_mesh.cpp:286:9: warning: [google-explicit-constructor]

    single-argument constructors must be marked explicit to avoid unintentional implicit conversions

      286 |         Impl( SurfaceMesh& surface )
          |         ^
          |         explicit 
  • src/geode/mesh/core/surface_mesh.cpp:755:35: warning: [readability-function-cognitive-complexity]

    function 'polygon_adjacent_edge' has cognitive complexity of 27 (threshold 10)

      755 |         SurfaceMesh< dimension >::polygon_adjacent_edge(
          |                                   ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:759:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      759 |         if( !polygon_adj )
          |         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:769:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      769 |         for( const auto edge_id : LRange{ nb_edges } )
          |         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:772:13: note: +2, including nesting penalty of 1, nesting level increased to 2
      772 |             if( v0 == adj_vertices[edge_id] )
          |             ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:776:25: note: +3, including nesting penalty of 2, nesting level increased to 3
      776 |                         ? 0u
          |                         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:778:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      778 |                 if( v1 == adj_vertices[enext] )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:780:21: note: +4, including nesting penalty of 3, nesting level increased to 4
      780 |                     if( polygon_adjacent( polygon_adj_edge )
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:788:18: note: +1, nesting level increased to 2
      788 |             else if( v1 == adj_vertices[edge_id] )
          |                  ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:792:25: note: +3, including nesting penalty of 2, nesting level increased to 3
      792 |                         ? 0u
          |                         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:794:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      794 |                 if( v0 == adj_vertices[enext] )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:796:21: note: +4, including nesting penalty of 3, nesting level increased to 4
      796 |                     if( polygon_adjacent( polygon_adj_edge )
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:805:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      805 |         if( failed_edges.empty() )
          |         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:820:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      820 |         for( const auto& edge : failed_edges )
          |         ^
  • src/geode/mesh/core/surface_mesh.cpp:764:20: warning: [readability-identifier-length]

    variable name 'v0' is too short, expected at least 3 characters

      764 |         const auto v0 = polygon_vertex( PolygonVertex{ polygon_edge } );
          |                    ^
  • src/geode/mesh/core/surface_mesh.cpp:765:20: warning: [readability-identifier-length]

    variable name 'v1' is too short, expected at least 3 characters

      765 |         const auto v1 = polygon_edge_vertex( polygon_edge, 1 );
          |                    ^
  • src/geode/mesh/core/surface_mesh.cpp:776:27: warning: [hicpp-uppercase-literal-suffix]

    integer literal has suffix 'u', which is not uppercase

      776 |                         ? 0u
          |                           ^~
          |                            U
  • src/geode/mesh/core/surface_mesh.cpp:792:27: warning: [hicpp-uppercase-literal-suffix]

    integer literal has suffix 'u', which is not uppercase

      792 |                         ? 0u
          |                           ^~
          |                            U
  • src/geode/mesh/core/surface_mesh.cpp:852:39: warning: [hicpp-move-const-arg]

    std::move of the variable 'edge' of the trivially-copyable type 'PolygonEdge' has no effect; remove std::move()

      852 |                 borders.emplace_back( std::move( edge ) );
          |                                       ^~~~~~~~~~      ~
  • src/geode/mesh/core/surface_mesh.cpp:870:17: warning: [bugprone-unchecked-optional-access]

    unchecked access to optional value

      870 |                 polygon_adjacent_edge( next_border ).value() );
          |                 ^
  • src/geode/mesh/core/surface_mesh.cpp:888:17: warning: [bugprone-unchecked-optional-access]

    unchecked access to optional value

      888 |                 polygon_adjacent_edge( previous_border ).value() );
          |                 ^
  • src/geode/mesh/core/surface_mesh.cpp:921:18: warning: [cppcoreguidelines-avoid-magic-numbers]

    1. is a magic number; consider replacing it with a named constant
      921 |                / 2.;
          |                  ^
  • src/geode/mesh/core/surface_mesh.cpp:992:13: warning: [bugprone-easily-swappable-parameters]

    2 adjacent parameters of 'polygon_edge_from_vertices' of similar type ('index_t') are easily swapped by mistake

      992 |             index_t from_vertex_id, index_t to_vertex_id ) const
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:992:21: note: the first parameter in the range is 'from_vertex_id'
      992 |             index_t from_vertex_id, index_t to_vertex_id ) const
          |                     ^~~~~~~~~~~~~~
    /__w/OpenGeode/OpenGeode/src/geode/mesh/core/surface_mesh.cpp:992:45: note: the last parameter in the range is 'to_vertex_id'
      992 |             index_t from_vertex_id, index_t to_vertex_id ) const
          |                                             ^~~~~~~~~~~~
  • src/geode/mesh/core/surface_mesh.cpp:1145:21: warning: [readability-identifier-length]

    variable name 'p1' is too short, expected at least 3 characters

     1145 |         const auto& p1 = this->point( vertices[0] );
          |                     ^
  • src/geode/mesh/core/surface_mesh.cpp:1148:25: warning: [readability-identifier-length]

    variable name 'p2' is too short, expected at least 3 characters

     1148 |             const auto& p2 = this->point( vertices[i] );
          |                         ^
  • src/geode/mesh/core/surface_mesh.cpp:1149:25: warning: [readability-identifier-length]

    variable name 'p3' is too short, expected at least 3 characters

     1149 |             const auto& p3 = this->point( vertices[i + 1] );
          |                         ^
  • src/geode/mesh/core/surface_mesh.cpp:1166:21: warning: [readability-identifier-length]

    variable name 'p1' is too short, expected at least 3 characters

     1166 |         const auto& p1 = this->point( vertices[0] );
          |                     ^
  • src/geode/mesh/core/surface_mesh.cpp:1169:25: warning: [readability-identifier-length]

    variable name 'p2' is too short, expected at least 3 characters

     1169 |             const auto& p2 = this->point( vertices[i] );
          |                         ^
  • src/geode/mesh/core/surface_mesh.cpp:1170:25: warning: [readability-identifier-length]

    variable name 'p3' is too short, expected at least 3 characters

     1170 |             const auto& p3 = this->point( vertices[i + 1] );
          |                         ^
  • src/geode/mesh/core/surface_mesh.cpp:1192:14: warning: [modernize-type-traits]

    use c++14 style type templates

     1192 |     typename std::enable_if< T == 3, std::optional< Vector3D > >::type
          |     ~~~~~~~~ ^                                                  ~~~~~~
          |                            _t
  • src/geode/mesh/core/surface_mesh.cpp:1202:14: warning: [modernize-type-traits]

    use c++14 style type templates

     1202 |     typename std::enable_if< T == 3, std::optional< Vector3D > >::type
          |     ~~~~~~~~ ^                                                  ~~~~~~
          |                            _t

Have any feedback or feature suggestions? Share it here.

Comment thread src/geode/mesh/core/surface_mesh.cpp Outdated
normal = normal + p_normal.value();
const auto local_id =
this->vertex_in_polygon( polygon_id, vertex_id );
const auto polygon_vertex =

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

polygon c'est un polygon vertex qui qui la même chose que ça

@MoulardM MoulardM requested a review from BotellaA June 16, 2026 10:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants