@@ -38,10 +38,7 @@ bool ClosestPointQuery::get_closest_point(
3838{
3939 assert (max_distance > 0 .0f );
4040
41- static nanoflann::SearchParams search_params (
42- 32 , // ignored param
43- 0 .0f , // epsilon
44- true ); // true means we want results to be sorted by squared dist
41+ const float max_distance2 = max_distance * max_distance;
4542
4643 // Take the 10 closest and keep the best out of them.
4744 const std::size_t expected_result_count = 200 ;
@@ -57,11 +54,11 @@ bool ClosestPointQuery::get_closest_point(
5754 bool found = false ;
5855 float closest_distance2 = 0 .0f ;
5956
60- for (std::size_t result_index = 0 ; result_index < num_results; ++result_index )
57+ for (std::size_t i = 0 ; i < num_results; ++i )
6158 {
6259 // Ask the triangle to the point cloud.
6360 glm::vec3 v1, v2, v3;
64- m_mesh_point_cloud.get_triangle (ret_index[result_index ], v1, v2, v3);
61+ m_mesh_point_cloud.get_triangle (ret_index[i ], v1, v2, v3);
6562
6663 // Compute the point on the triangle.
6764 glm::vec3 p = closest_point_in_triangle (
@@ -73,11 +70,12 @@ bool ClosestPointQuery::get_closest_point(
7370 // Keep the best.
7471 const float distance2_to_triangle = distance2 (p, query_point);
7572
76- if (distance2_to_triangle < max_distance
73+ if (distance2_to_triangle < max_distance2
7774 && (!found || distance2_to_triangle < closest_distance2))
7875 {
7976 found = true ;
8077 result = p;
78+ closest_distance2 = distance2_to_triangle;
8179 }
8280 }
8381
0 commit comments