A point(Red) is on the mesh or near the mesh.
How to know which a triangle(yellow) is fast ?
Before, I found a triangle through a distance which was calculated by a point with all mesh’s points.
But, It is very slow. Whether a better method exists ?
Why not use ON_MeshGetClosestPoint?
ON_MESH_POINT t;
bool rc = ON_MeshGetClosestPoint( mesh, pt, &t, tol );
Because I don’t know this function.
I get a point on mesh through the function and get a yellow triangle by the point ( ON_MESH_POINT t )?
But, this result maybe exist triangles more than one.
Thanks Dale.
Hi kaicihuang,
The ON_MESH_POINT
class contains all the information you need. It contains a member m_ci
of type ON_COMPONENT_INDEX
which says whether the closest point is on a vertex, edge or face. If the closest point is a vertex, like in your image, you can find the topological vertex index value and use the ON_MeshTopology
class to find all adjacent triangles.
ON_MESH_POINT t;
t.m_ci.m_type // The type of mesh component which is closest
t.m_ci.m_index // The topological index of the component which is closest
Hope this helps.
-David
Thanks you.
It is clear.