You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Based on what I have seen in your code I was wondering about the possibility of inserting the following functions into triangulator.cpp and *.h in order to extend your code to be able to get the location of the triangle containing a point. I do no have much of C++ experience hence why I am not making a pull request.
Here are the functions,
// Private Function to check if a point is inside a triangle using barycentric coordinates
bool PointInTriangle(const glm::ivec2 p, const glm::ivec2 a, const glm::ivec2 b, const glm::ivec2 c) const {
auto sign = [](const glm::ivec2 p1, const glm::ivec2 p2, const glm::ivec2 p3) {
return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
};
bool d1 = sign(p, a, b) < 0.0f;
bool d2 = sign(p, b, c) < 0.0f;
bool d3 = sign(p, c, a) < 0.0f;
return ((d1 == d2) && (d2 == d3));
}
// Public function to triangle contianing point pt
int locatePoint(const glm::ivec2 pt) const {
for (int i = 0; i < m_Queue.size(); ++i) {
const int t = m_Queue[i];
const int e0 = t * 3;
const int e1 = e0 + 1;
const int e2 = e0 + 2;
const int p0 = m_Triangles[e0];
const int p1 = m_Triangles[e1];
const int p2 = m_Triangles[e2];
const glm::ivec2 a = m_Points[p0];
const glm::ivec2 b = m_Points[p1];
const glm::ivec2 c = m_Points[p2];
if (PointInTriangle(pt, a, b, c)) {
return t;
}
}
return -1; // Point is not inside any triangle
}
Thank you for considering these.
The text was updated successfully, but these errors were encountered:
mllobera
changed the title
Adding a
Adding a function to find the triangle containing a point
Dec 15, 2023
Based on what I have seen in your code I was wondering about the possibility of inserting the following functions into triangulator.cpp and *.h in order to extend your code to be able to get the location of the triangle containing a point. I do no have much of C++ experience hence why I am not making a pull request.
Here are the functions,
Thank you for considering these.
The text was updated successfully, but these errors were encountered: