1 #ifndef VGL_TRIANGLE_3D_H_ 2 #define VGL_TRIANGLE_3D_H_ 13 # include <vcl_msvc_warnings.h> 54 double coplanar_tolerance );
76 bool ignore_coplanar =
false);
120 unsigned &i_line_point1_edge,
121 unsigned &i_line_point2_edge);
143 side_length_max = std::max( side_length_max, (p1 - p3).
sqr_length());
144 return std::sqrt(side_length_max);
156 side_length_min = std::min( side_length_min, (p1 - p3).
sqr_length());
157 return std::sqrt(side_length_min);
208 #endif // VGL_TRIANGLE_3D_H_ double vgl_triangle_3d_distance(const vgl_point_3d< double > &q, const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2, const vgl_point_3d< double > &p3)
Compute the distance to the closest point on a triangle from a reference point.
std::vector< std::pair< unsigned, unsigned > > vgl_triangle_3d_coincident_edges(const vgl_point_3d< double > &a_p1, const vgl_point_3d< double > &a_p2, const vgl_point_3d< double > &a_p3, const vgl_point_3d< double > &b_p1, const vgl_point_3d< double > &b_p2, const vgl_point_3d< double > &b_p3)
Check for coincident edges of triangles a and b.
double vgl_triangle_3d_aspect_ratio(const vgl_point_3d< double > &p0, const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2)
Compute the aspect ratio of a triangle.
Represents a cartesian 3D point.
bool vgl_triangle_3d_test_inside_simple(const vgl_point_3d< double > &i_pnt, const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2, const vgl_point_3d< double > &p3)
Check if point i_pnt is inside the triangle.
bool vgl_triangle_3d_test_inside(const vgl_point_3d< double > &i_pnt, const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2, const vgl_point_3d< double > &p3)
Check if the given point is inside the triangle.
double vgl_triangle_3d_longest_side(const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2, const vgl_point_3d< double > &p3)
Compute the longest side of the given triangle.
vgl_triangle_3d_intersection_t
double vgl_triangle_3d_area(const vgl_point_3d< double > &p0, const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2)
Compute the area of a triangle.
a point in 3D nonhomogeneous space
line segment in 3D nonhomogeneous space
vgl_triangle_3d_intersection_t vgl_triangle_3d_line_intersection(const vgl_line_segment_3d< double > &line, const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2, const vgl_point_3d< double > &p3, vgl_point_3d< double > &i_pnt, bool ignore_coplanar=false)
Compute the intersection point between the line segment and triangle.
Represents a Euclidean 3D plane.
Represents a 3D line segment using two points.
bool vgl_triangle_3d_triangle_coplanar(const vgl_point_3d< double > &a_p1, const vgl_point_3d< double > &a_p2, const vgl_point_3d< double > &a_p3, const vgl_point_3d< double > &b_p1, const vgl_point_3d< double > &b_p2, const vgl_point_3d< double > &b_p3)
Check if the two triangles are coplanar.
T sqr_length(v const &a)
Return the squared length of a vector.
vgl_triangle_3d_intersection_t vgl_triangle_3d_plane_intersection(const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2, const vgl_point_3d< double > &p3, const vgl_plane_3d< double > &i_plane, vgl_line_segment_3d< double > &i_line)
Compute the line of intersection of the given triangle and plane.
double vgl_triangle_3d_shortest_side(const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2, const vgl_point_3d< double > &p3)
Compute the shortest side of the given triangle.
vgl_point_3d< double > vgl_triangle_3d_closest_point(const vgl_point_3d< double > &q, const vgl_point_3d< double > &p1, const vgl_point_3d< double > &p2, const vgl_point_3d< double > &p3)
Compute the closest point on a triangle to a reference point.
vgl_triangle_3d_intersection_t vgl_triangle_3d_triangle_intersection(const vgl_point_3d< double > &a_p1, const vgl_point_3d< double > &a_p2, const vgl_point_3d< double > &a_p3, const vgl_point_3d< double > &b_p1, const vgl_point_3d< double > &b_p2, const vgl_point_3d< double > &b_p3)
Compute if the given triangles a and b intersect.